Интересно, почему skip-грамм лучше для редких слов, чем CBOW в word2vec. Я прочитал претензию на странице https://code.google.com/p/word2vec/ .
Интересно, почему skip-грамм лучше для редких слов, чем CBOW в word2vec. Я прочитал претензию на странице https://code.google.com/p/word2vec/ .
Ответы:
В CBOW векторы из контекстных слов усредняются перед прогнозированием центрального слова. В скипграмме нет усреднения векторов вложения. Кажется, что модель может выучить лучшие представления для редких слов, когда их векторы не усредняются с другими контекстными словами в процессе прогнозирования.
Вот мое упрощенное и довольно наивное понимание разницы:
Как мы знаем, CBOW учится предсказывать слова по контексту. Или максимизируйте вероятность целевого слова, глядя на контекст. И это бывает проблемой для редких слов. Например, с учетом контекста yesterday was really [...] day
модель CBOW скажет вам, что, скорее всего, это слово beautiful
или nice
. Подобные слова delightful
привлекут гораздо меньше внимания к модели, поскольку она предназначена для прогнозирования наиболее вероятного слова. Редкие слова будут сглажены на многих примерах с более частыми словами.
С другой стороны, скип-грамма предназначена для прогнозирования контекста. Учитывая слово, delightful
оно должно понять его и сказать нам, что существует огромная вероятность, контекст yesterday was really [...] day
или какой-то другой соответствующий контекст. С пропуском слова delightful
не будет конкурировать со словом, beautiful
но вместо этого delightful+context
пары будут рассматриваться как новые наблюдения. Из-за этого скип-грамму потребуется больше данных, чтобы он научился понимать даже редкие слова.
Я только что натолкнулся на статью, которая показывает обратное: CBOW лучше для редких слов, чем пропустить грамм https://arxiv.org/abs/1609.08293 . Интересно , каковы источники заявленной претензии на https://code.google.com/p/word2vec/ .