優化演算法(吳恩達深度學習課程)-- 2018.11.02筆記
阿新 • • 發佈:2018-12-08
優化演算法(吳恩達深度學習課程)
-
batch梯度下降
- 使用batch梯度下降時,每次迭代你都需要遍歷整個訓練集,可以預期每次成本都會下降,所以如果成本函式 是迭代次數的一個函式,它應該會隨著每次迭代而減少,如果某次迭代中增加了,那肯定是出了問題,也許你的學習率太大
-
mini-batch
- 每次迭代下你都在訓練不同的樣本集或者說訓練不同的mini-batch,如果你要作出成本函式
的圖,你很可能會看到如下圖的結果,沒有每次迭代都下降是不要緊的,但走勢應該向下,噪聲產生的原因在於也許
和
是比較容易計算的mini-batch,因此成本會低一些。不過也許出於偶然,
和
是比較難運算的mini-batch,或許你需要一些殘缺的樣本,這樣一來,成本會更高一些,所以才會出現這些擺動,因為你是在執行mini-batch梯度下降法作出成本函式圖。
- mini-batch的大小問題(m是訓練集大小)如下圖
- 如果mini-batch的大小是m(藍線),其實就是batch梯度下降法;
- 如果mini-batch的大小是1(紫線),就有了新的演算法,叫做隨機梯度下降。
- 如果mini-batch的大小是(1, m)之間的(綠線),則他不會總朝向最小值附近,但它比隨機梯度下降要更持續地靠近最小值的方向。
- 如果mini-batch大小事2的n次方,程式碼會執行快一些,可以嘗試不同的值,64和512的mini-batch比較常見
- Stochastic gradient descent(隨機梯度下降)
- 隨機梯度下降法是有很多噪聲的
- 隨機梯度下降法永遠不會收斂,而是會一直在最小值附近被撥動,但它並不會在達到最小值並停留在此
- 和 要符合CPU/GPU記憶體,否則不管用什麼方法處理資料,會使演算法的表現急轉直下變得慘不忍睹
- 每次迭代下你都在訓練不同的樣本集或者說訓練不同的mini-batch,如果你要作出成本函式
的圖,你很可能會看到如下圖的結果,沒有每次迭代都下降是不要緊的,但走勢應該向下,噪聲產生的原因在於也許
和
是比較容易計算的mini-batch,因此成本會低一些。不過也許出於偶然,
和
是比較難運算的mini-batch,或許你需要一些殘缺的樣本,這樣一來,成本會更高一些,所以才會出現這些擺動,因為你是在執行mini-batch梯度下降法作出成本函式圖。
-
加權平均數(指數加權移動平均)
- 當 的時候,相當於平均了大約前面 天的資料
-
偏差修正(指數加權平均的偏差修正)
- 因為計算移動平均數的時候,初始化 , ,但是 ,所以這部分沒有了( ),所以 ,所以如果一天溫度是40華氏度,那麼 ,因此得到的值會小很多,所以第一天溫度的估測不準。 ,如果代入 ,然後相乘,所以 ,假設 和 都是正數,計算後 要遠小於 和 ,所以 不能很好估測出這一年前兩天的溫度。
- 偏差修正的辦法:在估測初期,不用 ,而是用 , 就是現在的天數。舉個具體例子,當 時, ,因此對第二天溫度的估測變成了