Как получить потерю обучения word2vec в Gensim из предварительно обученных моделей?

#gensim #word2vec

#gensim #word2vec

Вопрос:

У меня есть несколько предварительно подготовленных моделей word2vec, и я хотел бы оценить их, используя тот же корпус. Есть ли способ, которым я мог бы получить необработанную потерю обучения, учитывая файл дампа модели и корпус в памяти?

Ответ №1:

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

Например, по крайней мере, через gensim 3.7.1 (январь 2019), вы можете просто получить общие потери с момента последнего вызова train() (за несколько эпох). Некоторые ожидающие изменения могут в конечном итоге изменить это.

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

Предположительно, вы могли бы изменить загруженную модель, w2v_model.compute_loss = False чтобы дальнейшие вызовы train() (с теми же или новыми данными) собирали данные о потерях. Однако обратите внимание, что такое обучение также будет обновлять модель с учетом текущих данных.

Вы также могли бы взглянуть на score() метод, доступный для некоторых режимов модели, который сообщает количество потерь, связанных с пакетами новых текстов, без изменения модели. По сути, это может сработать как способ оценить, «похожи» ли новые тексты на исходные данные обучения. Смотрите документацию по методу, включая ссылки на мотивирующую академическую статью и пример записной книжки, для получения дополнительной информации:

https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.score

Комментарии:

1. Спасибо за ответ! Есть ли у вас какие-либо идеи помимо вычисления потерь, которые могли бы оценить модель?