循环神经网路 RNN

小数据集 低算力

S=f(winXt+b)S=f(w_{in}X_t+b)S=f(winXt+b)

St=f(WinXt+WSSt−1+b)S_t=f(W_{in}X_t+W_{S}S_{t-1}+b)St=f(WinXt+WSSt1+b)

变种

输入序列,单输出

在这里插入图片描述

单输入,输出序列

在这里插入图片描述

输入不随序列变化

在这里插入图片描述

原始的N to N的RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
下面介绍RNN最重要的一个变种:N to M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。

在这里插入图片描述

从名字就能看出,这个结构的原理是先编码后解码。左侧的RNN用来编码得到c,拿到c后再用右侧的RNN进行解码。得到c有多种方式:

(1)把Encoder的最后一个隐状态赋值给c。: c=h4c=h_4c=h4

(2)对最后的隐状态做一个变换得到c。: c=q(h4)c=q(h_4)c=q(h4)

(3)对所有的隐状态做变换c=q(h1,h2,h3,h4)c=q(h_1,h_2,h_3,h_4)c=q(h1,h2,h3,h4)

在这里插入图片描述

长短期记忆网络 LSTM

在这里插入图片描述

forget gate 遗忘门

f1=sigmoid(w1[St−1xt]+b1)f_1=sigmoid(w_1\begin{bmatrix}S_t-1 \\ x_t\end{bmatrix}+b_1)f1=sigmoid(w1[St1xt]+b1)

input gate 输入门

f2=sigmoid(w2[St−1xt]+b2)∗tanh(w2′[St−1xt]+b2′)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[St1xt]+b2)tanh(w2[St1xt]+b2)

ct=f1∗ct−1+f2c_t = f_1*c_{t-1}+f_2ct=f1ct1+f2

更多推荐