07 / 37 · Распределённые представления
Векторные представления слов
Почему one-hot-векторы не могут выразить сходство, четыре попытки найти кодирование лучше и где каждая проваливается, что такое плотная таблица эмбеддингов в терминах размерностей и как читать выученное векторное пространство через косинусное сходство, аналогии и двумерные проекции.
На этой странице 10
До сих пор каждая модель считала токен атомом. Классификатор на мешке слов дал cat и dog ортогональные координаты; n-граммная модель считала cat sat и dog sat несвязанными событиями. Всё, что было выучено об одном слове, было бесполезно для другого. Эта заметка спрашивает, какое представление позволило бы переносить знание между похожими словами, по очереди пробует очевидные кодирования и приходит к плотному вектору, на котором построена каждая следующая модель курса.
Обозначения. — словарь, — размерность эмбеддинга. One-hot-вектор токена — это с единственной единицей в позиции . Таблица эмбеддингов — , а обозначает её -ю строку.
Отправная точка: one-hot-векторы#
Токен — вектор длины с единицей в позиции своего индекса. У любой пары различных токенов скалярное произведение равно 0, а евклидово расстояние — : cat ровно так же далёк от dog, как от therefore. Понятия сходства в этом представлении нет, а его размер равен размеру словаря. У модели, первый линейный слой которой работает с one-hot-входами, весов при размере скрытого слоя ; при (словарь слов веб-масштаба) и это параметров в одном слое, а активация для предложения из 20 токенов — матрица , почти целиком состоящая из нулей.
Четыре попытки#
У проблемы две части: векторы слишком велики и не несут сходства. Каждая попытка исправляет одно и обнаруживает следующее ограничение.
- Одно число на слово. Заменим one-hot-вектор его индексом, одним целым числом. Проблема размера решена. Но индекс произволен:
coolможет получить 1502,awesome— 7, аtherefore— 1503. Слова с одинаковым смыслом оказываются далеко друг от друга, а соседи слова в этом кодировании бессмысленны. - Близкие числа для похожих слов. Назначим индексы так, чтобы синонимы стояли рядом:
cool— 1502,awesome— 1503. Теперь одно число должно кодировать сразу все оси сходства.coolблизко кawesomeпо одной оси (одобрение) и кcoldпо другой (температура); на прямой нельзя поставить его рядом с обоими. Для сарказма и многозначности места нет вовсе. - Короткий вектор выбранных признаков. Дадим каждому слову несколько придуманных вручную координат (тональность, конкретность, часть речи). Это правильная форма, но признаки нужно придумать и разметить вручную для каждого слова, и те, что важны для задачи, редко совпадают с теми, которые пришли бы нам в голову.
- Короткий вектор выученных признаков. Сохраним форму попытки 3 и позволим координатам выучиться из данных. Ничего не проектируется: -мерный вектор каждого слова — параметр, и обучение его сдвигает.
Таблица эмбеддингов#
Попытка 4 — это матрица . Вектор токена — строка . В коде это поиск по индексу, а в линейной алгебре — произведение на one-hot-вектор:
и именно этот взгляд через умножение матриц делает первый линейный слой сети над one-hot-входами равным поиску в таблице эмбеддингов: матрица весов , умноженная на one-hot-вектор, просто считывает одну строку. Слой nn.Embedding(|V|, d) — это такая матрица, где умножение заменено индексированием.
Слой эмбеддингов — это поиск строки в таблице
Размерности для батча: идентификаторы токенов [B, T] (размер батча, длина последовательности) после поиска становятся [B, T, d]. При и в таблице 3 млн параметров, независимо от длины последовательности; последовательность из 20 токенов даёт активацию вместо .
Откуда берутся значения? Три варианта, которые используются в курсе в таком порядке:
- Обучаются вместе с задачей. Таблица — параметр классификатора и получает градиенты от функции потерь классификации. Так делает и измеряет эффект заметка о CNN.
- Предобучаются на неразмеченном тексте. Таблицу обучают на большом корпусе с целью обучения с самоконтролем (self-supervision), а затем используют как фиксированные входные признаки. Эту цель строит следующая заметка.
- Скачиваются. Таблицы, обученные другими на миллиардах токенов, например векторы GloVe, обученные на Twitter, которые используются ниже.
Как читать векторное пространство#
Когда слова стали точками, геометрию можно исследовать. В курсе постоянно встречаются три инструмента.
Косинусное сходство сравнивает направления и не учитывает длину:
Длины векторов эмбеддингов зависят от того, как часто и в скольких контекстах встречается слово, по причинам, не связанным со смыслом, поэтому обычной мерой служит угол. 32-мерная модель, обученная на 537 272 вопросах Quora, перечисляет в качестве ближайших соседей слова word слова sentence (0.836), words, verb, phrase, sentences, pronounce, noun — слова, которые встречаются в вопросах того же рода. «Похожие» здесь означает используемые в похожих контекстах: другого сигнала у обучения не было.
Аналогии проверяют, осмысленны ли разности векторов. Если направление от man к woman кодирует пол, то, прибавив его к king, мы должны оказаться рядом с queen:
На 100-мерных векторах GloVe, обученных на Twitter, ближайшее к этой сумме слово (если исключить три входных) — queen с косинусом 0.705, за ним prince (0.667) и mother (0.644). Та же арифметика с latte − milk + water возвращает macchiato (0.608), cappuccino, warm, espresso, coffee: ось напитков переживает подстановку, конкретный ответ спорен. А head − foot + sock даёт pants (0.621), butt, blow, и beanie (шапка, которую можно было бы ожидать) оказывается лишь на шестом месте. Аналогии — качественная проба: когда они работают, они показывают, что некоторые направления в пространстве согласованы; когда возвращают мусор, показывают, каких закономерностей не было в корпусе. Они не доказывают, что пространство линейно по смыслу, а стандартные бенчмарки аналогий, как известно, чувствительны к тому, как поиск исключает входные слова (Linzen, 2016).
Проекция на плоскость. Чтобы посмотреть на пространство, уменьшим до 2. Метод главных компонент (PCA) находит направления наибольшей дисперсии: для центрированной матрицы из векторов слов он решает задачу по с ортонормированными столбцами, и решение — первые два правых сингулярных вектора . График — линейная тень пространства: глобальная структура сохраняется, локальные окрестности часто сминаются. t-SNE (van der Maaten and Hinton, 2008) вместо этого размещает точки так, чтобы пары, близкие в , оставались близкими на плоскости, ценой искажения больших расстояний и зависимости от параметра perplexity. Расстояния между кластерами на графике t-SNE мало что значат, и сами кластеры могут вводить в заблуждение: при малой перплексии точки из одного гауссова распределения уже образуют видимые сгустки (Wattenberg, Viégas and Johnson, 2016). Кластеру стоит доверять, только если он сохраняется при разных перплексиях и случайных зёрнах, а его слова близки и по косинусу в . Оба метода — чтобы смотреть, а не чтобы измерять.
Разобранный пример#
Три слова при (значения условные):
Два слова о животных смотрят в одну сторону; связка почти ортогональна им. При one-hot-кодировании все три косинуса были бы равны 0.
От слов к предложениям, пока что#
Классификатору нужен один вектор на документ, а таблица эмбеддингов даёт по одному на токен. Простейший способ агрегации — среднее векторов токенов (токены вне словаря пропускаются, а если не осталось ни одного, возвращаются нули). Со 100-мерной таблицей это даёт 100-мерный вектор документа, почти в 300 раз меньший, чем 29 350-мерный вектор TF-IDF, и он уже позволяет искать ближайших соседей: построить вектор вопроса-запроса, посчитать его косинус с каждым сохранённым вопросом и вернуть первые . Усреднение отбрасывает порядок и позволяет частым словам доминировать, поэтому заметки о CNN и RNN заменяют его моделями, которые читают последовательность.
Ограничения#
- Один вектор на тип слова. У
bankодин вектор, о чём бы ни было предложение — о реках или о деньгах. Вектор — компромисс между значениями, и ничто в представлении не знает, какое значение имеется в виду. Это ограничение снимают контекстные эмбеддинги в заметке о BERT. - Закрытый словарь. У слова, которого нет в таблице, нет вектора. Токены-подслова из заметки о токенизации уменьшают проблему; модели на символьных n-граммах снимают её, но не бесплатно.
- Сходство — это совместная встречаемость. Антонимы (
hot,cold) встречаются в одних и тех же контекстах и оказываются рядом. Ошибка ли это, зависит от задачи. - Пространство отражает корпус. Векторы, обученные на Twitter, воспроизводят словоупотребление Twitter, включая его предубеждения и стереотипы, а аналогии позволяют их измерить (Bolukbasi et al., 2016).
- Усреднение теряет информацию. Среднее векторов слов — это мешок слов в пространстве меньшей размерности; порядок и отрицание всё так же потеряны.
Что нужно запомнить#
- One-hot-векторы -мерны и попарно ортогональны: нет сходства — нет переноса.
- Таблица эмбеддингов сопоставляет каждому токену выученную строку;
nn.Embedding— произведение на one-hot-вектор, записанное как поиск по индексу. - Косинусное сходство сравнивает направления; ближайшие соседи в выученном пространстве — слова, используемые в похожих контекстах.
- Аналогии и двумерные проекции — качественные пробы геометрии, а не метрики.
- Статические эмбеддинги дают один вектор на тип слова независимо от контекста.
Ноутбук#
week01_word_embeddings.ipynb. Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.
- Ячейка 58 обучает 32-мерную модель Word2Vec на токенизированных вопросах Quora (
min_count=5,window=5); ячейка 59 считывает один вектор, а ячейка 60 перечисляет приведённых выше ближайших соседей словаword. - Ячейка 62 скачивает 100-мерные векторы
glove-twitter-100; ячейки 64–66 решают три аналогии, сохранённые выходы которых — числа выше. - Ячейки 67–70 берут 1000 самых частых слов; ячейки 71–76 проецируют их методом главных компонент (целевая функция и её решение через SVD приведены в ячейке 71) и рисуют интерактивную диаграмму рассеяния; ячейки 77–79 повторяют то же с t-SNE (
perplexity=3). - Ячейки 80–85 определяют эмбеддинг фразы как среднее векторов слов и рисуют около 1000 вопросов; ячейки 86–91 реализуют поиск ближайших соседей по косинусу среди первых 1000 вопросов. Функции эмбеддинга и поиска были упражнениями; теперь в ноутбуке записаны решения, а у этих ячеек нет сохранённых выходов.
Дальше#
Векторы выше были либо скачаны, либо получены вызовом библиотеки. Следующая заметка открывает библиотеку: она задаёт задачу предсказания, из-за которой совместно встречающиеся слова оказываются рядом, записывает целевую функцию и показывает, почему прямолинейная версия слишком дорога и как её исправляет негативное сэмплирование.
Литература#
- T. Mikolov, K. Chen, G. Corrado, J. Dean. Efficient Estimation of Word Representations in Vector Space. ICLR Workshop, 2013. Тест на аналогии и наблюдение о линейных закономерностях.
- J. Pennington, R. Socher, C. D. Manning. GloVe: Global Vectors for Word Representation. EMNLP, 2014. Источник использованных выше векторов, обученных на Twitter.
- T. Linzen. Issues in evaluating semantic spaces using word analogies. RepEval, 2016.
- T. Bolukbasi, K.-W. Chang, J. Zou, V. Saligrama, A. Kalai. Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings. NeurIPS, 2016.
- L. van der Maaten, G. Hinton. Visualizing Data using t-SNE. JMLR, 9, 2008.
- M. Wattenberg, F. Viégas, I. Johnson. How to Use t-SNE Effectively. Distill, 2016.
- D. Jurafsky, J. H. Martin. Speech and Language Processing, 3rd ed. draft. Глава 6 (векторная семантика и эмбеддинги).