word2vec (part 1)

54
Word2Vec и все, все, все Денис Дусь [email protected] Data Scientist at InData Labs 1

Upload: denis-dus

Post on 16-Jan-2017

311 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: word2vec (part 1)

1

Word2Vec и все, все, все

Денис Дусь[email protected]

Data Scientist at InData Labs

Page 2: word2vec (part 1)

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?

Page 3: word2vec (part 1)

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?

Page 4: word2vec (part 1)

4

1. Самостоятельная техника сама по себе

2. Вектора используются как фичи в задачах:◦ Sentiment Analysis◦ Named Entities Recognition◦ Part-Of-Speech Tagging◦ Machine Translation◦ Paraphrase Detection◦ Documents Clustering◦ Documents Ranking◦ и т.д. и т.п.

Зачем это надо?Уже поздно, я хочу домой…

Page 5: word2vec (part 1)

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

Page 6: word2vec (part 1)

6

4. По документам D / парам (D, Y) строятся модели, имеющие вероятностную природу.

5. Главная особенность: при таком моделировании каждое слово рассматривается как реализация дискретной случайной величины, (условная) вероятность выпадения которой оценивается по корпусу T.

Классика: статистический NLP

Словарь V:…хорошо ⇔ 113автомобиль ⇔ 114…прекрасно ⇔ 6327…

113 ≠ 6327

или

слова в словаре не связанны друг

с другом

Page 7: word2vec (part 1)

7

Пусть:1. Из обучающего корпуса документов известно:

P(“собака”, “человек” => “друг”) = 0.997

2. Для слов “ребёнок”, “лабрадор”, “товарищ” подобных знаний в корпусе нет

В таком случае система не сможет оценить:

P(“собака”, “ребёнок” => “друг”) = ?P(“лабрадор”, “человек” => “друг”) = ?

P(“собака”, “человек” => “товарищ”) = ?

Пример: QA система

Page 8: word2vec (part 1)

8

Идея:

Поставить словам в соответствие числовые вектора небольшой фиксированной размерности, для которых будет верно:

V(“человек”) ≈ V(“ребёнок”) V(“собака”) ≈ V(“лабрадор”)

V(“друг”) ≈ V(“товарищ”)

Тогда:

