神经网络优化-学习率指数衰减法

在训练神经网络时,需要设置学习率(learing rate)控制参数更新的速度,学习率决定了参数每次更新的幅度,如果幅度过大,则可能导致参数在极优值的两侧来回移动;若幅度过小,又会大大降低优化速度。所以,TensorFlow提供了一种更加灵活的学习率设置方法-指数衰减法,使用tf.train.exponential_decay实现。指数衰减法的核心思想是,先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型更加稳定。tf.train.exponential_decay函数可以用以下代码实现的功能来展示:

decayed_learning_rate = learning_rate*decay_rate^(global_step/decay_steps)
#decayed_learning_rate为每一轮优化时使用的学习率,learning_rate为事先设定的初始学习率,decay_rate为衰减系数,global_step为迭代次数,decay_steps为衰减速度(即迭代多少次进行衰减)

可见使用此函数,随着迭代次数的增加,学习率逐步降低。tf.train.exponential_decay可以通过设置参数staircase选择不同的衰减方式,其默认值为False,即每一次迭代都进行学习率的优化,不同的训练数据有不同的学习率,而当学习率减小时,对应的训练数据对模型训练结果的影响也会变小。若staircase的值为True时,global_step/decay_steps的值会被转化为整数,decay_steps通常代表了完整的使用一遍训练数据所需要的迭代次数,所以每完整的使用完一遍训练数据,学习率才会重新计算并减小一次,这可以使得训练数据集中的所有数据对模型有相等的作用。函数使用代码如下:

global_step = tf.Variable(0) #迭代次数初始值为0

#通过exponential_decay生成学习率
learning_rate = tf.train.exponential_decay(0.1, global_step, 100, 0.96, staircase=True)
#0.1为初始学习率,global_step为迭代次数,100为衰减速度,0.96为衰减率

#使用指数衰减的学习率,在minimize函数中传入global_step,它将自动更新,learning_rate也随即被更新
learning_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_step)
#神经网络反向传播算法,使用梯度下降算法GradientDescentOptimizer来优化权重值,learning_rate为学习率,minimize中参数loss是损失函数,global_step表明了当前迭代次数(会被自动更新)

一般来说,初始学习率、衰减系数和衰减速度都是根据经验设置的。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值