1. 梯度下降, tf.train.GradientDescentOptimizer(0.05),梯度下降的問題在與不一定能獲得全局最優解,並且因為要在所有數據上最小化損失,所以損失函數是在所有訓練數據上的損失和,所以在大數據情況下,需要的時間相當長。
2.隨機梯度下降,隨機梯度下降優化的不是全部數據上的損失函數,在每一輪迭代中,都隨機選擇一條訓練數據進行優化,這樣訓練時間大大減小,但是由於某一條數據上的全局最小不一定代表所有數據的全局最小,所以隨機梯度下降也不一定能達到全局最優解。
為了綜合梯度下降和隨機梯度下降的優點,在實際訓練中通常將訓練數據分為多個batch,每次只訓練一個batch,這樣可以大大減小收斂所需的迭代次數。
3. MomentumOptimizer(),解決了梯度下降無法跳出局部極小值的問題。
4. AdagradOptimizer(),根據每個變量變換優化步長,考慮了變量梯度的整個歷史。
5. AdadeltaOptimizer(),Adagrad有時候會很快使梯度到0,為了解決這個問題,Adadelta可以限制最少使用多少步。
