Advertisement

深度学习学习率的研究

阅读量:

一.是通过人为经验进行设定,如到达多少轮后,设定具体的学习率为多少

分段常数衰减
分段常数衰减是在事先定义好的训练次数区间上,设置不同的学习率常数。刚开始学习率大一些,之后越来越小,区间的设置需要根据样本量调整,一般样本量越大区间间隔应该越小。
tf.train.piecewise_constant(
x,
boundaries,
values,
name=None
)
x: 标量,指代训练次数
boundaries: 学习率参数应用区间列表
values: 学习率列表,values的长度比boundaries的长度多一个
name: 操作的名称
boundaries = [10, 20, 30] (分三段,然后设置四个不同的学习速率)
learing_rates = [0.1, 0.07, 0.025, 0.0125]
分段常数衰减可以让调试人员针对不同任务设置不同的学习率,进行精细调参,要求调试人员对模型和数据集有深刻认识,要求较高。
在这里插入图片描述

二.是随着迭代轮数的增加学习率自动发生衰减,这类有比较常用的指数型衰退

1.指数衰减
指数衰减是比较常用的衰减方法,学习率是跟当前的训练轮次指数相关的。
计算公式是:
decayed_learning_rate = learning_rate *
decay_rate ^ (global_step / decay_steps)
tf.train.exponential_decay(
learning_rate,
global_step,
decay_steps,
decay_rate,
staircase=False,
name=None
)
learning_rate: 初始学习率
global_step: 当前训练轮次,epoch
decay_step: 定义衰减周期,跟参数staircase配合,可以在decay_step个训练轮次内保持学习率不变
decay_rate,衰减率系数
staircase: 定义是否是阶梯型衰减,还是连续衰减,默认是False,即连续衰减(标准的指数型衰减)
name: 操作名称
在这里插入图片描述
2.自然指数衰减
计算公式是:
decayed_learning_rate = learning_rate * exp(-decay_rate * global_step)
tf.train.natural_exp_decay(
learning_rate,
global_step,
decay_steps,
decay_rate,
staircase=False,
name=None
)
learning_rate: 初始学习率
global_step: 当前训练轮次,epoch
decay_step: 定义衰减周期,跟参数staircase配合,可以在decay_step个训练轮次内保持学习率不变
decay_rate,衰减率系数
staircase: 定义是否是阶梯型衰减,还是连续衰减,默认是False,即连续衰减(标准的指数型衰减)
name: 操作名称
在这里插入图片描述2.多项式衰减
多项式衰减是这样一种衰减机制:定义一个初始的学习率,一个最低的学习率,按照设置的衰减规则,学习率从初始学习率逐渐降低到最低的学习率,并且可以定义学习率降低到最低的学习率之后,是一直保持使用这个最低的学习率,还是到达最低的学习率之后再升高学习率到一定值,然后再降低到最低的学习率(反复这个过程)。
tf.train.polynomial_decay(
learning_rate,
global_step,
decay_steps,
end_learning_rate=0.0001,
power=1.0,
cycle=False,
name=None
)
learning_rate: 初始学习率
global_step: 当前训练轮次,epoch
decay_step: 定义衰减周期
end_learning_rate:最小的学习率,默认值是0.0001
power: 多项式的幂,默认值是1,即线性的
cycle: 定义学习率是否到达最低学习率后升高,然后再降低,默认False,保持最低学习率
name: 操作名称
多项式衰减的学习率计算公式:
global_step = min(global_step, decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) * (1 - global_step / decay_steps) ^ (power) +end_learning_rate
如果定义 cycle为True,学习率在到达最低学习率后往复升高降低,此时学习率计算公式为:
decay_steps = decay_steps * ceil(global_step / decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) *(1 - global_step / decay_steps) ^ (power) + end_learning_rate
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~