【神经网络】学习笔记三—LSTM简介篇

1. RNN和LSTM结构对比

RNN:

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。

LSTM:

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

其中的符号:

注意:上面的四个黄框,每一个都是普通的神经网络,激活函数就是上面标注的。

从上图也可以看出,原来的一个RNN cell只需要存储一个隐藏层状态h,而一个LSTM cell需要存储两个状态c和h。

在这里插入图片描述

LSTM比RNN多了一个细胞状态,就是最上面一条线(也就是c),像一个传送带,信息可以不加改变的流动。即Ct-2可能和Ct+1存储的信息可能非常相似,所以LSTM可以解决RNN不能长依赖的问题。其中C是长时记忆,h是短时记忆或者工作记忆。

从上面也可以看出,LSTM一个cell有三个输入,分别为上一层的的两个输出h和C,本层的输入x;有两个输出,C和h,都作为下一层的输入。

2. LSTM出现的原因

传统RNN的激活函数用的是sigmoid,它会将+∞~-∞之间的输入压缩到0~1之间。当input的值更新时,output会有很小的更新。

又因为上一层的输出将作为后一层的输入,而输出经过sigmoid之后更新速率会逐步衰减,直到输出层才会有微乎其微的更新。

从数学的角度出发,sigmoid函数在0的位置取得最大值1/4,当我们使用均值为0,方差为1的高斯分布初始化参数w,有|w|<1。

随着网络层数的加深,w的变化幅度会呈1/4的指数衰减,使得最后学不到东西,造成梯度弥散。

同样,当|w|>1,w变化幅度会指数递增,最后造成梯度爆炸。

解决办法:

(1)使用relu函数:比sigmoid要好一些,但是有时还是会产生梯度消失;

(2)加入BN(Batch Normalization)层

   ——加速收敛;

   ——控制过拟合,可以少用或者不用Dropout和正则;

   ——降低网络对初始化权重不敏感;

   ——允许使用较大的学习率;

3. LSTM信息的流动

在这里插入图片描述

一个LSTM cell有3个门,分别叫做遗忘门(f门),输入门(i门)和输出门(o门)。要注意的是输出门的输出ot并不是LSTM cell最终的输出,LSTM cell最终的输出是ht和ct。

这三个门就是上图中三个标着σ的黄色的框。sigmoid层输出0-1的值,表示让多少信息通过,1表示让所有的信息都通过。

LSTM的输入:C_{t-1},h_{t-1},x_{t}
LSTM的输出:
 C_{t},h_{t}

上图公式中的*是元素乘,不是矩阵乘法。

4. 结构解释

(1)忘记门:扔掉信息(细胞状态)

第一步是决定从细胞状态里扔掉什么信息,也就是保留多少信息。将上一步细胞状态中的信息选择性的遗忘。遗忘的数据作为本细胞状态的一部分,待会共同与新数据拼凑成本细胞状态C_{t}

实现方式为:通过sigmoid实现的忘记门。以上一步的输出ht-1这一步的xt作为输入,输出为ft。即为Ct-1里的每一个数字输出一个0~1之间的值,记为ft,表示保留多少信息(1表示完全保留,0表示完全舍弃)。

例子:以预测语言模型为例。在这个例子中,细胞状态可能包含当前主语的类别,因此正确的代词可能被选择出来。当我们看到新的主语,我们希望忘记旧的主语。

例如,他今天有事,所以我… ,当处理到‘’我‘’的时候选择性的忘记前面的’他’,或者说减小这个词对后面词的作用。

(2)输入层门:存储信息(细胞状态)

接受本层输入ht-1和xt,产生两个值,第一个通过sigmoid层产生的概率it,第二个通过tanh产生的候选值向量\widetilde{C}_{t},作为本cell细胞状态的组成部分。

此步决定在细胞状态存什么,即有第一部分旧信息后,将新的信息选择性的存到细胞状态中,实现方式:

     ——sigmoid层(输入门层)决定我们要更新什么值,这个概率表示为it​

     ——tanh层创建一个候选值向量\widetilde{C}_{t},将会被增加到细胞状态中。 我们将会在下一步把这两个结合起来更新细胞状态。

例子:在我们语言模型的例子中,我们希望增加新的主语的类别到细胞状态中,来替代旧的需要忘记的主语。 例如:他今天有事,所以我…

当处理到‘’我‘’这个词的时候,就会把主语我更新到细胞中去。

(3)更新细胞状态

首先注意上面公式中的 ∗ 是对应元素乘,而不是矩阵的乘法。

更新旧的细胞状态 实现方式:ft​ 表示忘记上一次的信息Ct−1​的程度,it​表示要将候选值\widetilde{C}_{t}加入的程度, 这一步我们真正实现了移除哪些旧的信息(比如一句话中上一句的主语),增加哪些新信息,最后得到了本细胞的状态Ct​。

