首页 > 其他分享 >如何形象地理解梯度消失—水池模型

如何形象地理解梯度消失—水池模型

时间:2024-12-02 10:29:52浏览次数:8  
标签:plt 函数 梯度 模型 消失 水位 水池

梯度消失本质

梯度消失的根本原因是链式法则的反复相乘导致梯度逐渐趋近于零。具体体现在:

  1. 在反向传播中,梯度通过链式法则计算:

  2. 这意味着:

    • 前面层的参数更新很慢(因为梯度太小)。
    • 训练网络时,后面的层学得还不错,但前面的层几乎学不到东西。

为什么会产生小于 1 的值?

  1. 激活函数的导数小于 1

    • 比如 sigmoid函数,他的导数最大值为0.25
  2. 权重初始化导致的放大/缩小

    • 如果权重值初始过小,激活值也会缩小。
    • 如果权重值初始过大,反向传播时的梯度可能会爆炸。

通俗比喻

“水池传递”模型

想象你有一个很长的水池,每一段池子之间用闸门连接。

  1. 水池的一端(最后一层)流入了很多水(损失函数的梯度很大)。
  2. 但每个闸门的开口很小(激活函数的导数小于 1)。
  3. 水从最后一段传递到第一段时,因为每次传递都损失一部分,到了前面的水池里,水量变得非常少,几乎看不到了。

这就是梯度消失的现象!


通过代码观察梯度消失

我们可以写一个简单的代码,模拟多层网络中的梯度传递,直观感受梯度的变化。

代码:观察梯度的变化
import numpy as np
import matplotlib.pyplot as plt

# 模拟网络层数
layers = 50
# 初始梯度
initial_gradient = 1.0
# 激活函数的导数值(假设是常数 0.9,每层传递时梯度乘以它)
activation_derivative = 0.9

# 保存每层的梯度值
gradients = [initial_gradient]

# 模拟梯度传递
for i in range(layers):
    new_gradient = gradients[-1] * activation_derivative  # 每层梯度乘以导数
    gradients.append(new_gradient)

# 可视化梯度变化
plt.plot(range(layers + 1), gradients, marker='o')
plt.title("Gradient Vanishing Across Layers")
plt.xlabel("Layer")
plt.ylabel("Gradient")
plt.show()

运行后,你会看到梯度在层数增加后迅速变小,基本趋于 0。


如何直观理解反向传播中的梯度消失?

  1. 想象梯度作为“信息”

    • 反向传播时,梯度是损失函数告诉每层该如何调整参数的“信号”。
    • 梯度消失时,前面的层几乎收不到信号,自然就没法学到东西。
  2. 想象网络的“学习范围”

    • 最后几层(靠近输出)能得到明确的信号。
    • 前面的层只能靠猜,或者基本没什么调整,导致前面的参数几乎不更新。

如何解决梯度消失?

1. 替换激活函数
  • 经典的 Sigmoid 和 Tanh 容易引发梯度消失。
  • 使用更好的激活函数,如 ReLU(导数是 1 或 0): f(x)=max⁡(0,x)f(x) = \max(0, x)
2. 改进网络结构
  • 使用 LSTMGRU 代替传统 RNN。
  • 它们通过门控机制避免长期依赖问题。

追问

问题:你提到“反向传播时,梯度是损失函数告诉每层该如何调整参数的“信号””,是不是可以理解为,水从最后一层往前流时,每流一层,该层都会结合自己和后一层的水位差来调整阀门的高度?损失就是水位差,我们的目的时最终尽可能让水位一致?


梯度传播和水池模型的结合

  • 损失函数作为“水位差”: 损失反映了模型预测和真实值的偏差,类似于各层之间的水位不一致。梯度传播的过程,就是根据这个偏差逐层调整阀门(参数),让水池趋于平衡。

  • 水从最后一层往前流: 反向传播的本质是将最终的损失“分摊”到每一层:

    1. 后面的层水位变化比较直接(因为离损失近)。
    2. 越往前的层,水位的调整需要基于后面层的信号。
    3. 梯度消失的问题就在于,传递的水流量太小,导致前面的阀门几乎感受不到水位差,自然也就难以调整。
  • 每层结合自己的水位和“水位差”来调整阀门

    • 梯度(“水流”)是各层根据自己的状态(隐状态、激活值等)计算出的。
    • 调整的目标是让最终的水位一致——这对应于模型预测值和真实值之间的误差尽可能减小。

你的表述扩展的数学解释

假设损失函数 LL,最终水池的“水位差”是 ∂L∂hT\frac{\partial L}{\partial h_T},需要通过链式法则传播给每一层:


进一步优化:引入反馈调节

