SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Денис Дусь
dzianisdus@gmail.com
Data Scientist at InData Labs
1
“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
2
“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
3
1. Самостоятельная техника сама по себе
2. Вектора используются как фичи в задачах:
◦ Sentiment Analysis
◦ Named Entities Recognition
◦ Part-Of-Speech Tagging
◦ Machine Translation
◦ Paraphrase Detection
◦ Documents Clustering
◦ Documents Ranking
◦ и т.д. и т.п.
4
1. Каждый документ D из корпуса документов Т представляется как
последовательность слов:
D = {x1, … , xn}
2. Все уникальные слова из документов корпуса T образуют словарь V
3. Решают задачи: классификации / кластеризации / регрессии / ранжирования /
парсинга / тэгирования / извлечения знаний и т.д. и т.п.
Задачи обучения с учителем: для каждого документа 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
5
4. По документам D / парам (D, Y) строятся модели, имеющие
вероятностную природу.
5. Главная особенность: при таком моделировании каждое слово
рассматривается как реализация дискретной случайной величины,
(условная) вероятность выпадения которой оценивается по корпусу T.
6
Словарь V:
…
хорошо ⇔ 113
автомобиль ⇔ 114
…
прекрасно ⇔ 6327
…
113 ≠ 6327
или
слова в словаре не
связанны друг с
другом
Пусть:
1. Из обучающего корпуса документов известно:
P(“собака”, “человек” => “друг”) = 0.997
2. Для слов “ребёнок”, “лабрадор”, “товарищ” подобных знаний в корпусе
нет
В таком случае система не сможет оценить:
P(“собака”, “ребёнок” => “друг”) = ?
P(“лабрадор”, “человек” => “друг”) = ?
P(“собака”, “человек” => “товарищ”) = ?
7
Идея:
Поставить словам в соответствие числовые вектора небольшой
фиксированной размерности, для которых будет верно:
V(“человек”) ≈ V(“ребёнок”)
V(“собака”) ≈ V(“лабрадор”)
V(“друг”) ≈ V(“товарищ”)
Тогда:
P(“собака”, “ребёнок” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
P(“лабрадор”, “человек” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
P(“собака”, “человек” => “товарищ”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997
8
Word
Embedding!
“You shall know a word by the
company it keeps”
John Rupert Firth, 1957
“Слова со схожими значениями
разделяют схожий контекст”
Неизвестный мудрец
9
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
10
Richard Socher, 2015
1. В реальности для получения более или менее
качественных векторов требуется ещё многое:
◦ игнорировать stop-слова (the, a, he, she и т.п.)
◦ взвешивать слова, входящие в коллокации, согласно расстоянию
между ними в тексте
◦ и т.п.
2. Матрица коллокаций очень разреженная и имеет очень
большую размерность (порядка 106 * 106 элементов)
3. Добавление новых слов / новых документов приводит к
необходимости пересчитывать всё заново
11
12
The quick brown fox jumps over the lazy dog
предсказываются
контекстные слова
предсказываются
контекстные слова
The quick brown fox jumps over the lazy dog
предсказывается
центральное слово
13
Формализуем задачу: по корпусу
документов T необходимо построить
вектора для всех слов из словаря V таким
образом, чтобы максимизировать
вероятность “появления на свет” самого
корпуса T.
Другими словами:
14
Параметры модели
(координаты
векторов слов)
Вероятность появления
корпуса T при векторах θ
1. Документы в корпусе T
независимы между собой
2. Каждое слово в документе
зависит только от своего
контекста – небольшого
количества окружающих слов
3. Слова из контекста
независимы между собой
4. Вероятность встретить
пару (w, c) моделируется
с помощью SoftMax функции
15
Здесь:
1. Параметры модели
2. W – матрица “входных” векторов
3. W’ – матрица “выходных” векторов
4. vw – “входной” вектор центрального слова w
5. 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
vT
foxvjumps = 15.2
vT
foxvquick = 11.3
vT
foxvover = 7.9
…
… quick brown fox jumps over …
= 1!
SoftMax моделирует распределение вероятности по словарю V:
1. Вход сети: вектор x в формате one-hot-encoding, соответствующий
входному слову w
2. Умножение матрицы “входных” векторов W на one-hot вектор x
выбирает из W соответствующий вектор h
3. Вектор h умножается на матрицу “выходных” векторов W’
4. К получившемуся вектору скалярных произведений применяется
нелинейность SoftMax – вектор p
5. Выход сети: распределение вероятностей по словам из словаря V
6. Цель: минимизация Cross-entropy функции потерь между выходным
вектором предсказаний p и one-hot вектором y, соответствующим
контекстному слову c
7. Метод обучения: SDG и его вариации
А где нейронная сеть?
18
1. Итерационный метод решения задач оптимизации
2. Градиент – вектор, направленный в сторону
максимального возрастания функции в данной точке
3. Начальная инициализация:
Матрицы векторов инициализируются малыми числами
из окрестности нуля
4. На каждом шаге параметры изменяются в сторону
антиградиента:
19
Шаг градиентного спуска
(должен уменьшаться с
ростом t)
20
http://sebastianruder.com/optimizing-gradient-descent/
Задача найти вектора, при которых эта вероятность максимальна:
На каждом шаге градиентного
спуска необходимо вычислять
большую сумму ⇒ очень медленно
Что делать:
1. Использовать hierarchical softmax.
2. Использовать noise contrastive estimation / negative sampling.
21
Вероятность возникновения корпуса T при матрицах входных и
выходных векторов W и W’ соответственно:
1. Для каждой пары (слово, контекст) SoftMax выдаёт
мультиномиальное распределение по всем словам из V.
2. Наша цель – построение векторов слов, а не
вероятностной лингвистической модели.
Основная идея: заменить задачу на более простую так,
чтобы избавиться от SoftMax на выходном слое.
22
Документы:
1. The quick brown fox jumps over the lazy dog
2. The rain in Spain stays mainly in plain
3. …
Словарь:
brown, dog, fox, in, jumps, lazy, mainly, over, plain, quick, rain, …
Пары слово – контекст (ширина окна = 2):
1. (brown, [the, quick, fox, jumps]) ⇒ (brown, the), (brown, quick), (brown, fox), (brown,
jumps)
2. (fox, [quick, brown, jumps, over]) ⇒ (fox, quick), (fox, brown), (fox, jumps), (fox, over)
3. (jumps, [brown, fox, over, the]) ⇒ (jumps, brown), (jumps, fox), (jumps, over), (jumps,
the)
4. …
Negative samples (k= 5):
1. (brown, in), (brown, Spain), (brown, language), (brown, a), (brown, assign)
2. (fox, apple), (fox, some), (fox, making), (fox, associations), (fox, easily)
3. …
23
Рассмотрим:
Задача подобрать вектора так, чтобы отличать истинные (полученные из
документов) пары (w,c) от ложных (сгенерированных из словаря V):
В конечном виде:
24
Исчезла линейная зависимость
от размера словаря
Xin Rong, 2014
1. По окружающим словам
предсказывает центральное
слово
2. Хорошие результаты на
небольших и средних датасетах
25
1. По центральному слову
предсказывает окружающие
слова
2. Чаще всего используется в паре с
негативным сэмплированием
3. Требует больший (по сравнению
с CBOW) объём данных
4. Считается, что лучше оценивает
редкие слова
Xin Rong, 2014
26
1. https://radimrehurek.com/gensim/
2. https://github.com/piskvorky/gensim/
3. https://dumps.wikimedia.org/ruwiki/latest/
Готовые реализации LDA, Word2Vec, Doc2Vec, TF-IDF, …
27
1. Сходство между словами – косинус угла между их векторами
2. “Cумма” и “разность”: v(“king”)- v(“man”) + v(“woman”) ≈ v(“queen”)
28
3. Для устойчивых фраз (коллокаций) можно строить отдельные вектора
29
30
31
4. Ассоциативные связи
32
5. Грамматические связи
33
 Непосредственная проверка векторов при решении
конкретной задачи
 Требует построения алгоритма машинного обучения (чаще
всего - другой нейронной сети) с векторами слов в
качестве признаков
 Требует настройки гиперпараметров модели: тип и
структура решающей сети, метод её начальной
инициализации, тип регуляризации, подбор параметров
SGD и т.д.
 Требует значительных вычислительных ресурсов и времени
34
 Для оценивания векторов с точки зрения семантики,
морфологии, грамматики были придуманы так называемые
“тесты аналогий”
 Дают быстро вычислимую эвристическую оценку качества
 Дают понять насколько вектора хороши “в целом”
 Тесты для английского языка доступны в официальном
репозитории word2vec:
http://word2vec.googlecode.com/svn/trunk/
 Состоят из множества аналогий вида:
Athens Greece -> Havana Cuba
Canada dollar -> Mexico peso
uncle aunt -> father mother
amazing amazingly -> apparent apparently
bad worst -> bright brightest
United_Kingdom British_Airways -> Russia Aeroflot
Bill_Gates Microsoft -> Sergey_Brin Google
и т.д.
35
Категории тестов
Для векторов-слов Для векторов-фраз
• 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
36
Tomas Mikolov, 2013
37
1. Модель построения векторов имеет
огромное значение
2. Skip-gram сочетает простоту и
качество
3. Кроме модели на качество влияют:
• Объём обучающего корпуса
• Размер векторов
• Другие гиперпараметры
Richard Socher, 2015
38
1. Обучающий корпус
2. Размер векторов
3. Ширина контекстного окна
4. Распределение негативного сэмплирования
5. Количество негативных сэмплов на каждую пару
слово+контекст
А также:
1. Начальная инициализация векторов
2. Конкретный метод градиентного спуска
3. Шаг градиентного спуска
39
 Идеально: большой размер + разнообразие документов
 Как правило, больше – лучше:
 Но не всегда (Андрей Кутузов, Mail.ru Group ):
https://www.youtube.com/watch?v=9JJsMWKcU7s
Richard Socher, 2015
40
Кутузов А., Андреев. И., 2015
1. Размер вектора ≈ 100-500
• Малый размер – быстрое
обучение, риск
недообучиться
• Большой размер – медленное
обучение, риск
переобучиться
• Хороший выбор: 300
2. Размер окна ≈ 2–10
• Узкое окно – больше прямых
взаимосвязей между словами
• Широкое окно – больше
косвенных взаимосвязей
между словами
• Разумный компромисс:
ширина окна – случайная
величина в некоторых
пределах (Например U[1, C])
41
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.92
1 0.09 ^ 0.75 = 0.16
2 0.01 ^ 0.75 = 0.032
42
1. Какова общая структура пространства?
2. Как распределена “схожесть” в
пространстве?
3. Схожи ли “входные” и “выходные” вектора
для одних и тех же слов?
4. Можно ли избавиться от одних из них?
5. Если нет, то какие из векторов лучше?
43
Наземный
Родственники
Дни недели
Страны мира
Животные
Месяцы года
Глаголы
Воздушный
Транспорт
44
“the good” ≉ (-1) * “the bad”
Beta-распределение
(форма может варьироваться)
Общая закономерность
The Good
The Bad
45
“the good” ≉ “the good”
Может сильно варьироваться
Параметрическое семейство - ?
The Good
The Good in
out
in out
46
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)
47
Функциональные слова,
слова с единственым
значением
Встречающиеся часто и
имеющие одно-два
значения
Остальные слова
(в том числе многозначные)
Редкие слова
На, по, не, для,
ссср, сша, май,
сентябрь, …
Генерал, профессор,
игра, строительство,
изображение,…
Нетипичная, продуманных,
однокамерные, поднявших,
словоформа, диэлектрике,…
Самодержице,
спиннинговое,
длинноиглый,
крижевицкой,…48
Длина векторов
1. Частота слова в языке
пропорциональна его
рангу:
2. Обновление параметров
стохастическим
градиентным спуском:
Шаг градиентного спуска
(должен уменьшаться с
ростом t)
49
1. Датасет: побольше и поразнообразнее
2. Ширина окна: случайная величина из U[1, 5/8/10]
3. Размерность вектора: 300
4. Негативное сэмплирование: не равномерное, хорошо работает
p(w) ~ freq(w) ^ 0.75 / Z
5. Количество негативных сэмплов: 5/10/20
6. Редкие слова заменить на специальное слово (“<RARE>” / “<UNK>”)
7. Может помочь удаление stop-слов (если вектора не обучаются для
POS-тэггинга и схожих задач)
8. Использовать вариации SGD с адаптивным изменением learning
rate (AdaGrad)
9. Начальный шаг можно выбрать достаточно большим: 0.025 / 0.05
10. Делать несколько (2-3) проходов (эпох) по корпусу документов
11. Тестировать как входные, так и выходные вектора
12. Нормировать вектора
50
https://github.com/denmoroz/tensorflow-word2vec
Особенности:
1. Реализация на Python + Tensor Flow
2. Ряд хаков для ускорения работы (скорость сравнима с
Gensim)
3. Замена редких слов словаря на “<RARE>”
4. Адаптивный SGD: AdaGradOptimizer
5. Сбор и визуализация статистик о ходе обучения модели в
Tensor Board
6. Иная модель сэмплирования: иерархическая, сочетающая
сэмплер по Mikolov’у и равномерный сэмплер
7. Сохранение как входных, так и выходных векторов в
текстовом формате, совместимом с Gensim
8. Несовершенная, как и все творения человека (код нуждается
в рефакторинге )
51
1. Понятие об обработке естественных языков
2. Вероятностные основы Word2Vec
3. Свойства пространства векторов
4. …
5. Проблема многозначных слов
6. Моделирование векторов фраз / предложений /
документов
7. Краткое введение в рекуррентные нейронные сети (RNN)
8. Обзор абстрактного deep learning фрэймворка Keras
9. Применение связки RNN + Word2Vec для решения задачи
сентиментального анализа сообщений из Twitter
10. Возможно, что-нибудь ещё 
52
1. Gensim: Topic Modelling For Humans
http://radimrehurek.com/gensim/
2. TensorFlow: Deep learning library
http://tensorflow.org/
3. Keras: Deep learning library
http://keras.io/
4. Coursera: Natural language processing
http://www.coursera.org/course/nlangp
5. Stanford CS224d: Deep learning for NLP
http://cs224d.stanford.edu/
6. Awesome NLP
https://github.com/keonkim/awesome-nlp/
53
54
Денис Дусь
dzianisdus@gmail.com
Data Scientist at InData Labs

Mais conteúdo relacionado

Destaque

Вычислительная лексическая семантика: метрики семантической близости и их при...
Вычислительная лексическая семантика: метрики семантической близости и их при...Вычислительная лексическая семантика: метрики семантической близости и их при...
Вычислительная лексическая семантика: метрики семантической близости и их при...Alexander Panchenko
 
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)bddmoscow
 
Классификация текстовых документов на естественных языках
Классификация текстовых документов на естественных языкахКлассификация текстовых документов на естественных языках
Классификация текстовых документов на естественных языкахСергей Пономарев
 
Word2vec slide(lab seminar)
Word2vec slide(lab seminar)Word2vec slide(lab seminar)
Word2vec slide(lab seminar)Jinpyo Lee
 
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...Сергей Пономарев
 
Технологический стек классификации текстов на естественных языках
Технологический стек классификации текстов на естественных языкахТехнологический стек классификации текстов на естественных языках
Технологический стек классификации текстов на естественных языкахСергей Пономарев
 
Reproducibility and automation of machine learning process
Reproducibility and automation of machine learning processReproducibility and automation of machine learning process
Reproducibility and automation of machine learning processDenis Dus
 
Классификация поисковых запросов
Классификация поисковых запросовКлассификация поисковых запросов
Классификация поисковых запросовСергей Пономарев
 
Концепция поисковых расширений
Концепция поисковых расширенийКонцепция поисковых расширений
Концепция поисковых расширенийСергей Пономарев
 
Drawing word2vec
Drawing word2vecDrawing word2vec
Drawing word2vecKai Sasaki
 
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...Daniele Di Mitri
 
word2vec - From theory to practice
word2vec - From theory to practiceword2vec - From theory to practice
word2vec - From theory to practicehen_drik
 
Representation Learning of Vectors of Words and Phrases
Representation Learning of Vectors of Words and PhrasesRepresentation Learning of Vectors of Words and Phrases
Representation Learning of Vectors of Words and PhrasesFelipe Moraes
 

Destaque (20)

Вычислительная лексическая семантика: метрики семантической близости и их при...
Вычислительная лексическая семантика: метрики семантической близости и их при...Вычислительная лексическая семантика: метрики семантической близости и их при...
Вычислительная лексическая семантика: метрики семантической близости и их при...
 
Word2vec для поискового движка II
Word2vec для поискового движка IIWord2vec для поискового движка II
Word2vec для поискового движка II
 
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)
Online learning - Apache Spark alternatives: Vowpal Wabbit. (18.06.2015)
 
