循环神经网络[复习]

1. 序列数据

特点:

  1. 前后数据通常有关联性:
    Cats average 15 hours of sleep a day.

例子:

  • Speech Recognition
  • Music Generation
  • Sentiment Classification
  • DNA Sequence Analysis
  • Machine Translation
  • Video Activity Recognition
  • Name Entity Recognition: 识别一句话中的人名。

2. 语言模型

NLP中常把文本看成离散时间序列,一段长度为 T T T的句子
w 1 , . . . , w T w_1,...,w_T w1,...,wT w t w_t wt称为一个time step。

语言模型要给出一个句子的概率

P ( w 1 , w 2 , . . , w T ) = Π t = 1 T P ( w t ∣ w 1 , . . . , w t − 1 ) P(w_1,w_2,..,w_T)=\Pi_{t=1}^T P(w_t| w_1,...,w_{t-1}) P(w1,w2,..,wT)=Πt=1TP(wtw1,...,wt1)

如:P(厨房里的石油用完了)<P(厨房里的食油用完了)

缺点:
时间步t的词需要考虑t-1步的词,计算量大。

3. RNN-循环神经网络

在这里插入图片描述

  • 三个矩阵:U,V,W。所有t的计算都用这三个矩阵。[减少参数]
  • 用Hidden State来记录历史信息,有效的处理数据的前后关联性。

3.1 RNN与全联接神经网络对比

在这里插入图片描述
RNN:

  • 当前状态 H t H_t Ht和历史信息 H t − 1 H_{t-1} Ht1 X t X_{t} Xt有关
  • 激活函数使用Tanh,输出值域]-1,1[,防止数值呈指数级变化(比如考虑一个q<1的等比数列)。

3.2 文本生成的例子

一开始取 H 0 = 0 H_0=0 H0=0
在这里插入图片描述
特点:

  1. 隐藏状态可以捕捉截至
  2. 参数与时间无关

3.3 反向传播 [Backpropagation Through Time]

以下面这个时间步为3( T = 3 T=3 T=3)为例:有几条通路,就有几项相加。
在这里插入图片描述

Rq:
我们注意到

∂ L ∂ h t = ∑ i = t T ( W h h T ) T − i W q h T ∂ L ∂ O T + t − i \frac{\partial L}{\partial h_t}=\sum_{i=t}^T (W_{hh}^T)^{T-i}W_{qh}^{T} \frac{\partial L}{\partial O_{T+t-i}} htL=i=tT(WhhT)TiWqhTOT+tiL

W h h W_{hh} Whh有一个指数次方,这会导致梯度消失或梯度爆炸。这个解决方法就是GRU和LSTM。

4. GRU(门控循环单元)

Gated Recurrent Unit

在这里插入图片描述

  • H t − 1 H_{t-1} Ht1 X t X_t Xt有关:
    R t = σ ( X t W x r + H t − 1 W h r + b r ) R_t = \sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r) Rt=σ(XtWxr+Ht1Whr+br)

Z t = σ ( X t W x z + H t − 1 W h z + b z ) Z_t = \sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z) Zt=σ(XtWxz+Ht1Whz+bz)

  • H t − 1 H_{t-1} Ht1 X t X_t Xt有关:
    H ~ t = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) \tilde{H}_{t} = tanh(X_tW_{xh}+(R_t \odot H_{t-1})W_{hh}+b_h) H~t=tanh(XtWxh+(RtHt1)Whh+bh)

H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t − 1 H_t = Z_t\odot H_{t-1} + (1-Z_t)\odot \tilde{H}_{t-1} Ht=ZtHt1+(1Zt)H~t1

4.1 具体解释

  • 重置门:哪些信息需要遗忘,使用Sigmoid作为激活函数,0表示遗忘,1表示保留。与上一个时刻的隐藏状态和当前输入有关。
    R t = σ ( X t W x r + H t − 1 W h r + b r ) R_t=\sigma(X_tW_{xr}+H_{t-1}W_{hr}+b_r) Rt=σ(XtWxr+Ht1Whr+br)
  • 更新门:哪些信息需要注意。
    Z t = σ ( X t W x z + H t − 1 W h z + b z ) Z_t=\sigma(X_tW_{xz}+H_{t-1}W_{hz}+b_z) Zt=σ(XtWxz+Ht1Whz+bz)

候选隐藏状态 H t ~ \tilde{H_t} Ht~(重置门)
对上一时间步隐藏状态 H t H_t Ht进行选择性遗忘,从而对历史信息更好地选择。

