循环神经网路 RNN
小数据集 低算力
S = f ( w i n X t + b ) S=f(w_{in}X_t+b) S=f(winXt+b)
S t = f ( W i n X t + W S S t − 1 + b ) S_t=f(W_{in}X_t+W_{S}S_{t-1}+b) St=f(WinXt+WSSt−1+b)
变种
输入序列,单输出
单输入,输出序列
输入不随序列变化
原始的N to N的RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
下面介绍RNN最重要的一个变种:N to M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
从名字就能看出,这个结构的原理是先编码后解码。左侧的RNN用来编码得到c,拿到c后再用右侧的RNN进行解码。得到c有多种方式:
(1)把Encoder的最后一个隐状态赋值给c。: c = h 4 c=h_4 c=h4
(2)对最后的隐状态做一个变换得到c。: c = q ( h 4 ) c=q(h_4) c=q(h4)
(3)对所有的隐状态做变换。 c = q ( h 1 , h 2 , h 3 , h 4 ) c=q(h_1,h_2,h_3,h_4) c=q(h1,h2,h3,h4)
长短期记忆网络 LSTM
在这里插入图片描述
forget gate 遗忘门
f 1 = s i g m o i d ( w 1 [ S t − 1 x t ] + b 1 ) f_1=sigmoid(w_1\begin{bmatrix}S_t-1 \\ x_t\end{bmatrix}+b_1) f1=sigmoid(w1[St−1xt]+b1)
input gate 输入门
f 2 = s i g m o i d ( w 2 [ S t − 1 x t ] + b 2 ) ∗ t a n h ( w 2 ′ [ S t − 1 x t ] + b 2 ′ ) f_2=sigmoid(w_2\begin{bmatrix}S_t-1 \\ x_t\end{bmatrix}+b_2)*tanh(w_2'\begin{bmatrix}S_t-1 \\ x_t\end{bmatrix}+b_2') f2=sigmoid(w2[St−1xt]+b2)∗tanh(w2′[St−1xt]+b2′)
c t = f 1 ∗ c t − 1 + f 2 c_t = f_1*c_{t-1}+f_2 ct=f1∗ct−1+f2