我们根据什么标准发现无监督的 fasttext 训练有素?

By what criteria do we find out that fasttext unsupervised is well trained?

我想训练无监督的 fasttext 来表示单词。为此,我从 official website, I read the word representation 页面安装了 fasttext,并使用了 model = fasttext.train_unsupervised(),但它只显示了 avg.loss。 我的问题是,我怎么知道我的 fasttext 在我的数据集上训练得很好或者没有训练好,我必须更改超参数。 我想在我的嵌入层中使用 fasttext 来生成文本。我需要一种方法或一些技巧来评估我的无监督训练的 fasttext。

没有一个 'best' 词向量集:它始终取决于您的数据和下游目标。

FastText 训练期间优化和报告的 'loss' 是针对模型的内部单词到附近单词的目标。它 只是一个指南,通过它的总体趋势和最终无法进一步改进,关于更多这种培训是否可以改进该内部目标。 不是可以达到较低损失的模型具有更好的元参数,或者在任何实际下游任务中都更好的情况。

因此:如果报告的损失在训练停止时从一个时代到另一个时代仍然明显减少,可能值得尝试更长的 运行 更多迭代,所有其他 data/parameters 相同,相反,它达到了无法进一步改进的程度(基础优化的 'convergence')。但不要使用 FastText 训练损失在具有不同其他元参数的模型之间进行选择。

为此,您应该对最终的词向量使用其他一些可重复的定量评估,最好是在尽可能接近您实际使用的任务中。也就是说:真正将它们的替代版本插入您的下一步,并查看它们的工作情况,以及不同的集合如何影响整个系统更好或更差的地方。

一开始这可能是非常手动和临时的:运行设置一组熟悉的挑战,只是 'eyeballing' 是否有人 'seems to' 给出了更理想的答案。但要做好并真正搜索数据预处理和模型元参数的所有可能性,您最好使用一些大型、自动化且可能随时间增长的探针集,您可以将其评分为 'better' 或'worse'.

原始词向量论文中使用的自动测试通常基于某些任务,例如类比解决,或者匹配人类的母语报告,哪些词应该 'closer' 彼此而不是另一个。有时尝试重新使用这些作为临时评估是有意义的,但最终使词向量在这些上表现最好的可能并不总是在其他任务中起作用。 (特别是,我已经看到在类比方面较差的词向量作为分类器输入的效果明显更好。)