主要是用在梯度下降中的学习率问题上,用来解决lr过大容易越过最优值造成振荡,lr过小造成收敛太慢并且可能达到局部最优。
具体公式:
decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps)
上述公式中
- decay_rate = 衰减系数
- decay_steps = 完整使用一遍训练数据所需迭代论数
- global_step = 当前迭代的轮数)
用于公式中的learning_rate、decay_rate以及decay_steps都是固定值,
可见decayed_learning_rate只与global_rate的变化有关
老规矩:
global_step = tf.Variable(0)
# 通过exponential_decay函数生成学习率
learning_rate = tf.train.exponential_decay(0.1, global_step, 100, 0.96, staircase = True)
# 使用指数衰减的学习率。在minimize函数中传入global_step将自动更新
# global_ste参数,从而使得学习率也得到相应更新
learning_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(..my loss.., global_step = global_step)