词嵌入训练

我有一个用于词嵌入的语料库。使用这个语料库,我训练了我的词嵌入。然而,每次我训练词嵌入时,结果都相当不同(这些结果是基于K最近邻(KNN)的)。例如,在第一次训练中,’计算机‘的最近邻词是’笔记本电脑‘、’计算机化‘、’硬件‘。但在第二次训练中,这些KNN词变成了’软件‘、’机器‘…(’笔记本电脑’排名较低!) – 所有训练都是独立进行的,进行了20个周期,超参数都相同。

我想让我的词嵌入训练结果非常相似(例如,’笔记本电脑’排名较高)。我应该怎么做?我应该调整超参数(学习率、初始化等)吗?


回答:

你没有说明你使用的是哪种word2vec软件,这可能会影响相关因素。

word2vec算法本质上使用了随机性,包括初始化和训练的多个方面(如使用负采样的负例选择,或对高频词的随机下采样)。此外,如果你进行多线程训练,操作系统线程调度中的本质随机抖动会改变训练示例的顺序,引入另一个随机性来源。因此,即使使用完全相同的参数和语料库,你也不应该期望后续运行会给出相同的结果。

尽管如此,如果有足够多的好数据、合适的参数和适当的训练循环,相对邻居的结果应该在每次运行中相当相似。如果不是这样,更多的数据或更多的迭代可能会有所帮助。

如果模型过大(维度/词汇量过多)对于你的语料库来说,可能会导致过拟合。也就是说,它通过基本上记住数据的特异性来找到一个很好的配置,而没有达到任何泛化能力。如果这种过拟合是可能的,通常会有许多同样好的这种记忆 – 因此它们在每次运行中可能会非常不同。同时,适当大小的模型和大量数据会捕捉到真正的普遍性,这些在每次运行中会更加一致,尽管有任何随机化。

获取更多数据、使用更小的向量、进行更多的训练轮次,或者提高保留/训练一个词的最小词频计数都可能有所帮助。(非常低频的词无法获得高质量的向量,因此只会干扰其他词的质量,然后随机闯入最相似的列表中。)

为了了解可能还存在什么问题,你应该在问题中澄清以下内容:

  • 使用的软件
  • 使用的模式/元参数
  • 语料库大小,示例数量,平均示例大小(以词为单位),以及唯一词汇计数(在原始语料库中,以及应用最小计数后)
  • 预处理方法
  • 用于训练的代码(如果你自己管理多个训练轮次)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注