【问题标题】:word2vec gensim update learning rateword2vec gensim 更新学习率
【发布时间】:2018-07-02 09:40:22
【问题描述】:

我在一个大型语料库上训练了一个 w2v 模型,我想用一个更小的带有新句子(和新单词)的模型来更新它。

在第一次大训练中,我采用了 alpha 的默认参数(0.025 with lin.decay to 0.0001) 现在,我想使用model.train 来更新它。但是从文档中我不明白在这次培训更新期间将使用哪个(初始和最终)学习率。

从一方面来说,如果你也使用 0.025 和 lin。衰减到 0.0001,对于在第一个大语料库中出现很多的已经存在的单词来说它太强了,并且会发生很大的变化,但是从另一方面来说新单词(添加了 model.build_vocab(sentences, update = True) ) 0.0001 的低学习率太小了。

所以我的问题是:

  1. API 中model.train 对新句子的学习率的默认行为是什么?
  2. 我应该如何选择学习率来考虑这个新旧词的问题?

  3. [旁白问题] 为什么当我在同一个句子上使用 2 次 model.train 时,第二次它不会更新向量?

【问题讨论】:

    标签: python machine-learning word2vec gensim


    【解决方案1】:

    虽然您可以继续使用新示例训练 Word2Vec 模型,除非示例也以交错方式重新呈现,但这些新示例可能不会让模型变得更好——无论您如何调整alpha

    这是因为在对新示例进行训练时,模型只是被推动以更好地在这些新上下文中预测他们的话。如果新文本中缺少单词,则随着模型的其余部分漂移,它们的词向量保持未调整。即使重复相同的单词,它们的新上下文可能在某些重要方面也会有所不同——否则为什么要继续使用新数据进行训练? ——逐渐淡化或淘汰旧培训的所有影响。

    甚至有一个词表示神经网络在呈现新数据时会出现恶化的趋势(但远非确定性):catastrophic forgetting

    因此,最可支持的策略是将所有相关数据混合在一起进行重新训练,以确保它们具有同等的影响力。如果您正在即兴创作一些其他捷径,那么您就处于实验领域,并且几乎没有可靠的文档或已发表的作品可以就学习率/时期计数/等的相对平衡提出强有力的建议。任何可能的答案也将在很大程度上取决于语料库和词汇的相对大小,首先是,然后是任何后续更新,以及您的特定项目对向量稳定性等因素的重要性。不同向量的质量。所以没有一个答案——只是在你的特定设置中往往会起作用。

    gensimWord2Vec 中有一个实验性功能 - 一些以 _lockf 结尾的内部模型属性。它代表“锁定因子”。它们与单词向量匹配 1-for-1,并且任何将此锁定因子设置为 0.0 的槽,词向量都会忽略训练更新。通过这种方式,您基本上可以“冻结”一些词——例如那些你确信通过更多训练不会得到改进的词——而让其他人仍然更新。这可能有助于解决漂移/忘记更新问题,但相对质量和正确的问题 alpha/epochs 仍然模糊不清,需要逐个项目的实验。)

    特别是关于您编号的问题:

    (1) 每次调用train() 都会对数据执行指定的epochs 次数,并顺利管理从模型配置的从alphamin_alpha 的学习率(除非你覆盖那些给train()添加额外的参数。

    (2) 如上所述,没有既定的经验法则,因为问题很复杂,这种风格的增量训练不能保证有帮助,即使它可能有帮助,它也高度依赖于不可概括项目细节。

    (3) 如果第二次调用train() 导致向量没有变化,那么您的语料库迭代器可能有问题。至少启用 INFO 级别的日志记录,并确保 train() 正在花时间,并显示增量进度,这表明正在发生真正的模型更新。

    【讨论】:

    • 我怎么知道一个词训练得很好,不会通过更多的训练来提高,所以我可以冻结特定的词。
    • 词向量质量的最佳衡量标准将是特定于项目的。你打算如何评估词向量是否在你的问题上做得很好?您是否有一种可靠的、可重复的方法来对词向量在某些具有代表性的动作集上的好坏进行评分?一旦你这样做了,你就可以很好地判断你对词向量训练所做的改变是否是改进。但是,如果您还不能对备用词向量集的好坏进行评分,那么增量重新训练就为时过早。
    • 不,我没有任何方法可以对词向量进行评分。只是想知道我们是否可以说词汇表中出现频率较高的单词比频率较低的单词训练得更好?
    • 一般来说,在大多数情况下,具有许多不同示例的单词的单词向量在相互关系上会比稀有单词的单词向量“更好”。所以你总是喜欢一个罕见词用法的更现实的例子(不仅仅是重复相同的几个不变的用法)。但是这种观察并不能真正帮助您了解一组参数是否比另一组更好,或者总体而言,批次增量训练对批次中较少表示的单词有帮助。要做出这个决定,需要对整个词向量集进行整体评估。
    猜你喜欢
    • 1970-01-01
    • 2014-04-02
    • 2019-01-03
    • 2022-01-03
    • 2021-02-05
    • 2020-10-22
    • 2020-01-03
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多