在神经机器翻译中加权

问题描述 投票:1回答:3

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

那么,我怎么能绑他们呢?在这种情况下,实现重量搭售的最佳方法是什么?

python deep-learning recurrent-neural-network pytorch seq2seq
3个回答
1
投票

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


0
投票

权重绑定:在输入到嵌入层和输出到softmax层之间共享权重矩阵;也就是说,我们只使用一个权重矩阵,而不是使用两个权重矩阵。这样做的直觉是解决过度拟合的问题。因此,权重绑定可以被认为是正规化的一种形式。

这已在word language model in PyTorch examples中实施


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.