递归神经网络
在传统的神经网络中,模型不关注前一时刻的处理能在下一时刻利用什么信息,而每次只关注当前时刻的处理。 例如,我们想对电影中每一刻出现的事件进行分类。 如果你知道电影之前的事件信息,现在时刻的事件分类非常简单。 事实上,由于传统的神经网络没有记忆功能,在不使用电影中已经出现的信息的情况下,如何对每个瞬间出现的事件进行分类,神经网络可以用什么方法来记忆这些信息呢? 答案是recurrentneuralnetworks(rnns )递归神经网络。
递归神经网络的结果与传统神经网络略有不同。 它有一个指向自己的环,表示可以在下一个时刻传递在当前时刻处理的信息。 结构如下。
其中XtXt是输出。
为了便于解释递归神经网络,展开了上图,得到了:
这种链状神经网络表示递归的神经网络,被认为是向同一神经网络的多重复制,各时刻的神经网络在下一时刻传递信息。 你怎么理解那个? 如果有这样的语言模型,根据文中出现的词来预测现在的词是什么。 递归神经网络的结构如下。
这里,w表示各种权重,x表示输入,y表示输出,h表示隐藏层处理状态。
递归神经网络由于具有一定的存储功能,可用于解决语音识别、语言模型、机器翻译等诸多问题。 但是,不能很好地处理长时间的依赖问题。
长时依赖问题
长相关性就是这样一个问题,预测点和相关性信息之间的距离较远时,很难学习该相关性信息。 例如:“我出生在法国。 ……,我用法语“那么,要预测末尾的“法语”,需要使用上下文“法国”。 理论上递归神经网络可以处理这样的问题,但实际上,一般的递归神经网络不能很好地解决长时间依赖,LSTMs可以很好地解决这个问题。
LSTM 神经网络
长相关性网络(lstm )是一种特殊的RNNs,可以很好地解决长相关性问题。 那么它和普通的神经网络有什么不同呢?
首先来看看RNNs的具体结构:
所有递归神经网络都是由迭代神经网络模块组成的链,其处理层非常简单,通常为单个tanh层,根据当前输入和上次时间的输出得到当前输出。 与神经网络相比,通过简单的改造,可以利用上次学习的信息进行当前的学习了。
LTM的结构与上述相似,但重复模块稍有复杂,为四层结构。
在此,处理层中出现的符号和含义如下。
LSTMs的核心思想
在理解LSTMs时重要的是被称为存储器块(存储块)的下一个矩形框,主要是3个门(forget gate、input gate、output gate )和1个存储单元(cell ) xfdls上方的水平线称为单元状态,它类似于在下一个时刻传递信息的传送带。
此矩形框还可以表示为:
这两个图可以相应地看到,下图中心的ctct分别是遗忘门、输入门、输出门,由sigmoid层表示。 上图中的两个tanh层分别对应于cell的输入和输出。
LTM可以在门控单元中向cell添加和删除信息。 通过门可以有选择地决定信息是否通过。 它由sigmoid神经网络层和配对乘法操作组成。 如下所示。
此层的输出为0到1之间的数字,表示允许信息通过的量,0表示不完全允许通过,1表示完全允许通过。
逐步解析LSTM
LTM的第一步是决定哪些信息可以通过小区state。 该决定由“forget gate”层通过sigmoid控制,基于上次的输出ht1ht1通过或部分通过进行。 如下所示。
举个例子,我们在前面的句子中学到了很多东西。 有些东西对现在来说没有用,你可以选择性地过滤它。
第二步是生成需要更新的新信息。 该步骤包括两个部分,第一个是“输入门”层通过sigmoid确定更新中使用哪个值,第二个是tanh层生成新的候选值c到TC到t并相加,以获得候选值。
一二步结合是舍弃不需要的信息,添加新信息的过程:
例如,虽然在以前的文章中存储了twdds的信息,但现在有新的mldgz信息,所以舍弃twdds的信息,使用mldgz的
信息保存下来。
最后一步是决定模型的输出,首先是通过sigmoid层来得到一个初始输出,然后使用tanh将
CtCt值缩放到-1到1间,再与sigmoid得到的输出逐对相乘,从而得到模型的输出。
这显然可以理解,首先sigmoid函数的输出是不考虑先前时刻学到的信息的输出,tanh函数是对先前学到信息的压缩处理,起到稳定数值的作用,两者的结合学习就是递归神经网络的学习思想。至于模型是如何学习的,那就是后向传播误差学习权重的一个过程了。
上面是对LSTM一个典型结构的理解,当然,它也会有一些结构上的变形,但思想基本不变,这里也就不多讲了。
转载来源:https://blog.csdn.net/shijing_0214/article/details/52081301