tf.train库包含优化器设置、梯度更新、梯度计算、梯度裁剪、学习率衰减等训练过程中需要用到的API函数
1.优化器设置
2.优化器最小化loss
3.梯度裁剪
4.学习率衰减
5.例子:应用梯度裁剪、学习率衰减、优化器设置和loss最小化
1.优化器设置
1.1 随机梯度下降法(SGD)优化器
tf.train.GradientDescentOptimizer.(learning_rate, use_locking=False,
name='GradientDescent')
功能:创建随机梯度下降法SGD优化器,
learning_rate: 学习率,一个Tensor或者一个浮点数
use_locking:是否使用locks来更新操作
返回:一个优化器
随机梯度下降法的梯度更新公式
梯度下降算法是用的最普遍的优化算法,不过选择合适的learning rate比较困难,且SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点,还存在稀疏特征更新问题(不常出现的特征更新慢,如word2vec的embedding矩阵)。
1.2 Momentum梯度下降法优化器
tf.train.MomentumOptimizer.(learning_rate, momentum, use_locking=False, name='Momentum')
功能:创建Momentum优化器,
learning_rate: 学习率,一个Tensor或者一个浮点数
momentum:动量值,一个Tensor或者一个浮点数
use_locking:是否使用locks来更新操作
返回:一个优化器
Momentum梯度下降法的梯度更新公式
其中,η为学习率,超参数为?,?为更新参数,参数对应的?t为梯度,mt为累计动量。
momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度,引入惯量缓解局部最优问题但是未解决稀疏特征更新问题
1.3 AdaG梯度下降法优化器
tf.train.AdagradOptimizer.(learning_rate, initial_accumulator_value=0.1,
use_locking=False, name='Adagrad')
功能:创建AdaG优化器,
learning_rate: 学习率,一个Tensor或者一个浮点数
initial_accumulator_value:初始累计值,一个正浮点数
use_locking:是否使用locks来更新操作
返回:一个优化器
AdaG梯度下降法的梯度更新公式
其中,η为学习率,?为更新参数,参数对应的?t为梯度
在时间步长中,Adagrad方法基于每个参数计算的过往梯度,为不同参数θ设置不同的学习率。
一开始,每个参数θ使用相同的学习率,每次会对所有参数θ进行更新。在每个时间步中,Adagrad方法为每个参数θ选取不同的学习率,更新对应参数,然后进行向量化。,Adagrad方法非常适合处理稀疏数据
1.4 Adam梯度下降法优化器