循环神经网络模型

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

Recurrent Neural Network

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

Forward Propagation

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

Backward Propagation

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

其损失函数使用的是交叉熵(cross entropy loss)。
L &lt; t &gt; ( y ^ &lt; t &gt; , y &lt; t &gt; ) = − y &lt; t &gt; l o g y ^ &lt; t &gt; − ( 1 − y &lt; t &gt; ) l o g ( 1 − y ^ &lt; t &gt; ) ) mathcal{L}^{&lt;t&gt;}(hat{y}^{&lt;t&gt;},y^{&lt;t&gt;})=-y^{&lt;t&gt;}loghat{y}^{&lt;t&gt;}-(1-y^{&lt;t&gt;})log(1-hat{y}^{&lt;t&gt;})) L<t>(y^<t>,y<t>)=y<t>logy^<t>(1y<t>)log(1y^<t>))
L ( y ^ &lt; t &gt; , y ) = ∑ t = 1 T L &lt; t &gt; ( y ^ &lt; t &gt; , y &lt; t &gt; ) mathcal{L}(hat{y}^{&lt;t&gt;},y)=sum_{t=1}^{T}mathcal{L}^{&lt;t&gt;}(hat{y}^{&lt;t&gt;},y^{&lt;t&gt;}) L(y^<t>,y)=t=1TL<t>(y^<t>,y<t>)

其他种类的RNN

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

原文地址:https://www.cnblogs.com/wanghongze95/p/13842499.html