Я читаю статью ниже, и у меня возникли проблемы с пониманием концепции отрицательной выборки.
http://arxiv.org/pdf/1402.3722v1.pdf
Кто-нибудь может помочь, пожалуйста?
machine-learning
nlp
word2vec
Энди К.
источник
источник
Ответы:
Идея
word2vec
состоит в том, чтобы максимизировать сходство (скалярное произведение) между векторами для слов, которые появляются близко друг к другу (в контексте друг друга) в тексте, и минимизировать сходство слов, которые этого не делают. В уравнении (3) статьи, на которую вы ссылаетесь, на мгновение игнорируйте возведение в степень. У тебя естьЧислитель - это в основном сходство между словами
c
(контекстом) иw
(целевым) словом. Знаменатель вычисляет сходство всех других контекстовc1
и целевого словаw
. Максимальное увеличение этого соотношения гарантирует, что слова, которые встречаются в тексте ближе друг к другу, будут иметь больше похожих векторов, чем слова, у которых их нет. Однако вычисление этого может быть очень медленным, потому что существует много контекстовc1
. Отрицательная выборка - один из способов решения этой проблемы - просто выберите пару контекстовc1
наугад. Конечный результат состоит в том, что если онcat
появляется в контекстеfood
, то векторfood
больше похож на векторcat
(как измеряется их скалярным произведением), чем на векторы нескольких других случайно выбранных слов.(напримерdemocracy
,greed
,Freddy
), а все остальные слова в языке . Этоword2vec
значительно ускоряет тренировку.источник
word2vec
любого заданного слова у вас есть список слов, которые должны быть похожи на него (положительный класс), но отрицательный класс (слова, не похожие на целевое слово) составляется путем выборки.Вычисление Softmax (функция для определения того, какие слова похожи на текущее целевое слово) обходится дорого, поскольку требует суммирования по всем словам в V (знаменатель), которое обычно очень велико.
Что можно сделать?
Были предложены различные стратегии для приближения softmax. Эти подходы могут быть сгруппированы в SoftMax основе и отбор проб на основе подходов. Подходы на основе Softmax - это методы, которые сохраняют уровень softmax нетронутым, но изменяют его архитектуру для повышения его эффективности (например, иерархический softmax). С другой стороны, подходы, основанные на выборке, полностью устраняют слой softmax и вместо этого оптимизируют некоторую другую функцию потерь, которая приближает softmax (они делают это, аппроксимируя нормализацию в знаменателе softmax с некоторыми другими потерями, которые дешево вычислить, например отрицательная выборка).
Функция потерь в Word2vec выглядит примерно так:
Какой логарифм можно разложить на:
С помощью некоторых математических и градиентных формул (подробнее см. 6 ) он преобразован в:
Как видите, он преобразован в задачу двоичной классификации (y = 1 положительный класс, y = 0 отрицательный класс). Поскольку нам нужны метки для выполнения нашей задачи двоичной классификации, мы обозначаем все контекстные слова c как истинные метки (y = 1, положительная выборка), а k, случайно выбранные из корпусов, как ложные метки (y = 0, отрицательная выборка).
Взгляните на следующий абзац. Предположим, что наше целевое слово - « Word2vec ». С окном 3, наши контекстные слова:
The
,widely
,popular
,algorithm
,was
,developed
. Эти контекстные слова рассматриваются как положительные ярлыки. Нам также нужны негативные ярлыки. Мы случайным образом выбрать несколько слов из корпуса (produce
,software
,Collobert
,margin-based
,probabilistic
) и рассматривать их как отрицательные образцы. Этот метод, который мы выбрали случайным образом из корпуса, называется отрицательной выборкой.Ссылка :
источник
Я написал обучающую статью об отрицательной выборке здесь .
Почему мы используем отрицательную выборку? -> снизить вычислительные затраты
Функция стоимости для ванильной выборки по Skip-Gram (SG) и Skip-Gram отрицательной выборки (SGNS) выглядит следующим образом:
Обратите внимание, что
T
это количество всех словарей. Это эквивалентноV
. Другими словами,T
=V
.Распределение вероятностей
p(w_t+j|w_t)
в SG вычисляется для всехV
словарей в корпусе с помощью:V
легко может превышать десятки тысяч при обучении модели Skip-Gram. Вероятность необходимо вычислятьV
раз, что делает это затратным с точки зрения вычислений. Кроме того, коэффициент нормализации в знаменателе требует дополнительныхV
вычислений.С другой стороны, распределение вероятностей в SGNS вычисляется с помощью:
c_pos
- вектор слов для положительного слова иW_neg
векторы слов для всехK
отрицательных выборок в выходной матрице весов. При использовании SGNS вероятность необходимо вычислять толькоK + 1
раз,K
обычно от 5 до 20. Кроме того, не требуется дополнительных итераций для вычисления коэффициента нормализации в знаменателе.В SGNS обновляется только часть весов для каждой обучающей выборки, тогда как SG обновляет все миллионы весов для каждой обучающей выборки.
Как SGNS этого добивается? -> путем преобразования задачи множественной классификации в задачу двоичной классификации.
В SGNS векторы слов больше не изучаются путем предсказания контекстных слов центрального слова. Он учится отличать фактические контекстные слова (положительные) от случайно выбранных (отрицательных) слов из распределения шума.
В реальной жизни вы обычно не наблюдаете
regression
с помощью случайных слов вродеGangnam-Style
, илиpimples
. Идея состоит в том, что если модель может различать вероятные (положительные) пары и маловероятные (отрицательные) пары, векторы хороших слов будут изучены.На приведенном выше рисунке текущая положительная пара слова-контекст - (
drilling
,engineer
).K=5
отрицательные образцы случайным образом обращается от распределения шума :minimized
,primary
,concerns
,led
,page
. По мере того, как модель проходит через обучающие образцы, веса оптимизируются так, чтобы выводилась вероятность для положительной пары и выводиласьp(D=1|w,c_pos)≈1
вероятность для отрицательной парыp(D=1|w,c_neg)≈0
.источник
K
какV -1
, то отрицательная выборка будет такой же, как ванильная модель скип-грамм. Я правильно понимаю?