Word2vec для поискового движка
Word2vec для поискового движкаWord2vec для поискового движка
Word2vec для поискового движка
 
Learning by Analogy
Learning by AnalogyLearning by Analogy
Learning by Analogy
 
Классификация текстовых документов на естественных языках
Классификация текстовых документов на естественных языкахКлассификация текстовых документов на естественных языках
Классификация текстовых документов на естественных языках
 
Word2vec slide(lab seminar)
Word2vec slide(lab seminar)Word2vec slide(lab seminar)
Word2vec slide(lab seminar)
 
LEARNING BY ANALOGY IN A HYBRID ONTOLOGICAL NETWORK
LEARNING BY ANALOGY IN A HYBRID ONTOLOGICAL NETWORKLEARNING BY ANALOGY IN A HYBRID ONTOLOGICAL NETWORK
LEARNING BY ANALOGY IN A HYBRID ONTOLOGICAL NETWORK
 
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...
ПОСТРОЕНИЕ ОТНОШЕНИЙ В СМЕШАННОЙ ОНТОЛОГИЧЕСКОЙ СЕТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕСТИР...
 
Перефразировщик текста
Перефразировщик текстаПерефразировщик текста
Перефразировщик текста
 
Технологический стек классификации текстов на естественных языках
Технологический стек классификации текстов на естественных языкахТехнологический стек классификации текстов на естественных языках
Технологический стек классификации текстов на естественных языках
 
