小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size
- RNN循环神经网络 timestep batch_size
- LSTM及参数计算
- keras中若干个Cell例如LSTMCell
1.RNN循环神经网络
先来解释一下 batch_size timestep
样本数据:
小明爱学习
小王爱学习
小李爱学习
小花爱学习
通常样本数据会以(batch_size, time_step, embedding_size)送入模型,对应的可以是(4,5,100)
4表示批量送入也就是(小,小,小,小)第二批是(明,王,李,花)…
5表示时间步长,一句话共5个字
100表示词嵌入的维度
输入 假设一次输入4个字符,那么Xt的维度是4*100
对应的矩阵大小是 100*hidden_size
输出大小即为4*hidden_size 也就是说W将词嵌入转换成隐藏层大小
$H_{t-1} $ 也就是 4*hidden_size
相乘大小就是 hidden_size * hidden_size
偏执项大小是1*h通过广播的方式和前面相加
所以最终输出就是4*hidden_size
对于输出层:
相应的大小为hidden_size*labels_number
这里labels_number对应的是字典中字的个数,也就是说最终是要预测下一个字的概率
最终输出 是4*labels_number
如果是分类任务再加上一个softmax 就得到此次批量4个各自的最大概率的值是什么。
2.LSTM及参数计算
对比上述RNN类比LSTM结构
依然用上面例子,输入timestep=5 及一句话5个字。字嵌入维度是100及一个字用100维表示。设置LSTM(64)输出维度是64及隐含层输出是64维。
总共三个门结构
是上一个隐含层,也就是64。 维度是(1,164) 所以 大小就是(164,64) ,偏执项64
所以通过公式可以看到和 相乘共用4个矩阵,参数数量是(164*64+64 )* 4
**函数是sigmoid输出是[0,1],可以看出几个门输出的值是0到1之间。
tanh输出是[-1, 1],
遗忘门控制上一个记忆细胞信息是否需要保留,输入门控制当前候选细胞。
如果遗忘门一直近似1 输入门近似0 ,记忆细胞会一直记录历史的信息。
对于这样门组合方式是不是可以达到很好的效果,各个门结构实际上在样本中体现在哪里?
上图是李宏毅老师的讲义截图,对于每一个输入都会产生四个矩阵,由这四个矩阵决定最终的输出(这里也可以看出lstm的参数量是普通前馈神经网络的4倍)
例如:输入样本 豆浆喝起来很香醇,油条吃起来嘎嘣脆
当有足够这样多的句式,遗忘门会会将前一句中的主语或动词丢弃,因为后文中主语或吃起来等等和前文没有关系。
有一些改进版本,例如GRU,JANET(JUST ANOTHER NETWORK)保留了遗忘门,由论文中的实验可以看出遗忘门是最重要的门之一https://arxiv.org/yiabs/1804.04849。
实际当中LSTM的传输是将上一层的细胞向量,隐藏层向量和当前输入向量(c,h,x)一起进行计算。如下是李宏毅老师的讲义截图
3.keras中若干个Cell例如LSTMCell
LSTMCell或者其他得cell表示一个cell单元,表示一个step
而LSTM是一个循环层,LSTM也是RNN结构,只是cell是用LSTMCell实现得。
如LSTMCell
LSTMCell或者其他得cell表示一个cell单元,表示一个step
而LSTM是一个循环层,LSTM也是RNN结构,只是cell是用LSTMCell实现得。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小白循环神经网络RNN LSTM 参数数量 门单元 cell units timestep batch_size - Python技术站