深度學習常用優化器介紹

2021-09-30 15:52:29 字數 1860 閱讀 1266

深度學習的優化演算法從sgd-->sgdm-->nag-->adagrad-->adadelta-->adam-->nadam這樣的發展歷程,理論知識參考這裡,下面我們依次介紹tensorflow中這些優化器的實現類,官方文件。

優化器(optimizers)類的基類。這個類定義了在訓練模型的時候新增乙個操作的api。你基本上不會直接使用這個類,但是你會用到他的子模擬如gradientdescentoptimizer, adagradoptimizer, momentumoptimizer.等等這些。 後面講的時候會詳細講一下gradientdescentoptimizer 這個類的一些函式,然後其他的類只會講建構函式,因為類中剩下的函式都是大同小異的。

這個類是實現梯度下降演算法的優化器。(結合理論可以看到,這個建構函式需要的乙個學習率就行了)

引數: 

learning_rate:a tensor or a floating point value. 要使用的學習率 

use_locking:要是true的話,就對於更新操作(update operations.)使用鎖 

name:名字,可選,預設是」gradientdescent」.

作用:對於在變數列表(var_list)中的變數計算對於損失函式的梯度,這個函式返回乙個(梯度,變數)對的列表,其中梯度就是相對應變數的梯度了。這是minimize()函式的第乙個部分, 

引數: 

loss:待減小的值 

var_list:預設是在graphkey.trainable_variables. 

gate_gradients:how to gate the computation of gradients. can be gate_none, gate_op, or gate_graph. 

aggregation_method:specifies the method used to combine gradient terms. valid values are defined in the class aggregationmethod. 

colocate_gradients_with_ops: if true, try colocating gradients with the corresponding op. 

grad_loss: optional. a tensor holding the gradient computed for loss.

實現了 adadelta演算法的優化器,可以算是下面的adagrad演算法改進版本。

引數: 

learning_rate: tensor或者浮點數,學習率 

rho:tensor或者浮點數. the decay rate. 

epsilon:a tensor or a floating point value. a constant epsilon used to better conditioning the grad update. 

use_locking:if true use locks for update operations. 

name:這個操作的名字(可選),預設是」adadelta」

實現了 adagrad 演算法的優化器。

實現了 momentum 演算法的優化器。

實現了adam演算法的優化器 。

參考:

深度學習優化器

深度學習演算法在許多情況下都涉及優化,我們經常使用解析優化去證明或設計演算法。在深度學習的諸多優化問題中,最難的是神經網路的設計,這其中的優化問題非常重要,代價也很高,因此研究者們開發了一組專門為此設計的優化技術,也就是我們本文中要介紹的 神經網路優化器。這些優化器主要關注一類特定的優化問題 尋找神...

深度學習 優化器

神經網路的訓練過程是通過迭代更新超引數來最小化損失函式的過程,最終目標是找到使損失函式最小,最能準確 的超引數組合。而在更新迭代超引數時就需要用到不同的優化器,本文簡要介紹幾種常用的優化器。計算t時刻損失函式關於當前引數的梯度 計算t時刻的一階動量mt 與梯度相關的函式 和二階動量vt 與梯度平方相...

學習日誌 深度學習 李巨集毅 優化器介紹

記錄的從第0步優化到第n步優化的步子 最簡單的,走一步看一步 還是走一步看一步,但是在走的每一步會受到之前所走過的步子的影響 下圖中的v 且越近的步子對當前步子的影響會越大 的次數會越來愈高 重要的優點 當本次梯度為零 梯度消失 後,上一步會保證繼續移動 有點類似慣性和動量的概念 優點就是控制步長,...