CS231n李飞飞计算机视觉 神经网络训练细节part2上

本文探讨了神经网络训练中常见的参数更新方法,包括SGD、Momentum、Nesterov Momentum、AdaGrad、RMSProp和Adam更新。这些方法通过不同的策略改善了梯度下降的效率和收敛速度,例如动量更新加速收敛,AdaGrad和RMSProp针对不同维度梯度大小的调整,以及Adam结合动量和RMSProp的优势。

神经网络训练细节part2上

参数更新机制

  1. SGD
  2. Momentum update
  3. Nesterov Momentum update
  4. AdaGrad update
  5. RMSProp update
  6. Adam update

SGD

随机梯度下降:

x += - learning_rate * dx

特点:如果在水平方向上梯度较小,而在垂直方向上梯度较大,会造成在水平方向更新较慢,而在垂直方向上造成上下抖动。收敛速度慢。

Momentum update

动量更新

v = mu*v - learning_rate * dx
x += v

借用物理学动量的思想,给参数更新加上一个动量。其中mu是超参数,通常设置在0.5到0.9之间,v的初始值为0。

特点:(1)收敛速度比SGD快。(2)从实现可以看出动量更新会逐渐放慢速度,最终停下来。

Nesteriov Momentum update

不同于动量更新,动量更新是当前的梯度加上当前的动量值,得到实际更新的方向,而Nestreriov Momentum update是用当前的动量加上预测的梯度得到更新的方向。

左边:

v_t=\mu v_{t-1}-learning\; rate\bigtriangledown f(\Theta _{t-1})\\ \theta_{t}=\theta _{t-1}+v_t

右边:

v_t=\mu v_{t-1}-learning\: rate\bigtriangledown f(\Theta _{t-1}+\mu v_{t-1})\\ \theta_{t}=\theta _{t-1}+v_t

特点:比前面两种更新速度更快地向最优解靠近。

AdaGrad update

cache += dx**2
x += learning_rate * dx / (np.sqrt(cache) + 1e-7 )

在更新时,考虑到了数据每一维的规模。其中1e-7是为了防止分母为0的情况出现。

特点:(1)补偿措施。比如垂直方向上梯度较大,水平方向上梯度较大,在用AdaGrad进行更新参数时,就会用垂直方向上的梯度除以对应的cache会使更新的梯度值较小,而同理会使水平方向上的梯度值较大,这在一定程度上是一种补偿措施。因为网络很多情况下需要在梯度大的方向上得到梯度叫较小的更新。(2)网络最终会停止。因为cache会不断变大,会使更新步长越来越小,最终会使网络停止更新,而网络需要不断更新。

RMSProp update

cache = dacay_rate * cache + (1 - decay_rate) * dx**2
x += - learning_rate * dx / (np.sqrt(cache) + 1e-7)

该方法对AdaGrad的最终停止更新做出了改善,decay_rate是一个超参数,名为衰减率,一般设置为0.99。

特点:具备AdaGrad的全部优点,并且不会过早停止。

Adam update

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

是动量和RMSProp的一种结合。

实际上实现的时候会有偏置矫正,一开始的时候数据可能不正确,在最初几次更新中,使m和v较大,不会过小。

m = beta1*m + (1-beta1)*dx
v = beta2*v + (1-beta2)*(dx**2)
m /= 1-beta1**t
v /= 1-beta2**t
x += - learning_rate * m / (np.sqrt(v) + 1e-7)

学习率:最初使用较高的学习率,然后逐渐减小学习率。

 

内容概要:本文围绕SecureCRT自动化脚本开发在毕业设计中的应用,系统介绍了如何利用SecureCRT的脚本功能(支持Python、VBScript等)提升计算机、网络工程等相关专业毕业设计的效率与质量。文章从关键概念入手,阐明了SecureCRT脚本的核心对象(如crt、Screen、Session)及其在解决多设备调试、重复操作、跨场景验证等毕业设计常见痛点中的价值。通过三个典型应用场景——网络设备配置一致性验证、嵌入式系统稳定性测试、云平台CLI兼容性测试,展示了脚本的实际赋能效果,并以Python实现的交换机端口安全配置验证脚本为例,深入解析了会话管理、屏幕同步、输出解析、异常处理和结果导出等关键技术细节。最后展望了低代码化、AI辅助调试和云边协同等未来发展趋势。; 适合人群:计算机、网络工程、物联网、云计算等相关专业,具备一定编程基础(尤其是Python)的本科或研究生毕业生,以及需要进行设备自动化操作的科研人员; 使用场景及目标:①实现批量网络设备配置的自动验证与报告生成;②长时间自动化采集嵌入式系统串口数据;③批量执行云平台CLI命令并分析兼容性差异;目标是提升毕业设计的操作效率、增强实验可复现性与数据严谨性; 阅读建议:建议读者结合自身毕业设计课题,参考文中代码案例进行本地实践,重点关注异常处理机制与正则表达式的适配,并注意敏感信息(如密码)的加密管理,同时可探索将脚本与外部工具(如Excel、数据库)集成以增强结果分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值