seq2seq 模型中的参数数量

数据挖掘 机器学习 机器翻译
2022-02-28 17:20:46

我正在尝试计算 Ilya Sutskever 的seq2seq模型中的参数总数。在论文中,作者提到了总共 384M 的可训练参数,或者准确地说:

生成的 LSTM 有 384M 参数,其中 64M 是纯循环连接(“编码器”LSTM 为 32M,“解码器”LSTM 为 32M)

简而言之,他们的模型具有:

  • 一个编码器 LSTM 和一个解码器 LSTM
  • 每个 LSTM 有四层
  • 每个 LSTM 层有 1000 个单元
  • 输入:160K 可能的输入词的 1000 维词嵌入
  • 输出:朴素的 softmax 超过 80K 可能的单词

按照这篇文章并使用公式

num params=4(nm+n2)

我能够计算:

对于编码器 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 的缺失参数吗?
  • 我们不应该像这篇文章那样使用循环神经网络来计算额外的权重吗?

谢谢

1个回答

我想我已经找到了答案,但我想得到社区的一些验证。有人可以让我知道这是否是一个有效的解释吗?

剩余320M参数的原因

  • 编码器的输入中,计算词嵌入需要采用 160K 词的 one-hot 向量并将其转换为 1K 维词嵌入。因此这占了160M参数;
  • 解码器的softmax 层采用 1K 维输入(LSTM 单元最后一层的隐藏状态)并将其转换为 80K 概率的向量。这占了80M参数;
  • 编码器的输入不仅由解码器的隐藏状态给出,还由编码器的先前输出给出。这需要获取一个 80K 维的可能词向量并将其转换为 1K 维词嵌入。因此,这占了80M参数。

这个解释有意义吗?

经常性连接

据我了解,一旦计算出 LSTM 的单元状态,它就会按原样转移到下一个时间步。因此,循环网络没有额外的参数(例如,本文中的情况)。