吳恩達公開課心得——梯度下降算法

本文記錄一下吳恩達老師在人工智能公開課上講解的梯度下降法的一些技巧,方便日後查閱。

吳恩達公開課心得——梯度下降算法

這是梯度下降算法最關鍵的計算步驟。就是對於每個特性所對應的參數的迭代,是讓它減去代價函數對該參數的偏導與步長之積。

技巧一:特性縮放

假如不做縮放,有些特性x1的取值範圍在1000的量級,而有些特性x2的取值範圍在1的量級,由於X2的存在,步長應該選擇在0.1左右,而0.1的步長相對與1000的量級來說實在太小了,大概需要迭代一萬次才能找到最優值。

假設y=c0+c1*x1+c2*x2, 定義z1=x1/1000,z2=x2,就可以得到y = c0+1000*c1*z1+c2*z2

這樣z1和z2在相同的量級,步長對他們的影響差不多,因此預計10次左右的迭代就可以得到最優值。

技巧二:均值中心化

該技巧的目的是讓所有的特性的取值都在一個相同的範圍內,例如[-1,1],這樣進一步消除特性之間的差異。個人覺得,做完特性縮放之後,再做均值中性化幫助不大。以兩個變量為例,特性縮放之後,等高線基本呈圓形了,均值中性化無非把這個圓形挪到了圓心的位置,這對迭代的性能幫助不大。(這裡不懂等高線的同學,請自行學習吳恩達老師的公開課教程)

技巧三:步長的選擇

最初步長可以選大一些,運算過程中發現有不收斂的情況,那就說明步長太大,考慮縮小步長。

技巧四:用線性迴歸的方法實現高階曲線的擬合。

比如y=c0+c1*x1+c2*x1^2。 那麼可以把x1^2定義為一個新的特性x2,問題就可以改寫為y=c0+c1*x1+c2*x2了,此時別忘了做特性縮放。

技巧五:正則方程代替梯度下降算法

吳恩達公開課心得——梯度下降算法

那麼何時使用梯度下降算法,何時使用正則方程求解呢?這裡給出他們的優缺點,供參考。一般來說,在運算量差不多的情況下,還是用正則方程簡單。只有n大到不可忍受了,才推薦使用梯度下降法。

吳恩達公開課心得——梯度下降算法


分享到:


相關文章: