
在使用Tensorflow搭建神經網絡的時候,最後一步總會用到tf.train.XxxOptimizer(). 然後會有很多Optimizer()如下圖
其實這些Optimizer 都是優化算法下面重點介紹幾個常見的
1. Gradient Decent
這是最基礎的梯度下降算法,更新權重W,不多解釋。
W += - α * dx
其中 α是learning rate(學習速率)。我們可以把下降的損失函數看成一個機器人,由于在下降的時候坡度不是均勻的,機器人會左右搖擺,是以下降速度會比較慢,有時候遇到局部最優,還可能在原地徘徊好長時間。
2. Momentum
顧名思義這個優化算法實際上給了一個動量,讓機器人下降的的時候帶一個慣性,下降的速度就加快了。
算法如下:
m = b1*m - α * dx
W += m
3. AdaGrad
這個算法是通過動态改變學習速率,提高下降速度,相當于給機器人穿上一個左右側滑有阻力的鞋子,讓它隻好沿着正确的方向下滑。
v = dx^2
W += -(α/sqrt(v)) * dx
4. RMSProp
這個算法相當于在AdaGrad中引入了Momentum的慣性
v = b1 * v + (1-b1)*dx^2
W += -(α/sqrt(v)) * dx
但是RMSprop缺少了Momentum的變量m
5. Adam
Adam是目前用得最廣的優化算法,它結合了AdaGrad和Momentum的優點(是以叫才Adam嘛)
m = b1m + (1-b1)dx
v = b2v + (1-b2)dx^2
W += -(α*m/sqrt(v)) * dx
這個算法相當于給機器人一個慣性,同時還讓它穿上了防止側滑的鞋子,當然就相當好用用啦。
給大家看看不同優化算法
下降速度的差距文章首發steemit.com 為了友善牆内閱讀,搬運至此,歡迎留言或者通路
我的Steemit首頁