GRU 公式1:
H t ~ = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) \tilde{H_t}=tanh(X_tW_{xh}+(R_t\odot H_{t-1})W_{hh}+b_h) Ht~=tanh(XtWxh+(RtHt1)Whh+bh)

⊙ \odot 表示逐个元素相乘。

对比简单的RNN:

H t = t a n h ( X t W x h + H t − 1 W h h + b h ) H_t = tanh(X_tW_{xh}+H_{t-1}W_{hh}+b_h) Ht=tanh(XtWxh+Ht1Whh+bh)

隐藏状态:(更新门)

GRU 公式2:
H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t H_t = Z_t \odot H_{t-1}+(1-Z_t)\odot \tilde{H}_{t} Ht=ZtHt1+(1Zt)H~t

GRU特点:

  1. 门机制采用Sigmoid函数,0表示遗忘,1表示保留。
  2. 如果更新从第一个时间步到t-1时间中,一直保持为 Z t = 1 Z_t=1 Zt=1,信息可有效传递到当前时间步,因此解决了梯度消失的问题。
    H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t H_t = Z_t \odot H_{t-1}+(1-Z_t)\odot \tilde{H}_{t} Ht=ZtHt1+(1Zt)H~t

而简单RNN的 H t H_t Ht一定和 H t − 1 H_{t-1} Ht1有关:
H t = t a n h ( X t W x h + H t − 1 W h h + b h ) H_t = tanh(X_tW_{xh}+H_{t-1}W_{hh}+b_h) Ht=tanh(XtWxh+Ht1Whh+bh)

5. LSTM(长短期记忆网络)

在这里插入图片描述

  • H t − 1 H_{t-1} Ht1 X t X_t Xt有关:
    F t = σ ( X t W x f + H t − 1 W h f + b f ) F_t = \sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f) Ft=σ(XtWxf+Ht1Whf+bf)

I t = σ ( X t W x i + H t − 1 W h i + b i ) I_t = \sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i) It=σ(XtWxi+Ht1Whi+bi)

O t = σ ( X t W x o + H t − 1 W h o + b o ) O_t = \sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o) Ot=σ(XtWxo+Ht1Who+bo)

  • H t − 1 H_{t-1} Ht1 X t X_t Xt有关:

C ~ t = t a n h ( X t W x c + H t − 1 W h c + b c ) \tilde{C}_t = tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c) C~t=tanh(XtWxc+Ht1Whc+bc)

C t = F t ⊙ C t − 1 + I t ⊙ C ~ t − 1 C_t = F_t \odot C_{t-1} + I_t \odot \tilde{C}_{t-1} Ct=FtCt1+ItC~t1

H t = O t ⊙ t a n h ( C t ) H_t = O_t \odot tanh(C_t) Ht=Ottanh(Ct)

5.1 具体解释:

3个门:

  • 遗忘门 F t F_t Ft:有哪些信息需要遗忘,与上一时刻记忆细胞有关,类似于GRU中的 Z t Z_t Zt,0表示遗忘。

F t = σ ( X t W x f + H t − 1 W h f + b f ) F_t = \sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f) Ft=σ(XtWxf+Ht1Whf+bf)

  • 输入门 I t I_t It:哪些信息需要流入当前记忆细胞,与当前时刻候选记忆细胞 C ~ t \tilde{C}_t C~t有关。

I t = σ ( X t W x i + H t − 1 W h i + b i ) I_t = \sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i) It=σ(XtWxi+Ht1Whi+bi)

  • 输出门 O t O_t Ot:哪些记忆信息 C t C_t Ct流入隐藏状态 H t H_t Ht

O t = σ ( X t W x o + H t − 1 W h o + b o ) O_t = \sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o) Ot=σ(XtWxo+Ht1Who+bo)

候选记忆细胞:
C t ~ = t a n h ( X t W x c + H t − 1 W h c + b c ) \tilde{C_t}=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c) Ct~=tanh(XtWxc+Ht1Whc+bc)

记忆细胞:特殊移除状态,存储历史时刻的信息。

C t = F t ⊙ C t − 1 + I t ⊙ C ~ t C_t=F_t\odot C_{t-1}+I_t\odot\tilde{C}_t Ct=FtCt1+ItC~t

隐藏状态:由输出门控制记忆细胞 C t C_t Ct流入 H t H_t Ht的信息。

H t = O t ⊙ t a n h ( C t ) H_t = O_t \odot tanh(C_t) Ht=Ottanh(Ct)

猜你喜欢

转载自blog.csdn.net/weixin_44495738/article/details/112910948