0

我想绑定层的权重embeddingnext_word解码器的预测层。嵌入维度设置为 300,解码器的隐藏大小设置为 600。NMT 中目标语言的词汇量为 50000,因此嵌入权重维度为50000 x 300,预测下一个单词的线性层的权重为50000 x 600

那么,我该如何绑定它们呢?在这种情况下,实现重量捆绑的最佳方法是什么?

4

3 回答 3

3

权重绑定:在input-to-embedding层和output-to-softmax层之间共享权重矩阵;也就是说,我们只使用一个权重矩阵,而不是使用两个权重矩阵。这样做背后的直觉是为了解决过拟合问题。因此,权重绑定可以被认为是正则化的一种形式。

这已在 PyTorch 示例中的单词语言模型中实现

于 2018-03-15T21:09:49.800 回答
3

在应用共享投影之前,您可以使用线性层将 600 维空间投影到 300。这样,您仍然可以获得优势,即整个嵌入(可能)对于每个 mini-batch 具有非零梯度,但存在略微增加网络容量的风险。

于 2019-01-17T12:37:39.273 回答
0

您是否检查了 kmario23 共享的代码?因为它写道,如果隐藏大小和嵌入大小不相等,则引发异常。所以,这意味着如果你真的想绑定权重,那么你应该将解码器的隐藏大小减少到 300。

另一方面,如果你重新考虑你的想法,你真正想做的是消除重量捆绑。为什么?因为基本上,您想使用需要另一个矩阵的转换。

于 2018-04-01T13:58:05.957 回答