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

深度学习7(梯度下降算法改进1)

优化遇到的问题

梯度消失

问题描述
        在反向传播过程中,梯度通过链式法则逐层传递时,如果梯度值过小(尤其是激活函数的导数小于1时),梯度会指数级衰减,导致浅层网络的权重几乎不更新,模型无法有效学习。

常见原因

        使用饱和激活函数(如Sigmoid、Tanh),其导数在两端接近0。

        网络过深,梯度连乘后变得极小。

解决方案

        使用ReLU、Leaky ReLU等非饱和激活函数:避免梯度因激活函数导数过小而消失。

        批量归一化(Batch Normalization):稳定每层的输入分布,缓解梯度消失。

        残差连接(ResNet):通过跳跃连接(Skip Connection)绕过非线性层,直接传递梯度。

        梯度裁剪(Gradient Clipping):限制梯度范围,防止过小或过大。

        权重初始化:如He初始化、Xavier初始化,适配激活函数特性。

梯度爆炸

问题描述
        与梯度消失相反,梯度值在反向传播中指数级增大(尤其是权重矩阵的范数大于1时),导致权重更新剧烈,模型无法收敛。

常见原因

        权重初始化值过大。

        网络过深且梯度连乘后膨胀。

解决方案

        梯度裁剪(Gradient Clipping):设定阈值,强制截断过大的梯度。

        权重正则化(L1/L2):限制权重的大小。

        使用更小的学习率:降低每次更新的步长。

        权重初始化调整:如Xavier/Glorot初始化。

鞍点问题

问题描述

        在高维优化空间中,某些方向的梯度为0(局部最小值),但其他方向梯度不为0(如马鞍形状)。此时优化算法可能停滞。

原因

        高维空间中鞍点比局部最小值更常见(尤其在大规模神经网络中)。

解决方法

        使用动量优化器(如Momentum、Adam),利用历史梯度信息跳出鞍点。

        引入随机性(如SGD的小批量噪声可能帮助逃离鞍点)。

        二阶优化方法(如牛顿法,但计算成本高,较少用于深度学习)。


解决方法

批梯度下降和小批量梯度下降法


        批梯度下降(Batch Gradient Descent)其在更新参数时使用所有的样本来进行更新。对整个训练集进行梯度下降法的时候,我们必须处理数据集,然后才能进行一步梯度下降,即每一步梯度下降法需要对整个训练集进行一次处理如果数据集很大的时候,处理速度就会比较慢。

        小批量梯度下降法(Mini-Batch Gradient Descent):每次同时处理固定大小的数据集。算法速度执行很快。如果每次处理一个样本,则变为随机梯度下降法(stochastic gradient descent)。

        

名称        优点缺点
 批梯度下降对所有 m 个训练样本执行一次梯度下降,每一次迭代时间较长,训练过程慢;相对噪声低一些,成本函数总是向减小的方向下降。
小批量梯度下降法对每一个训练样本执行一次梯度下降,训练速度快,但丢失了向量化带来的计算加速:有很多噪声,需要适当减小学习率,成本函数总体趋势向全局最小值靠近,但永远不会收敛,而
直在最小值附近波动。

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

指数加权平均

        指数加权平均(Exponentially Weight Average)是一种常用的序列数据处理方式,属于梯度下降算法内部的优化,通常用在序列场景如金融序列分析、温度变化序列分析。

        β越大,之前的数据影响越多,相当于求取平均利用的天数越多,曲线自然就会越平滑而且越滞后;反之,β越小,曲线越曲折。这些系数被称作偏差修正(Bias Correction)。

动量梯度下降


动量梯度下降(Gradient Descent with Momentum)是计算梯度的指数加权平均数,并利用该值来更新参数。整个过程为:

        使用动量梯度下降时,通过累加过去的梯度值来减少抵达最小值路径上的波动,加速了收敛,因此在横轴方向下降得更快,从而得到图中红色或者紫色的曲线。当前后梯度方向一致时,动量梯度下降能够加速学习;
        而前后梯度方向不一致时,动量梯度下降能够抑制震荡。
        我们可以这样形象的理解,小球在向下运动过程中会有加速度,导致越来越快,由于的存在使得不会一直加速运行。

http://www.dtcms.com/a/269317.html

相关文章:

  • H3初识——入门介绍之serveStatic、cookie
  • AI + 数据治理的趋势:让治理更智能、更敏捷
  • linux操作系统---MySQL Galera Cluster部署
  • 开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用
  • Vidwall: 支持将 4K 视频设置为动态桌面壁纸,兼容 MP4 和 MOV 格式
  • Python 的内置函数 setattr
  • 小架构step系列07:查找日志配置文件
  • Spring Boot登录认证实现学习心得:从皮肤信息系统项目中学到的经验
  • 【力扣(LeetCode)】数据挖掘面试题0002:当面对实时数据流时您如何设计和实现机器学习模型?
  • 独立开发A/B测试实用教程
  • 计算阶梯电费
  • [vroom] docs | 输入与问题定义 | 任务与运输工具 | json
  • 【Mac 从 0 到 1 保姆级配置教程 19】- 英语学习篇-我的英语工作流分享(AI 辅助学习)
  • 基于Arduino Leonardo的机械键盘设计与实现(项目资料)(ID:10)
  • 虚拟机的共享文件夹
  • springAI学习:Advisors
  • 微信小程序81~90
  • 人工智能-基础篇-23-智能体Agent到底是什么?怎么理解?(智能体=看+想+做)
  • C# Dictionary源码分析
  • Qt基本组件详解:按钮、输入框与容器控件
  • 基于Java+SpringBoot的在线小说阅读平台
  • Pandas 学习教程
  • c语言中的函数VII
  • Rust单例模式:OnceLock的使用指南
  • 熔断限流降级
  • Pipeline 引用外部数据源最佳实践
  • 深度学习--tensor(创建、属性)
  • pytest合并allure报告解决方案
  • 硅基流动:云服务平台初解
  • 钉钉企业内部机器人实现单聊会话互动开发指南