![中国战略性新兴产业研究与发展:智慧工业](https://wfqqreader-1252317822.image.myqcloud.com/cover/259/44175259/b_44175259.jpg)
3.2.3 循环神经网络数据特征提取
循环神经网络(RNN)体现于下层输入需加上当前层输出,即隐含层之间是有相互作用的。一个多层感知机仅表征输入与输出向量的映射关系,而RNN是将历史输入映射至每一个输出,因为它的隐含节点个数足够多,因此可以以任意精度逼近任意可度量的序列到序列的映射。这与MLP中的全局逼近理论相对应。环形连接最突出的特点是能在网络的中间状态保留之前的“记忆”,而这种状态会影响网络最终的输出。单个隐含层的MLP和RNN的前向传播基本一致,两者的区别在于RNN是通过隐藏层上一次激活值和当前的输入综合计算得到当前点的激活值。与标准的反向传播算法一样,链式法则在RNN中的随时间反向传播(BackPropagation Through Time, BPTT)算法中被不断使用。RNN的网络结构如图3-8所示。
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/119_01.jpg?sign=1739291185-cbgypG5FO96Pe8gsBed7sq7qTPae509H-0-50b470f38e0de9bce53b17933dca60f8)
图3-8 RNN的网络结构
如图3-8所示,RNN层级结构相对其他神经网络而言比较简单,它由输入层、隐含层和输出层组成。在隐含层中有一个箭头表示数据循环更新,这就是实现时间记忆功能的方法。将隐含层展开,可得到如图3-9所示的展开图。
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/120_01.jpg?sign=1739291185-Fdqv2iWYz76OPg5CWAWP4hZmrJkZzyJf-0-ba5cbb67d2fff11b9ec1951eee812da7)
图3-9 RNN隐含层展开图
图3-9中,每个圆形可以看作是一个神经元,每个神经元执行的操作具有一致性,因此折叠收缩呈左半图。简单概括RNN,就是重复使用一个神经元结构。RNN是一个序列到序列的模型,假设Xt-1,Xt,Xt+1是一个输入:“我在食堂吃饭”,那么Ot-1,Ot就应该对应“我在”“食堂”,预测Xt+1是“吃饭”的概率比较大。因此,可以定义:Xt表示t时刻的输入;Ot表示t时刻的输出,St表示t时刻的记忆。
传统的RNN具有梯度消失和梯度爆炸的问题,这使得训练模型极其困难。为了解决这些问题,长短期记忆(LSTM)神经网络应运而生,它是一种门控递归神经网络(GRNN)。LSTM引入了更为复杂但有效的隐含层节点激活方式——在人工神经元中引入“门”的概念,可以有效地解决因梯度消失与梯度爆炸而使深度神经网络深度不足的问题。其算法结构图如图3-10所示。
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/120_02.jpg?sign=1739291185-TXbHRL1aO7VRPWI5AlLP9KDGWoqPxRJM-0-508f9e5d8716cae927ea8e8dc32e34aa)
图3-10 LSTM算法结构
了解LSTM网络的关键是要先理解图3-11所示的矩形框,即记忆模块(Memory Block),主要包含了三个门:输入门(Input Gate)、输出门(Output Gate)和遗忘门(Forget Gate),与一个记忆单元(Cell)。图3-11矩形框内上方的水平线称为单元状态(Cell State),它就像一条流水线,可以控制信息传递给下一个时刻。
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/121_01.jpg?sign=1739291185-9iN9xpHZtpJTBW9qG1xJWP80ONZljJbT-0-b834dc2a73e15df81bcacfb54d53a5b5)
图3-11 记忆模块结构图
在图3-11中,it、ot、ft分别为输入门、输出门、遗忘门,用sigmoid层表示。图中的两个tanh层分别对应记忆单元的输入与输出。
LSTM算法的第一步是筛选,筛选何种信息可以通过单元状态。筛选由遗忘门层通过sigmoid控制,它会综合当前输入xt与上一时刻的输出ht-1来产生一个0~1的ft值,然后判定是否让上一时刻学到的特征Ct-1全部通过或者是通过一部分,用公式表示为
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/121_02.jpg?sign=1739291185-UW6ujzhIwfyLcKdKRmn95fmoPdO8gCPr-0-ed0045eb6b5857b199fb7506080648ca)
式中,Wf为权重矩阵;bf为偏置项。
LSTM算法的第二步是生成需要更新的新信息。这一步由两部分组成:第一部分是输入门层通过sigmoid来确定哪些值用来更新,第二部分是一个tanh层用来生成新的候选值C˜t,C作为当前层产生的候选值可能会添加到单元状态中。然后结合这两部分的值进行更新操作,即
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/121_03.jpg?sign=1739291185-ATFWbtyncCcq9cpCaqVEnCOvG0vfBwNP-0-8c05bc959ec14c81b751787e70a25111)
将LSTM的第一步和第二步结合起来即为过滤不需要的信息、添加新信息的过程,即
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/121_04.jpg?sign=1739291185-UHXBWjQfFN9zRvtZbkBlZaGKpTfEy13X-0-33d69c479a9ab461d0093e33c70097eb)
最后一步是确定模型的输出,首先通过sigmoid层得到初始输出,然后使用tanh层将Ct值缩放至-1~1之间,再与sigmoid得到的输出逐一相乘,从而获得模型的输出,即
![](https://epubservercos.yuewen.com/25B82E/23446277201394406/epubprivate/OEBPS/Images/122_01.jpg?sign=1739291185-03U1Bbzx7UDilnXkMilqncck40X0YCCF-0-35b597864025b4a71067863f708903b3)
式中,Wo为权重矩阵;bo为偏置项。