RNN ten minutes to master the principles and structure of the application and LSTM

    Hello, it is a day of sharing, today bloggers to share a deep learning of RNN Recurrent Neural Networks and structural variants RNN LSTM short and long term memory networks .

In this article Summary:

  1. RNN principle

  2. RNN various structures and applications

  3. RNN structure of Seq2Seq

  4. Added attention mechanism Seq2Seq structure

  5. LSTM principle

    RNN Recurrent Neural Networks

 principle                                                                                     

Simple BP neural network

Simple structure RNN

    First, we compare the simple structure so what RNN BP and the similarities and differences, we will find more parameters h0 RNN than the BP, therefore neurons of formula RNN BP will be more than one neuron (f as a function of excitation), as shown below. As for the training process, and BP neural network and there is no difference, it is a method based on gradient descent to the shrinking process of the difference between the predicted value and the true value.

    The public has been concerned about the small number of relatively long time partner should know before blogger wrote a depth beginning --- BP neural network learning , this is the beginning of the course to learn the depth of the core principles of mathematics almost all of the neural network training process ( gradient descent ) are similar to the BP neural network, RNN is no exception, and therefore are not familiar with the junior partner may take a few minutes to read it.

   

The above is just a simple demonstration RNN structure, the same as its hidden layer h and the output y, we used RNN structure certainly would not be so simple, so further expand our RNN structure above, as shown below. This is the classic structure of a multi-input single-output.

RNN structure of the multi-input single-output

At this time, the output layer neuron is formula

     由结构和公式可知,整一个RNN结构共享1组(UWb),这是RNN结构最重要的特性,且每一个隐藏层神经元h的计算公式是由当前输入X上一个隐藏层神经元的输出组成。

    这里为了方便起见,博主只是画了序列长度为3的RNN结构,大家可以按照这样的结构,可以将整个RNN结构无限扩大,最后接一个分类输出层或者回归输出层即可。

   

优势                                                                                        

    到这里,RNN循环神经网络的原理也就讲完了,那么相比于BP神经网络和CNN卷积神经网络,RNN的优势又在哪呢?我们可以看到上面的RNN结构,输入是可以多个且有序的,它可以模拟人类阅读的顺序去读取文本或者别的序列化数据,且通过隐藏层神经元的编码,上一个隐藏层神经元的信息可以传递到下一个隐藏层神经元,因而形成一定的记忆能力,能够更好地理解序列化数据。

其他RNN结构                                                                                        

    

    上面这个RNN结构最经典的用途是文本(序列)分类。当然了,RNN不止这种结构,大家可以按照自己的想法去设计输入和输出,从而完成相应的任务,接下来博主就给大家介绍几种常见的RNN结构与其用途。

1.单输入多输出的RNN结构

单输入多输出的RNN结构

       

单输入多输出的RNN结构

  这种结构通常应用于输入一个图像,输出描述该图像的文本。

2.多输入多输出的RNN结构

多输入多输出的RNN结构

    由于输入与输出等长,这种结构的用途就比较狭窄,仅限于输入与输出等长的序列数据如诗词文等,作诗机器人就是这么诞生的。

3.输入输出不等长的多输入多输出的RNN结构(Seq2Seq模型)

    在此之前,我们得先了解一下自编码器的概念,自编码器的原理可以简单理解为输入等于输出的神经网络模型如下图。博主在之前的推文中详细介绍过自编码器的原理与其应用,还没了解的小伙伴可以去翻阅一波压缩去噪利器---自编码器(AutoEncoder)

BP神经网络构造的自编码器

    这次的主角当然不是BP神经网络,我们只是利用RNN和自编码器的原理构造一个翻译机器人,同样的,这个自编码器(翻译机器人)的输入也等于输出,只不过输入与输出用不同的语言去表示罢了,如下图。当然了,这个结构也可以用来完成文章摘要提取或者语音转换文字等任务。这种RNN模型业界称为Seq2Seq模型。

 Seq2Seq结构形式1      

Seq2Seq结构形式2

       

4.注意力机制下的Seq2Seq模型

    上面我们提到了Seq2Seq模型可以完成机器翻译等任务,但我们从它的结构可以看出,解码器decoder的输入都是译码器encoder的同一个输出,也就是说不过输入的语句是什么,编码器encoder都会将它转换成同一个中间语义h'。而我们知道的是每一句话都有其侧重点,那翻译当然也应该注意其侧重点,不应该是每一个词在一个句子中都具有同等地位,这样翻译出来的句子肯定效果不佳。所以,有人为此提出了注意力机制(Attention Mechanism),让我们在使用Seq2Seq的过程中,加入注意力机制,聚焦重点,提升模型效果。下面博主以机器翻译为例子,让小伙伴们对注意力机制有更加直观的认识。

注意力模型(解码器Decoder)

    如上图,注意力机制下的Seq2Seq模型的输入与输出是等长的,和上面博主介绍的多输入多输出的RNN结构一样,只是输入变了,输入不是直接的序列输入,而是经过编码器encoder转换的中间语义C,而这些输入C也各不相同,每一个C都是由权重w和译码器的隐藏层输出h加权组成,如下图。

        

