無約束極小值的最優化條件:算法
關於多元函數極小值點的必要條件:網絡
知足的點稱之爲f(x)的駐點或穩定點,可是反過來,知足梯度條件的點不必定是f(x)的局部極小值。所以,定理轉化爲求解下面的方程組問題: 機器學習
對於上面的線性方程組,利用解析法(如高斯消元法、矩陣三角分解法等)能夠較方便求解,可是遺憾的是,f(x)通常是很複雜的非線性函數,求解非線性方程組並不比求解最優化問題簡單,甚至比求解最優化問題更困難、更復雜。所以,在機器學習領域,求解最優化問題,通常不會經過解析法來求解上式,而是經過數值計算方法來直接求取函數極值。函數
迭代法是數值計算最經常使用的最優化方法,它的基本思想是:首先給定f(x)的一個極小值點獲得初始估計x0,而後經過迭代的方式獲得點序列{xt},若是這個點序列的極限x*逼近極小值點,那麼成這個序列爲極小化序列。這個極小化序列經過迭代公式能夠寫成:學習
其中d是一個方向向量,λ稱爲步長(或學習率),當λ和d都被肯定後,也就能夠惟一肯定點下一個點xk+1,並以此迭代,最後求得極小值點。優化
注意:各類迭代算法的區別就在於獲得步長λ和方向d的方式不一樣。一個好的迭代算法應知足的兩個條件:遞減性和收斂性。spa
梯度降低:3d
梯度降低是神經網絡最經常使用的優化方法之一。它的方向就是f在該點x0處函數值增加最快的方向。基於梯度的這個性質,若是把迭代的每一步沿着當前點的梯度方向的反方向進行迭代,那麼就能獲得一個逐步遞減的極小化序列。blog
根據每一次迭代所使用的訓練數據集範圍不一樣,能夠把梯度降低算法區分爲:io
1. 每一批的數據量較小,特別適合高效的矩陣運算,尤爲是GPU的並行加速,所以雖然小批量梯度算法的訓練數據要比隨機梯度降低算法多,但效率上與隨機梯度算法差異不大。
2. 與隨機梯度降低算法相比,小批量梯度算法每一批考慮了更多的樣本數據,每一批數據之間的總體差別更小、更平均,結果也更穩定。
3. 因爲效率與隨機梯度降低算法至關,所以小批量梯度策略一樣適用於在線的模型更新。
通常來講,當前的梯度降低算法廣泛採用第三個---小批量梯度算法策略。
梯度降低中用於肯定步長和方向向量的幾個不一樣算法的策略:
1. 傳統更新策略:vanilla策略,最簡單的參數更新策略,參數沿着其梯度反方向變化。lr是學習率,預先設置的固定值超參數。
2. 動量更新策略:
3. 改進的動量更新策略:
4. 自適應梯度策略:以上方法都是對迭代方法的優化,而步長是固定的,該策略考慮學習率對着迭代次數變化而變化的自適應梯度策略。