快速文本无监督模型损失

时间:2021-07-21 09:10:36

标签: word-embedding fasttext

我想为我的 1GB 文本数据创建一个 fastText 无监督模型。我正在使用 fastText 命令行工具来实现模型训练过程。

./fasttext skipgram -input PlainText.txt -output FastText-PlainText- -dim 50 -epoch 50 

以上是我用于创建单词表示的几个参数。

Read 207M words
Number of words:  501986
Number of labels: 0
Progress:  97.5% words/sec/thread:   87224 lr:  0.001260 avg.loss:  0.089536 ETA:   0h 4m 9s

在这里,在 fastText 命令的输出中,我看到这个 avg.loss 并且学习率已经从默认值 (0.5) 降低到 0.001。我真的不明白,这个 avg.loss 是什么意思,为什么学习率下降了?

  1. 我是否应该增加 epoch 以使 fastText 更好地学习我的数据?
  2. 我可以使用任何损失函数来改善损失吗?如果是,什么样的损失函数会更好?
  3. 我如何评估我的 fastText 模型的学习是好是坏?
  4. 出于兴趣,我可以在无监督学习中使用 wordngram 使我的模型更好地学习上下文吗?

1 个答案:

答案 0 :(得分:1)

我无法深入回答您的所有问题,但我会尽力给您一些建议。

  • 你可以更好地理解avg.loss,阅读this thread
  • 学习率根据 lrUpdateRate 选项更新(读取 this)。
  • 总的来说,增加 epoch 的数量可以改善学习。但是,正如您在 this paper 中所读到的,最流行的语言模型具有 10 到 100 之间的多个纪元。
  • 默认损失函数是 softmax。您还可以选择 hs(分层 softmax)或 ns。您可以在 official tutorial 中阅读更多内容。
  • 如果您想详细了解 wswordngrams 参数的效果,您可以阅读this answer