首页 > 解决方案 > 快速文本无监督模型损失

问题描述

我想为我的 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. 只是出于兴趣,我可以使用 wordngrams 让我的模型在无监督学习中更好地学习上下文吗?

标签: word-embeddingfasttext

解决方案


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

  • 你可以更好地理解avg.loss,阅读这个线程
  • 学习率根据lrUpdateRate选项更新(阅读内容)。
  • 一般来说,增加 epoch 的数量可以改善学习。但是,正如您在本文中所读到的,最流行的语言模型有 10 到 100 个 epoch。
  • 默认损失函数是softmax。您还可以选择 hs(分层 softmax)或 ns。您可以在官方教程中阅读更多内容。
  • 如果你想了解更多关于wswordngrams参数的影响,你可以阅读这个答案

推荐阅读