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

深度学习之优化器

梯度下降法

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.dtcms.com/a/336110.html

相关文章:

  • 自然语言处理NLP---预训练模型与 BERT
  • Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小
  • Git 入门指南:核心概念与常用命令全解析
  • 「数据获取」《中国文化文物与旅游统计年鉴》(1996-2024)(获取方式看绑定的资源)
  • 链式前向星、vector存图
  • Kafka_Broker_副本基本信息
  • 【FreeRTOS】信号量与互斥量
  • LeetCode热题100--104. 二叉树的最大深度--简单
  • 给纯小白的Python操作 PDF 笔记
  • 【牛客刷题】BM63 跳台阶:三种解法深度解析(递归/DP动态规划/记忆化搜索)
  • Baumer高防护相机如何通过YoloV8深度学习模型实现工作设备状态的检测识别(C#代码UI界面版)
  • Shell脚本-流程控制语句基本语法结构
  • Mutually aided uncertainty
  • 5G NR PDCCH之速率匹配
  • 【数据结构】堆和二叉树详解——上
  • 神经网络中的梯度概念
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • 把 AI 变成“气味翻译官”——基于微型电子鼻的低功耗 VOC 实时识别系统
  • 13、系统设计
  • 何为“低空经济”?
  • DeepSider:免费使用顶级大模型、全方位AI赋能的浏览器插件
  • gitee 流水线+docker-compose部署 nodejs服务+mysql+redis
  • Effective C++ 条款46:需要类型转换时请为模板定义非成员函数
  • tauri2项目WindowConfig配置中titleBarStyle样式区别,仅macOS有效
  • 如何在Windows系统中更改用户名(中文转英文全流程)
  • Deepseek一体机
  • 视觉图像界面设计【QT-creator高级编程 - 01】图像显如何保证跟随主窗口变化,且保留必要的设定窗口
  • MiracleVision-美图旗下AI视觉大模型
  • 2001-2024年中国冬小麦30米分辨率种植分布数据集
  • 【Luogu】每日一题——Day20. P4366 [Code+#4] 最短路 (图论)