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

时间:2019-10-09 18:01:27

标签: nlp lstm text-classification language-model fast-ai

我最近一直在与Ulmfit玩耍,但仍然无法确定语言模型对下一个单词的声音预测能力如何影响文本的分类。我想我的真正问题是我不了解网络底层的情况。因此,如果我错了,请纠正我,但过程是正确的(?):

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

1 个答案:

答案 0 :(得分:2)

ULMFiT的模型是“常规LSTM”,这是递归神经网络(RNN)的特例。

RNN逐个单词(有时是逐个字符)“吃掉”输入的文本,并且每次“咬一口”之后:

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

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

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

我发现这个PyTorch tutorial特别有用。

enter image description here