AI學習筆記——Tensorflow中的Optimizer(優化器)

weixin_34337265發表於2018-08-15
10816620-02c19ad063cb29bd.png

在使用Tensorflow搭建神經網路的時候,最後一步總會用到tf.train.XxxOptimizer(). 然後會有很多Optimizer()如下圖


10816620-fd3699262f892354.png

其實這些Optimizer 都是優化演算法下面重點介紹幾個常見的

1. Gradient Decent

這是最基礎的梯度下降演算法,更新權重W,不多解釋。

W += - α * dx

其中 α是learning rate(學習速率)。我們可以把下降的損失函式看成一個機器人,由於在下降的時候坡度不是均勻的,機器人會左右搖擺,所以下降速度會比較慢,有時候遇到區域性最優,還可能在原地徘徊好長時間。


10816620-14faf2075f936879.png

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

這個演算法相當於給機器人一個慣性,同時還讓它穿上了防止側滑的鞋子,當然就相當好用用啦。

給大家看看不同優化演算法下降速度的差距

10816620-00340895b26eea4c.gif

文章首發steemit.com 為了方便牆內閱讀,搬運至此,歡迎留言或者訪問我的Steemit主頁

相關文章