P(“собака”, “ребёнок” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997

P(“лабрадор”, “человек” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997

P(“собака”, “человек” => “товарищ”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997

Пример: QA система

WordEmbedding!

Page 9: word2vec (part 1)

9

“You shall know a word by the company it keeps”

John Rupert Firth, 1957

“Слова со схожими значениями разделяют

схожий контекст”

Неизвестный мудрец

Word Embedding

Page 10: word2vec (part 1)

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

Page 11: word2vec (part 1)

11

1. В реальности для получения более или менее качественных векторов требуется ещё многое:

◦ игнорировать stop-слова (the, a, he, she и т.п.)◦ взвешивать слова, входящие в коллокации, согласно расстоянию

между ними в тексте◦ и т.п.

2. Матрица коллокаций очень разреженная и имеет очень большую размерность (порядка 106 * 106 элементов)

3. Добавление новых слов / новых документов приводит к необходимости пересчитывать всё заново

Word Embedding вчера

Page 12: word2vec (part 1)

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

предсказываетсяцентральное слово

Page 13: word2vec (part 1)

13

Page 14: word2vec (part 1)

14

Формализуем задачу: по корпусу документов T необходимо построить вектора для всех слов из словаря V таким образом, чтобы максимизировать вероятность “появления на свет” самого корпуса T.

Другими словами:

Построение модели

Параметры модели (координаты

векторов слов)

Вероятность появлениякорпуса T при векторах θ

Page 15: word2vec (part 1)

15

1. Документы в корпусе Tнезависимы между собой

2. Каждое слово в документезависит только от своегоконтекста – небольшого

количества окружающих слов

3. Слова из контекстанезависимы между собой

4. Вероятность встретитьпару (w, c) моделируется

с помощью SoftMax функции

Здесь:1. Параметры модели2. W – матрица “входных” векторов3. W’ – матрица “выходных” векторов4. vw – “входной” вектор центрального слова w5. vc – “выходной” вектор контекстного слова c

Каждое словомоделируется 2-мя

векторами!

Page 16: word2vec (part 1)

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

Page 17: word2vec (part 1)

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:

Page 18: word2vec (part 1)

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 и его вариации

А где нейронная сеть?

Page 19: word2vec (part 1)

19

1. Итерационный метод решения задач оптимизации2. Градиент – вектор, направленный в сторону

максимального возрастания функции в данной точке3. Начальная инициализация:

Матрицы векторов инициализируются малыми числами из окрестности нуля

4. На каждом шаге параметры изменяются в сторону антиградиента:

Градиентный спуск

Шаг градиентного спуска(должен уменьшаться с

ростом t)

Page 20: word2vec (part 1)

20

Градиентный спуск

http://sebastianruder.com/optimizing-gradient-descent/

Page 21: word2vec (part 1)

21

Задача найти вектора, при которых эта вероятность максимальна:

На каждом шаге градиентногоспуска необходимо вычислять

большую сумму ⇒ очень медленно

Что делать:1. Использовать hierarchical softmax.2. Использовать noise contrastive estimation / negative

sampling.

Вероятность возникновения корпуса T при матрицах входных и выходных векторов W и W’ соответственно:

Page 22: word2vec (part 1)

22

1. Для каждой пары (слово, контекст) SoftMax выдаёт мультиномиальное распределение по всем словам из V.

2. Наша цель – построение векторов слов, а не вероятностной лингвистической модели.

Основная идея: заменить задачу на более простую так, чтобы избавиться от SoftMax на выходном слое.

Negative sampling

Page 23: word2vec (part 1)

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: пример

Page 24: word2vec (part 1)

24

Рассмотрим:

Более формально

Задача подобрать вектора так, чтобы отличать истинные (полученные из документов) пары (w,c) от ложных (сгенерированных из словаря V):

В конечном виде:

Исчезла линейная зависимостьот размера словаря

Page 25: word2vec (part 1)

25

Модель CBOW

Xin Rong, 2014

1. По окружающим словам предсказывает центральное слово

2. Хорошие результаты на небольших и средних датасетах

Page 26: word2vec (part 1)

26

Модель Skip-gram1. По центральному слову

предсказывает окружающие слова

2. Чаще всего используется в паре с негативным сэмплированием

3. Требует больший (по сравнению с CBOW) объём данных

4. Считается, что лучше оценивает редкие слова

Xin Rong, 2014

Page 27: word2vec (part 1)

27

1. https://radimrehurek.com/gensim/2. https://github.com/piskvorky/gensim/3. https://dumps.wikimedia.org/ruwiki/latest/

Готовые реализации LDA, Word2Vec, Doc2Vec, TF-IDF, …

Page 28: word2vec (part 1)

28

Примеры1. Сходство между словами – косинус угла между их векторами

2. “Cумма” и “разность”: v(“king”)- v(“man”) + v(“woman”) ≈ v(“queen”)

Page 29: word2vec (part 1)

29

Примеры3. Для устойчивых фраз (коллокаций) можно строить отдельные вектора

Page 30: word2vec (part 1)

30

Примеры

Page 31: word2vec (part 1)

31

Примеры

Page 32: word2vec (part 1)

32

Примеры4. Ассоциативные связи

Page 33: word2vec (part 1)

33

Примеры5. Грамматические связи

Page 34: word2vec (part 1)

34

Оценка качества векторов: Extrinsic Evaluation

Непосредственная проверка векторов при решении конкретной задачи

Требует построения алгоритма машинного обучения (чаще всего - другой нейронной сети) с векторами слов в качестве признаков

Требует настройки гиперпараметров модели: тип и структура решающей сети, метод её начальной инициализации, тип регуляризации, подбор параметров SGD и т.д.

Требует значительных вычислительных ресурсов и времени

Page 35: word2vec (part 1)

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

и т.д.

Page 36: word2vec (part 1)

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

Page 37: word2vec (part 1)

37

Оценка качества векторов: Intrinsic Evaluation

Tomas Mikolov, 2013

Page 38: word2vec (part 1)

38

Оценка качества векторов: Intrinsic Evaluation

1. Модель построения векторов имеет огромное значение

2. Skip-gram сочетает простоту и качество

3. Кроме модели на качество влияют:• Объём обучающего корпуса• Размер векторов• Другие гиперпараметры

Richard Socher, 2015

Page 39: word2vec (part 1)

39

1. Обучающий корпус2. Размер векторов3. Ширина контекстного окна4. Распределение негативного сэмплирования5. Количество негативных сэмплов на каждую пару

слово+контекст

А также:6. Начальная инициализация векторов7. Конкретный метод градиентного спуска8. Шаг градиентного спуска

Гиперпараметры и их влияние

Page 40: word2vec (part 1)

40

Идеально: большой размер + разнообразие документов Как правило, больше – лучше:

Но не всегда (Андрей Кутузов, Mail.ru Group ):https://www.youtube.com/watch?v=9JJsMWKcU7s

Обучающий корпус

Richard Socher, 2015

Page 41: word2vec (part 1)

41

Размер векторов и ширина контекстного окна

Кутузов А., Андреев. И., 2015

1. Размер вектора ≈ 100-500• Малый размер – быстрое

обучение, риск недообучиться

• Большой размер – медленное обучение, риск переобучиться

• Хороший выбор: 300

2. Размер окна ≈ 2–10• Узкое окно – больше

прямых взаимосвязей между словами

• Широкое окно – больше косвенных взаимосвязей между словами

• Разумный компромисс: ширина окна – случайная величина в некоторых пределах (Например U[1, C])

Page 42: word2vec (part 1)

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

Page 43: word2vec (part 1)

43

Свойства векторов1. Какова общая структура пространства?2. Как распределена “схожесть” в

пространстве?3. Схожи ли “входные” и “выходные”

вектора для одних и тех же слов?4. Можно ли избавиться от одних из них?5. Если нет, то какие из векторов лучше?

Page 44: word2vec (part 1)

44

Наземный

Родственники

Дни недели

Страны мира

Животные

Месяцы года

Глаголы

Воздушный

Транспорт

Page 45: word2vec (part 1)

45

Распределение схожести“the good” ≉ (-1) * “the bad”

Beta-распределение(форма может варьироваться)

Общая закономерность

The Good

The Bad

Page 46: word2vec (part 1)

46

Распределение схожести“the good” ≉ “the good”

Может сильно варьироватьсяПараметрическое семейство - ?

The Good

The Good in

out

in out

Page 47: word2vec (part 1)

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 выходные

Page 48: word2vec (part 1)

48

Функциональные слова,слова с единственым

значением

Встречающиеся часто иимеющие одно-два

значения

Остальные слова(в том числе многозначные)

Редкие слова

На, по, не, для,ссср, сша, май,

сентябрь, …

Генерал, профессор,игра, строительство,

изображение,…

Нетипичная, продуманных,однокамерные, поднявших,словоформа, диэлектрике,…

Самодержице,спиннинговое,длинноиглый,

крижевицкой,…

Длина векторов

Page 49: word2vec (part 1)

49

Проблема редких слов: Zipf’s law

1. Частота слова в языке пропорциональна его рангу:

2. Обновление параметров стохастическим градиентным спуском:

Шаг градиентного спуска(должен уменьшаться с

ростом t)

Page 50: word2vec (part 1)

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. Нормировать вектора

Резюме: на практике

Page 51: word2vec (part 1)

51

https://github.com/denmoroz/tensorflow-word2vec

Особенности:1. Реализация на Python + Tensor Flow2. Ряд хаков для ускорения работы (скорость сравнима с Gensim)3. Замена редких слов словаря на “<RARE>”4. Адаптивный SGD: AdaGradOptimizer5. Сбор и визуализация статистик о ходе обучения модели в Tensor

Board6. Иная модель сэмплирования: иерархическая, сочетающая

сэмплер по Mikolov’у и равномерный сэмплер7. Сохранение как входных, так и выходных векторов в текстовом

формате, совместимом с Gensim8. Несовершенная, как и все творения человека (код нуждается в

рефакторинге )

Хочу разобраться подробнее!

Page 52: word2vec (part 1)

52

1. Понятие об обработке естественных языков2. Вероятностные основы Word2Vec3. Свойства пространства векторов4. …5. Проблема многозначных слов6. Моделирование векторов фраз / предложений /

документов7. Краткое введение в рекуррентные нейронные сети

(RNN)8. Обзор абстрактного deep learning фрэймворка Keras9. Применение связки RNN + Word2Vec для решения

задачи сентиментального анализа сообщений из Twitter10. Возможно, что-нибудь ещё

В следующем выпуске

Page 53: word2vec (part 1)

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/

Полезные ресурсы и инструменты

Page 54: word2vec (part 1)

54

Денис Дусь[email protected]

Data Scientist at InData Labs