Векторное представление слов Гилязова Регина Высшая школа ИТИС, 11-822 15.10.2019 Word embeddings Word embedding is the collective name for a set of language modeling and feature learning techniques in natural language processing (NLP) where words or phrases from the vocabulary are mapped to vectors of real numbers. Conceptually it involves a mathematical embedding from a space with many dimensions per word to a continuous vector space with a much lower dimension. Wikipedia Идея №1 Пример I like NLP. Слово I like NLP Индекс 0 1 2 Таблица 1: Пример кодирования слов индексами Недостатки I При добавлении нового слова в словарь, список необходимо перенумеровывать заново I Не передает значение слова Говоря о значении слов... Пример №1 КОШКА, сущ., ж. - Хищное млекопитающее сем. кошачьих. Пример №2 МЫШЬ, сущ., ж. 1.Небольшой грызун, обычно серого цвета, с острой мордочкой и длинным хвостом 2.координатное устройство для управления курсором и отдачи различных команд компьютеру МНЕ НУЖНО БОЛЬШЕ ПРИМЕРОВ!!! Отношения между значениями слов Дано: f1 = Собака - лучший друг человека f2 = Пес - преданный товарищ ребенка f3 = Кошка - худший враг людей Необходимо определить: Как f1, f2 и f3 относятся друг к другу? Ответ: "Собака" и "Пес" являются синонимами "Лучший" и "Худший" являются антонимами "Кошка" и "Собака" являются схожими словами "Человек" является гипернимом "Ребенка" а "Ребенок" гипонимом "Человека" "Лучший" имеет положительную коннотацию, а "Худший" отрицательную Связность слов Рис. 1: Пример поискового запроса в Google One-hot representation Объем словаря |V| = 12 Собака: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 Пес: Но: Собака * Пес = 0 Мешок слов Пример I enjoy flying. I like NLP. I like deep learning. Мешок слов для примера I 3 enjoy 1 flying 1 like 2 NLP 1 deep 1 learning 1 Матрица "термин-документ" Пусть: I enjoy flying. = d1 I like NLP. = d2 I like deep learning. = d3 Тогда получаем матрицу "термин-документ": terms I enjoy flying like NLP deep learning d1 1 1 1 0 0 0 0 d2 1 0 0 1 1 0 0 d3 1 0 0 1 0 1 1 Матрица "термин-документ" - TF-IDF TF (Term Frequency) - насколько часто слово t встречается в документе d: nt tf (t, d) = P k nk где Pnt - число вхождений слова t в документ d, а k nk - общее число слов в данном документе. terms I enjoy flying like NLP deep learning d1 1/3 1/3 1/3 0 0 0 0 d2 1/3 0 0 1/3 1/3 0 0 d3 1/3 0 0 1/3 0 1/4 1/4 Матрица "термин-документ" - TF-IDF IDF (Inverse Document Frequency) - обратная частотность документов. Логарифм от общего количества документов - D, делённого на количество документов, в которых встречается термин t. | D| idf (t, D) = log ( | {di ∈ D|t ∈ di }| terms I enjoy flying like NLP deep learning idf 1 3 3 3/2 3 3 3 Матрица "термин-документ" - TF-IDF Мера TF-IDF является произведением двух сомножителей tf − idf (t, d, D) = tf (t, d) × idf (t, D) terms I enjoy flying like NLP deep learning d1 1/3 1 1 0 0 0 0 d2 1/3 0 0 1/2 1 0 0 d3 1/3 0 0 1/2 0 3/4 3/4 John Rupert Firth, 1957 “You shall know a word by the company it keeps” Матрица совстречаемости слов Предположим, у нас есть следующий корпус документов: sugar, a sliced lemon, a tablespoonful of apricot jam, a pinch each of, their enjoyment. Cautiously she sampled her first pineapple and another fruit whose taste she likened well suited to programming on the digital computer. In finding the optimal R-stage policy from for the purpose of gathering data and information necessary for the study authorized in the Установим окно контекста = ±4 Матрица совстречаемости слов terms apricot pineapple digital information aardvark 0 0 0 0 . . . computer ... 0 ... 0 ... 2 ... 1 Объем матрицы = V × V data 0 0 1 6 pinch 1 1 0 0 sugar 1 1 0 0 ... ... ... ... ... Мера схожести двух слов - косинусное сходство Скалярное произведение: v̄ · w̄ = N X vi wi = v1 w1 + v2 w2 + · · · + vN wN i=1 Длина вектора: v u N uX |v̄ | = t v2 i i=1 v̄ · w̄ = |v̄ ||w̄ | cos θ PN vi wi v̄ · w̄ q sim(v̄ , w̄ ) = cosine(v̄ , w̄ ) = = P i=1qP |v̄ ||w̄ | N N 2 2 i=1 vi i=1 wi Матрица совстречаемости слов Недостатки I Огромная размерность - объем словаря корпуса документов может достигать значений 106−8 I Вектора разреженные - большинство значений в векторе равны 0 Решение Нормировать вектора и понижать их размерность (например, PCA) ⇒ плохие результаты по качеству Зачем считать? Давайте предсказывать! в 2013 году Т. Миколов предложил свой подход к представлению word embeddings - Word2Vec Word2Vec Word2vec is a group of related models that are used to produce word embeddings. Wikipedia Задача По большому корпусу документов необходимо подобрать такие параметры модели, чтобы вероятность появления осмысленного корпуса документов была максимальной. θ∗ = argmax P(T , θ) θ где θ∗ - параметры модели (координаты векторов слов) P(T , θ) - вероятность появления корпуса T при векторах θ Word2Vec Максимизация появления корпуса T при векторах θ P(θ|T ) = Y P(θ, D) = p(θ|w , c(w )) = D∈T w ∈D D∈T = Y Y Y Y Y p(θ|w , c) = D∈T w ∈D c∈C (w ) = Y Y Y P D∈T w ∈D c∈C (w ) exp(vwT vc ) → max(vw , vc ) T c 0 ∈V exp(vw vc 0 ) где θ = {W , W 0 } - параметры модели, W - матрица "входных" векторов, W’ - матрица выходных векторов, vw - "входной" вектор центральног0о слова w, vc - "выходной" вектор контекстного слова с Word2Vec Максимизация появления корпуса T при векторах θ. Предположения: 1. Документы в корпусе Т независимы между собой Q P(θ, D) D∈T 2. Каждое слово Q в документе зависит только от своего p(θ|w , c(w )) контекста w ∈D 3. Слова Q из контекста независимы между собой p(θ|w , c) c∈C (w ) 4. Вероятность встретить пару (w,c) моделируется с T w vc ) помощью softmax функции P 0 exp(v exp(v T v 0 ) c ∈V w c Word2Vec Word2Vec Softmax обобщение логистической функции для многомерного случая. Функция преобразует вектор z̄ размерности K в вектор σ̄ той же размерности, где каждая координата σi полученного вектора представлена вещественным числом в интервале [0,1] и сумма координат равна 1. Wikipedia Координаты σi вычисляются следующим образом: e zi σ(z)i = PK k=1 e zk Word2Vec. Softmax Softmax моделирует распределение вероятности по словарю V Словарь V = {quick, brown, fox, jumps, over} vwT vc - скалярное произведение векторов Пусть: T vfox vbrown = 17, 7 T vfox vjumps = 15, 2 T vfox vquick = 11, 3 T vfox vover = 7.9 Word2Vec. Softmax Softmax моделирует распределение вероятности по словарю V Словарь V = {quick, brown, fox, jumps, over} vwT vc - скалярное произведение векторов Пусть: T vfox vbrown = 17, 7 ≈ 0.9227 T vfox vjumps = 15, 2 ≈ 0.0757 T vfox vquick = 11, 3 ≈ 0.0015 T vfox vover = 7.9 ≈ 0.0001 Word2Vec. Нейронная сеть 1. Вход сети: вектор x̄ - one-hot вектор, соответствующий слову 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. Метод обучения: стохастический градиентный спуск (SDC) и его вариации Word2Vec. Нейронная сеть Word2Vec. Немного о SDC I Итерационный метод решения задач оптимизации I Градиент - вектор, направленный в сторону максимального возрастания функции в данной точке I Начальная инициализация: Матрицы векторов инициализируются малыми числами в окресностях 0 I На каждом шаге параметры изменяются в сторону антиградиента θp+1 = θp − αt 5 L(x, θ) Word2Vec Еще раз... У нас есть вероятность возникновения корпуса T при входных и выходных векторах W и W’: Y Y Y exp(vwT vc ) → max(vw , vc ) T c 0 ∈V exp(vw vc 0 ) P D∈T w ∈D c∈C (w ) Задача Найти вектора, при которых эта вероятность максимальна: {W , W 0 } = argmax X X X (vwT vc − log( (vw ,vc ) D∈T w ∈D c∈C (w ) X c 0 ∈V exp(vwT vc 0 )) Word2Vec. Негативное сэмплирование Пример Словарь V = {..., brown, dog, fox, in, jumps, lazy, mainly, over, plain, quick, rain} Правильные контексты: w fox fox fox fox c brown jumps quick over Word2Vec. Негативное сэмплирование Пример Словарь V = {..., brown, dog, fox, in, jumps, lazy, mainly, over, plain, quick, rain, ...} "Шум": w fox fox fox fox fox c apple some making easily associations Word2Vec. Негативное сэмплирование 1 = σ(vwt vc ) 1 + e −vwt vc 1 P((w , c) ∈ / T |θ) = 1 − = σ(−vwt vc ) 1 + e −vwt vc P((w , c) ∈ T |θ) = Задача Подобрать вектора так, чтобы отличать истинные пары (w, c) от ложных θ∗ = argmax θ Y (w ,c)∈T P((w , c) ∈ T |θ) Y (w ,c 0 )∈T 0 P((w , c 0 ) ∈ / T |θ) Word2Vec. Негативное сэмплирование Получаем (W , W 0 ) = argmax X X X (log(σ(vwt vc ))+ (vw ,vc ) D∈T w ∈D c∈C (w ) + X c 0 ∼Pk (V ) log(σ(vwt vc0 ))) Word2Vec. CBOW or Skip-gram CBOW Skip-gram по контексту предсказывает целевое слово по целевому слову предсказывает контекст Эмм... Как всё это закодить? Gensim Что умеет Gensim I Определяет сходства между словами с помощью косинусной меры I Определяет ассоциативные связи между словами I Определяет грамматические связи между словами I ... Оптимальные гиперпараметры модели Размер обучающего корпуса I Чем больше, тем лучше I Документы в корпусе должны быть разнообразными Размер векторов ≈ 100 − 500 I Маленький размер - быстрое обучение, риск недообучиться I Большой размер - медленное обучение, риск переобучиться Размер окна ≈ 2 − 10 I Узкое окно - больше прямых взаимосвязей между векторами I Широкое окно - больше косвенных взаимосвязей между словами Оптимальные гиперпараметры модели Параметры сэмплирования I равномерное по словарю P(w ) ∼ U[0, |V |] I согласно частотам встречаемости слов в корпусе P(w ) ∼ freq(w )/Z I из сэмплирования исключаются редние слова и понижается встречаемость частых слов P(w ) ∼ freq(w )0.75 /Z где Z - константа нормировки Количество негативных сэмплов ≈ 5 − 25 Визуализация векторов слов - tSNE Другие модели построения word embeddings GloVe - Стэнфордский университет GloVe = SVD + Word2Vec Метод, основанный на соотношениях вероятностей совпадения слов. Одних вероятностей недостаточно для надёжного предсказания значений, требуется ещё матрица совместного вхождения, откуда можно напрямую извлекать определённые аспекты значений. FastText - Facebook Метод вычисления эмбеддингов слов путем суммирования вложений пакета n-граммов символов, составляющих слово. Это простое улучшение позволяет разделить N-граммовые представления между словами и вычислить векторные представления слов, которых не было в корпусе обучения. Применение эмбеддингов в задачах NLP I QA системы I Анализ тональности текстов I Информационный поиск I Машинный перевод I Реферирование и аннотирование текстов I Кластеризация документов I Перефразирование текстов I др. Summary... I Для определения семантических особенностей текстов слова представляются как векторы - точки многомерном семантическом пространстве I Векторные модели делятся на 2 типа: разреженные и плотные I Сходство слов и документов вычисляется путем вычисления скалярного произведения между векторами. Косинус двух векторов - нормализованное скалярное произведение - самая популярная метрика сходства I Семейство моделей word2vec является популярным эффективным способом вычисления плотных эмбеддингов Summary. Продолжение I Word2Vec вычисляет эмбеддинги, максимизируя вероятность появления осмысленного корпуса документов I Word2Vec использует стохастический градиентный спуск для обучения модели, изучая вектора, которые имеют высокое скалярное произведение для истенных пар (целевое слово, контекст) и низкое - для замусоренных данных. I Для увеличения производительности работы модели используется принцип негативного сэмплирования I Векторные представления слов активно используются в качестве признаков в различных задачах NLP Список литературы 1. D. Jurafsky, J. H. Martin. Speech and Language Processing: An Introduction to Natural Language Processing, Speech Recognition, and Computational Linguistics. 2nd edition. Prentice-Hall. 2009. https://web.stanford.edu/ jurafsky/slp3/ed3book.pdf 2. Д. Дусь. Word2Vec и все, все, все. 2016. https://www.slideshare.net/DenisDus1/word2vec-part-161489929 3. Чудесный мир Word Embeddings: какие они бывают и зачем нужны? https://habr.com/ru/company/ods/blog/329410/ 4. GloVe: Global Vectors for Word Representation https://nlp.stanford.edu/projects/glove/ 5. А.Потапенко Векторные представления слов и документов [видео-ресурс] https://www.youtube.com/watch?v=KEXWCICHY list = WLindex = 4t = 2071s