01.最常用的激活函數——S函數:

![]()
使用這種S函數的一個重要原因是它比其他S形函數計算簡單。
02.神經網絡為什么把前后層的每一個神經元與所有其他層的神經元互相連接?
a.容易實現;
b.學習過程會弱化不需要的連接。
03.為什么需要矩陣?
a.通過神經網絡向前饋送信號所需的運算可以表示為矩陣乘法;
b.計算機能高效地進行矩陣運算。
04.神經網絡在兩件事情上使用了權重。第一,將信號從輸入向前傳播到輸出層。第二,將誤差從輸出向后傳播到網絡中,此即反向傳播。
05.反向傳播誤差可以表示為矩陣乘法。
06.當函數非常復雜,使用梯度下降法是求解函數最小值的一種很好的辦法。這種方法也具有彈性,可以容忍不完善的數據,如果不能完美地描述函數,或意外地走錯了一步,也不會錯得離譜。
07.為了避免終止於錯誤的山谷或錯誤的函數最小值,我們從山上的不同點開始,多次訓練神經網絡。在神經網絡中,這意味着選擇不同的起始鏈接權重。
08.誤差函數選擇目標值與實際值差的平方,而不是差的絕對值,原因有以下幾點:
a.可以很容易使用代數計算出梯度下降的斜率;
b.誤差函數平滑連續。使得梯度下降法很好地發揮作用——沒有間斷,沒有突然的跳躍;
c.越接近最小值,梯度越小,意味着超調的風險會變小。
09.
![]()
S函數微分后,可以得到一個非常簡單、易於使用的結果。這是S函數成為大受歡迎的激活函數的一個重要原因。
10.

隱藏層和輸出層間權重的誤差函數的斜率表達式為:
展開,並做適當簡化,得到:
紫色部分是目標值減去實際值;紅色部分sigmod中的求和是應用激活函數之前,進入節點的信號。綠色部分是前一隱藏層節點j的輸出。
更新權重:
新的權重由誤差斜率取反來調整舊的權重而得到。α為學習率,調節變化的強度,確保不會超調。
11.並不是所有使用神經網絡的嘗試都能夠成功,這有許多原因。一些問題可以通過改進訓練數據、初始權重、設計良好的輸出方案來解決。
12.輸入:
如果輸入太小或太大,激活函數就會變得非常平坦。小梯度意味着限制神經網絡學習的能力。這就是所謂的飽和神經網絡。
一個好的建議是重新調整輸入值,將其范圍控制在0.0到1.0。輸入0會造成學習能力的喪失,因此需要加上一個小小的偏移,如0.01。
13.輸出:
邏輯激活函數的輸出值根本不可能大於1.0、小於0。因此,我們應該重新調整目標值,匹配激活函數的可能輸出,注意避開激活函數不可能達到的值。
14.隨機初始權重:
數學家所得到的經驗規則是,我們可以在一個節點傳入鏈接數量平方根倒數的大致范圍內隨機采樣,初始化權重。因此,如果每個節點具有3條傳入鏈接,那么初始權重的范圍應該在負的根號3分之一到正的根號3分之一,即-0.577到+0.577之間。
一些過大的初始權重將會在偏置方向上偏置激活函數,非常大的權重將會使激活函數飽和。一個節點的傳入鏈接越多,就有越多的信號被疊加在一起。因此,如果鏈接更多,那么減小權重的范圍,這個經驗法則是有道理的。
15.禁止將初始權重設定為相同的恆定值。如果這樣做,那么在網絡中的每個節點都將接收到相同的信號值,每個輸出節點的輸出值也是相同的,在這種情況下,如果我們在網絡中通過反向傳播誤差更新權重,誤差必定得到平分。那么,這將導致同等量的權重更新,再次出現另一組值相等的權重。
禁止將初始權重設定為0。由於0權重,輸入信號歸零,取決於輸入信號的權重更新函數也因此歸零,這種情況更糟糕。網絡完全喪失了更新權重的能力。
