LSTM的参数数量如何计算?

谢邀。首先,原文中提到,在encoder与decoder上都使用了4层的LSTM. 可以首先计算LSTM的参数数量. 那么, 一个LSTM有多少个参数呢? 首先,文中提到LSTM在每层使用了1000个cell(对应于 h_{t}C_{t},\tilde{C}_{t} 的维度)与大小为1000的word embedding(最底层LSTM的输入大小等于word embedding的维度大小,其他层LSTM的输入大小等于上一层 h_{t} 的维度大小,在这里均为1000). 那么就可以计算LSTM的参数个数了:

(1) f_{t}=\sigma(W_{f}*[h_{t-1},x_{t}]+b_{f})\ \ \ \ \ \ W_{f}\in\mathbb{R}^{1000\times2000}, b_{f}\in\mathbb{R}^{1000}

(2) i_{t}=\sigma(W_{i}*[h_{t-1},x_{t}]+b_{i})\ \ \ \ \ \ W_{i}\in\mathbb{R}^{1000\times2000}, b_{i}\in\mathbb{R}^{1000}

(3) \tilde{C}_{t}=tanh(W_{C}*[h_{t-1},x_{t}]+b_{C})\ \ \ \ \ \ W_{C}\in\mathbb{R}^{1000\times2000}, b_{C}\in\mathbb{R}^{1000}

(4) C_{t}=f_{t}\odot C_{t-1}+i_{t}\odot\tilde{C}_{t}

(5) o_{t}=\sigma(W_{o}*[h_{t-1},x_{t}]+b_{o})\ \ \ \ \ \ W_{o}\in\mathbb{R}^{1000\times2000}, b_{o}\in\mathbb{R}^{1000}

(6) h_{t}=o_{t}\odot tanh(C_{t})

因此,可以看到,每个LSTM 有 (1000\times 2000+1000)\times 4\approx8M 个参数. 编码器具有4个LSTM,解码器具有4个LSTM,因此共有 8M\times 4+8M\times 4=64M 个参数.

至于 384M 中其他的 320M 参数,则主要是来自于解码时从隐层状态到80000个词之间的映射( 80000\times 4000=320M , 其中4000等于解码器四层LSTM的 h_{t} 的连接).

至于使用8000个实数来表示句子,实际上对应于编码器每层LSTM最终时间步的的cell state与hidden state,因此共有 (1000+1000)\times 4=8000 个实数.



作者:孙建东
链接:https://www.zhihu.com/question/263700757/answer/272342413
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值