Fast Text 无监督模型损失

Fast Text unsupervised model loss

我想为我的 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. 我是否应该增加纪元以使 fastText 更好地学习我的数据?
  2. 我可以使用任何损失函数来改善损失吗?如果是,什么样的损失函数会更好?
  3. 我如何评估我的 fastText 模型的学习好坏?
  4. 出于兴趣,我可以使用 wordngrams 让我的模型在无监督学习中更好地学习上下文吗?

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

  • 你可以更好地理解avg.loss,阅读this thread
  • 学习率根据 lrUpdateRate 选项更新(阅读 this)。
  • 一般来说,增加 epoch 的数量可以改善学习。然而,正如您在 this paper 中所读到的,最流行的语言模型的时期数在 10 到 100 之间。
  • 默认损失函数是softmax。您还可以选择 hs(分层 softmax)或 ns。您可以在 official tutorial.
  • 中阅读更多内容
  • 想了解更多wswordngrams参数的作用,可以阅读