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其它相關文章!

推薦閱讀: