(二)SimpleRNN 更适合时序数据的模型

为什么要 RNN

全连接的逻辑回归有什么局限性?

  • 将整段文字一起处理(one to one)
  • 输入输出是固定的形状

RNN(Recurrent Neural Networks 循环神经网络)更适合序列数据(many to one)。

RNN 内部详解

循环神经网络,顾名思义,单词一个一个的进行训练,x0\bold x_0 和初始 0 向量拼接在一起,与 A\bold A 矩阵,计算出 h0\bold h_0,再将 h0\bold h_0x1\bold x_1 拼接在一起,与同一个 A\bold A 矩阵,计算出 h1\bold h_1,以此类推,直到句子中的每一个词都计算完毕,得到 ht\bold h_t 向量作为 RNN 的输出。 ht\bold h_t 中包含所有输入词的特征。

在每一步计算的过程中,使用的是 xt\bold x_{t}ht1\bold h_{t-1} 拼接后与 A\bold A 矩阵点乘,得到的结果通过双曲正切函数,正则化到 -1 到 1 之间,就得到了 ht\bold h_{t}.

  • rows of A: shape(h)
  • cols of A: shape(h) + shape(x)
  • Total parameter: shape(h) × [shape(h) + shape(x)]

在 Keras 中调用

model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_size, input_length=seq_length),
tf.keras.layers.SimpleRNN(state_dim, return_sequences=False),
tf.keras.layers.Dense(1, activation="sigmoid")
], name="SimpleRNN")
model.summary()
Model: "SimpleRNN"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, 500, 32) 5120000
_________________________________________________________________
simple_rnn (SimpleRNN) (None, 32) 1573888
_________________________________________________________________
dense (Dense) (None, 1) 1025
=================================================================
Total params: 322,113
Trainable params: 322,113
Non-trainable params: 0

Embedding + SimpleRNN + Dense 就是一个简单的擅长处理序列任务的二元分类器。

RNN 参数:

p=state_dim×(state_dim+embedding_size)+state_dim=1024×(1024+512)+1024=1573,888\begin{aligned} p &= state\_dim \times (state\_dim + embedding\_size) + state\_dim \\ &= 1024 \times (1024 + 512) + 1024\\ &= 1573,888 \end{aligned}

RNN 的特点

RNN 擅长短期记忆

但是不擅长长期记忆:

h100h_{100} 几乎与 X1X_1 无关,h100X1\frac{\partial h_{100}}{\partial X_1} 几乎等于 0,RNN 不能通过上文的 China 成功预测出 Chinese。

总结

  • RNN 适合时序数据
  • 状态特征 hth_t 聚合了所有输入的特征
  • RNN 会遗忘早期的输入
  • RNN的参数矩阵形状是 shape(h) × [shape(h) + shape(x)]
  • RNN只有一个参数矩阵,无论序列有多长

   转载规则


《(二)SimpleRNN 更适合时序数据的模型》 Harbor Zeng 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
(三)长短期记忆-LSTM为什么比RNN更好 (三)长短期记忆-LSTM为什么比RNN更好
LSTM 是在 1997 年被提出来的。 LSTM 结构 LSTM 的结构比 RNN 要复杂,其中包含 4 个参数矩阵(相比于 RNN 只有一个参数矩阵),可从训练数据中反向传播而得到更新学习。 传送带 LSTM 中有一个传送带,可以将过去的信息 Ct−1C_{t-1}Ct−1​ 直接传递给未来的 CtC_tCt​ 四个参数矩阵 遗忘门 遗忘门(forget gate)WfW_fWf​
2021-01-14
下一篇 
(一)论分词与编码 (一)论分词与编码
英文分词 “Don’t you love 🤗 Transformers? We sure do.” 通过空格分割: ["Don't", "you", "love", "🤗", "Transformers?", "We", "sure"
2021-01-14
  目录