神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解

简介: 神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解

  本文介绍在tensorflow库中,用于动态调整神经网络的学习率的一种方法——指数衰减ExponentialDecay()策略的参数含义及其具体用法。

  在进行神经网络训练时,我们经常需要用到动态变化的学习率,其中指数衰减ExponentialDecay()策略是我们常用的一种策略。在tensorflow库中,其完整的用法是tf.keras.optimizers.schedules.ExponentialDecay(),其中的具体参数如下所示。

tf.keras.optimizers.schedules.ExponentialDecay(
    initial_learning_rate, decay_steps, decay_rate, staircase=False, name=None
)

  首先,我们需要知道,在用了ExponentialDecay()策略后,程序将动态调整神经网络训练过程中的学习率,且这一调整是与我们当前训练的step有关的。具体关于step的解释,大家可以参考文章神经网络epoch、batch、batch size、step与iteration的具体含义介绍https://blog.csdn.net/zhebushibiaoshifu/article/details/131086145),本文就不再赘述。

  如以下代码所示,使用ExponentialDecay()策略后,程序将依据如下的规律,基于当前训练的step,以及我们自行设定的几个参数,从而计算得到当前的学习率。其中,函数的返回值就是当前的学习率。

def decayed_learning_rate(step):
  return initial_learning_rate * decay_rate ^ (step / decay_steps)

  其中,initial_learning_rate * decay_rate ^ (step / decay_steps)就是当前学习率的计算公式。这里的initial_learning_ratedecay_rate以及decay_steps,就是我们前面提到的ExponentialDecay()函数的前3个参数。其中,initial_learning_rate是我们的初始学习率,decay_rate是学习率下降的速率,而decay_steps则是学习率下降的位置(具体含义我们稍后介绍)。此外,ExponentialDecay()策略还有两个参数,staircase表示我们在计算(step / decay_steps)时,是对结果向下取整还是取小数,默认为False,即取小数结果(具体含义我们稍后介绍);最后一个name参数,只是对当前这一学习率下降的策略加以命名,一般用不上这个参数,我们就不再介绍了。

  由此,我们可以初步知道,ExponentialDecay()函数的前4个参数都是用来计算当前的学习率的;且结合我们前面的公式initial_learning_rate * decay_rate ^ (step / decay_steps),我们可以知道,随着当前的step不断增加,decay_rate ^ (step / decay_steps)是降低的。

  接下来,我们直接带入具体的数据,来看一下这几个参数的具体作用。

  如下图所示,我们这里有一个训练数据集,其中共有193608个样本。

  同时,我设置了神经网络的batch size2048,那么基于前述提及的文章神经网络epoch、batch、batch size、step与iteration的具体含义介绍https://blog.csdn.net/zhebushibiaoshifu/article/details/131086145),可知在1epoch中,我们对这193608个样本加以训练,共需要的batch数目为193608 / 2048,也就是94.54,向上取整为95,相当于需要95step。此外,我设置initial_learning_ratedecay_rate以及decay_steps分别为0.10.95以及95,且设置staircaseTrue。如下图所示。

  此时,我们就可以对每一个参数的具体含义与作用加以介绍了。首先,我们开始训练神经网络模型,即step开始从0逐步增加;但是由于我的staircaseTrue,因此只要指数(step / decay_steps)是小于1的,那么都视作0(因为当前参数设置是对结果向下取整);而由于除了0以外任何数的0次方都是1,因此此时的公式initial_learning_rate * decay_rate ^ (step / decay_steps)始终等于initial_learning_rate,也就是一直保持0.1;只有当step到达我们设置的decay_steps之后,指数(step / decay_steps)才可以成为1,使得decay_rate终于产生了效果。而在这里,由于我故意设置decay_steps95,因此按道理只要经过1epoch之后,学习率就会下降——因为前面我们计算过了,在1epoch中需要95step。那么此时,学习率就变为了0.1 * 0.95

  接下来,我们运行上述代码,训练6epoch,来验证一下学习率的变化是否如同我们的设想。

  下图为TensorBoard中,学习率随着epoch的变化。这里需要注意,我这里截图的时候开了曲线图的平滑选项,因此应该以浅色的线为准。

  上面的图因为不太全,所以或许看不出什么;我们直接将学习率变化情况导出,如下图所示。

  其中,图中的step实际上表示的是epoch,大家这里理解即可。可以看到,在epoch0时(也就是进行第一个epoch时),学习率一直为0.1;而进行到第二个epoch时——此时我们训练过程的step就应该是从95开始,但还不到190,因此(step / decay_steps)始终为1,学习率就是0.1 * 0.95 = 0.095了(因为数据格式问题,精度稍有差距);随后,进行到第三个epoch时——此时我们训练过程的step就应该是从190开始,但还不到285,因此(step / decay_steps)始终为2,学习率就已经是0.1 * 0.95 * 0.95 = 0.09025了。

  由此可知,假如我将decay_steps扩大10倍,使得其为950,那么在前10epoch时,学习率都不会发生改变,而从第11epoch开始,学习率才会开始衰减。

  这里我的参数staircase设置为True,因此会出现上述结果;相反的,如果设置为False,那么计算(step / decay_steps)时,是对结果取小数,换句话说只要step发生变化,那么当前对应的学习率也会发生变化,只不过变化的幅度会稍小一些。

  由此看到,上述学习率的变化,是符合我们的预期的。当然,上图中最后两个epoch对应的学习率没有发生变化,这个具体原因我暂时也没搞清楚;不过学习率下降作为一种策略,我们通过上述代码,还是达到了动态调整学习率的需求的。

  至此,大功告成。

