通俗理解RNN

1.RNN叫循环神经网络,是一种特殊的神经网络,它擅长处理有先后之分的序列数据。以下是它最经典的结构:

Xt是t时刻的输入值,A为主体结构,ht是t时刻的输出值,这个结构与一般的神经网络结构的区别就在于有一条从A出发回到A的线,这条线与时间有关。

把它展开后如下:

这里只画了三个时刻,实际上可以有很多个,每个时刻都有相应的输入,但不是每个时刻都有输出

2.接下来,我们详细讲述RNN是怎么将输入转换成输出。具体如下图,我们只考虑三层:

图中圆圈代表神经元;

Xt,ht-1分别为输入层的t时刻输入和上一时刻的状态,ht-1是隐藏层上一时刻的输出;

Wxh,Whh分别是输入神经元到隐藏层神经元的权重,上一个时刻状态神经元到当前时刻隐藏层神经元的权重 ;

Who为隐藏层到输出层的权重;

at为输入层的线性输出值;

Zt为输出层的输入值;

ht为隐藏层的输出值;

y’t为输出值;

tanh,softmax为激活函数,将值非线性化;

3.求解Wxh,Whh,Who的梯度 :

首先用Et表示真实值yt和预测值y‘t的损失函数,Et=E(yt,y't)。损失函数不仅依赖当前时刻的输出层,也依赖与下一时刻。

Et对Who的梯度:

Wxh和Whh在计算更新梯度时都需要考虑当前时刻的梯度和下一时刻的梯度。在求Et对Wxh,Whh的梯度前,我们先求at的梯度:

在这里我们令

需要注意的是,在序列的最后时刻t时刻,这里说的是最后的时刻,它之后就没有从下一时刻传来的梯度(梯度其实就是偏导),所以

因此Wxh和Whh的梯度为:

猜你喜欢

转载自blog.csdn.net/qq_33772192/article/details/83038476