CBOW v.s. skip-gram: зачем инвертировать контекст и целевые слова?

В этой странице говорится, что:

[...] skip-gram инвертирует контексты и цели и пытается предсказать каждое контекстное слово из его целевого слова [...]

Однако, глядя на набор данных обучения, который он производит, содержимое пары X и Y представляется взаимозаменяемым, поскольку эти две пары (X, Y):

(quick, brown), (brown, quick)

Итак, зачем различать это между контекстом и целями, если в конце концов это одно и то же?

Кроме того, делая упражнение Udacity Deep Learning на word2vec, мне интересно, почему они, похоже, делают разницу между этими двумя подходами, проблема:

Альтернативой skip-грамму является еще одна модель Word2Vec под названием CBOW (Continuous Bag of Words). В модели CBOW вместо предсказания контекстного слова из словарного вектора вы прогнозируете слово из суммы всех словных векторов в его контексте. Внедрить и оценить модель CBOW, подготовленную по набору данных text8.

Не приведет ли это к таким же результатам?

Ответ 1

Вот мое упрощенное и довольно наивное понимание разницы:

Как мы знаем, CBOW учится предсказывать слова по контексту. Или максимизируйте вероятность целевого слова, глядя на контекст. И это бывает проблемой для редких слов. Например, учитывая, что yesterday was a really [...] day контекст yesterday was a really [...] day дневным, модель CBOW скажет вам, что, скорее всего, это beautiful или nice слово. Такие слова, как delightful, получат гораздо меньше внимания модели, потому что она предназначена для прогнозирования наиболее вероятного слова. Это слово будет сглажено во многих примерах с более частыми словами.

С другой стороны, модель скип-граммы предназначена для прогнозирования контекста. Учитывая delightful слово, оно должно понять его и сказать нам, что существует большая вероятность того, что yesterday was really [...] day контекст yesterday was really [...] day или каким-то другим соответствующим контекстом. С пропуском грамматики слово delightful не будет пытаться конкурировать со словом beautiful но вместо этого пары delightful+context будут рассматриваться как новые наблюдения.

ОБНОВИТЬ

Спасибо @0xF за то, что поделились этой статьей

По словам Миколова

Скип-грамма: хорошо работает с небольшим количеством обучающих данных, хорошо представляет даже редкие слова или фразы.

CBOW: в несколько раз быстрее тренироваться, чем скип-грамма, немного лучшая точность для часто употребляемых слов

Еще одно дополнение к теме можно найти здесь:

В режиме "skip -gram", альтернативном "CBOW", вместо усреднения слов контекста, каждое из них используется в качестве примера попарного обучения. Таким образом, вместо одного примера CBOW, такого как [предикат 'съел' из среднего значения ('The', 'cat', 'the', 'mouse')], сеть представлена четырьмя примерами скип-граммы [предикат ' ели 'от' The '], [предсказывают' ели 'от' кошки '], [предсказывают' ели 'от' the '], [предсказывают' ели 'от' мыши ']. (Произошло такое же случайное сокращение окна, так что половину времени составляли бы два примера ближайших слов.)

Ответ 2

Это связано с тем, что именно вы вычисляете в любой заданной точке. Разница станет более ясной, если вы начнете смотреть на модели, которые содержат более широкий контекст для каждого вычисления вероятности.

В skip-грамме вы вычисляете контекстное слово (слова) из слова в текущей позиции предложения; вы "пропускаете" текущее слово (и, возможно, немного контекста) в своих расчетах. Результатом может быть несколько слов (но не в том случае, если ваше контекстное окно имеет только одно слово).

В CBOW вы вычисляете текущее слово из контекстного слова (ов), поэтому в результате вы получите только одно слово.