訓練網絡時,通常先對網絡的初始權值按照某種分布進行初始化,合適的網絡初始權值能夠使得損失函數在訓練過程中的收斂速度更快,從而獲得更好的優化結果。但是按照某類分布隨機初始化網絡權值時,存在一些不確定因素,並不能保證每一次初始化操作都能使得網絡的初始權值處在一個合適的狀態。不恰當的初始權值可能使得網絡的損失函數在訓練過程中陷入局部最小值,達不到全局最優的狀態。因此,如何消除這種不確定性,是訓練深度網絡是必須解決的一個問題。
momentum 動量主要用在權重更新的時候。
一般,神經網絡在更新權值時,采用如下公式:
w = w - learning_rate * dw
引入momentum后,采用如下公式:
v = mu * v - learning_rate * dw
w = w + v
其中,v初始化為0,mu是設定的一個超變量,最常見的設定值是0.9。可以這樣理解上式:如果上次的momentum(v)與這次的負梯度方向是相同的,那這次下降的幅度就會加大,從而加速收斂。