一:前言
前面我们介绍了传统神经网络(NN)和卷积神经网络(CNN)(读者想要了解的话请看文章最下面链接)接下来我们要大体介绍的是循环神经网络(Recurrent Neural Networks)(RNN)。
二:RNN的优势
如下图所示RNN的优势在于它能够利用前面一时刻的embeddings,比如在时刻我的输入是过一层隐藏层得到embeddings,在时刻的输入是它可以利用原来的输出一起输出。就是因为有这样的特性所以我们说CNN通常用于计算机视觉领域(CV),RNN通常用于自然语言处理(NLP)。
三:RNN的直观体现
如下图所示:
前面我们举的例子是循环了一次后的结果,在这张图当中A表示hidden layer,x表示每一个时间段的输入,h表示每次输入得到的输出,这张图中还有一点需要注意的是在最后时刻之前的输出(如图中的
之前的所有h)我们只看做是一个中间变量,在最后面是不考虑它单独的作用,因为
结合了之前所有的embeddings。
四:长短期记忆网络(Long Short-Term Memory)(LSTM)
但我们会发现一个问题,就是RNN它考虑了前面所有的情况,但我们会发现,前面有些东西是不重要的对于我们的结果来说,我们有时候只想要保留一些重要的信息,而忽略一些次要信息,所以又提出了LSTM模型,如下图中对比:
实际上LSTM模型比起RNN就多操作了一个遗忘的操作,如下图中的C就是控制遗忘的参数,它决定了什么信息会被保留什么信息会被遗忘.
具体的c的计算如下图公式:
和(t-1)层的
共同决定计算所丢弃的信息
:是一种激活函数,如sigmoid()
:为这一层的权重参数矩阵
:第t时刻embeddings后的输出矩阵
: 第t时刻输入矩阵
:是一个偏置