学习率Learning Rate

本文探讨了在训练神经网络时,如何合理设置学习率。过大或过小的学习率都会影响模型训练效果,因此,文章介绍了TensorFlow提供的指数衰减法,通过tf.train.exponential_decay函数实现学习率的动态调整,确保模型训练效率与稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《TensorFlow实战Google深度学习框架(第2版)》4.3 节介绍了在训练神经网络时, 需要设置学习率( learning rate )控制参数更新的速度。 本节将进一步介绍如何设置学习率。学习率决定了参数每次更新的幅度。 如果幅度过大, 那么可能导致参数在极优值的两侧来回移动。 4.3 节介绍过优化 J(x) = x2 函数的样例。 如果 在优化中使用的学习率为 l ,那么整个优化过程将会如表 4-2 所示。

从以上样例可以看出,无论进行多少轮法代,参数将在 5 和,5 之间摇摆,而不会收敛 到一个极小值。 相反, 当学习率过小时,虽然能保证收敛性,但是这会大大降低优化速度。 我们会需要更多轮的法代才能达到一个比较理想的优化效果。 比如当学习率为 0.001 时, 选代 5 次之后, x 的值将为 4.950 要将 x 训练到 0.05 需要大约 2300 轮:而当学习率为 0.3时,只需要 5 轮就可以达到。综上所述,学习率既不能过大,也不能过小。 为了解决设定 学习率的问题, TensorFlow 提供了一种更加灵活的学习率设置方法一一指数衰减法。 tf. train.exponential_ decay 函数实现了指数衰减学习率。通过这个函数,可以先使用较大的学 习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后 期更加稳定。 exponential_decay 函数会指数级地减小学习率,它实现了以下代码的功能:

decayed_learning_rate =  learning_rate * decay_rate^(global_step I decay_ steps) 

 其中 decayed_learning_ rate 为每一轮优化时使用的学习率, learning_rate 为事先设定的 初始学习率, decay_rate 为衰减系数, decay_steps 为衰减速度。 图 4-13 显示了随着法代轮 数的增加,学习率逐步降低的过程。

tf.train.exponential_decay 函数可以通过设置参数staircase 选择不同的衰减方式。 staircase 的默认值为 False,这时学习率随法代轮数变化的趋势如 图 4-13 中灰色曲线所示。当 staircase 的值被设置为 True 时, global_step I decay_ steps 会被 转化成整数。这使得学习率成为一个阶梯函数(staircase function)。图 4-13 中黑色曲线显 示了阶梯状的学习率。在这样的设置下, decay_steps 通常代表了完整的使用一遍训练数据 所需要的迭代轮数。这个迭代轮数也就是总训练样本数除以每一个 batch 中的训练样本数。 这种设置的常用场景是每完整地过完一遍训练数据,学习率就减小一次。这可以使得训练 数据集中的所有数据对模型训练有相等的作用。当使用连续的指数衰减学习率时,不同的 训练数据有不同的学习率,而当学习率减小时,对应的训练数据对模型训练结果的影响也就 小了。下面给出了一段代码来示范如何在 TensorFlow 中使用 tf.train.exponential_decay 函数。

global step= tf.Variable(O) 
#通过 exponential_decay 函数生成学习率。 
learning rate= tf.train.exponential decay( 0.1, global step, 100, 0 . 96, staircase=True) 
# 使用指数农减的学习率。在 minimize 函数中传入 global step 将自动更新 global_step 参数,从而使得学习率也得到相应更新。 
# 如果global_steps = 10000,学习率以基数0.96每100步进行衰减,则当迭代次数从1到10000次,迭代到最后一次时,10000/100=
#100. 则衰减到基数0.96的100次方。即此时的学习率为0.01*0.96^100 已经基本等于0了
learning_ step = tf . train . GradientDescentOptimizer (learning_rate) .minimize( ... my loss ... , global_step=global_step) 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值