Gensim word2ve c потеря модели становится 0 после нескольких эпох - PullRequest
1 голос
/ 20 января 2020

Попытка построить модель gensim word2ve c. Корпус содержит 1 М предложений. Я использую обратный вызов для печати потери после каждой эпохи. После нескольких эпох потеря становится равной нулю. Любая идея, почему потеря становится 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

1 Ответ

0 голосов
/ 21 января 2020

Обновление: Существует проблема с точностью типа, используемого для этого (также неоптимального) многопериодного промежуточного подсчета. См. gensim bug # 2735 для обсуждения.

-

Предыдущий ответ:

Трудно сказать, не видя код и не имея представления о данных, которые вы используете делать обучение.

Однако, обратите внимание:

  • потеря, о которой сообщает gensim Word2Vec, в настоящее время не является потерей за эпоху, а является промежуточной суммой с начала последнего позвоните на .train(). (См. Ошибку в проекте gensim № 2617 и упомянутые там pull-запросы / проблемы.) Чтобы получить потерю за эпоху - значение, которое вы ожидаете некоторое время уменьшить на go, затем стагнировать - вам придется отмените этот подсчет, сравнивая сообщенное значение с ранее сообщенным значением. (Вы делаете это?)

  • единственные два способа, которыми я могу думать о потере за эпоху, фактически сводящейся к нулю, будут: (1) какая-то ошибка в итераторе корпуса, таким образом, ни одно новое обучение на самом деле не происходило в каждую эпоху - это может быть заметно при выводе в журнал, если вы включили ведение журнала на уровне INFO; (2) экстремальное переоснащение - модель, слишком большая для разнообразия реальных обучающих данных, - в этом случае, возможно, модель действительно может стать «идеальной» в своей задаче прогнозирования соседних слов.

Был один предыдущий отчет о похожем поведении в списке поддержки проекта gensim - см. https://groups.google.com/d/msg/gensim/IH5-nWoR_ZI/Hg0qvLYiAAAJ - но после того, как я сделал некоторые предложения и попросил некоторых последующих действий вопросы, первоначальный репортер никогда не следил. Так что неясно, какую ошибку они допустили в своем коде, или может быть ошибка в gensim. Тем не менее, вы можете найти вопросы и комментарии в этой ветке полезными.

Если вы не можете решить вашу проблему иначе, это поможет увидеть в вашем вопросе более подробную информацию о том, как вы тренируете модель (код , параметры и данные), а также как вы сообщаете эти цифры потерь вместе с любыми другими деталями, которые были заданы в этой теме.

...