Gensim word2vec模型损失在几个时期后变为0

问题描述 投票:0回答:1

正在尝试建立gensim word2vec模型。语料库包含100万个句子。我使用回调在每个时期后打印丢失。在几个时期之后,损耗变为零。知道为什么损失变为0吗?

Loss after epoch 0: 17300302.0
Loss after epoch 1: 11381698.0
Loss after epoch 2: 8893964.0
Loss after epoch 3: 7105532.0
           ...
           ...
           ...
Loss after epoch 54: 1283432.0
Loss after epoch 55: 1278048.0
Loss after epoch 56: 316968.0
Loss after epoch 57: 0.0
Loss after epoch 58: 0.0
Loss after epoch 59: 0.0
Loss after epoch 60: 0.0
Loss after epoch 61: 0.0
Loss after epoch 62: 0.0
Loss after epoch 63: 0.0
Loss after epoch 64: 0.0
Loss after epoch 65: 0.0
Loss after epoch 66: 0.0
deep-learning gensim word2vec loss-function
1个回答
0
投票

很难看到代码,并且对数据有一些想法,这就是您用来进行培训的方法。

但是请注意:

  • gensim Word2Vec报告的损失当前不是每个时期的损失,而是自从上一次调用.train()开始的总计。 (请参阅gensim项目错误#2617,以及此处提到的请求请求/问题。)要获得每个时间段的损失–您希望该值下降一段时间,然后停滞不前–您必须撤消此操作通过将报告的值与先前报告的值进行比较来计算。 (您在这样做吗?)

  • [我能想到的每个时期损失实际上变为零的唯一两种方法是(1)语料库迭代器中存在某种错误,因此每个时期实际上都没有发生新的训练-这可能在以下情况中很明显如果启用了INFO级日志记录,则记录日志输出; (2)极端过度拟合-模型对于实际训练数据的种类而言太大了-在这种情况下,该模型可能会在其邻近单词预测任务上真正变得“完美”。

以前在gensim项目支持列表上有类似行为的报告–见https://groups.google.com/d/msg/gensim/IH5-nWoR_ZI/Hg0qvLYiAAAJ-但是在我提出了一些建议并问了一些后续问题之后,原始报告者就没有再跟进。因此,目前尚不清楚他们在代码中犯了什么错误,或者gensim中是否存在错误。不过,您可能会发现该主题中的问题和评论很有用。

如果无法以其他方式解决问题,则可以在问题中查看关于如何训练模型(代码,参数和数据)以及如何报告这些损失数字的更多详细信息。 ,以及该线程询问的其他任何详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.