您的位置:首页 > 理论基础 > 计算机网络

回归神经网络RNN(Recurrent Neural network)

2016-05-18 19:18 417 查看
RNN不同于前馈神经网络,被认为具有记忆能力。其输入被看作一个序列,形如xt(x1,x2,x3...)其数学模型如下:

ht=h(W1ht−1+U2xt+b1)

yt=f(Vht+b2)

这里ht表示在t时的状态,yt表示在t时的输出,h和f是非线性函数,常用sigmoid函数f(x)=11+e−x,W U V 和b是需要学习的变量。这里的关键是t时的状态是由t-1时的状态和t时的输入共同得到,也就是说理论上RNN可以记住任意长序列的输入。它和前馈神经网络相比还具有不限定长度的输入序列,比如在自然语言模型中,需要估计一个句子出现的概念,而每个句子的长度是不固定的。

和前馈神经网络一样,RNN也可以通过Backpropagation算法进行训练即BPTT算法。其目标函数所有时间点上的成本函数的和:

E=∑Tt=1et (1)

对W求倒数:

dEdW=∑Tt=1detdw (2),其中

detdW=detdytdytdhtdhtdW (3)

dhtdW = dhtdht−1dht−1W+dhtdW (4) 注意等式右边是将W和ht−1看成不相关的变量

以此类推:

dht−1dW = dht−1dht−2dht−2W+dht−1dW (5) 以此类推并将其代入前面式子的右边就可以得到:

dhtdW=∑tk=1dhtdhkdhkdW (6)

将(6)代入(3)就得到:

detdW=∑tk=1detdytdytdhtdhtdhkdhkdW

这里很容易得到:

dhtdhk=∏tj=k+1dhjdhj−1

推导完成。

上面BPTT算法会遇到导数逐渐消失或趋于无穷大的问题,LSTM是很好的解决方案 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RNN 神经网络 BPTT