LSFT的学习(初学)

1.LSFT是什么?

RNN 面临问题:RNN(递归神经网络)在处理长序列时面临的主要问题:短时记忆和梯度消失/梯度爆炸

2.什么是梯度消失和梯度爆炸?

(1.是什么)梯度消失通常指的是在深度神经网络中,当反向传播算法计算梯度时,由于激活函数的选择或者网络结构的问题,导致梯度逐层减小,最终导致梯度过小无法有效更新网络参数(无法激活),从而影响网络的训练效果。一些常见的导致梯度消失的情况包括使用Sigmoid函数或者tanh函数作为激活函数。

(2.怎么做) 梯度消失问题可以通过使用其他激活函数(如ReLU、Leaky ReLU等)、使用批量归一化技术、使用残差连接等方法来缓解。

(3.用公式进行解释梯度消失) 我们用一个简单的例子来说明这个链式过程,假设我们有一个简单的神经网络,只包含输入层和输出层,且使用Sigmoid激活函数。
在这里插入图片描述

1、首先定义损失函数

在这里插入图片描述
2、然后我们通过权重矩阵和偏差矩阵计算输出输出z作为第i层的输入,然后通过激活函数g(z)计算得到期望结果a,计算当前层的损失函数J

在这里插入图片描述
3、然后通过链式法则计算梯度,损失函数J对权重进行求导,实际上等于损失函数J对预测值a的偏导 X 预测值a对输入z的偏导 X 输入z对权重w的偏导

然后实际上这个预测值a就是**sigmod函数g(z)**计算得出来的,那么预测值a对输入z的偏导==g(z)对z的偏导,所以sigmod函数求导趋于0时,会导致梯度消失。

(4.sigmod求导函数图像以及总结)
请添加图片描述
看的出来当输入值很小或者很大,梯度都会趋向于0,而我们经常使用梯度乘以学习率来更新权值函数的,所以会导致权值改变非常小,难以训练。
在这里插入图片描述

3.普通神经网络也会出现梯度消失问题,为什么RNN会这么严重?

1、 长期依赖性: RNN 的设计是为了处理序列数据,例如自然语言处理中的文本数据或时间序列数据。在这些数据中,可能存在长期依赖性,即当前时刻的信息受到前面多个时刻信息的影响。当序列很长时,反向传播中梯度需要通过多个时间步传递,这增加了梯度消失的风险。而且每个时间步的梯度都会受到前一个时间步的隐藏状态的影响。当序列很长时,梯度传递路径就会变得非常长,增加了梯度消失的风险。

在普通的神经网络中,梯度消失的问题通常随着层数的增加而加剧,尤其是在深层网络中。这是因为反向传播中的梯度需要通过每一层传递,而且在使用某些激活函数(如Sigmoid)时,梯度在传递过程中可能会逐层减小,最终导致梯度消失。

2.但是传统神经网络的多层传递与RNN的传递不太一样,具体如下:

1、传统神经网络的多层传递: 传统的神经网络(也称为前馈神经网络)的确可以有多层,并且信息在这些层之间传递。这种传递是通过网络的前向计算完成的,每一层的输出作为下一层的输入,但这种传递并不是在时间维度上进行的,而是在网络的层次结构中进行的。

2、RNN中的时间维度传递: 与传统神经网络不同,循环神经网络(RNN)具有时间维度的传递。这意味着在RNN中,信息不仅在网络的层次结构中传递,还在时间步上传递每个时间步的输出不仅取决于当前时刻的输入,还取决于前一个时间步的隐藏状态,这使得RNN能够处理序列数据中的长期依赖性。

4.什么是LSTM

LSTM,全称 Long Short Term Memory (长短期记忆) 是一种特殊的递归神经网络 。这种网络与一般的前馈神经网络不同,LSTM可以利用时间序列对输入进行分析;简而言之,当使用前馈神经网络时,神经网络会认为我们 t 时刻输入的内容与 t+1 时刻输入的内容完全无关,对于许多情况,例如图片分类识别,这是毫无问题的,可是对于一些情景,例如自然语言处理 (NLP, Natural Language Processing) 或者我们需要分析类似于连拍照片这样的数据时,合理运用 t 或之前的输入来处理 t+n 时刻显然可以更加合理的运用输入的信息。为了运用到时间维度上信息,人们设计了递归神经网络 (RNN, Recurssion Neural Network),一个简单的递归神经网络可以用这种方式表示。
请添加图片描述
在图中,xt是在t时刻的输入信息,ht是在t时刻的输出信息,我们可以看到神经元 A 会递归的调用自身并且将t-1 时刻的信息传递给t时刻。

递归神经网络在许多情况下运行良好,特别是在对短时间序列数据的分析时十分方便。但是,注意到前面着重强调了**“短”**,这是为什么呢?

上图所示的简单递归神经网络存在一个“硬伤“,长期依赖问题:递归神经网络只能处理我们需要较接近的上下文的情况:

Example 1. 想象现在设计了一个基于简单RNN的句子自动补全器,当我输入"Sea is …" 的时候会自动补全为"Sea is blue"。

在这种情况下,我们需要获取从上文获取的信息极短,而RNN可以很好的收集到 t=0 时的信息"Sea"并且补上"blue"

