Word2Vec: Название говорит само за себя. Дайте мне слово, и я дам вам его векторное представление. И его цель — изучить «высококачественные» векторные представления слова из огромных наборов данных. Изучайте их «эффективно».

Но прежде чем перейти к документам, давайте разберемся с некоторыми предварительными условиями, которые также лежат в основе Word2Vec и подобных методов.

Дистрибьюторское представительство

Слово характеризуется компанией, которую оно составляет.

- Джон Руперт Ферт.

Возьмем небольшую модификацию широко известной англоязычной панграммы.

Быстрый, коричневый, пушистый китсунэ перепрыгивает через ленивую собаку.

Мы не знаем, чем на самом деле является предмет — китсунэ.

  • Кажется, это существительное.
  • Это быстро.
  • Это коричневый.
  • Это пушистый хвост.
  • Он может прыгать.

Этот «китсунэ» кажется другим животным. И другие животные, которые имеют коричневый мех, пушистый хвост и умеют прыгать — лиса или шакал, или, может быть, динго. Если вы знаете исходное предложение, оно действительно напоминает нам лису. Таким образом, даже не зная, что такое кицунэ на самом деле, мы смогли сделать вывод, что это может быть лиса или подобное млекопитающее. Это именно то, что мы хотим, чтобы машины делали. Мы хотим, чтобы машины делали аналогичные выводы.

Действительно, кицунэ в переводе с японского означает лиса.

Поэтому слова, используемые в похожем контексте, имеют схожие значения.

Кодирует слово таким образом, что слова, расположенные ближе в векторном пространстве, должны быть похожи по смыслу, называется встраиванием слов. И это то, что Word2Vec должен делать — качественно и эффективно.

Качество представлений.

В основном это означает, что слова могут быть связаны друг с другом более чем одним способом, и эта статья направлена ​​​​на представление слов в виде векторов, которые фиксируют эти множественные отношения между ними.

В качестве примера представим человека в виде двумерного вектора с именованными измерениями «пол» и «знатность». Что бы кто-то, похожий на короля по признаку «знатность», но непохожий по признаку «пол» и похожий на женщину, был бы… Королевой.

Точно так же мы можем иметь

Эта статья направлена ​​на изучение именно таких представлений и их отношений, причем эффективно.

Но что это за термины — семантические и синтаксические закономерности?

  • семантический, в простом английском языке — связанный со значением слов и предложений;
  • синтаксис — это система правил построения слов и предложений в языке.

Например, слова большой и самый большой имеют синтаксическую связь «превосходная степень». Аналогия была бы большой: самый большой — маленький: самый маленький.

Примером семантической закономерности может быть волк: собака — тигр: кошка, имеющие семантическую связь «является высшим хищником семьи». Таким образом, волк — высший хищник семейства собак (Canidae), а тигр — высший хищник семейства кошачьих (Felidae).

Это кажутся довольно качественными отношениями, но как насчет вычислительной стоимости обучения?

(Не)эффективность ранее существовавших языковых моделей.

Давайте вернемся в историю и рассмотрим существующие языковые модели 2013 года. Но что вообще такое языковая модель?

Статистическая языковая модель представляет собой распределение вероятностей по последовательностям слов.

— Википедия

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

Что-то, что будет делать поиск Google, основываясь на данных, которые они собирают из пользовательского поиска. Основываясь на определенной последовательности слов, какое следующее слово будет искать пользователь. Предложите им это. По-видимому, людям любопытно получить еще одну статую свободы и еще одну проверку стимула (не знаю, что это значит).

Языковая модель может быть создана с помощью нейронных сетей. А вычислительная сложность обучения модели описывается количеством весов, которые необходимо изучить.

  • Для языковой модели нейронной сети с прямой связью (NNLM) для каждого примера обучения у нас есть:

𝑄 = N X D(Проекция)+N X D X H(Скрыто) +H X V(Вывод)

где,

N → предыдущие N слов (обычно 10)

D → Размерность вектора слова. (обычно от 500 до 2000)

H → скрытые единицы (обычно от 500 до 1000)

V → размер словарного запаса (который может варьироваться от нескольких сотен тысяч до миллионов).

Используя несколько уловок, V на выходном слое можно снизить до log2V. Таким образом, большая часть вычислительной сложности связана со скрытым слоем — N X D X H термином.

  • Для языковой модели рекуррентной нейронной сети сложность обучения для каждого примера определяется следующим образом:

Q = H X H + H X V

И для RNNLM большая часть вычислительной сложности связана со скрытым слоем — H X H термином.

Предлагаемые Word2Vec архитектуры

Непрерывная модель мешка слов

Давайте поиграем, заполните пробел.

Быстрая коричневая лисица с __ хвостом прыгает.

Некоторые слова в словаре имеют гораздо больше шансов заполнить пробел, чем другие. Слова густой и девятка имеют больше смысла, чем слова глубина и смартфон. Можете ли вы придумать какие-нибудь слова, которые имели бы здесь больше смысла?

Это то, что делает CBOW. По заданному набору слов предскажите слово, которое с наибольшей вероятностью встречается рядом с этими словами. За исключением того, что здесь у нас не хорошая последовательность, а перемешанные слова.

bag_o_words = {"jumps": 1, "quick":1, "fox":1, "tailed":1, "a":1, "brown":1}
P("bushy" | bag_o_words)
P("cupboard" | bag_o_words)

Каждое слово в словаре имеет вероятность замены пробела. Даже если он огромен, он конечен. Каждое слово можно считать классом. А задача предсказания класса — это классификация.

Но что такое набор слов?

Пакет слов — это неупорядоченное сопоставление слов в документе с их соответствующими частотами. Он игнорирует порядок слов, в которых они встречаются, а также контекст, в котором они встречаются.

Так что это похоже на набор слов, перемешанных и случайно засунутых в сумку.

Кроме того, в отличие от стандартного пакета слов, в котором для представления слова используются дискретныезначные векторные представления (одноразовые кодировки), как следует из названия, CBOW использует непрерывныезначные векторы.

Модель скип-грамм.

Модель скип-грамм в некотором роде обратна CBOW. По входному слову он предсказывает слова в определенном диапазоне до и после текущего слова.

Итак, для нашего примера — «быстрая, коричневая, густаяхвостатая лиса перепрыгнула через ленивую собаку», каждое входное слово будет сопоставлено с, скажем, четыре его соседа по обе стороны.

И мы будем продолжать сдвигать окно диапазона.

«Быстрая,коричневая, густохвостая лиса перепрыгнула через ленивую собаку»

«быстрая, коричневая, густаяхвостатая лиса перепрыгнула через ленивую собаку»

«Быстрая, коричневая, кустистаяхвостаялисица перепрыгнулачерез ленивую собаку»

«Быстрая, коричневая, гусинохвостая лиса перепрыгнулаленивую собаку»

Каждая из этих пар становится обучающим примером для модели Skip-Gram, на которой модель обучается.