当前位置: 首页 > ds >正文

深度学习之优化器

梯度下降法

1、基本思想:先设定一个学习率η\etaη,参数沿梯度的反方向移动。假设需要更新的参数为w,梯度为g,更新策略可以表示为
w←w−η∗g w \leftarrow w - \eta*g wwηg
2、梯度下降算法有三种不同的形式:

  • BGD(Batch Gradient Descent):批量梯度下降,每次参数更新使用所有样本
  • SGD(Stochastic Gradient Descent):随机梯度下降,每次参数更新只使用一个样本
  • MBGD(Mini-Batch Gradient Descent):小批量梯度下降,每次参数更新使用小部分数据样本

三个优化算法虽然采用的数据量不同,但是步骤相同

step1g=∂loss∂wstep2求梯度的平均值step3更新权重w←w−η∗g \text{step1} \qquad g = \frac{\partial loss}{\partial w} \\ step2 \qquad 求梯度的平均值 \\ step3 \qquad 更新权重 w \leftarrow w - \eta * g step1g=wlossstep2求梯度的平均值step3更新权重wwηg

缺点

  • 对超参数学习率敏感:过小导致收敛速度过慢,过大又越过极值点
  • 容易卡在鞍点位置,即梯度为0的地方
  • 在比较平坦的区域,由于梯度接近于0,优化算法会因误判,还未到达极值点,就提前结束迭代,陷入局部最小值

在这里插入图片描述
在这里插入图片描述

多维梯度下降法

即有多个参数需要优化X=[x1,x2....,xd]TX = [x_1,x_2....,x_d]^TX=[x1,x2....,xd]T
多元损失函数,梯度也是多元的,由d个偏导数组成
∇f(X)=∇fx∇x1,∇fx∇x2..,∇fx∇xdT \nabla f(X) = {\frac{\nabla f_x}{\nabla x_1},\frac{\nabla f_x}{\nabla x_2}..,\frac{\nabla f_x}{\nabla x_d}}^T f(X)=x1fx,x2fx..,xdfxT
xi←xi−η∗∇f(X) x_i \leftarrow x_i - \eta * \nabla f(X) xixiηf(X)
构造一个目标函数f(x)=x12+2x22f(x) = x_1^2 + 2x_2^2f(x)=x12+2x22,损失函数的梯度为∇f(x)=[2x1,,4x2]T\nabla f(x) = [2x_1,,4x_2]^Tf(x)=[2x1,,4x2]T

动量

思想:让参数的更新具有惯性,每一步更新都是由前面梯度的累积v和当前点梯度g组合而成

公式:
累计梯度更新:v←αv+(1−α)gv \leftarrow \alpha v+(1-\alpha)gvαv+(1α)g,其中α\alphaα为动量参数,v为累计梯度,η\etaη为学习率。
梯度更新:x←x−η∗vx \leftarrow x- \eta*vxxηv

优点:

  • 加快收敛帮助参数在正确的方向上加速前进
  • 跳出局部最小值
    在这里插入图片描述

Adagrad

自适应学习率优化算法
之前的随机梯度下降法,对所有的参数,都是使用相同的、固定的学习率进行优化,但是不同的参数的梯度差异可能很大,使用相同的学习率,效果不会很好。
在这里插入图片描述
Adagrad思想:对于不同参数,设置不同的学习率,如果一个参数的梯度一直很大,那么其对应的学习率就变小一点,防止振荡,如果梯度小,就学习率大一点。
方法:对于每个参数,初始化一个累计平方梯度 r=0,然后每次将该参数的梯度平方求和累加到这个变量r上:
r←r+g2 r \leftarrow r +g^2 rr+g2
更新参数时,学习率为:
ηr+σ,σ为极小值,防止分母为0 \frac{\eta}{\sqrt{r+\sigma}},\sigma为极小值,防止分母为0 r+ση,σ为极小值,防止分母为0
权重更新:
w←w−ηr+σ∗g w \leftarrow w - \frac{\eta}{\sqrt{r+ \sigma}}*g wwr+σηg

RMSProp

RMSProp:Root Mean Square Propagation 均方根传播
RMSProp在Adagrad的基础上,进一步在学习率的方向上优化
累计平方梯度:r←λr+(1−λ)g2r\leftarrow \lambda r +(1-\lambda)g^2 rλr+(1λ)g2
权重更新:
w←w−ηr+σ∗g w \leftarrow w - \frac{\eta}{\sqrt{r+ \sigma}}*g wwr+σηg
就是多了一个λ\lambdaλ衰减系数

Adam

缝合怪,缝合了上述所有优化器
1、梯度方面增加momentum, 使用累计梯度:v←αv+(1−α)gv \leftarrow \alpha v+(1-\alpha)gvαv+(1α)g
2、同RMSProp优化算法一样,对学习率进行优化,使用累计平方梯度:
r←λr+(1−λ)g2r\leftarrow \lambda r +(1-\lambda)g^2 rλr+(1λ)g2
3、偏差纠正
v^=v1−αt,r=r1−λt \hat{v} = \frac{v}{1-\alpha^t},r=\frac{r}{1-\lambda^t} v^=1αtv,r=1λtr

Adam 的偏差纠正就是通过 m^,t^\hat{m},\hat{t}m^,t^ 把指数加权平均在初期“偏小”的问题修正掉,从而保证优化器在早期能稳定、合理地更新参数。
初始v=0,r=0

在这里插入图片描述

http://www.xdnf.cn/news/18206.html

相关文章:

  • 数据与模型融合波士顿房价回归建模预测
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • LeetCode 1323: 6和9组成的最大数字
  • 内网后渗透攻击--隐藏通信隧道技术(应用层隧道技术)
  • 一键管理 StarRocks:简化集群的启动、停止与状态查看
  • JAVA后端开发——Token自动续期机制的必要性
  • 库制作与原理(下)
  • RabbitMQ面试精讲 Day 24:消费者限流与批量处理
  • Linux中iSCSI存储配置与管理指南
  • Leetcode 15 java
  • 【LeetCode 热题 100】118. 杨辉三角
  • 使用Github Page发布网站
  • Compose笔记(四十六)--Popup
  • 廖雪峰-java教程-Part01
  • RK3588开发板Ubuntu系统烧录
  • 如何利用gemini-cli快速了解一个项目以及学习新的组件?
  • GitHub Copilot:AI编程助手的架构演进与真实世界影响
  • 【102页PPT】新一代数字化转型信息化总体规划方案(附下载方式)
  • 第七十九:AI的“急诊科医生”:模型失效(Loss Explode)的排查技巧——从“炸弹”到“稳定”的训练之路!
  • 为什么神经网络在长时间训练过程中会存在稠密特征图退化的问题
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月17日第163弹
  • 内网穿透系列十一:NPS 是一款轻量级、高性能、功能强大的内网穿透工具,自带Web管理端,支持Docker快速部署
  • Win10快速安装.NET3.5
  • Web全栈项目中健康检查API的作用(现代云原生应用标准实践)(health check、healthcheck、livenessProbe、健康探针)
  • 博士招生 | 香港大学 机器增强认知实验室 招收博士生/实习生/访问学生
  • File 类的用法和 InputStream, OutputStream 的用法
  • Python列表与元组:数据存储的艺术
  • 车载诊断架构 --- 怎么解决对已量产ECU增加具体DTC的快照信息?
  • python---模块
  • CentOS7安装使用FTP服务