小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

  • RNN循环神经网络 timestep batch_size
  • LSTM及参数计算
  • keras中若干个Cell例如LSTMCell

1.RNN循环神经网络

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

先来解释一下 batch_size timestep

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

样本数据:

小明爱学习

小王爱学习

小李爱学习

小花爱学习

通常样本数据会以(batch_size, time_step, embedding_size)送入模型,对应的可以是(4,5,100)

4表示批量送入也就是(小,小,小,小)第二批是(明,王,李,花)…

5表示时间步长,一句话共5个字

100表示词嵌入的维度

Ht=ϕ(XtWxh+H(t1)Whh+bh)H_t = phi(X_tW_{xh}+H_(t-1)W_{hh}+b_h)

XtX_t输入 假设一次输入4个字符,那么Xt的维度是4*100

WxhW_{xh} 对应的矩阵大小是 100*hidden_size

XtWxhX_tW_{xh}输出大小即为4*hidden_size 也就是说W将词嵌入转换成隐藏层大小

$H_{t-1} $ 也就是 4*hidden_size

WhhW_{hh} 相乘大小就是 hidden_size * hidden_size

bhb_h 偏执项大小是1*h通过广播的方式和前面相加

所以最终输出HtH_t就是4*hidden_size

对于输出层:
Ot=HtWhq+bqO_t = H_tW_{hq}+b_q
WhqW_{hq}相应的大小为hidden_size*labels_number

这里labels_number对应的是字典中字的个数,也就是说最终是要预测下一个字的概率

最终输出 OtO_t是4*labels_number

如果是分类任务再加上一个softmax 就得到此次批量4个各自的最大概率的值是什么。

2.LSTM及参数计算

对比上述RNN类比LSTM结构
小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

依然用上面例子,输入timestep=5 及一句话5个字。字嵌入维度是100及一个字用100维表示。设置LSTM(64)输出维度是64及隐含层输出是64维。

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

总共三个门结构
Ft=σ(Wf[ht1,xt]+bf)It=σ(Wi[ht1,xt]+bi)Ot=σ(Wo[ht1,xt]+bo)Ct~=tanh(Wc[ht1,xt]+bo)Ct=FtCt1+ItCt~Ht=Ottanh(Ct)遗忘门:F_t = sigma(W_f[h_{t-1}, x_t] + b_f) \输入门:I_t = sigma(W_i[h_{t-1}, x_t] + b_i) \输出门:O_t = sigma(W_o[h_{t-1}, x_t] + b_o) \候选记忆细胞:tilde{C_{t}}=tanh(W_c[h_{t-1}, x_t] + b_o) \记忆细胞:C_t = F_tcdot C_{t-1}+I_tcdot tilde{C_{t}} \隐藏状态:H_t = O_t cdot tanh(C_t)
ht1h_{t-1} 是上一个隐含层,也就是64。[ht1,xt][h_{t-1}, x_t] 维度是(1,164) 所以WfW_f 大小就是(164,64) ,偏执项64

所以通过公式可以看到和[ht1,xt][h_{t-1}, x_t] 相乘共用4个矩阵,参数数量是(164*64+64 )* 4

σsigma**函数是sigmoid输出是[0,1],可以看出几个门输出的值是0到1之间。

tanh输出是[-1, 1],

遗忘门控制上一个记忆细胞信息是否需要保留,输入门控制当前候选细胞。

如果遗忘门一直近似1 输入门近似0 ,记忆细胞会一直记录历史的信息。

对于这样门组合方式是不是可以达到很好的效果,各个门结构实际上在样本中体现在哪里?

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

上图是李宏毅老师的讲义截图,对于每一个输入都会产生四个矩阵,由这四个矩阵决定最终的输出(这里也可以看出lstm的参数量是普通前馈神经网络的4倍

例如:输入样本 豆浆喝起来很香醇,油条吃起来嘎嘣脆

当有足够这样多的句式,遗忘门会会将前一句中的主语或动词丢弃,因为后文中主语或吃起来等等和前文没有关系。

有一些改进版本,例如GRU,JANET(JUST ANOTHER NETWORK)保留了遗忘门,由论文中的实验可以看出遗忘门是最重要的门之一https://arxiv.org/yiabs/1804.04849

实际当中LSTM的传输是将上一层的细胞向量,隐藏层向量和当前输入向量(c,h,x)一起进行计算。如下是李宏毅老师的讲义截图

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size

3.keras中若干个Cell例如LSTMCell

LSTMCell或者其他得cell表示一个cell单元,表示一个step

而LSTM是一个循环层,LSTM也是RNN结构,只是cell是用LSTMCell实现得。

如LSTMCell

LSTMCell或者其他得cell表示一个cell单元,表示一个step

而LSTM是一个循环层,LSTM也是RNN结构,只是cell是用LSTMCell实现得。