2018-11-29 Tensorflow中的Optimizer(优化器)

之前做textcnn模型训练的时候,最后会用到优化器,tensorflow提供了几种不同的优化函数,对比如下,参考了一篇文章,感觉写的很形象,链接:http://www.imooc.com/article/264477。

这些优化函数都是继承自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

  1. RMSProp
    这个算法相当于在AdaGrad中引入了Momentum的惯性
    v = b1 * v + (1-b1)*dx^2
    W += -(α/sqrt(v)) * dx
    但是RMSprop缺少了Momentum的变量m

  2. Adam
    Adam是目前用得最广的优化算法,它结合了AdaGrad和Momentum的优点(所以叫才Adam嘛)
    m = b1m + (1-b1)dx
    v = b2v + (1-b2)dx^2
    W += -(α*m/sqrt(v)) * dx
    这个算法相当于给机器人一个惯性,同时还让它穿上了防止侧滑的鞋子,当然就相当好用用啦。

你可能感兴趣的:(2018-11-29 Tensorflow中的Optimizer(优化器))