Reproducibility and automation of machine learning process
Reproducibility and automation of machine learning processReproducibility and automation of machine learning process
Reproducibility and automation of machine learning process
 
Классификация поисковых запросов
Классификация поисковых запросовКлассификация поисковых запросов
Классификация поисковых запросов
 
Конкурс Родная речь 2014
Конкурс Родная речь 2014Конкурс Родная речь 2014
Конкурс Родная речь 2014
 
Концепция поисковых расширений
Концепция поисковых расширенийКонцепция поисковых расширений
Концепция поисковых расширений
 
Drawing word2vec
Drawing word2vecDrawing word2vec
Drawing word2vec
 
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...
Word2Vec: Learning of word representations in a vector space - Di Mitri & Her...
 
Semantic evaluation on Dialog 2015
Semantic evaluation on Dialog 2015Semantic evaluation on Dialog 2015
Semantic evaluation on Dialog 2015
 
word2vec - From theory to practice
word2vec - From theory to practiceword2vec - From theory to practice
word2vec - From theory to practice
 
Representation Learning of Vectors of Words and Phrases
Representation Learning of Vectors of Words and PhrasesRepresentation Learning of Vectors of Words and Phrases
Representation Learning of Vectors of Words and Phrases
 

Semelhante a word2vec (part 1)

