Как происходит совместное обучение векторов слов с векторами абзацев в doc2vec DBOW?

Я не понимаю, как векторы слов вообще участвуют в процессе обучения с doc2vec gensim в режиме DBOW (dm=0). Я знаю, что по умолчанию он отключен с помощью dbow_words=0. Но что произойдет, если мы установим dbow_words на 1?

В моем понимании DBOW слова контекста предсказываются непосредственно из векторов абзаца. Таким образом, единственными параметрами модели являются Np-мерные векторы абзаца плюс параметры классификатора.

Но несколько источников намекают, что в режиме DBOW возможно совместное обучение векторов слов и документов. Например:

Итак, как это делается? Любые разъяснения будут высоко оценены!

Примечание: для DM векторы абзацев усредняются/объединяются с векторами слов для предсказания целевых слов. В этом случае понятно, что векторы слов обучаются одновременно с векторами документов. И есть N*p + M*q + classifier параметры (где M размер словарного запаса и q размер пространства вектора слова).

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы установите dbow_words=1, то обучение вектору слов с пропуском грамма будет добавлено к циклу обучения, чередующемуся с обычным обучением PV-DBOW.

Таким образом, для заданного целевого слова в тексте сначала используется doc-vector-кандидат (отдельно), чтобы попытаться предсказать это слово, а затем в модель и doc-vector вносятся корректировки обратного распространения. Затем каждый из окружающих слов используется по одному в стиле пропуска грамм, чтобы попытаться предсказать одно и то же целевое слово с последующими корректировками.

Затем следующее целевое слово в тексте получает ту же обработку PV-DBOW плюс пропуск грамматики, и так далее, и так далее.

Как некоторые логические следствия этого:

  • тренировка занимает больше времени, чем обычный PV-DBOW - примерно в множитель, равный параметру window

  • Word-векторы в целом получают больше общего внимания при обучении, чем doc-векторы, опять же с коэффициентом, равным параметру window.

большое спасибо за быстрый и полезный ответ! (1) Я понимаю, что в этой настройке векторы слов и документов действительно обучаются одновременно, но они не взаимодействуют. Следовательно, с точки зрения качества, вероятно, нет улучшения по сравнению с обучением векторов слов и документов по отдельности? (2) Я пришел к выводу, что когда dm=0 и dbow_words=0, векторы слов все еще создаются, но никогда не используются/обучаются. Вы случайно не знаете, как избавиться от них, чтобы уменьшить размер модели на диске и в оперативной памяти?

Antoine 10.04.2019 10:23

развивая (1): я, вероятно, что-то неправильно понял, но разве ваше объяснение того, что векторы слов и документов обучаются одновременно, но без взаимодействия, не противоречит результатам, представленным в этом бумага (раздел 5), что предварительное обучение векторов слов улучшает качество dbow doc векторы? Если между двумя задачами нет утечки, это ничего не должно изменить, не так ли?

Antoine 10.04.2019 14:51

В случае dbow_words=0 нет поддерживаемого способа отбросить выделенные необученные векторы слов. Если вы закончили как обучение, так и вывод (что также является своего рода обучением), и Только необходимо получить доступ к обученным doc-векторам, вы, возможно, могли бы del связанное d2v_model.wv свойство, но это мощь предотвращает другие операции save()/load() от работы, я не уверен.

gojomo 10.04.2019 19:39

В режиме dbow_words=1 слова-векторы обучаются с некоторыми парами (context_word-> target_word), затем doc-векторы обучаются с парами (doc_tag-> target_word), затем это повторяется в чередующемся режиме. Таким образом, ни один отдельный пример микрообучения не включает и то, и другое. Но то же самое происходит и со многими словами при обычном обучении слов, но слова все равно оказываются в полезных относительных позициях. Это потому, что все обучающие примеры используют один и тот же скрытый->выходной слой нейронной сети. Таким образом, каждый из контрастирующих примеров изменяет некоторые общие параметры, а косвенно влияет друг на друга.

gojomo 10.04.2019 19:43

Будет ли добавление dbow_words полезным или вредным, будет зависеть от ваших данных, целей и метапараметров. Поможет ли заполнение модели Doc2Vec предварительно обученными векторами слов — вариант, для которого нет официальной поддержки gensim — будет зависеть от того, насколько хорошо этот предварительно обученный словарь подходит вашим документам и режиму модели. А в режиме dbow_words=0 предварительно загруженные слова-векторы не могу имеют какое-либо прямое или косвенное влияние на док-векторы - в той мере, в какой это предполагает статья, она запутана. (Я также отмечаю это по адресу: groups.google.com/d/msg/gensim/4-pd0iA_xW4/UzpuvBOPAwAJ )

gojomo 10.04.2019 19:48

Вы можете найти больше моих опасений по поводу конкретных утверждений/тестов/пробелов в этом документе в некоторых обсуждениях в выпуске проекта на github — начиная с github.com/RaRe-Technologies/gensim/issues/… — и в других ссылках на группы обсуждения из этого выпуска.

gojomo 10.04.2019 19:52

Большое спасибо за то, что уделили время таким подробным объяснениям и полезным ссылкам, это очень ценно. Действительно, вы правы насчет косвенного влияния. Я не учел тот факт, что матрица проекции-> вывода является общей как для векторов слов, так и для векторов документов. Спасибо еще раз!

Antoine 11.04.2019 10:34

Другие вопросы по теме