我正在尝试计算 Ilya Sutskever 的seq2seq模型中的参数总数。在论文中,作者提到了总共 384M 的可训练参数,或者准确地说:
生成的 LSTM 有 384M 参数,其中 64M 是纯循环连接(“编码器”LSTM 为 32M,“解码器”LSTM 为 32M)
简而言之,他们的模型具有:
- 一个编码器 LSTM 和一个解码器 LSTM
- 每个 LSTM 有四层
- 每个 LSTM 层有 1000 个单元
- 输入:160K 可能的输入词的 1000 维词嵌入
- 输出:朴素的 softmax 超过 80K 可能的单词
按照这篇文章并使用公式
我能够计算:
对于编码器 LSTM
- 所有层的 n = 1000
- m = 1000 对于第一个隐藏层,因为 1000 维嵌入
m = 1000 对于所有其他层,因为这是每个隐藏层中的单元数
产生:
输入 -> 第一个隐藏层:8M
- 第一个 -> 第二个:8M
- 第二->第三:8M
- 第三个->最后一个:8M
- 总计 = 32M
当他们说 LSTM 的 32M 循环连接时,我猜这就是他们的意思?
对于解码器 LSTM
计算与上面完全相同,但需要注意的是输入大小为 1000,因为这是编码器 LSTM 的输出大小。
- 总计 = 32M
其他320M参数在哪里?
到目前为止所做的计算考虑了 64M 参数。我们还没有考虑到最终的 softmax 层,因为它的输出是 80K,所以它可能非常大,而且 320M 可以可疑地分解为 80K * 4K,但我不确定这一点。
我的问题是:
- 单纯的 softmax 层可以单独解释 320M 的缺失参数吗?
- 我们不应该像这篇文章那样使用循环神经网络来计算额外的权重吗?
谢谢