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, ты вычисление текущего слова из контекстного слова(ов), поэтому в результате у вас будет только одно слово.