Python人工智能深度學習模型訓練經驗總結
一、假如訓練集表現不好
1.嘗試新的激活函數
ReLU:Rectified Linear Unit
圖像如下圖所示:當z<0時,a = 0, 當z>0時,a = z,也就是說這個激活函數是對輸入進行線性轉換。使用這個激活函數,由於有0的存在,計算之後會刪除掉一些神經元,使得神經網絡變窄。
該函數也有其他變體,如下圖所示,主要是對於z小於0的時候,對應
Maxout:以上幾種函數的一般形式
簡單來說就是誰大輸出誰,通過Maxout可以自己學習激活函數。當給出的參數不同的時候,可以得到上面所描述的各類函數。如下圖所示,當輸入給1個計算單元時,得到藍色的線,假如第二個計算單元參數均為0,則是X軸上的一條線,那麼在這兩個之中取大的那個,就是ReLU;當第二個計算單元參數不為0的時候,就可以得到其他形式的結果。
2.自適應學習率
①Adagrad
Adagrad是使用前面的梯度進行平方和再開方,作為計算梯度時系數的一部分。
②RMSProp
是Adagrad的進階版,在Adagrad中,是使用瞭前面所有的梯度平方和再開方,這個系數中沒有考慮當前的梯度。在RMSProp中,是考慮瞭現在的梯度,也對其進行平方,並對兩項進行一個權重的分配。
③ Momentum
加入動量的梯度下降
下圖中,v就是上一次的方向。在計算本次方向的時候,加入lambda倍的上一次的方向。其實v就是過去算出來的所有的梯度的總和。
④Adam
將RMSProp和Momentum結合
二、在測試集上效果不好
1.提前停止
通過交叉驗證集,提前停止訓練
2.正則化
和其他的算法正則化方式一致,有L1和L2正則,此處不再詳細描述。
3.Dropout
每次訓練的時候,都以p%的幾率去掉一些神經元以及輸入值。得到如下圖所示的更瘦一些的神經網絡。直接去訓練這個神經網絡。下一次訓練的時候,對整個網絡重新進行采樣。(類似於隨機森林)
在測試的時候不進行dropout,如果訓練的時候的dropout幾率是p%,那麼在測試集上,所有的權重都乘上(1-p)%
以上就是Python人工智能深度學習模型訓練經驗總結的詳細內容,更多關於Python人工智能模型訓練經驗的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Python編程pytorch深度卷積神經網絡AlexNet詳解
- Python深度學習pytorch神經網絡塊的網絡之VGG
- Python深度學習之實現卷積神經網絡
- 淺談Pytorch 定義的網絡結構層能否重復使用
- Python 實現一個全連接的神經網絡