"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero
"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero
"Делаем тематическое моделирование в 2017" Талипов Руслан, Rideroit-people
 
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаЗадача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex Dainiak
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыTechnosphere1
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Technosphere1
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsIosif Itkin
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Типы данных
Типы данныхТипы данных
Типы данныхMonsterXX
 
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поискеЕвгений Летов
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 
лекция 5 тема 1
лекция 5 тема 1лекция 5 тема 1
лекция 5 тема 1Noobie312
 
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...aleksashka3
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выраженияTatyanazaxarova
 

Semelhante a word2vec (part 1) (20)

Автоматическая кластеризация близких по смыслу слов
Автоматическая кластеризация близких по смыслу словАвтоматическая кластеризация близких по смыслу слов
Автоматическая кластеризация близких по смыслу слов
 
"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero
"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero
"Делаем тематическое моделирование в 2017" Талипов Руслан, Ridero
 
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаЗадача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
 
L5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмыL5: Л5 Байесовские алгоритмы
L5: Л5 Байесовские алгоритмы
 
Ruwikt
RuwiktRuwikt
Ruwikt
 
Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes" Лекция №5 "Обработка текстов, Naive Bayes"
Лекция №5 "Обработка текстов, Naive Bayes"
 
Ruby строки
Ruby строкиRuby строки
Ruby строки
 
