1. 程式人生 > 其它 >tensorflow學習010——優化函式、學習速率、反向傳播演算法

tensorflow學習010——優化函式、學習速率、反向傳播演算法

2.9 優化函式、學習速率、反向傳播演算法

梯度:表明損失函式相對引數的變化率
學習速率:對梯度進行縮放的引數,是一種超引數(超引數寫程式碼時需要自己設定),在具體實踐中,可通過檢視損失函式值隨時間的變化曲線,來判斷學習速率的選取是否合適
合適的學習速率,損失函式隨時間下降,直到一個底部;不合適的學習速率,損失函式可能會發生震盪。
在調整學習速率時,急需要使其足夠小,保證不至於發生超調,也要保證它足夠大,以使損失函式能夠儘快下降,從而可通過較少次數的迭代更快地完成學習。
區域性極值點問題可通過將權值隨機初始化來改善區域性極值地問題,全職地初值使用隨機值,可以增加從靠近全域性最優點符進開始下降的機會。
如何將計算出的損失函式的梯度變化傳遞迴前幾層?
使用反向傳播演算法,是一種高效計算資料流圖中梯度的技術,每一層的導數都是後一層的導數與前一層輸出之積,這正是鏈式法則的奇妙之處,誤差反向傳播演算法利用的正式這一特性。前饋時,從輸入開始,逐一計算每個隱含層的輸出,知道輸出層,然後開始計算導數,並從輸出層經各隱含層逐一反向轉播,為了減少計算量,還需對所有已完成的元素進行復用。

優化器時編譯模型的必需的兩個引數之一,可以先例項化一個優化器物件,然後將它傳入model.compile(),或者可以通過名稱來呼叫優化器,在後一種情況下,將使用優化器的預設引數。
常見優化函式:
1.SGD 隨機梯度下降優化器:和min-batch是同一個意思,抽取m個小批量(獨立同分布)樣本,計算平均梯度值。
相關引數:
lr float >=0 學習率
momentum float >=0 用於加速sgd在相關方向上前進,並抑制震盪。
decay float >=0 每次引數更新後學習率衰減值
nesterov boolean 是否使用Nesterov動量
2.RMSprop 被證明有效且使用的深度學習網路優化演算法,增加了一個衰減係數來控制歷史資訊的獲取多少,會對學習率進行衰減。常用於處理序列問題,例如文字分類。除了lr學習率之外,建議使用預設引數。常用於CNN迴圈神經網路。
3.Adam:可以看作是修正後的Momentum+RMSprop演算法,通常被認為對超引數的選擇相當魯棒,學習率建議為0.001. 是一種可以替代傳統隨機梯度下降過程的一階優化演算法,能基於訓練資料迭代地更新神經網路權重。通過計算梯度的一階矩估計和二姐矩估計而為不同的引數設計獨立的自適應學習率。

optimizer=tf.keras.optimizers.Adam(learning_rate=0.001) 將optimizer=’adam’換成這個就可以設定學習速率


作者:孫建釗
出處:http://www.cnblogs.com/sunjianzhao/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。