word2vec (part 1)
TRANSCRIPT
2
“Word2vec is a group of related models that are used to produce so-called word embeddings. These models are shallow, two-layer neural networks, that are trained to reconstruct linguistic contexts of words: the network is shown a word, and must guess which words occurred in adjacent positions in an input text.”
Wikipedia
OK, Google, what is Word2Vec?
3
“Word embedding is the collective name for a set of language modeling and feature learning techniques in natural language processing where words or phrases from the vocabulary are mapped to vectors of real numbers in a low-dimensional space relative to the vocabulary size.”
Wikipedia
OK, Google, what is Word Embedding?
4
1. Самостоятельная техника сама по себе
2. Вектора используются как фичи в задачах:◦ Sentiment Analysis◦ Named Entities Recognition◦ Part-Of-Speech Tagging◦ Machine Translation◦ Paraphrase Detection◦ Documents Clustering◦ Documents Ranking◦ и т.д. и т.п.
Зачем это надо?Уже поздно, я хочу домой…
5
1. Каждый документ D из корпуса документов Т представляется как последовательность слов:
D = {x1, … , xn}2. Все уникальные слова из документов корпуса T образуют словарь V3. Решают задачи: классификации / кластеризации / регрессии /
ранжирования / парсинга / тэгирования / извлечения знаний и т.д. и т.п.Задачи обучения с учителем: для каждого документа D также имеется разметка Y
Разметка на уровне документа:Wow! What a great surprise! #Morning #Flowers ⇒ 1@Bob, Today is the worst day of my life ⇒ -1
Разметка на уровне слов:And now for something completely different ⇒ {CC, RB, IN, NN, RB, JJ}Michael Jordan is a professor at Berkeley ⇒ {1, 1, 0, 0, 0, 0, 1}
Задачи обучения без учителя: для документов из D отсутствует разметка Y
Классика: статистический NLP
6
4. По документам D / парам (D, Y) строятся модели, имеющие вероятностную природу.
5. Главная особенность: при таком моделировании каждое слово рассматривается как реализация дискретной случайной величины, (условная) вероятность выпадения которой оценивается по корпусу T.
Классика: статистический NLP
Словарь V:…хорошо ⇔ 113автомобиль ⇔ 114…прекрасно ⇔ 6327…
113 ≠ 6327
или
слова в словаре не связанны друг
с другом
7
Пусть:1. Из обучающего корпуса документов известно:
P(“собака”, “человек” => “друг”) = 0.997
2. Для слов “ребёнок”, “лабрадор”, “товарищ” подобных знаний в корпусе нет
В таком случае система не сможет оценить:
P(“собака”, “ребёнок” => “друг”) = ?P(“лабрадор”, “человек” => “друг”) = ?
P(“собака”, “человек” => “товарищ”) = ?
Пример: QA система
8
Идея:
Поставить словам в соответствие числовые вектора небольшой фиксированной размерности, для которых будет верно:
V(“человек”) ≈ V(“ребёнок”) V(“собака”) ≈ V(“лабрадор”)
V(“друг”) ≈ V(“товарищ”)
Тогда:
P(“собака”, “ребёнок” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
P(“лабрадор”, “человек” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
P(“собака”, “человек” => “товарищ”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
Пример: QA система
WordEmbedding!
9
“You shall know a word by the company it keeps”
John Rupert Firth, 1957
“Слова со схожими значениями разделяют
схожий контекст”
Неизвестный мудрец
Word Embedding
10
1. По корпусу документов строится матрица коллокаций X, размера |V| * |V|:
I enjoy flying.I like NLP.I like deep learning.
2. Используется SVD разложение для X:X = USVT
3. Из столбцов матрицы U выбираются первые K компонентW = U1:|V|,1:K
Word Embedding вчера
Richard Socher, 2015
11
1. В реальности для получения более или менее качественных векторов требуется ещё многое:
◦ игнорировать stop-слова (the, a, he, she и т.п.)◦ взвешивать слова, входящие в коллокации, согласно расстоянию
между ними в тексте◦ и т.п.
2. Матрица коллокаций очень разреженная и имеет очень большую размерность (порядка 106 * 106 элементов)
3. Добавление новых слов / новых документов приводит к необходимости пересчитывать всё заново
Word Embedding вчера
12
Word Embedding сегодня:Don’t count, predict!
The quick brown fox jumps over the lazy dog
предсказываютсяконтекстные слова
предсказываютсяконтекстные слова
The quick brown fox jumps over the lazy dog
предсказываетсяцентральное слово
13
14
Формализуем задачу: по корпусу документов T необходимо построить вектора для всех слов из словаря V таким образом, чтобы максимизировать вероятность “появления на свет” самого корпуса T.
Другими словами:
Построение модели
Параметры модели (координаты
векторов слов)
Вероятность появлениякорпуса T при векторах θ
15
1. Документы в корпусе Tнезависимы между собой
2. Каждое слово в документезависит только от своегоконтекста – небольшого
количества окружающих слов
3. Слова из контекстанезависимы между собой
4. Вероятность встретитьпару (w, c) моделируется
с помощью SoftMax функции
Здесь:1. Параметры модели2. W – матрица “входных” векторов3. W’ – матрица “выходных” векторов4. vw – “входной” вектор центрального слова w5. vc – “выходной” вектор контекстного слова c
Каждое словомоделируется 2-мя
векторами!
16
The quick brown fox jumps over the lazy dog
используютсявыходные вектора vc
используетсявходной вектор vw
The quick brown fox jumps over the lazy dog
Входные и выходные вектора:
…
используютсявыходные вектора vc
используетсявходной вектор vw
используютсявыходные вектора vc
используютсявыходные вектора vc
17
1. Cловарь V = {quick, brown, fox, jumps, over}2. vT
wvc - скалярное произведение векторов (вещественное число)
3. Пусть:vT
foxvbrown = 17.7
vTfoxvjumps = 15.2
vTfoxvquick = 11.3
vTfoxvover = 7.9
…
… quick brown fox jumps over …
= 1!
SoftMax моделирует распределение вероятности по словарю V:
18
1. Вход сети: вектор x в формате one-hot-encoding, соответствующий входному слову w
2. Умножение матрицы “входных” векторов W на one-hot вектор x выбирает из W соответствующий вектор h
3. Вектор h умножается на матрицу “выходных” векторов W’4. К получившемуся вектору скалярных произведений применяется
нелинейность SoftMax – вектор p5. Выход сети: распределение вероятностей по словам из словаря V6. Цель: минимизация Cross-entropy функции потерь между
выходным вектором предсказаний p и one-hot вектором y, соответствующим контекстному слову c
7. Метод обучения: SDG и его вариации
А где нейронная сеть?
19
1. Итерационный метод решения задач оптимизации2. Градиент – вектор, направленный в сторону
максимального возрастания функции в данной точке3. Начальная инициализация:
Матрицы векторов инициализируются малыми числами из окрестности нуля
4. На каждом шаге параметры изменяются в сторону антиградиента:
Градиентный спуск
Шаг градиентного спуска(должен уменьшаться с
ростом t)
20
Градиентный спуск
http://sebastianruder.com/optimizing-gradient-descent/
21
Задача найти вектора, при которых эта вероятность максимальна:
На каждом шаге градиентногоспуска необходимо вычислять
большую сумму ⇒ очень медленно
Что делать:1. Использовать hierarchical softmax.2. Использовать noise contrastive estimation / negative
sampling.
Вероятность возникновения корпуса T при матрицах входных и выходных векторов W и W’ соответственно:
22
1. Для каждой пары (слово, контекст) SoftMax выдаёт мультиномиальное распределение по всем словам из V.
2. Наша цель – построение векторов слов, а не вероятностной лингвистической модели.
Основная идея: заменить задачу на более простую так, чтобы избавиться от SoftMax на выходном слое.
Negative sampling
23
Документы:1. The quick brown fox jumps over the lazy dog2. The rain in Spain stays mainly in plain3. …Словарь:
brown, dog, fox, in, jumps, lazy, mainly, over, plain, quick, rain, … Пары слово – контекст (ширина окна = 2):4. (brown, [the, quick, fox, jumps]) ⇒ (brown, the), (brown, quick), (brown, fox),
(brown, jumps)5. (fox, [quick, brown, jumps, over]) ⇒ (fox, quick), (fox, brown), (fox, jumps), (fox,
over)6. (jumps, [brown, fox, over, the]) ⇒ (jumps, brown), (jumps, fox), (jumps, over),
(jumps, the)7. …Negative samples (k= 5):8. (brown, in), (brown, Spain), (brown, language), (brown, a), (brown, assign)9. (fox, apple), (fox, some), (fox, making), (fox, associations), (fox, easily)10. …
Negative sampling: пример
24
Рассмотрим:
Более формально
Задача подобрать вектора так, чтобы отличать истинные (полученные из документов) пары (w,c) от ложных (сгенерированных из словаря V):
В конечном виде:
Исчезла линейная зависимостьот размера словаря
25
Модель CBOW
Xin Rong, 2014
1. По окружающим словам предсказывает центральное слово
2. Хорошие результаты на небольших и средних датасетах
26
Модель Skip-gram1. По центральному слову
предсказывает окружающие слова
2. Чаще всего используется в паре с негативным сэмплированием
3. Требует больший (по сравнению с CBOW) объём данных
4. Считается, что лучше оценивает редкие слова
Xin Rong, 2014
27
1. https://radimrehurek.com/gensim/2. https://github.com/piskvorky/gensim/3. https://dumps.wikimedia.org/ruwiki/latest/
Готовые реализации LDA, Word2Vec, Doc2Vec, TF-IDF, …
28
Примеры1. Сходство между словами – косинус угла между их векторами
2. “Cумма” и “разность”: v(“king”)- v(“man”) + v(“woman”) ≈ v(“queen”)
29
Примеры3. Для устойчивых фраз (коллокаций) можно строить отдельные вектора
30
Примеры
31
Примеры
32
Примеры4. Ассоциативные связи
33
Примеры5. Грамматические связи
34
Оценка качества векторов: Extrinsic Evaluation
Непосредственная проверка векторов при решении конкретной задачи
Требует построения алгоритма машинного обучения (чаще всего - другой нейронной сети) с векторами слов в качестве признаков
Требует настройки гиперпараметров модели: тип и структура решающей сети, метод её начальной инициализации, тип регуляризации, подбор параметров SGD и т.д.
Требует значительных вычислительных ресурсов и времени
35
Оценка качества векторов: Intrinsic Evaluation
Для оценивания векторов с точки зрения семантики, морфологии, грамматики были придуманы так называемые “тесты аналогий”
Дают быстро вычислимую эвристическую оценку качества Дают понять насколько вектора хороши “в целом” Тесты для английского языка доступны в официальном
репозитории word2vec: http://word2vec.googlecode.com/svn/trunk/
Состоят из множества аналогий вида:Athens Greece -> Havana CubaCanada dollar -> Mexico pesouncle aunt -> father mother
amazing amazingly -> apparent apparentlybad worst -> bright brightest
United_Kingdom British_Airways -> Russia AeroflotBill_Gates Microsoft -> Sergey_Brin Google
и т.д.
36
Оценка качества векторов: Intrinsic Evaluation
Категории тестовДля векторов-слов Для векторов-фраз
• capital-common-countries• capital-world• currency• city-in-state• family• gram1-adjective-to-adverb• gram2-opposite• gram3-comparative• gram4-superlative• gram5-present-participle• gram6-nationality-adjective• gram7-past-tense• gram8-plural• gram9-plural-verbs
• newspapers• ice_hockey• basketball• airlines• people-companies
37
Оценка качества векторов: Intrinsic Evaluation
Tomas Mikolov, 2013
38
Оценка качества векторов: Intrinsic Evaluation
1. Модель построения векторов имеет огромное значение
2. Skip-gram сочетает простоту и качество
3. Кроме модели на качество влияют:• Объём обучающего корпуса• Размер векторов• Другие гиперпараметры
Richard Socher, 2015
39
1. Обучающий корпус2. Размер векторов3. Ширина контекстного окна4. Распределение негативного сэмплирования5. Количество негативных сэмплов на каждую пару
слово+контекст
А также:6. Начальная инициализация векторов7. Конкретный метод градиентного спуска8. Шаг градиентного спуска
Гиперпараметры и их влияние
40
Идеально: большой размер + разнообразие документов Как правило, больше – лучше:
Но не всегда (Андрей Кутузов, Mail.ru Group ):https://www.youtube.com/watch?v=9JJsMWKcU7s
Обучающий корпус
Richard Socher, 2015
41
Размер векторов и ширина контекстного окна
Кутузов А., Андреев. И., 2015
1. Размер вектора ≈ 100-500• Малый размер – быстрое
обучение, риск недообучиться
• Большой размер – медленное обучение, риск переобучиться
• Хороший выбор: 300
2. Размер окна ≈ 2–10• Узкое окно – больше
прямых взаимосвязей между словами
• Широкое окно – больше косвенных взаимосвязей между словами
• Разумный компромисс: ширина окна – случайная величина в некоторых пределах (Например U[1, C])
42
1. Распределение сэмплирования:◦ P(w) ~ U[0, |V|] – равномерное по словарю◦ P(w) ~ freq(w) / Z – согласно частотам встречаемости слов в корпусе◦ P(w) ~ freq(w)^0.75 / Z
Из сэмплирования исключаются редкие слова + даунсэмплинг частых слов
Z – константа нормировки
2. Количество негативных сэмплов ≈ 5–25
Параметры сэмплирования
Индекс слова в словаре Вероятность сэмплирования
0 0.9 ^ 0.75 = 0.921 0.09 ^ 0.75 = 0.162 0.01 ^ 0.75 = 0.032
43
Свойства векторов1. Какова общая структура пространства?2. Как распределена “схожесть” в
пространстве?3. Схожи ли “входные” и “выходные”
вектора для одних и тех же слов?4. Можно ли избавиться от одних из них?5. Если нет, то какие из векторов лучше?
44
Наземный
Родственники
Дни недели
Страны мира
Животные
Месяцы года
Глаголы
Воздушный
Транспорт
45
Распределение схожести“the good” ≉ (-1) * “the bad”
Beta-распределение(форма может варьироваться)
Общая закономерность
The Good
The Bad
46
Распределение схожести“the good” ≉ “the good”
Может сильно варьироватьсяПараметрическое семейство - ?
The Good
The Good in
out
in out
47
1. Нельзя “расшарить” матрицу между слоями2. Оригинальный Word2Vec, Gensim – оставить только
входные вектора3. Выбрать какие-то одни по Intrinsic Evaluation / Extrinsic
Evaluation 4. Агрегировать:
“the good” = “the good”in + “the good”out
“the good” = (“the good”in, “the good”out)“the good” = F(“the good”in, “the good”out)
Входные vs выходные
48
Функциональные слова,слова с единственым
значением
Встречающиеся часто иимеющие одно-два
значения
Остальные слова(в том числе многозначные)
Редкие слова
На, по, не, для,ссср, сша, май,
сентябрь, …
Генерал, профессор,игра, строительство,
изображение,…
Нетипичная, продуманных,однокамерные, поднявших,словоформа, диэлектрике,…
Самодержице,спиннинговое,длинноиглый,
крижевицкой,…
Длина векторов
49
Проблема редких слов: Zipf’s law
1. Частота слова в языке пропорциональна его рангу:
2. Обновление параметров стохастическим градиентным спуском:
Шаг градиентного спуска(должен уменьшаться с
ростом t)
50
1. Датасет: побольше и поразнообразнее2. Ширина окна: случайная величина из U[1, 5/8/10]3. Размерность вектора: 3004. Негативное сэмплирование: не равномерное, хорошо работает
p(w) ~ freq(w) ^ 0.75 / Z5. Количество негативных сэмплов: 5/10/206. Редкие слова заменить на специальное слово (“<RARE>” /
“<UNK>”)7. Может помочь удаление stop-слов (если вектора не обучаются для
POS-тэггинга и схожих задач)8. Использовать вариации SGD с адаптивным изменением learning rate
(AdaGrad)9. Начальный шаг можно выбрать достаточно большим: 0.025 / 0.0510. Делать несколько (2-3) проходов (эпох) по корпусу документов11. Тестировать как входные, так и выходные вектора12. Нормировать вектора
Резюме: на практике
51
https://github.com/denmoroz/tensorflow-word2vec
Особенности:1. Реализация на Python + Tensor Flow2. Ряд хаков для ускорения работы (скорость сравнима с Gensim)3. Замена редких слов словаря на “<RARE>”4. Адаптивный SGD: AdaGradOptimizer5. Сбор и визуализация статистик о ходе обучения модели в Tensor
Board6. Иная модель сэмплирования: иерархическая, сочетающая
сэмплер по Mikolov’у и равномерный сэмплер7. Сохранение как входных, так и выходных векторов в текстовом
формате, совместимом с Gensim8. Несовершенная, как и все творения человека (код нуждается в
рефакторинге )
Хочу разобраться подробнее!
52
1. Понятие об обработке естественных языков2. Вероятностные основы Word2Vec3. Свойства пространства векторов4. …5. Проблема многозначных слов6. Моделирование векторов фраз / предложений /
документов7. Краткое введение в рекуррентные нейронные сети
(RNN)8. Обзор абстрактного deep learning фрэймворка Keras9. Применение связки RNN + Word2Vec для решения
задачи сентиментального анализа сообщений из Twitter10. Возможно, что-нибудь ещё
В следующем выпуске
53
1. Gensim: Topic Modelling For Humanshttp://radimrehurek.com/gensim/
2. TensorFlow: Deep learning libraryhttp://tensorflow.org/
3. Keras: Deep learning libraryhttp://keras.io/
4. Coursera: Natural language processinghttp://www.coursera.org/course/nlangp
5. Stanford CS224d: Deep learning for NLPhttp://cs224d.stanford.edu/
6. Awesome NLPhttps://github.com/keonkim/awesome-nlp/
Полезные ресурсы и инструменты