- Published on
对GNN的理解
- Authors

- Name
- 卢翔宇
- @y9840836216317
对GNN的理解
让神经网络开始有了记忆:RNN
原有的前馈神经网络网络有一个共同的特点:输入是相互独立的。你给它一张猫的图片,它判断是猫;再给它一张狗的图片,它判断是狗。这两个判断之间没有任何关联。模型处理当前输入时,完全不记得上一个输入是什么。
这种“失忆症”在很多现实场景中是致命的。比如:
理解一句话:要理解“我今天不想吃饭”,你必须按顺序记住“我”、“今天”、“不想”、“吃饭”这些词。如果模型记不住前面的词,就无法理解整句话的含义。
预测股票:要预测明天的股价,今天的股价、昨天的股价,乃至过去一段时间的趋势都至关重要。
语音识别:声音是一个连续的波形,前后发音紧密相连,共同构成一个词或一句话。
为了解决这类序列数据(Sequential Data)的处理问题,科学家们意识到,模型必须拥有“记忆”能力。
核心思想:引入循环
![[Pasted image 20250725101256.png]] 在上面的这个例子中,我们想要通过前三天的数据来预测第四天的数据. 为了赋予模型短期的记忆能力,我们做出如下设计:RNN在处理序列中的每一个元素时,不仅会接收当前的输入,还会接收来自上一个时间序列的隐藏状态(即图中激活函数的输出值),这个隐藏状态包含了到上一个时刻为止的所有重要信息。
新问题:梯度消失与梯度爆炸
由于RNN的循环特性,在反向传播时,梯度需要穿过很多个时间步。所以,相较于普通的前馈神经网络,RNN在进行反向传播的时候链式求导的式子会长上许多,假设我们要求损失函数对的偏导,这其中进行了50次链式求导,每次链式求导的值都是2,那最终的结果就是,这是一个非常大的数字,即梯度爆炸,这就导致我们在梯度下降时很难找到一个最优解。同理,如果假设每次链式求导的值都为0.5,最终就会导致梯度消失的问题。 这样的结果就是RNN只能拥有短期的记忆如果让RNN处理“我在法国长大,……,所以我能说流利的法语。”这个句子,当RNN处理到“流利的法语”时可能就已经把“我在法国长大”给忘了。
解决梯度问题:LSTM与GRU
LSTM
为了解决梯度的问题,LSTM 引入了一个更为精巧的内部结构。它的核心思想是增加一个 “细胞状态” (Cell State) 和三个控制信息流动的 “门” (Gates)。
可以将“细胞状态”想象成一条贯穿整个网络的传送带。信息在这条传送带上可以很顺畅地流动,几乎不被改变,从而解决了信息丢失的问题。
而“门”就像是这条传送带上的控制器,它们可以决定:
哪些旧信息应该被遗忘掉?
哪些新信息应该被添加进来?
当前应该输出什么信息?
LSTM 的三个关键“门”
LSTM 的强大能力来自于这三个精心设计的门结构:
a. 遗忘门 (Forget Gate)
作用:决定从长期记忆中丢弃什么信息。
工作方式:它会查看上一个时间步的输出 (即图中的短期记忆) 和当前时间步的输入 ,然后通过sigmoid函数输出一个 0 到 1 之间的值。这个值代表了保留旧信息的程度:1 表示“完全保留”,0 表示“完全丢弃”。输入的值越大(如10)保留程度越高,输入值越小(如-10)保留程度就越低。 ![[Pasted image 20250725144027.png]]
b. 输入门 (Input Gate)
作用:决定让哪些新信息加入到细胞状态中。
工作方式:这部分分为两步。
输入门:一个
sigmoid层决定哪些值需要被更新。这一层负责筛选,决定记忆单元中哪些旧的记忆需要被新的信息更新候选记忆:一个
tanh层(把输入转化为-1~1)创建一个新的候选值向量 。 这一层的功能是生成一组全新的“候选值”,这些值将作为可能被添加到记忆单元中的新信息。最后,将这两部分结合起来,对长期记忆进行更新。
同样的,如果输入的值越大,输入门的值和候选记忆的就越大,记忆的保留程度就越大。输入的值越小······ ![[Pasted image 20250725144515.png]]
c. 输出门 (Output Gate)
作用:决定要输出什么信息。
工作方式:输出的内容将基于当前的细胞状态。
一个
sigmoid层决定长期记忆的哪个部分将被输出。然后,将长期记忆通过一个
tanh层(将值缩放到 -1 到 1 之间),并与sigmoid门的输出相乘。 最终输出新的短期记忆交给下一个神经元去处理。
![[Pasted image 20250725155947.png]]
4. 一个简单的比喻
想象你在阅读一本悬疑小说并用笔记本做笔记:
细胞状态 (Cell State):就是你的笔记本,它长期记录着故事的核心线索和人物关系。
遗忘门 (Forget Gate):当你发现一个之前认为是嫌疑人的角色其实有不在场证明时,你会在笔记本上划掉他的一些嫌疑记录(遗忘不重要的信息)。
输入门 (Input Gate):主角发现了一个全新的、至关重要的线索,你决定把这个新线索重点标记在笔记本里(存入新信息)。
输出门 (Output Gate):你的朋友问你“现在故事进展到哪了?”,你不会把笔记本从头到尾念一遍,而是会根据里面的核心线索,整理总结一下,然后告诉他一个概要(输出相关信息)。 把若干个神经元组合到一起便可以创建一个LSTM神经网络: ![[Pasted image 20250725161028.png]] 图中是一个简单的预测公司股价的例子,可以看到最终的输出结果为0.0,符合预期结果。
虽然说LSTM解决了RNN的梯度问题,但还有没有解决的问题,比如LSTM只能进行串行计算,无法有效的利用计算资源;标签如果时间序列太长的话仍然会有梯度消失的问题,后来的Transformer较好的解决了这两个问题
GRU(Gated Recurrent Unit)
GRU 可以理解为 LSTM 的一个非常流行且更简洁的变种。它在 2014 年被提出,目标同样是解决标准 RNN 的梯度消失问题,以捕捉序列数据中的长期依赖。但它通过一种更精简的结构实现了与 LSTM 媲美的效果。
与 LSTM 拥有三个门(遗忘门、输入门、输出门)不同,GRU 将其简化为了两个门:
重置门(Reset Gate) 作用:决定要“忽略”多少过去的记忆。
重置门会审视过去的隐藏状态 和当前输入,然后通过sigmoid函数输出一个介于 0 和 1 之间的向量。这个值将决定前一个状态 在多大程度上被用来计算“候选隐藏状态”。
更新门(Update Gate) 作用:决定要“保留”多少过去的记忆,以及要“接受”多少新的记忆。 更新门是 GRU 的精髓所在。它同时控制着两件事:
- 应该从前一状态 中保留多少信息到当前状态
- 应该从“候选隐藏状态”中提取多少新信息到当前状态 ![[Pasted image 20250725170734.png]]
Reference
[[Recurrent Neural Networks (RNNs), Clearly Explained!!!]] [[Long Short-Term Memory (LSTM), Clearly Explained]] [[【深度学习 搞笑教程】30 门控神经单元GRU 草履虫都能听懂 零基础入门 持续更新]]