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

на этой страница, сказано, что:

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

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

(quick, brown), (brown, quick)

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

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

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

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

2 ответов


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

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

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

UPD

благодаря @0xF для обмена в этой статье

по данным Mikolov

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

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

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

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


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

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

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