Example 2. 现在,假设我们用刚刚的RNN试图补全一篇文章"我一直呆在中国,……,我会说一口流利的 (?)"。

在这里,为了补全最后的空缺,需要的信息在非常远的上文(e.g. 200+字前)提到的”中国“。在实验中简单的理想状态下,经过精心调节的RNN超参数可以良好的将这些信息向后传递。可是在现实的情况中,基本没有RNN可以做到这一点。一些学者后来研究发现RNN的长期依赖问题是这种网络结构本身的问题。

假设某个参数的初始梯度为-2.24,但由于梯度消失,每次梯度更新的幅度都非常小(比如-1.99)。经过500次样本更新后,参数的梯度变化仅为10^-6。最后,经过几万个样本,参数仍然未能显著更新。
在这里插入图片描述

2.LSTM的解释

LSTM的设计或多或少的借鉴了人类对于自然语言处理的直觉性经验。要想了解LSTM的工作机制,可以先阅读一下一个(虚构的)淘宝评论:

“这个笔记本非常棒,纸很厚,料很足,用笔写起来手感非常舒服,而且没有一股刺鼻的油墨味;更加好的是这个笔记本不但便宜还做工优良,我上次在别家买的笔记本裁纸都裁不好,还会割伤手……”

如果让你看完这段话以后马上转述,相信大多数人都会提取出来这段话中几个重要的关键词“纸好”,“没味道”,“便宜”和“做工好”,然后再重新组织成句子进行转述。这说明了以下两点:

1、在一个时间序列中,不是所有信息都是同等有效的,大多数情况存在“关键词”或者“关键帧”
2、我们会在从头到尾阅读的时候“自动”概括已阅部分的内容并且用之前的内容帮助理解后文

基于以上这两点,LSTM的设计者提出了“长短期记忆”的概念——只有一部分的信息需要长期的记忆,而有的信息可以不记下来。同时,我们还需要一套机制可以动态的处理神经网络的“记忆”,因为有的信息可能一开始价值很高,后面价值逐渐衰减,这时候我们也需要让神经网络学会“遗忘”特定的信息

输入序列: 输入序列长度为T,每个时间步长t处的输入为 xt。
隐藏状态: LSTM会维护一个隐藏状态 ht,它是通过前一时间步长 ht-1和当前输入xt 计算得到的。
细胞状态: LSTM还维护一个细胞状态ct,它同样通过前一时间步长的细胞状态 ct-1和当前输入xt计算得到。

时间步长在LSTM中起到了关键作用,每个时间步长上LSTM会处理输入、更新隐藏状态和细胞状态。

**LSTM的结构设计:**通过引入输入门、遗忘门和输出门来有效地控制信息流动,解决了普通RNN中的梯度消失和梯度爆炸问题。

序列数据处理: LSTM特别适合处理时间序列数据,如文本、语音和传感器数据等,能够捕获长时间的依赖关系。

LSTM的计算流程

1.输入门:
在这里插入图片描述
2.遗忘门:
在这里插入图片描述
3.单元更新:
在这里插入图片描述
4.输出门:
在这里插入图片描述

4.LSTM的具体解释

一个普通的,使用tanh函数的RNN可以这么表示:
请添加图片描述
在这里,我们看到了在时间步𝑡-1时刻的输出值ℎ𝑡-1被复制到了𝑡时刻,并与𝑡时刻的输入𝑥𝑡整合后经过一个带权重和偏置的tanh函数形成输出,然后继续将数据复制到𝑡+1时刻。

与上图朴素的RNN相比,单个LSTM单元拥有更加复杂的内部结构和输入输出:
请添加图片描述
LSTM的关键:单元状态
在这里插入图片描述
请添加图片描述
LSTM的核心思想:接下来会描述一下LSTM四个函数层分别在做些什么:

LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。

门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。如下图所示:请添加图片描述
sigmoid层的输出是0-1的值,这决定了有多少信息能通过sigmoid层

ps:0表示不能通过,1表示能通过

前面提到LSTM由三个门来控制细胞状态,这三个门分别称为忘记门、输入门和输出门。

忘记门: LSTM的第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为忘记门的sigmoid单元来处理的。它通过查看ht-1和xt的信息来输出一个0-1间的向量,该向量的值决定了细胞状态Ct-1的哪些信息保留或丢弃多少。

ps:0表示不保留,1表示保留(结构如下图)
请添加图片描述
输入门:下一步是决定给细胞状态添加哪些新的信息。这一步又分为两个步骤,首先,利用ht−1和Xt通过一个称为输入门的操作来决定更新哪些信息。然后利用ht−1和Xt通过一个tanh层得到新的候选细胞信息C˜t,这些信息可能会被更新到细胞信息中。这两步描述如下图所示。

请添加图片描述
下面将更新旧的细胞信息Ct−1,变为新的细胞信息Ct。

更新规则: 通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息C˜t的一部分得到新的细胞信息Ct。更新操作如下图所示
请添加图片描述

输出门: 更新完细胞状态后需要根据输入的ht-1和Xt​来判断输出细胞的哪些状态特征,这里需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个-1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。该步骤如下图所示请添加图片描述

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fairy要carry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值