Tensorflow--优化器optimizer--加速神经网络训练

Tensorflow中常见的优化器有以下几种:
在这里插入图片描述
目前个人比较常用的是第二种优化器。

加速神经网络的训练有以下几种方法:
1.SGD(Stochastic Gradient Descent)随机梯度下降法
它的思想是,将样本数据挨个送入网络,每次使用一个样本就更新一次参数,这样可以极快地收敛到最优值,但会产生较大的波动。还有一种是小批量梯度下降法,它的思想是,将数据拆分成一小批一小批的,分批送入神经网络,每送一批就更新一次网络参数。后者相比前者来说是一种较好的加速方法。

更新参数的方式 w+=-lr * dx lr是学习率,dx 是校正值

2.Momentum
它考虑了不仅仅是当前步的学习效率,还考虑了上一步的学习趋势,所以比SGD的方法更加快速。

大多数其它途径是在更新神经网络参数那一步上动动手脚. 传统的参数 W 的更新是把原始的 W 累加上一个负的学习率(learning rate) 乘以校正值 (dx). 这种方法可能会让学习过程曲折无比。

更新参数的方式 m=b1m-lrdx w+=m

3.AdaGrad
这种方法是在学习率上面动手脚, 使得每一个参数更新都会有自己与众不同的学习率, 他的作用和 momentum 类似。
该方法自动地调整学习率的大小,该方法下的learning rate会根据历史的梯度值动态地改变学习率的大小。它需要计算更新到该t轮,参数的历史梯度的平方和。

更新参数的方法 v+=dx^2 w+= -lr *dx/根号V 采用改变学习率的方式

4.RMSProp
它是一种自适应学习率算法,它与AdamGrad方法的不同之处在于,它只计算更新到该t轮,参数的历史梯度的平均值。
这种方法是将 Momentum与AdaGrad部分相结合

v=b1*v=(1-b1)*dx^2

w+=-lr*dx/根号V

5.Adam
它也是一种自适应学习率调整算法,同时也是最广泛的一种方法。它利用的是梯度的一阶矩估计和二阶矩估计。该方法调整的学习率较为平稳,且预估结果较为准确。

这种方法是将momentum与AdaGrad 相结合

m=b1*m+(1-b1)*dx

v=b2*v+(1-b2)*dx^2

w+=-lr*m/根号v

以上是比较常见的加速神经网络的训练的方法。

实例后面会再补的,先看看优化器对于训练的效果如何。

发布了87 篇原创文章 · 获赞 46 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_33472146/article/details/92800540