Можарова Тематические модели: учет сходства между униграммами и биграммами.
Можарова Тематические модели: учет сходства между униграммами и биграммами.Можарова Тематические модели: учет сходства между униграммами и биграммами.
Можарова Тематические модели: учет сходства между униграммами и биграммами.
 
Rgsu04
Rgsu04Rgsu04
Rgsu04
 
TMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class DiagramsTMPA-2013 Kompan and Bui: OOP Class Diagrams
TMPA-2013 Kompan and Bui: OOP Class Diagrams
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Типы данных
Типы данныхТипы данных
Типы данных
 
Яндекс Малый ШАД - лингвистика в поиске
Яндекс  Малый ШАД - лингвистика в поискеЯндекс  Малый ШАД - лингвистика в поиске
Яндекс Малый ШАД - лингвистика в поиске
 
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекцииАвтоматическое извлечение синтаксических контекстов из текстовой коллекции
Автоматическое извлечение синтаксических контекстов из текстовой коллекции
 
9 ср1
9 ср19 ср1
9 ср1
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
лекция 5 тема 1
лекция 5 тема 1лекция 5 тема 1
лекция 5 тема 1
 
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
 
Статический анализ и регулярные выражения
Статический анализ и регулярные выраженияСтатический анализ и регулярные выражения
Статический анализ и регулярные выражения
 
