追根溯源:循环神经网络(Recurrent Neural Networks)
作者:互联网
关注微信公众号:NLP分享汇。【喜欢的扫波关注,每天都在更新自己之前的积累】
文章链接:https://mp.weixin.qq.com/s/A0irVL4-uYVCbrSrtFEZxQ
一、背景
NLP任务(包括与对话相关的任务)尝试处理和分析顺序的语言数据点,即使标准神经网络以及CNN是强大的学习模型,它们也具有两个主要限制:
-
一种是它们假定数据点彼此独立。虽然可以独立地产生数据点是合理的,但是在处理相互关联的数据点(例如,文本,音频,视频)时,可能会丢失基本信息。
-
另外,它们的输入通常具有固定的长度,这在处理长度可变的序列数据时是一个限制。因此,能够表示顺序信息流的序列模型是值得被期待的。
隐马尔可夫模型(HMM)之类的马尔可夫模型是传统的序列模型,但是由于推理算法的时间复杂性和转导矩阵的大小随着离散状态空间的增加而显着增长,实际上它们是不适用于处理涉及大量隐藏状态的问题。而马尔可夫模型的隐藏状态仅受直接隐藏状态影响的性质进一步限制了该模型的功能。
因此RNN模型的的出现极大地解决了上述问题,并且某些变体可以惊人地实现与对话相关的任务以及许多其他NLP任务的最新性能。
二、追根溯源RNN
最早可以追述到1982年,Hopfield介绍了RNN去解决模式识别任务:
-
《Neural networks and physical systems with emergent collective computational abilities》
该文章介绍了两种RNN结构,模型结构如图1:
-
Jordan-Type RNNs(图1a)
-
xt, ht, and yt are the inputs, hidden state, and output of time step t respectively
-
Wh, Wy and Uh are weight matrixes
-
隐藏状态的每次更新由当前输入和上一时间步的输出决定,而每个输出则由当前隐藏状态决定。时间步t的隐藏状态和输出计算公式2、3:
-
-
Elman-Type RNNs(图1b)
-
不同之处在于每个隐藏状态由当前输入和上一个时间步的隐藏状态决定。时间步t的隐藏状态和输出计算公式4、5:
-
图1 Graphical models of two basic types of RNNs
简单的RNN可以在理论上对长期依赖性进行建模。但是在实际训练中,远程依赖关系很难学习。当在许多时间步长上向后传播误差时,简单的RNN都会遇到称为梯度消失和梯度爆炸的问题。
三、详解循环神经网络(RNN)
循环神经网络的主要用途是处理和预测序列数据。
从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面结点的输出。也就是说,循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上时刻隐藏层的输出。
上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。
这幅图描述了在序列索引号t附近RNN的模型。其中:
-
xt代表在序列索引号t时训练样本的输入。同样的,xt−1和xt+1代表在序列索引号t−1和t+1时训练样本的输入。
-
ht代表在序列索引号t时模型的隐藏状态。ht由xt和ht−1共同决定。
-
ot代表在序列索引号t时模型的输出。ot只由模型当前的隐藏状态ht决定。
-
A代表RNN模型。
RNN的前向传播
输入为
标签:状态,RNN,Neural,模型,Recurrent,Networks,神经网络,序列,隐藏 来源: https://blog.csdn.net/u014577702/article/details/117289403