附錄D 理解神經網絡
首先,我們來深入研究一下明斯基和帕普特強調的感知器模型的問題。單層感知器無法實現一個很簡單的運算,被稱為“異或”(XOR)。我們先假設一個有兩個輸入的單層感知器,如下所示:
圖22 單層感知器,無法計算異或
而異或函數是這樣的:如果輸入1激活,或者輸入2激活,則觸發感知器輸出。而輸入1和輸入2同時激活或者同時不激活,都不觸發輸出。要理解為什麽單層感知器無法計算異或函數,首先,我們假設它可以計算,那麽,對於輸入1的權重值w1,輸入2的權重值w2,以及感知器的觸發閾值T,它們必須滿足如下要求:
·如果兩個輸入均未被激活,則神經元接收到的輸入權重為0,此時神經元要保持不被觸發,因此觸發閾值T必須大於0。
·如果隻有輸入1被激活,則感知器被觸發,因此w1必須大於觸發閾值T。
·如果隻有輸入2被激活,則感知器被觸發,因此w2必須大於觸發閾值T。
·如果輸入1和輸入2都被激活,則感知器不會被觸發,因此w1 + w2的值必須小於觸發閾值T。
但很容易就能看出,滿足上述所有要求的w1、w2和T值不存在,因此,感知器無法計算異或函數。
現在讓我們看看兩層感知器結構如何計算異或函數,如圖23所示。我可以肯定地說,這個感知器網絡能夠正確計算異或函數。它由三個神經元組成:當輸入1或者輸入2被激活時,神經元1會被觸發;當輸入1和輸入2沒有同時被激活,神經元2才會被觸發;最後,如果神經元1和神經元2都被觸發,神經元3才會被觸發。總而言之,輸入1和輸入2有一個被激活時,神經元3被觸發;而輸入1和輸入2同時被激活或者同時未被激活,神經元3都不會被觸發。
圖23 兩層感知器結構可以計算異或函數
更詳細地說,就是考慮如下四種情況:
1. 假設輸入1和輸入2都未激活,此時神經元2將被觸發(因為它接收的輸入O高於-1.5的觸發閾值),但神經元1不會被觸發。這種情況下,神經元3接收到的輸入為1,低於觸發閾值1.5,因此神經元3不會被觸發。
2. 假設輸入1激活,輸入2未激活。神經元1接收到的輸入權重為1,高於觸發閾值0.5,則神經元1被激活,神經元2接收到的輸入權重為-1,高於觸發閾值-1.5,同樣,神經元2也被觸發。此時神經元3接收到神經元1和神經元2的輸入,權重值為2,高於觸發閾值1.5。因此神經元3會被觸發。
3. 假設輸入2激活,輸入1未激活。與情況2相同的計算方式計算得出,神經元3會被觸發。
4. 假設輸入1和輸入2同時激活,此時神經元1接收到的輸入權重為2,高於觸發閾值0.5,則神經元1被激活。神經元2接收到的輸入權重為-2,低於觸發閾值-1.5,則神經元2不會被觸發。神經元3接收到的輸入權重為1,低於觸發閾值1.5,因此神經元3不會被觸發。