кулагин поиск близких по смыслу языковых выражений
кулагин поиск близких по смыслу языковых выраженийкулагин поиск близких по смыслу языковых выражений
кулагин поиск близких по смыслу языковых выражений
 

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 2
  • 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 3
  • 4. 1. Самостоятельная техника сама по себе 2. Вектора используются как фичи в задачах: ◦ Sentiment Analysis ◦ Named Entities Recognition ◦ Part-Of-Speech Tagging ◦ Machine Translation ◦ Paraphrase Detection ◦ Documents Clustering ◦ Documents Ranking ◦ и т.д. и т.п. 4
  • 5. 1. Каждый документ D из корпуса документов Т представляется как последовательность слов: D = {x1, … , xn} 2. Все уникальные слова из документов корпуса T образуют словарь V 3. Решают задачи: классификации / кластеризации / регрессии / ранжирования / парсинга / тэгирования / извлечения знаний и т.д. и т.п. Задачи обучения с учителем: для каждого документа 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 5
  • 6. 4. По документам D / парам (D, Y) строятся модели, имеющие вероятностную природу. 5. Главная особенность: при таком моделировании каждое слово рассматривается как реализация дискретной случайной величины, (условная) вероятность выпадения которой оценивается по корпусу T. 6 Словарь V: … хорошо ⇔ 113 автомобиль ⇔ 114 … прекрасно ⇔ 6327 … 113 ≠ 6327 или слова в словаре не связанны друг с другом
  • 7. Пусть: 1. Из обучающего корпуса документов известно: P(“собака”, “человек” => “друг”) = 0.997 2. Для слов “ребёнок”, “лабрадор”, “товарищ” подобных знаний в корпусе нет В таком случае система не сможет оценить: P(“собака”, “ребёнок” => “друг”) = ? P(“лабрадор”, “человек” => “друг”) = ? P(“собака”, “человек” => “товарищ”) = ? 7
  • 8. Идея: Поставить словам в соответствие числовые вектора небольшой фиксированной размерности, для которых будет верно: V(“человек”) ≈ V(“ребёнок”) V(“собака”) ≈ V(“лабрадор”) V(“друг”) ≈ V(“товарищ”) Тогда: P(“собака”, “ребёнок” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997 P(“лабрадор”, “человек” => “друг”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997 P(“собака”, “человек” => “товарищ”) ≈ P(“собака”, “человек” => “друг”) ≈ 0.997 8 Word Embedding!
  • 9. “You shall know a word by the company it keeps” John Rupert Firth, 1957 “Слова со схожими значениями разделяют схожий контекст” Неизвестный мудрец 9
  • 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 10 Richard Socher, 2015
  • 11. 1. В реальности для получения более или менее качественных векторов требуется ещё многое: ◦ игнорировать stop-слова (the, a, he, she и т.п.) ◦ взвешивать слова, входящие в коллокации, согласно расстоянию между ними в тексте ◦ и т.п. 2. Матрица коллокаций очень разреженная и имеет очень большую размерность (порядка 106 * 106 элементов) 3. Добавление новых слов / новых документов приводит к необходимости пересчитывать всё заново 11
  • 12. 12 The quick brown fox jumps over the lazy dog предсказываются контекстные слова предсказываются контекстные слова The quick brown fox jumps over the lazy dog предсказывается центральное слово
  • 13. 13
  • 14. Формализуем задачу: по корпусу документов T необходимо построить вектора для всех слов из словаря V таким образом, чтобы максимизировать вероятность “появления на свет” самого корпуса T. Другими словами: 14 Параметры модели (координаты векторов слов) Вероятность появления корпуса T при векторах θ
  • 15. 1. Документы в корпусе T независимы между собой 2. Каждое слово в документе зависит только от своего контекста – небольшого количества окружающих слов 3. Слова из контекста независимы между собой 4. Вероятность встретить пару (w, c) моделируется с помощью SoftMax функции 15 Здесь: 1. Параметры модели 2. W – матрица “входных” векторов 3. W’ – матрица “выходных” векторов 4. vw – “входной” вектор центрального слова w 5. vc – “выходной” вектор контекстного слова c Каждое слово моделируется 2-мя векторами!
  • 16. 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. 17 1. Cловарь V = {quick, brown, fox, jumps, over} 2. vT wvc - скалярное произведение векторов (вещественное число) 3. Пусть: vT foxvbrown = 17.7 vT foxvjumps = 15.2 vT foxvquick = 11.3 vT foxvover = 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 – вектор p 5. Выход сети: распределение вероятностей по словам из словаря V 6. Цель: минимизация Cross-entropy функции потерь между выходным вектором предсказаний p и one-hot вектором y, соответствующим контекстному слову c 7. Метод обучения: SDG и его вариации А где нейронная сеть? 18
  • 19. 1. Итерационный метод решения задач оптимизации 2. Градиент – вектор, направленный в сторону максимального возрастания функции в данной точке 3. Начальная инициализация: Матрицы векторов инициализируются малыми числами из окрестности нуля 4. На каждом шаге параметры изменяются в сторону антиградиента: 19 Шаг градиентного спуска (должен уменьшаться с ростом t)
  • 21. Задача найти вектора, при которых эта вероятность максимальна: На каждом шаге градиентного спуска необходимо вычислять большую сумму ⇒ очень медленно Что делать: 1. Использовать hierarchical softmax. 2. Использовать noise contrastive estimation / negative sampling. 21 Вероятность возникновения корпуса T при матрицах входных и выходных векторов W и W’ соответственно:
  • 22. 1. Для каждой пары (слово, контекст) SoftMax выдаёт мультиномиальное распределение по всем словам из V. 2. Наша цель – построение векторов слов, а не вероятностной лингвистической модели. Основная идея: заменить задачу на более простую так, чтобы избавиться от SoftMax на выходном слое. 22
  • 23. Документы: 1. The quick brown fox jumps over the lazy dog 2. The rain in Spain stays mainly in plain 3. … Словарь: brown, dog, fox, in, jumps, lazy, mainly, over, plain, quick, rain, … Пары слово – контекст (ширина окна = 2): 1. (brown, [the, quick, fox, jumps]) ⇒ (brown, the), (brown, quick), (brown, fox), (brown, jumps) 2. (fox, [quick, brown, jumps, over]) ⇒ (fox, quick), (fox, brown), (fox, jumps), (fox, over) 3. (jumps, [brown, fox, over, the]) ⇒ (jumps, brown), (jumps, fox), (jumps, over), (jumps, the) 4. … Negative samples (k= 5): 1. (brown, in), (brown, Spain), (brown, language), (brown, a), (brown, assign) 2. (fox, apple), (fox, some), (fox, making), (fox, associations), (fox, easily) 3. … 23
  • 24. Рассмотрим: Задача подобрать вектора так, чтобы отличать истинные (полученные из документов) пары (w,c) от ложных (сгенерированных из словаря V): В конечном виде: 24 Исчезла линейная зависимость от размера словаря
  • 25. Xin Rong, 2014 1. По окружающим словам предсказывает центральное слово 2. Хорошие результаты на небольших и средних датасетах 25
  • 26. 1. По центральному слову предсказывает окружающие слова 2. Чаще всего используется в паре с негативным сэмплированием 3. Требует больший (по сравнению с CBOW) объём данных 4. Считается, что лучше оценивает редкие слова Xin Rong, 2014 26
  • 27. 1. https://radimrehurek.com/gensim/ 2. https://github.com/piskvorky/gensim/ 3. https://dumps.wikimedia.org/ruwiki/latest/ Готовые реализации LDA, Word2Vec, Doc2Vec, TF-IDF, … 27
  • 28. 1. Сходство между словами – косинус угла между их векторами 2. “Cумма” и “разность”: v(“king”)- v(“man”) + v(“woman”) ≈ v(“queen”) 28
  • 29. 3. Для устойчивых фраз (коллокаций) можно строить отдельные вектора 29
  • 30. 30
  • 31. 31
  • 34.  Непосредственная проверка векторов при решении конкретной задачи  Требует построения алгоритма машинного обучения (чаще всего - другой нейронной сети) с векторами слов в качестве признаков  Требует настройки гиперпараметров модели: тип и структура решающей сети, метод её начальной инициализации, тип регуляризации, подбор параметров SGD и т.д.  Требует значительных вычислительных ресурсов и времени 34
  • 35.  Для оценивания векторов с точки зрения семантики, морфологии, грамматики были придуманы так называемые “тесты аналогий”  Дают быстро вычислимую эвристическую оценку качества  Дают понять насколько вектора хороши “в целом”  Тесты для английского языка доступны в официальном репозитории word2vec: http://word2vec.googlecode.com/svn/trunk/  Состоят из множества аналогий вида: Athens Greece -> Havana Cuba Canada dollar -> Mexico peso uncle aunt -> father mother amazing amazingly -> apparent apparently bad worst -> bright brightest United_Kingdom British_Airways -> Russia Aeroflot Bill_Gates Microsoft -> Sergey_Brin Google и т.д. 35
  • 36. Категории тестов Для векторов-слов Для векторов-фраз • 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 36
  • 38. 1. Модель построения векторов имеет огромное значение 2. Skip-gram сочетает простоту и качество 3. Кроме модели на качество влияют: • Объём обучающего корпуса • Размер векторов • Другие гиперпараметры Richard Socher, 2015 38
  • 39. 1. Обучающий корпус 2. Размер векторов 3. Ширина контекстного окна 4. Распределение негативного сэмплирования 5. Количество негативных сэмплов на каждую пару слово+контекст А также: 1. Начальная инициализация векторов 2. Конкретный метод градиентного спуска 3. Шаг градиентного спуска 39
  • 40.  Идеально: большой размер + разнообразие документов  Как правило, больше – лучше:  Но не всегда (Андрей Кутузов, Mail.ru Group ): https://www.youtube.com/watch?v=9JJsMWKcU7s Richard Socher, 2015 40
  • 41. Кутузов А., Андреев. И., 2015 1. Размер вектора ≈ 100-500 • Малый размер – быстрое обучение, риск недообучиться • Большой размер – медленное обучение, риск переобучиться • Хороший выбор: 300 2. Размер окна ≈ 2–10 • Узкое окно – больше прямых взаимосвязей между словами • Широкое окно – больше косвенных взаимосвязей между словами • Разумный компромисс: ширина окна – случайная величина в некоторых пределах (Например U[1, C]) 41
  • 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.92 1 0.09 ^ 0.75 = 0.16 2 0.01 ^ 0.75 = 0.032 42
  • 43. 1. Какова общая структура пространства? 2. Как распределена “схожесть” в пространстве? 3. Схожи ли “входные” и “выходные” вектора для одних и тех же слов? 4. Можно ли избавиться от одних из них? 5. Если нет, то какие из векторов лучше? 43
  • 45. “the good” ≉ (-1) * “the bad” Beta-распределение (форма может варьироваться) Общая закономерность The Good The Bad 45
  • 46. “the good” ≉ “the good” Может сильно варьироваться Параметрическое семейство - ? The Good The Good in out in out 46
  • 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) 47
  • 48. Функциональные слова, слова с единственым значением Встречающиеся часто и имеющие одно-два значения Остальные слова (в том числе многозначные) Редкие слова На, по, не, для, ссср, сша, май, сентябрь, … Генерал, профессор, игра, строительство, изображение,… Нетипичная, продуманных, однокамерные, поднявших, словоформа, диэлектрике,… Самодержице, спиннинговое, длинноиглый, крижевицкой,…48 Длина векторов
  • 49. 1. Частота слова в языке пропорциональна его рангу: 2. Обновление параметров стохастическим градиентным спуском: Шаг градиентного спуска (должен уменьшаться с ростом t) 49
  • 50. 1. Датасет: побольше и поразнообразнее 2. Ширина окна: случайная величина из U[1, 5/8/10] 3. Размерность вектора: 300 4. Негативное сэмплирование: не равномерное, хорошо работает p(w) ~ freq(w) ^ 0.75 / Z 5. Количество негативных сэмплов: 5/10/20 6. Редкие слова заменить на специальное слово (“<RARE>” / “<UNK>”) 7. Может помочь удаление stop-слов (если вектора не обучаются для POS-тэггинга и схожих задач) 8. Использовать вариации SGD с адаптивным изменением learning rate (AdaGrad) 9. Начальный шаг можно выбрать достаточно большим: 0.025 / 0.05 10. Делать несколько (2-3) проходов (эпох) по корпусу документов 11. Тестировать как входные, так и выходные вектора 12. Нормировать вектора 50
  • 51. https://github.com/denmoroz/tensorflow-word2vec Особенности: 1. Реализация на Python + Tensor Flow 2. Ряд хаков для ускорения работы (скорость сравнима с Gensim) 3. Замена редких слов словаря на “<RARE>” 4. Адаптивный SGD: AdaGradOptimizer 5. Сбор и визуализация статистик о ходе обучения модели в Tensor Board 6. Иная модель сэмплирования: иерархическая, сочетающая сэмплер по Mikolov’у и равномерный сэмплер 7. Сохранение как входных, так и выходных векторов в текстовом формате, совместимом с Gensim 8. Несовершенная, как и все творения человека (код нуждается в рефакторинге ) 51
  • 52. 1. Понятие об обработке естественных языков 2. Вероятностные основы Word2Vec 3. Свойства пространства векторов 4. … 5. Проблема многозначных слов 6. Моделирование векторов фраз / предложений / документов 7. Краткое введение в рекуррентные нейронные сети (RNN) 8. Обзор абстрактного deep learning фрэймворка Keras 9. Применение связки RNN + Word2Vec для решения задачи сентиментального анализа сообщений из Twitter 10. Возможно, что-нибудь ещё  52
  • 53. 1. Gensim: Topic Modelling For Humans http://radimrehurek.com/gensim/ 2. TensorFlow: Deep learning library http://tensorflow.org/ 3. Keras: Deep learning library http://keras.io/ 4. Coursera: Natural language processing http://www.coursera.org/course/nlangp 5. Stanford CS224d: Deep learning for NLP http://cs224d.stanford.edu/ 6. Awesome NLP https://github.com/keonkim/awesome-nlp/ 53