一、優(yōu)化器定義
優(yōu)化器是tensorflow中的梯度下降的策略,用于更新神經(jīng)網(wǎng)絡中數(shù)以百萬的參數(shù)。除了不斷更新神經(jīng)網(wǎng)絡結構,還在不斷推出更新參數(shù)的廁率
二、基礎
梯度下降的要解決的問題是如何減少損失函數(shù),先明確一下,損失函數(shù)的定義是多種多樣的,如果我們使用均方差來計算損失函數(shù)的話,loss 函數(shù)定義如下。
在一個批次的數(shù)據(jù)處理中,我們計算的 yi,actual 和 yi,predicted 是已有的數(shù)值, 我們需要計算的是神經(jīng)元的權重 w 和 偏置量b,對應這里就是a 和 b。 神經(jīng)網(wǎng)絡的公式 yi = axi + b, 吧這個共識帶入,獲得下面的公式。
通過上面的過程,將問題轉化,變成尋找a, b 參數(shù)什么值的時候,輸出損失最小。接下來求一下(a,b) 參數(shù)時的偏導。
便導計算幾次 取決于 x 包含幾個 參數(shù),這里我們只包含兩個 a 和 b 所以得到如下公式。
我們是在一個二維方向上移動尋找最點,所以我們偏導輸出的是一個向量。
上面的圖是一個(a,b)參數(shù)對 loss 影響的函數(shù), 我們需要將這個公式用圖形標示。 暴力直接遍歷 a,b 后畫出。
隨機選擇一個起始點, 那么問題來了,如何下降呢, 這就要使用矩陣,這里需要補充一下矩陣的知識, 我們需要對下降△j(a, b) 施加一個干預的使用,使用向量點乘 ,點乘一個 v 向量,公式如下:
轉換一下
如果我們需要進行最小的偏移呢, 那么對v的控制值就是 θ = 0,||v|| = 1,
用簡單的例子說明一下,先看下面這張圖
在二維中,梯度下降值得就是尋找圖形中的最低點,也就是Y軸方向的最小值。
==那么問題來了怎么尋找?== 在二維中,通過倒數(shù)可以知道曲線周圍是單調遞增的還是單調遞減的。如果這個倒數(shù)等于0,那么這個位置就是極點,那如何知道是最大值還是最小值呢, 當然可以通過繼續(xù)像左滑動來判斷, 隨著x的下降, y逐漸減小。這就是梯度下降的原理, 當然梯度下降的問題不知這一些。
在上面的基礎上,繼續(xù)擴展。
尋找的步驟如下:
第一步: 明確自己現(xiàn)在所處的位置
第二步: 找到相對于該位置而言下降最快的方向
第三步: 沿著第二步找到的方向走一小步,到達一個新的位置,此時的位置肯定比原來低
第四部: 回到第一步
第五步: 終止于最低點
三、優(yōu)化器分類
1.數(shù)據(jù)采集優(yōu)化
==SGD==
全稱:隨機梯度下降優(yōu)化器(Stochastic Gradient Descent Optimizer)
SGD在計算下降速度最快的方向的時候,不是掃描全部訓練集數(shù)據(jù),而是采用隨機抽取一個來計算。
偽代碼
SGD的并不是沿著J(θ)下降最快的方向收斂,而是震蕩的方式趨向極小點, SGB每次更新參數(shù)的時候,使用都是一個數(shù)據(jù),算一計算量會小很多,但是效果一般。
==BGD==
全稱:批量梯度下降優(yōu)化器(Batch Gradient Descent Optimizer)
BGD 在計算梯度下降方向的時候,使用的是全部的訓練數(shù)據(jù)。
偽代碼
BGD 應為使用全部的訓練數(shù)據(jù),所以計算量很大,效果中上。
2.學習率優(yōu)化
==Momentum==
這是一種平滑度的優(yōu)化
全程: 動量法
Momentum 在計算梯度下降方向的時候,會引用上一個計算所產(chǎn)生的向量,可以使得網(wǎng)絡參數(shù)的更新變得平滑,梯度擺渡幅度變小, 網(wǎng)絡收斂速度加快。
如下,使用移動指數(shù)加權平均的方法
如下,每次計算完成后,都會和上一次計算出來的增量 △w, △d 產(chǎn)生的v 進行計算。這樣可以達到平滑變更參數(shù)的作用。
RMSprop
全稱: Root Mean Square Prop
RMSprop 的基本原理和Momentum的方式一樣為了加快模型的收斂,基本原理采用的是微分平方加權平均數(shù)。==這種做法有利于消除了擺動幅度大的方向,用來修正擺動幅度,使得各個維度的擺動幅度都較小,這是Monentum所沒有的。==(比如當 dW
或者 db
中有一個值比較大的時候,那么我們在更新權重或者偏置的時候除以它之前累積的梯度的平方根,這樣就可以使得更新幅度變?。榱朔乐狗帜笧榱?,使用了一個很小的數(shù)值 ?
來進行平滑,一般取值為10?8。
==訓練前期,梯度較小,使得Regularizer項很大,放大梯度。[激勵階段]==
==訓練后期,梯度較大,使得Regularizer項很小,縮小梯度。[懲罰階段]==
Adadelta
關注一下化紅框的部分實際上是和RMSprop區(qū)別的地方,根號包裹了外部的參數(shù)。
Adagrad
全稱: 自適應學習率(Adaptive Gradient), 這個優(yōu)化方式 和 RMSProp基本一致,不同的地方在 Adagrad非常依賴全局的學習速率η;
6.Adam(默認)
2014年12月,Kingma和Lei Ba兩位學者提出了Adam優(yōu)化器,結合AdaGrad和RMSProp兩種優(yōu)化算法的優(yōu)點。
主要包含以下幾個顯著的優(yōu)點:
實現(xiàn)簡單,計算高效,對內存需求少
參數(shù)的更新不受梯度的伸縮變換影響
超參數(shù)具有很好的解釋性,且通常無需調整或僅需很少的微調
更新的步長能夠被限制在大致的范圍內(初始學習率)
能自然地實現(xiàn)步長退火過程(自動調整學習率)
很適合應用于大規(guī)模的數(shù)據(jù)及參數(shù)的場景
適用于不穩(wěn)定目標函數(shù)
適用于梯度稀疏或梯度存在很大噪聲的問題
由于m0初始化為0,會導致mt偏向于0,尤其在訓練初期階段。所以,此處需要對梯度均值mt進行偏差糾正,降低偏差對訓練初期的影響。
與m0 類似,因為v0初始化為0導致訓練初始階段vt偏向0,對其進行糾正。
adam結合了AdaGrad和RMSProp
補充讀音
1、 Α α alpha a:lf 阿爾法 角度;系數(shù)
2 、Β β beta bet 貝塔 磁通系數(shù);角度;系數(shù)
3、 Γ γ gamma ga:m 伽馬 電導系數(shù)(小寫)
4、 Δ δ delta delt 德爾塔 變動;密度;屈光度
5、 Ε ε epsilon ep`silon 伊普西龍 對數(shù)之基數(shù)
6、 Ζ ζ zeta zat 截塔 系數(shù);方位角;阻抗;相對粘度;原子序數(shù)
7、 Η η eta eit 艾塔 磁滯系數(shù);效率(小寫)
8、 Θ θ thet θit 西塔 溫度;相位角
9、 Ι ι iot aiot 約塔 微小,一點兒
10、 Κ κ kappa kap 卡帕 介質常數(shù)
11、 ∧ λ lambda lambd 蘭布達波長(小寫);體積
12、 Μ μ mu mju 繆 磁導系數(shù);微(千分之一);放大因數(shù)(小寫)
13、 Ν ν nu nju 紐 磁阻系數(shù)
14、 Ξ ξ xi ksi 克西
15、 Ο ο omicron omik`ron 奧密克戎
16、 ∏ π pi pai 派 圓周率=圓周÷直徑=3.1416
17、 Ρ ρ rho rou 肉 電阻系數(shù)(小寫)
18、 ∑ σ sigma `sigma 西格馬 總和(大寫),表面密度;跨導(小寫)
19、 Τ τ tau tau 套 時間常數(shù)
20、 Υ υ upsilon jup`silon 宇普西龍 位移
21、 Φ φ phi fai 佛愛 磁通;角
22、Χ χ chi phai 西
23、 Ψ ψ psi psai 普西 角速;介質電通量(靜電力線);角
24、 Ω ω omega o`miga 歐米伽 歐姆(大寫);角速(小寫);角
25、η 伊塔