(4)输出层门

最后,我们要决定作出什么样的预测。 实现方式:

      ——我们通过sigmoid层(输出层门)产生的概率ot来决定输出的本细胞状态 Ct​ 的哪些部分;

      ——然后我们将细胞状态通过tanh层(使值在-1~1之间),然后与sigmoid层的输出ot相乘得到最终的输出ht​。

所以我们只输出我们想输出的部分。 例子:在语言模型的例子中,因为它就看到了一个代词,可能需要输出与一个动词相关的信息。例如,可能输出是否代词是单数还是复数,这样如果是动词的话,我们也知道动词需要进行的词形变化。

例如:上面的例子,当处理到‘’我‘’这个词的时候,可以预测下一个词,是动词的可能性较大,而且是第一人称。 会把前面的信息保存到隐层中去。

粘贴一张图,比较详细:

总结:

——所以可以看出,本层的Ct是由上层的旧信息(一部分)和本层的新信息拼合而成。旧信息为上一个cell的一部分细胞状态Ct-1(因为乘了个概率ft),新信息为本cell的输入层门的tanh层创建的候选值向量\widetilde{C}_{t}和概率i_{t}(由sigmoid决定的一个0~1的概率)决定。

——可以看出,LSTM的公式中有三个概率值,即通过三个sigmoid得到的ft, it和ot。第一个概率ft与上个cell的细胞状态Ct-1相乘,取一部分上个cell的细胞状态信息作为本cell的细胞状态信息组成的第一部分;第二个概率it与tanh层产生的候选值向量\widetilde{C}_{t}相乘,得到本cell的细胞状态的第二部分,与第一部分相拼合得到了本cell的细胞状态Ct,作为第一个输出参数即将传下去到下一个cell;第三个概率ot与通过tanh函数的本层细胞状态Ct相乘,作为本层的输出ht,作为第二个输出参数传到下一个cell。

——可以看出,一个cell中有三个sigmoid,产生三个概率值;两个tanh,第一个产生本层的候选值向量\widetilde{C}_{t},第二个将本cell的状态信息Ct进行处理,作为输出ht。三个概率值和候选值向量\widetilde{C}_{t}的产生都是和本cell的输入ht-1与xt有关的。

5. LSTM中的变量

在这里插入图片描述

是element-wise乘,即按元素乘

介绍下各个变量的维度,LSTM cell的输出h_{t}的维度是黄框里隐藏层神经元的个数,记为d,即矩阵W_{f},W_{i},W_{c},W_{o}​的行数。t 时刻LSTM cell的输入xt​的维度记为 n,最终的输入是h_{t-1}和xt​的联合,即[h_{t-1},xt​] ,其维度是d+n,所有矩阵(包括W_{f},W_{i},W_{c},W_{o})的维度都是[d,d+n],所有的向量包括(b_{f},b_{i},b_{c},b_{o},f_{t},i_{t},o_{t},h_{t},h_{t-1},C_{t-1},C_{t},\widetilde{C}_{t}​)维度都是d。(为了表示、更新方便,我们将bias放到矩阵里)

W_{f}举例:

同理:

合并为一个矩阵就是:

转载自(40条消息) LSTM理论知识讲解_上帝是个娘们的博客-CSDN博客,个别地方有补充。

LSTM循环神经网络(Long Short-Term Memory Recurrent Neural Network)是一种特殊的循环神经网络结构,用于处理时间序列数据。LSTM网络通过引入记忆单元和门控机制,解决了传统循环神经网络中的梯度消失和梯度爆炸问题,并且具有更强的记忆能力。 LSTM网络的核心是记忆单元,记忆单元可以记住和遗忘信息。每个记忆单元由一个细胞状态(cell state)和个门控单元(输入门、遗忘门和输出门)组成。输入门决定了何时更新细胞状态,遗忘门决定了何时忘记过去的信息,输出门决定了何时输出当前的信息。这些门控单元通过对输入数据的加权求和和激活函数的处理来控制信息的流动。 LSTM网络的另一个重要特点是它可以处理双向序列。这是通过将两个LSTM网络堆叠起来实现的,一个网络从前向后处理输入序列,另一个网络从后向前处理输入序列。这种双向结构可以更好地捕捉序列中的前后依赖关系。 因此,LSTM循环神经网络是一种具有长期记忆能力和门控机制的网络结构,适用于处理时间序列数据,并且可以通过堆叠和双向结构增强其性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深度学习笔记 9 循环神经网络(RNN、LSTM)](https://blog.csdn.net/qq_41134483/article/details/127415813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值