《Python深度学习实战:基于TensorFlow和Keras的聊天机器人》 —1.9 优化器
1.9 优化器
现在你已经知道需要使用损失函数来获得模型参数的最优值了。那么,到底怎样求得最优值呢?
开始你假定了模型(线性回归等)中权重和偏置量的初始值。现在你需要找到抵达参数最优值的方法。优化器就是找到参数最优值的方法。在每一次迭代中,参数值朝优化器指明的方向去更新。假如你有16个权重值(w1, w2, w3, ..., w16)和4个偏置量(b1, b2, b3, b4)。开始你可以假定每个权重值和偏置量为0(或者是1,或者是其他任意的数值)。优化器时刻谨记着最小化的目标,决定w1(以及其他参数)在下一次迭代中应该是增加还是减少。在很多次迭代之后,w1(以及其他参数)将会稳定到最优值。
换言之,TensorFlow或者每一个其他的深度学习框架都会提供优化器来逐步更新每一个参数的值,以最终达到最小化损失函数的目的。优化器的目标就是给定权重值和偏置量在下一次迭代时变化的方向。假定有64个权重值和16个偏置量,你尝试在每次迭代中改变其值(在反向传播中),在尝试最小化损失函数的很多次迭代之后,应该可以得到正确的权重值和偏置量的值。
为模型选择一个最好的优化器,收敛快并且能学到合适的权重和偏置量的值,是一个需要技巧的事情。
自适应技术(Adadelta、Adagrad等)对于复杂的神经网络模型来说是很好的优化器,收敛更快。大多数情况下,Adam可能是最好的优化器。Adam还优于其他的自适应技术,但是其计算成本很高。对于稀疏数据集来说,一些方法如SGD、NAG以及momentum不是最好的选择,能自适应调整学习率的方法才是。一个附加的好处就是不需要调整学习率,使用默认的学习率就可以达到最优解。
1.9.1 优化器实例
下面是演示代码:
- 点赞
- 收藏
- 关注作者
评论(0)