1

我最近一直在玩 Ulmfit,但仍然无法理解语言模型对下一个单词做出正确预测的能力如何影响文本分类。我想我真正的问题是我不明白网络底层发生了什么。如果我错了,请纠正我,但程序是这样的(?):

语言模型经过预训练,然后进行微调。这部分对我来说似乎很清楚:根据当前和前面的词,你形成了关于下一个词的概率。然后模型从旨在创建概率分布的 softmax 层中剥离出来。您添加了一个解码器,该解码器由一个 reLU 层(该层实际上在做什么?)和另一个输出给定文本文档的类成员概率的 softmax 层组成。所以这里有很多我不明白的地方:文本文档是如何被接收和处理的?我假设一个字一个字?那么你如何最终得到预测呢?它是所有单词的平均值吗?嗯,你可以看到我很困惑。希望您能帮助我更好地了解 Ulmfit!提前致谢!

4

1 回答 1

3

ULMFiT 的模型是“常规 LSTM”,它是循环神经网络 (RNN) 的一个特例。

RNN 一个字一个字地“吃掉”输入文本(有时是一个字一个字地),并且在每次“咬”之后:

  • 产生输出
  • 更新内部隐藏状态

在文本分类中,输出被丢弃直到最后。更新的隐藏状态反而被添加到下一个要咬的词中。在 RNN 吃完最后一个单词后,您可以检查输出层(通常是一个带有与标签一样多的神经元的 softmax 层),根据真实标签计算损失,然后相应地更新权重。

在训练阶段之后,假设您要对一个新文档进行分类。RNN 再次“吃掉”输入,并在每个单词之后更新其隐藏状态。您忽略输出层,直到看到最后一个字:此时输出 softmax 层的最大元素将是您的预测标签。

我发现这个PyTorch 教程特别有用。

在此处输入图像描述

于 2019-10-09T21:32:26.883 回答