循环神经网络模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Solo95/article/details/86514357

整理并翻译自吴恩达深度学习系列视频:序列模型第一周,有所详略。

Recurrent Neural Network

在这里插入图片描述一个标准的循环神经网络如图所示,在网络的每一个时间步 t t ,它接受前一层的激活函数值 a < t 1 > a^{<t-1>} 和输入 x < t > x^{<t>} , 使用权值矩阵使用 W a a W_{aa} W a x W_{ax} 计算 a < t > a^{<t>} ,使用结果 a < t > a^{<t>} 和权值矩阵 W y a W_{ya} 计算 y ^ < t > \hat{y}^{<t>} ,计算方法如第二小节。

Forward Propagation

在这里插入图片描述
可总结为以下:
a < t > = g 1 ( W a a a < t 1 > + W a x x < t > + b a ) a^{<t>}=g_1(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a)
y ^ < t > = g 2 ( W y a a < t > + b y ) \hat{y}^{<t>}=g_2(W_{ya}a^{<t>}+b_y)
g 1 g_1 可以使用 t a n h tanh R e L u ReLu g 2 g_2 可以使用 s i g m o i d sigmoid
在这里插入图片描述
上图右边是向量化版本的实现,它将两个参数矩阵横向堆砌成 [ W a a W a x ] [W_{aa}|W_{ax}] 构成 W a W_a ,将两个输入纵向堆砌成 [ a < t 1 > x < t > ] [\frac{a^{<t-1>}}{x^{<t>}}] (横线表示分隔符不是除法)。

Backward Propagation

在这里插入图片描述
循环神经网络的反向传播同其他网络一致,按反方向计算导数,编程时框架会自动帮我们处理反向传播,但了解其基本原理也是有助益的。
在这里插入图片描述
如上图所示,需注意,每一个横向上的参数矩阵是共享的, W y b y W_y、b_y 用于每次计算 y < t > ^ \hat{y^{<t>}} W a b a W_a、b_a 也用于每次计算 x < t > x^{<t>}

其损失函数使用的是交叉熵(cross entropy loss)。
L < t > ( y ^ < t > , y < t > ) = y < t > l o g y ^ < t > ( 1 y < t > ) l o g ( 1 y ^ < t > ) ) \mathcal{L}^{<t>}(\hat{y}^{<t>},y^{<t>})=-y^{<t>}log\hat{y}^{<t>}-(1-y^{<t>})log(1-\hat{y}^{<t>}))
L ( y ^ < t > , y ) = t = 1 T L < t > ( y ^ < t > , y < t > ) \mathcal{L}(\hat{y}^{<t>},y)=\sum_{t=1}^{T}\mathcal{L}^{<t>}(\hat{y}^{<t>},y^{<t>})

其他种类的RNN

在这里插入图片描述
根据输入和输出的对应关系,RNN有图示几种结构,即一对一、一对多、多对一、多堆多。

猜你喜欢

转载自blog.csdn.net/Solo95/article/details/86514357