前兩節還能有點自己的想法,一進入神經網絡就開始懵了,也沒啥心得了。本文就記錄一下個人認為對算法實現有用的信息,以便實現神經網絡算法時不會茫然。
1.為何需要神經網絡?比線性迴歸和邏輯迴歸好在哪裡?
在特徵不多的情況下,用線性迴歸或邏輯迴歸足夠了。因為它們可以加入各種特徵高階項的組合來實現複雜的問題的迴歸。
但是當特徵很多時,比如100個,那麼各種二次項組合就多達一萬個,如果再考慮三次項,那就跟多了。因此此時就不適合使用上述兩種算法了。
因此,問題的關鍵是,我們假設結論與模型特性的高階項有關,也就是說存在非線性特性。
2.代價函數和反向傳播算法(back propagation)
給定訓練集的前向傳播過程如下:
反向傳播算法:
3.具體計算中的技巧
由於現有的梯度下降算法和其他高級算法都假設輸入的theta是向量,然而我們自己計算誤差時,顯然用矩陣更方便。因此我們需要再矩陣和向量之間做轉化。
4.梯度檢查算法
該算法是用來驗證反向傳播算法的,確保實現上沒有問題。實際算法中不需要。
5.神經網絡架構的選擇
一般來說,使用一個隱藏層就夠了。如果使用了多個隱藏層,那麼每個隱藏層的神經元個數相等。一般來說某一層隱藏層的神經元個數越多越好,出於計算量考慮,一般等於特徵數量即可,也可以時特徵數量的2~4倍。
閱讀更多 小輝算個球 的文章