Ulmfit 的语言模型在应用于文本分类问题时如何工作?

How does Ulmfit's language model work when applied on a text classification problem?

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

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

ULMFiT 的模型是 "a regular LSTM",它是循环神经网络 (RNN) 的特例。

RNNs "eat" 逐字输入文本(有时是逐字符),并且在每 "bite" 它们之后:

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

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

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

我发现这个 PyTorch tutorial.

特别有用