欢迎关注:疯狂学习GIS

相关文章
|
20天前
|
存储 云安全 安全
云计算与网络安全:技术挑战与应对策略
【10月更文挑战第6天】 在数字化浪潮下,云计算已成为现代企业不可或缺的技术支柱。然而,随着云服务的快速发展,网络安全问题亦日益凸显。本文将探讨云计算中的安全威胁,并提供针对性的防御措施。从基础的云服务概念出发,文章深入分析了云环境下的安全风险,并结合实际案例,提出了一系列增强云安全的实用建议。读者将通过本文获得对云计算安全领域的全面认识,以及如何实施有效防护的策略。
|
18天前
|
存储 安全 网络安全
云计算与网络安全:技术挑战与应对策略
【10月更文挑战第8天】随着云计算技术的飞速发展,越来越多的企业和个人开始将数据和应用迁移到云端。然而,这也带来了一系列网络安全问题。本文将探讨云计算环境下的网络安全挑战,并提出相应的应对策略。我们将从云服务模型、网络安全威胁、信息安全技术等方面进行分析,并通过代码示例展示如何实现安全措施。
|
2天前
|
SQL 安全 算法
网络安全漏洞与加密技术:保护信息安全的关键策略
【10月更文挑战第23天】在数字化时代,网络安全漏洞和信息安全问题日益突出。本文将探讨网络安全漏洞的概念、类型以及它们对信息系统的潜在威胁,并介绍加密技术如何成为防御这些安全威胁的有力工具。同时,强调安全意识的重要性,并提出加强网络安全教育和培训的建议。最后,通过一个代码示例,展示如何在网络应用中实现基本的加密措施,以增强读者对网络安全实践的认识。
|
6天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构
|
11天前
|
供应链 安全 网络安全
云计算时代的网络安全挑战与策略
【10月更文挑战第15天】随着云计算技术的飞速发展,企业和个人用户越来越依赖云服务来存储和处理数据。然而,这种便利性也带来了新的网络安全风险。本文将探讨云计算环境中的网络安全挑战,并提出相应的防御策略,以保护数据不受威胁。
27 4
|
13天前
|
存储 监控 安全
如何实施有效的网络安全策略?
【10月更文挑战第13天】如何实施有效的网络安全策略?
47 5
|
12天前
|
运维 监控 安全
连锁药店网络优化策略:一站式融合方案提升竞争力
在数字化浪潮下,线上药店通过技术创新和线上线下融合,正重塑购药体验,提供24小时服务和医保结算便利。面对激烈竞争,连锁药店和中小药店纷纷通过优化网络架构、提升服务质量和加强合规管理来增强竞争力,实现高效、安全的数字化转型。
|
19天前
|
负载均衡 Linux 数据安全/隐私保护
docker中网络策略问题
【10月更文挑战第6天】
25 5
|
16天前
|
算法 计算机视觉 Python
YOLOv8优改系列二:YOLOv8融合ATSS标签分配策略,实现网络快速涨点
本文介绍了如何将ATSS标签分配策略融合到YOLOv8中,以提升目标检测网络的性能。通过修改损失文件、创建ATSS模块文件和调整训练代码,实现了网络的快速涨点。ATSS通过自动选择正负样本,避免了人工设定阈值,提高了模型效率。文章还提供了遇到问题的解决方案,如模块载入和环境配置问题。
55 0
YOLOv8优改系列二:YOLOv8融合ATSS标签分配策略,实现网络快速涨点
|
23天前
|
存储 安全 网络安全
云计算与网络安全:技术挑战和策略
【10月更文挑战第3天】在数字化时代,云计算已经成为企业存储、处理和分析数据的首选平台。然而,随着其应用的广泛性,网络安全问题也日益凸显。本文将探讨云计算环境中的安全挑战,包括数据泄露、服务中断等风险,并介绍一些实用的安全措施,如加密技术和访问控制策略。通过这些措施,我们可以更好地保护云环境,确保数据的完整性和隐私。