你的水池模型还可以延伸到解决梯度消失的优化方案,比如 LSTM 的门控机制

  • 记忆单元(cell state):像水池中间加了额外的“大型储水箱”,即使水流量减少,也能通过储备的水来保持流动。
  • 门控机制:类似智能阀门,不仅根据当前水位调整,还会考虑之前的历史信息。

这就让水池模型不仅能平衡水位,还能缓解“水流衰减”的问题。


总结: 你的理解非常到位!整个深度学习的训练过程,就像我们努力让水池中的水位趋于一致的过程。梯度消失问题类似水流变得微弱无法传递,而解决方法(如 LSTM、ReLU)则相当于增强水流或储备水源的机制

标签:plt,函数,梯度,模型,消失,水位,水池
From: https://blog.csdn.net/Wabi_Sabi18/article/details/144181469

相关文章

  • OSI七层模型指的是哪七层?
    OSI七层模型指的是:物理层(PhysicalLayer):传输比特流,关注的是物理连接的建立和维护,例如网线、光纤、无线电波等。它定义了电压、电流、线缆规格等物理特性。数据链路层(DataLinkLayer):在物理层的基础上,建立相邻节点之间的连接,并进行错误检测和纠正,确保数据的可靠......
  • 【人工智能基础05】决策树模型
    文章目录一.基础内容1.决策树基本原理1.1.定义1.2.表示成条件概率2.决策树的训练算法2.1.划分选择的算法信息增益(ID3算法)信息增益比(C4.5算法)基尼指数(CART算法)举例说明:计算各个类别的信息增益2.2.叶子节点的选择2.3.剪枝预剪枝后剪枝2.4.决策树训练算法分......
  • 独家原创 | 基于TCN-SENet +BiGRU-GlobalAttention并行预测模型
    往期精彩内容:时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较全是干货|数据集、学习资料、建模资源分享!EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客拒绝信息泄露!VMD滚动分解+Informer-BiLSTM并行预测模型-CSDN博客风速预测(一)数据集介绍和预处理_风......
  • 基于改进1D-VGG模型的轴承故障诊断和t-SNE可视化
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!Py......
  • 【3DMax入门教程】打造梦幻小屋——快速上手基础模型制作
    大家好,今天我要跟大家分享的是如何使用Autodesk3DMax这款强大的建模软件,创建一个基本的住宅模型。如果你是初学者或是对家居设计感兴趣的朋友,跟着这个步骤就能轻松走进3D世界。首先,打开3DMax,我们选择“Create”菜单中的“Primitives”,然后选择“Box”来生成房子的基础框架......
  • 书生浦语大模型实战训练营L2G3000 LMDeploy 量化部署实践闯关任务
    LMDeploy量化部署实践闯关任务文章目录LMDeploy量化部署实践闯关任务前言一、任务一W4A16量化+KVcache+KVcache量化二、任务二前言使用结合W4A16量化与kvcache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话。使用Functioncall功能......
  • 大语言模型---Dropout 的定义;Dropout 减少过拟合的原因;Dropout 的实现
    文章目录1.Dropout的定义2.Dropout减少过拟合的原因3.Dropout的实现1.Dropout的定义Dropout是一种简单而有效的正则化技术,通过在每次训练迭代中随机丢弃(即屏蔽)一部分神经元,强制模型在没有某些特定神经元参与的情况下学习,从而降低对特定神经元的依赖性。机......
  • 大语言模型---Llama不同系列的权重参数文件提取;Llama-7B权重文件提取;Llama-8B权重文件
    文章目录1.概要2.Llama-7B权重文件提取3.Llama-8B权重文件提取4.主要代码功能解析1.概要Llama系列模型(Meta发布的大语言模型)在开源社区广受欢迎,不同版本(前文已经介绍过7B和8B的区别,详情请点击链接)在应用场景和硬件需求上各有不同,其权重文件的提取方式也略有差......
  • 从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型
    从HTML到CSS:开启网页样式之旅(五)——CSS盒子模型前言一、盒子模型的组成margin(外边距):border(边框):padding(内边距):content(内容):二、盒子内容区(content)关于默认宽度三、盒子内边距(padding)四、盒子边框(border)五、盒子外边距(margin)1.margin属性设置2.margin注意事项:3.marg......
  • AI大模型系列之二:ChatGPT科普(深度好文)
     目录引言语言模型的发展历程ChatGPT是什么?预训练ChatGPT分几步?第一步:如何炼成ChatGPT?第二步:如何微调ChatGPT?第三步:如何强化ChatGPT?GPT背后的黑科技Transformer是什么?Transformer在计算机视觉上CV最佳作品?ChatGPT模型的基本原理引言开篇之前,先用战略......