中间语义转换示意图

    在解码器decoder部分,由于输入的顺序不同,中间语义C1,C2,C3之间的权值表征也不同,这也就是我们所说的注意力机制。换言之,随着不同时刻,重点一直在变化,而这些变化则由上图的权重w去表示,比如C1的重点在‘中’这个字,那么中间语义可以表示为C1=0.6 * h1 + 0.2 * h2 + 0.1 * h3 + 0.1 * h4 (权值可以看成概率,且概率加起来为1)。

中间语义转换公式

    此时,我们唯一要解决的是,如何去求中间语义C的权值w表征。这就涉及到注意力模型的另一部分(译码器Encoder),如下图。F函数和softmax函数,大家可以理解为我们要计算当前的hi与全部h(包括hi)之间的差别,从而计算出在i时刻下,每一个h对应的权值(即概率)。换言之,大家可以将下图看成分类问题,与hi越相近的,输出的概率也就越大。

注意力模型(编码器Encoder)

    到这里,几种常见的RNN结构也就介绍完了,它们的训练过程与之前讲的多输入单输出的RNN结构训练过程并没有太多的区别,也是基于梯度下降原则去不断缩小真实值与预测值之间的差值,只不过有些结构的输出值多了一点罢了。

LSTM长短期记忆网络

RNN结构的劣势                                                                                     

    上文博主提过RNN结构共享1组(UWb),这是RNN结构最重要的特性,不过也是由于这个特性,才导致了LSTM长短期记忆网络的诞生。

    因为 在(UWb)不变的情况下,梯度在反向传播过程中,不断连乘,数值不是越来越大就是越来越小,这样就出现了梯度爆炸或梯度消失的情况,所以往往用RNN去训练模型得不到预期的效果。

    

 

LSTM原理                                                                                     

    由上文可知,RNN结构之所以出现梯度爆炸或者梯度消失,最本质的原因是因为梯度在传递过程中存在极大数量的连乘,为此有人提出了LSTM模型,它可以对有价值的信息进行记忆,放弃冗余记忆,从而减小学习难度。与RNN相比,LSTM的神经元还是基于输入X上一级的隐藏层输出h来计算,只不过内部结构变了,也就是神经元的运算公式变了,而外部结构并没有任何变化,因此上面提及的RNN各种结构都能用LSTM来替换。

相对于RNN,LSTM的神经元加入了输入门i、遗忘门f、输出门o 和内部记忆单元c。博主这里先给上一个整体的LSTM结构图如下图,之后再对它内部结构的运算逻辑进行详细的解释。

LSTM整体结构

     

遗忘门f:控制输入X和上一层隐藏层输出h被遗忘的程度大小

遗忘门(forget gate)

  

遗忘门公式

       

输入门i:控制输入X和当前计算的状态更新到记忆单元的程度大小。

输入门(input gate)

输入门公式

内部记忆单元c:

内部记忆单元

内部记忆单元公式

输出门o:控制输入X和当前输出取决于当前记忆单元的程度大小

输出门(output gate)

输出门公式

    其中σ一般选择Sigmoid作为激励函数,主要是起到门控作用。因为Sigmoid函数的输出为0~1,当输出接近0或1时,符合物理意义上的关与开。tanh函数作为生成候选记忆C的选项,因为其输出为-1~1,符合大多数场景下的0中心的特征分布,且梯度(求导)在接近0处,收敛速度比sigmoid函数要快,这也是选择它的另外一个原因。不过LSTM的激励函数也不是一成不变的,大家可以根据自己的需求去更改,只要能更好地解决自己的问题即可。

    对于一个训练好的LSTM模型,我们要知道它的每一个门(遗忘门、输出门和输入门)都有各自的(UWb),上述公式也有所体现,这是在训练过程中得到的。而且当输入的序列不存在有用信息时,遗忘门f的值就会接近1,那么输入门i的值接近0,这样过去有用的信息就会被保存。当输入的序列存在重要信息时,遗忘门f的值就会接近0,那么输入门i的值接近1,此时LSTM模型遗忘过去的记忆,记录重要记忆。

    因此我们可以看出由遗忘门、输出门、输入门和内部记忆单元共同控制LSTM的输出h的设计,使得整个网络更好地把握序列信息之间的关系。

    当然,博主在上文中所提及的LSTM模型只是一种经典的结构,它有各种各样的变种,因此小伙伴们需要熟悉它的原理,并在实际工作中要结合问题去选择合适的LSTM结构,做到具体问题具体分析,切忌死记硬背。                                     

原理讲解-视频版                                                                                     

bilibili值得拥有~(っ•̀ω•́)っ✎⁾⁾ 我爱学习

https://space.bilibili.com/299585150

总结

        好了,到这里,我们就已经将RNN与其变种LSTM的知识点讲完了。而且我们要知道的是,由于RNN存在梯度爆炸和梯度消失的缺点,现在LSTM的应用范围会比RNN广阔得多,所以提及RNN,一般指的都是它的变种LSTM。不过讲了这么多,我们在神经网络框架Keras或者Tensorflow上使用它们也就两三行代码,但是只有当我们熟悉原理,才能更加好地使用它们去完成相应的任务。

       下一期,博主就带领大家使用LSTM来完成一些小任务,敬请期待吧~

        如果本期推文有用,那就点个赞吧,你们的点赞是博主持续更新的动力,感谢每一位小伙伴的关注~

图片来源于网络,侵删

    

 

 

发布了3363 篇原创文章 · 获赞 36 · 访问量 14万+

Guess you like

Origin blog.csdn.net/cpongo9/article/details/103351142