第九章 前向神經網絡(一)

第一節 多層感知機和布爾函數

問題一:多層感知機表示異或邏輯時至少需要幾個隱含層(僅考慮二元輸入)

首先是沒有隱含層,等同於邏輯迴歸,設輸入變量爲x,y,有Z=sigmod(AX+BY+CZ=sigmod(AX+BY+C)顯然z是關於X和Y遞增的,然是根據異或運算的真值表:X同爲0時,Y增加,Z也增加,表明Y的係數爲正;X同爲1時,Y增加,Z減小,表明Y的係數爲負,自相矛盾,因此不帶隱含層是不行的。
考慮一個隱含層時,需要知道一個重要定理:通用近似定理:一個前饋神經網絡如果具有線性輸出層和至少一層具有任何一種“擠壓”性質的激活函數的隱藏層,當給予網絡足夠數量的隱藏單元時,可以以任意精度近似從一個有限維空間到另一個有限維空間的波萊爾可測函數。因此我們可以認爲常用的激活函數和目標函數時通用近似定理適用的子集。
在這裏可以構造一個隱含層的多層感知機就可以設計異或函數,並且需要三個節點(包括隱含層兩個節點Z1、Z2和輸出層一個Z)
Z1的輸出:H1=X+Y1H_1=X+Y-1
Z2的輸出:H2=XY+1H_2=-X-Y+1
然後輸出層Z:Z=Z1Z2+1Z=-Z_1-Z_2+1
其實就是設置Z1Z_1的權重都是1,偏置爲-1;Z2Z_2的權重都是-1,偏置爲1;輸出層的權重都是-1,偏置爲1就行。這樣的真值表就和異或的一樣了。

問題2:如果只有一個隱層,需要多少隱節點能夠實現包含n元輸入的任意布爾函數?

這個問題需要理解析取範式(DNF),由有限個簡單合取式構成的析取式。學這個是在逆否命題那裏,非q,則p的那種,將命題寫作這種形式。析取是或的意思。
先證明單個隱節點可以表示任意合取範式(滿足合取範式的定義)。通過設置某變量XiX_i若出現形式爲正,則權重爲1,若非,則權重爲-1,若沒有出現則權重0.偏置設置爲變量總數取負加一。採用ReLu激活函數,當且僅當所有出現的布爾變量均滿足條件時,隱藏單元激活,(輸出1)(均爲正,輸出爲1,均爲非,輸出爲1,若有變量沒有出現,則輸入ReLu的不是0就是負數,那麼不滿足合取範式定義,同樣輸出爲0,即未激活)然後,令所有隱藏單元到輸出層的參數爲1,偏置爲0,這樣,當且僅當所有的隱藏單元都未被激活時,才輸出0,否則都是正數,起到了析取的作用。
用卡諾圖表示析取式,這個很有意思,
然後回答問題:最差情況下,需要多少個隱藏節點來表示包含n元輸入的布爾函數?問題轉化爲:尋找“最大不可規約的”n元析取範式,等價於最大不可規約的卡諾圖。即間隔填充網格即可。所有n元布爾函數的析取範式最多包含 2(n-1) 個不可規約的合取範式,即對於單隱層的感知機,需要2(n-1) 個隱節點實現

問題3:考慮多隱層的情況,實現包含n元輸入的任意布爾函數最少需要多少個網絡節點和網絡層?

這個問題看着賊複雜,一臉懵逼.jpg

先考慮在問題一的中途一個結論:**實現一個異或需要三個節點,一個隱含層的兩個加上輸出層的一個,顯然我們還能記得應該如何給這三個節點配置權重和偏置來實現異或的真值表。

然而解答不難,先不說最少實現,
那麼n元輸入的情況下,前兩個變量用三個節點實現一個異或,下一個變量與前兩個變量的輸出做異或,又需要三個節點,那麼這樣的異或需要3(n1)3(n-1)個節點,多隱層將指數級的節點O(2(n-1)) 直接下降到了O(3(n-1)) . 同時,需要2(n-1)層網絡層。
下面減少層數,將變量兩兩配對,這樣最少的網絡層數是2log2N2log_2N(向上取整),節點數的話,就沒啥意思了,n個節點,疊個小山,算一下就行。我算了個這log2N(log2N+1)/23log_2N*(log_2N+1)/2*3
好的,今天就這樣吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章