当前位置:   article > 正文

【机器学习杂记】循环神经网络和长短时记忆网络(RNN & LSTM)_长短期期记忆网络 transformer 替代吗?

长短期期记忆网络 transformer 替代吗?

零 前言
觉得害得补补RNN的知识,虽然好像有人说transformer把RNN替代了。

如果我们希望神经网络能学习上下文的信息,也就是具有一定的记忆能力,那么RNN是一种选择。另外,LSTM的全称是Long short-term memory,破折号-是加在short和term之间的,所以LSTM仍是一个短时记忆网络,只不过是比较长的短时记忆网络。

一 RNN
RNN的本质就是用之前的hidden layer的输出或者整个network的输出来参与下一次的计算,就是将某个东西存在“memory”里,可以看成是一个网络的时间展开,或是多次复制。

以语音识别为例子,我们知道说arrive Taipei和leave Taipei这两个短语里,Taipei的身份是不同的,一个是目的地,一个是出发地。如果我们想让网络学习这种区别,就要有记忆功能。

在这里插入图片描述
  \space  
RNN可以分为两种,一种是Elman Network,就是将hidden layer的输出作为memory,第二种是Jordan Network,把整个Network的输出作为memory。后者具有更好的performance。

在这里插入图片描述
  \space  
二 LSTM

每个LSTM的cell由这几部分构成:

  • Input gate:控制是否读入input。Input gate有两个输入:一个是cell的input,一个是控制信号
  • memory cell,存储memory的值
  • Forget gate:决定是否抹掉memory cell的值,有一个输入,是控制信号
  • Output gate:决定是否输出,有一个输入,是控制信号,有一个输出,cell的output。

因此,一个cell有四个输入和一个输出。

为了便于理解最终形态的LSTM,先介绍一个cell的基本形态,如下图所示:

在这里插入图片描述
  \space  
解读:

底部的输入是input z \quad z z,经过一个activation function后,是 g ( z ) g(z) g(z)注意,activation function通常是范围为0~1的(比如sigmoid),因为用0 1表示close和open是比较合理的。

由于输入要受input gate的控制,input gate的输入记为 z i z_i zi,同样的道理也需要经过一个activation function,输出为 f ( z i ) f(z_i) f(zi),这时要作用在输入上,因此相乘,得到 f ( z i ) g ( z ) f(z_i)g(z) f(zi)g(z)。若 z i z_i zi的值使得 f ( z i ) f(z_i) f(zi)的值接近于0,则当前的输入就不起作用了。以下同理。

如何决定当前memory中的内容是否忘记呢?同样的道理也是由两个gate控制的。假设原来里面存的值为 c c c,forget gate的输入经过activation后是 f ( z f ) f(z_f) f(zf)则memory里面存的值应该更新为
c ′ = f ( z i ) g ( z ) + c f ( z f ) c'=f(z_i)g(z)+cf(z_f) c=f(zi)g(z)+cf(zf)

还要决定是否要进行output,则output的值为:
a = f ( z o ) h ( c ′ ) a=f(z_o) h(c') a=f(zo)h(c)

其实一个cell就跟一个普通网络的neuron一样,只不过一个cell需要四个输入,因此实际上LSTM比普通的网络多了四倍的参数。

  \space  
实际一般LSTM的形态

实际的LSTM肯定是由多个cell构成的,那么,此时假如输入了一个向量 x x x,我们需要将其乘以不同的矩阵,得到新的矩阵,新矩阵的每个element分别控制c每个ell的对应的输入信号。

例如,假设 x x x的shape是 ( m , ) (m,) (m,),有 n n n个cell,则乘以一个矩阵 W W W,其shape是 ( n , m ) (n,m) (n,m),得到输入向量 z = W x z=Wx z=Wx z z z的shape是 ( n , ) (n,) (n,),其中的每个element分别控制n个cell的输入。其他input、forget、output的控制信号同理。

实际的LSTM中,在 t + 1 t+1 t+1时刻,会考虑 t t t时刻的memory里面的值 c t c^t ct(此时的表示是一个向量)和输出 h t h^t ht,因此 t + 1 t+1 t+1时刻的输入由 x t + 1 , c t , h t x^{t+1},c^t,h^t xt+1,ct,ht拼接而成

因此,把这所有的cell当做一个整体来看的话(实际上就是一个layer),LSTM的流程就可以表示如下图:
在这里插入图片描述

注意:输入 z z z应该也要经过activation function,图中已标出
  \space  

当然,也不会只有一层。多层的LSTM如下图所示,就是一层的output作为下一层的 x x x,和普通的网络是一样的。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/838990
推荐阅读
相关标签
  

闽ICP备14008679号