Deep Learning Specialization 5: Sequence Models - Week 1 - Recurrent Neural Networks

这周的内容还是比较多的,得反复看很多遍才能领会,尤其是在吃瓜子不吃瓜子就打瞌睡的情况下。

为什么要用RNN1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U6tZCEp1-1574000997349)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1631)]

1. 序列数据及问题示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YjAcq05-1574000997350)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1632)]

从输入与输出数量不同可以分为:

  1. many to many
    • 长度相同:命名实体识别
    • 长度不同:语音识别/机器翻译
  2. many to one:情感分析/视频动作识别
  3. one to many:音乐合成

2. 符号

x < t > x^{<t>} x<t>: 一个样本中t时刻的值

T x T_x Tx: 输入序列的长度

y < t > y^{<t>} y<t>:一个样本中的第t个输出(不一定与 x x x对应)

T y T_y Ty:输出的序列长度

3. 基本的RNN单元

a < t > = tanh ⁡ ( W a a a < t − 1 > + W a x x < t > + b a ) a^{<t>} = \tanh (W_{aa}a^{<t-1>} + W_{ax}x^{<t>} + b_a) a<t>=tanh(Waaa<t1>+Waxx<t>+ba)

y < t > = softmax ( W y a a < t > + b y ) y^{<t>} = \text{softmax}(W_{ya}a^{<t>} + b_y) y<t>=softmax(Wyaa<t>+by)

将W矩阵做列增广、a和x做行增广,可以简化写法(就是简单的 1 × 2 1\times2 1×2和矩阵和 2 × 1 2\times1 2×1的矩阵相乘)。
a < t > = tanh ⁡ ( [ W a a ⋮ W a x ] [ a < t − 1 > x < t > ] + b a ) a^{<t>} = \tanh (\left[ W_{aa} \vdots W_{ax} \right ] \begin{bmatrix} a_{<t-1>}\\ x^{<t>} \end{bmatrix} + b_a) a<t>=tanh([WaaWax][a<t1>x<t>]+ba)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MAHrRJoi-1574000997351)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1633)]

图中 a < 0 > = 0 ⃗ a^{<0>} = \vec{0} a<0>=0

很明显图没有公式直观,但是看懂公式了再回过头来看图还是可以的。

4. Language model

RNN也是可以用来学习语言模型的,下图在老师的图上进行了一些修改。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YX7PQ612-1574000997352)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1634)]

5. Gated Recurrent Unit (GRU)

RNN也面临严峻的Vanishing Gradients的问题,GRU是一种解决方案。

RNN Unit
a < t > = g ( W a [ a < t − 1 > , x < t > ] + b a ) a^{<t>} = g(W_a \left[ a^{<t-1>}, x^{<t>} \right] + b_a) a<t>=g(Wa[a<t1>,x<t>]+ba)
Gate RNN Unit
c ~ < t > = tanh ⁡ ( W c [ Γ r × c < t − 1 > , x < t > ] + b c ) Γ u = σ ( W u [ c < t − 1 > , x < t > ] + b u ) Γ r = σ ( W r [ c < t − 1 > , x < t > ] + b r ) c < t > = Γ u × c ~ < t > + ( 1 − Γ u ) × c < t − 1 > \begin{matrix} \tilde{c}^{<t>}&= \tanh (W_c \left[ \Gamma_r \times c^{<t-1>}, x^{<t>} \right] + b_c) \\ \Gamma_u &= \sigma(W_u \left[ c^{<t-1>}, x^{<t>} \right] + b_u)\\ \Gamma_r &= \sigma(W_r \left[ c^{<t-1>}, x^{<t>} \right] + b_r)\\ c^{<t>} &= \Gamma_u \times \tilde{c}^{<t>} + (1-\Gamma_u) \times c^{<t-1>} \end{matrix} c~<t>ΓuΓrc<t>=tanh(Wc[Γr×c<t1>,x<t>]+bc)=σ(Wu[c<t1>,x<t>]+bu)=σ(Wr[c<t1>,x<t>]+br)=Γu×c~<t>+(1Γu)×c<t1>
其中,

  • 记忆单元 c < t > = a < t > c^{<t>} = a^{<t>} c<t>=a<t>
  • Γ u \Gamma_u Γu: update
  • Γ r \Gamma_r Γr: relevance

理解了计算逻辑之后,再用图片2 简化一下记忆。符号略有差异,但是应该对理解问题没有障碍。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t4MBuR1G-1574000997352)(evernotecid://3AE75992-3E67-4628-8ACC-2F41C6246321/appyinxiangcom/2727652/ENResource/p1636)]

6. Long Short Term Memeory (LSTM) network

LSTM Unit

Forget gate
Γ f < t > = σ ( W f [ a < t − 1 > , x < t > ] + b f ) \Gamma_f^{<t>} = \sigma(W_f[a^{<t-1>}, x^{<t>}] + b_f) Γf<t>=σ(Wf[a<t1>,x<t>]+bf)
Update gate
Γ u < t > = σ ( W u [ a < t − 1 > , x < t > ] + b u ) \Gamma_u^{<t>} = \sigma(W_u[a^{<t-1>}, x^{<t>}] + b_u) Γu<t>=σ(Wu[a<t1>,x<t>]+bu)
Updating the cell
c ~ < t > = tanh ⁡ ( W c [ a < t − 1 > , x < t > ] + b c ) c < t > = Γ f < t > ∗ c < t − 1 > + Γ u < t > ∗ c ~ < t > \begin{matrix} \tilde{c}^{<t>} & = \tanh(W_c[a^{<t-1>}, x^{<t>}] + b_c)\\ c^{<t>} & = \Gamma_f^{<t>} * c^{<t-1>} + \Gamma_u^{<t>} * \tilde{c}^{<t>} \end{matrix} c~<t>c<t>=tanh(Wc[a<t1>,x<t>]+bc)=Γf<t>c<t1>+Γu<t>c~<t>
Output gate
Γ o < t > = σ ( W o [ a < t − 1 > , x < t > ] + b o ) a < t > = Γ o < t > ∗ tanh ⁡ ( c < t > ) \begin{matrix} \Gamma_o^{<t>} & = \sigma (W_o[a^{<t-1>}, x^{<t>}] + b_o) \\ a^{<t>} & = \Gamma_o^{<t>} * \tanh(c^{<t>}) \end{matrix} Γo<t>a<t>=σ(Wo[a<t1>,x<t>]+bo)=Γo<t>tanh(c<t>)

仍然是理解了计算之后再来看图就容易理解多了

7. Bidirectional RNN & Deep RNN

  • 在自然语言处理中双向RNN的使用应该是比较自然的。
  • 叠加多层可以捕捉更复杂的模式,一般不会太多(两三层)

没什么想法,就是感觉电费在燃烧。


  1. a 未标注的图上均是来自课程的PPT加工而来 ↩︎

  2. 图片来自wikipedia Gated Recurrent Unit ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值