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

深度学习遇到的问题

在这里插入图片描述

文章目录

  • 梯度爆炸,梯度消失
  • 鞍点问题
  • 局部最小问题
  • 解决策略
    • 初始化参数策略
    • Mini梯度下降法
      • 如何选择合适的
    • 梯度下降算法的优化
    • 学习率衰减

梯度爆炸,梯度消失

在梯度函数上出现的以指数级递增或递减的情况分别被称为梯度爆炸,梯度消失
这个写的很清楚
梯度消失和梯度爆炸

鞍点问题

在这里插入图片描述

在鞍点附近,基于梯度的优化算法(几乎目前所有的实际使用的优化算法都是基于梯度的)会遇到较为严重的问题:
鞍点处的梯度为零,鞍点通常被相同误差值的平面所包围(这个平面又叫Plateaus,Plateaus是梯度接近于零的平缓区域,会降低神经网络学习速度),在高维的情形,这个鞍点附近的平坦区域范围可能非常大,这使得SGD算法很难脱离区域,即可能会长时间卡在该点附近(因为梯度在所有维度上接近于零)。

在SGD中可能第n个样本使其脱离鞍点,但由于鞍点附近的平坦区域范围可能非常大,导致损失函数值梯度非常小,从而使后续样本的训练使其在鞍点附近波动

局部最小问题

在这里插入图片描述

因为训练样本多,所以总有很多样本可以使其摆脱局部最小

解决策略

初始化参数策略

  • 初始化参数,权重随机,使其不相等

  • 在tanh中,权重尽量小使其数值在原点附近,梯度大,变化更明显
    在这里插入图片描述

Mini梯度下降法

  • Batch(批量):Batch 是指将整个训练数据集作为一个大批量进行训练。在每次迭代时,模型使用整个训练数据集的样本进行前向传播、计算损失和反向传播,然后根据这些样本的梯度更新模型的参数。相比于 mini-batch,使用 batch 的训练过程可能会占用更多的内存和计算资源,因为需要同时处理整个数据集。

  • Mini-batch(小批量):Mini-batch 是指从训练数据集中选择的较小的数据子集。在训练模型时,通常将整个训练数据集划分为多个 mini-batch。每个 mini-batch 包含一定数量的训练样本,通常是2的幂次方,例如 32、64 或 128。模型使用每个 mini-batch 的样本来进行前向传播、计算损失和反向传播,然后根据这些样本的梯度更新模型的参数。使用 mini-batch 的主要目的是减少计算开销和内存占用,冲分利用计算资源,提高训练的效率。

  • 随机梯度下降(Stochastic Gradient Descent, SGD)
    batch_size=1,由于失去了GPU并行计算,所以计算慢

epoch含义

  • Batch, Mini-batch,随机梯度下降对比
特性Batch GDMini-Batch GDSGD
梯度计算全数据集小批量样本单样本
更新频率每epoch一次每batch一次每样本一次
内存需求极高中等极低
收敛速度最快(初期)
梯度噪声中等极高
收敛稳定性稳定适中震荡
硬件利用率高(GPU并行)

现代深度学习实践:95%+场景使用Mini-Batch(批次大小32-512),仅在极小数据集或理论研究中使用Batch方法。

  • 损失函数值变化
    在这里插入图片描述
    随机梯度下降的噪声比mini-batch更大(波动更多)

在这里插入图片描述

因此,选择一个合适的大小进行 Mini-batch 梯度下降,可以实现快速学习,也应用了向量化带来的好处,且成本函数的下降处于前两者之间。

如何选择合适的

  • 如果训练样本的大小比较小,如m≤2000时,选择batch梯度下降法;

  • 如果训练样本的大小比较大,选择Mini-Batch梯度下降法。为了和计算机的信息存储方式相适应,代码在mini-batch大小为2的幂次时运行要快一些。典型的大小为26,27,28,29,mini-batch的大小要符合CPU/GPU内存。

  • Mini-Batch通常是更合适的

梯度下降算法的优化

学习率衰减

http://www.lryc.cn/news/583659.html

相关文章:

  • 射频信号(大宽高比)时频图目标检测anchors配置
  • 基于DeepSeek构建的openGauss AI智能优化助手:数据库性能提升新利器
  • vscode 防止linux索引爆红
  • AI智能体记忆架构的革命:LangGraph中的分层记忆系统实现
  • vue3面试题(个人笔记)
  • Flutter基础(前端教程⑧-数据模型)
  • vue快速上手
  • 设计模式(行为型)-责任链模式
  • ARM单片机OTA解析(一)
  • whitt算法之特征向量的尺度
  • 数据结构之位图和布隆过滤器
  • 详解CAN总线的位填充机制
  • 数据结构——深度优先搜索与广度优先搜索的实现
  • [附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统
  • RabbitMQ 4.1.1-Local random exchange体验
  • C++如何进行性能优化?
  • 19-C#静态方法与静态类
  • 【WEB】Polar靶场 21-25题 详细笔记
  • 从0开始学习R语言--Day42--LM检验
  • 异地组网
  • 数据分析框架和方法
  • Mac电脑,休眠以后,发现电量一直在减少,而且一个晚上,基本上是没了,开机都需要插电源的简单处理
  • 卫星通信终端天线的5种对星模式之二:功率检测型载波跟踪
  • 【PyTorch】PyTorch中数据准备工作(AI生成)
  • 深度学习——损失函数
  • Hexo + Butterfly + Vercel 完整个人Blog部署指南
  • Flask3.1打造极简CMS系统
  • 自动化Trae Apollo参数解释的批量获取
  • 股权结构解析
  • SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)