字节嵌入mLSTM概念斗争

时间:2018-05-20 19:41:09

标签: python machine-learning deep-learning lstm pytorch

我试图通过阅读OpenAI "Sentiment Neuron" experiment来跟踪PyTorch code posted on Github,从头开始训练模型。

我不理解的一件事是代码中使用的字节级嵌入。我知道LSTM输出下一个字节值的概率分布,我假设"嵌入"只是字节值的单热编码。

查看代码,我看到模型的输入在进入模型之前经过(可训练的)密集嵌入。令人困惑的是,损失的输出是在模型输出和即将到来的字节值之间计算的,嵌入。·
我的问题是:
1.如何计算交叉熵损失? nn.CrossEntropyLoss是否采用其输入的softmax并将目标扩展为单热矢量"引擎盖下#34;在中 2.如果我们想从这个LSTM生成字节字符串,我们如何嵌入输出以反馈到模型中以进行下一步?我们是否嵌入最高可能性或采用输出的softmax并使用某种加权嵌入?

我是LSTM的新手,我正在努力学习,但我只是没有得到它!我感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

即使输入和输出使用相同的符号,在每一端使用不同的表示也是完全可以接受的。交叉熵是两个概率分布的函数。在这种情况下,两个分布是由模型给出的softmax分布,以及"正确的"字节。

对于问题1,是的就是在输入和输出方面正在做的事情(尽管可能会优化实施)。

要回答问题2,最常见的是在每一步形成softmax分布,然后从中进行采样。