Word2vec

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Word2vec — общее название для совокупности моделей на основе искусственных нейронных сетей, предназначенных для получения векторных представлений слов на естественном языке. Используется для анализа семантики естественных языков, основанный на дистрибутивной семантике, машинном обучении и векторном представлении слов. Программное обеспечение под названием «word2vec» было разработано группой исследователей Google в 2013 году[1][2]. Инструменты для создания векторно-семантических моделей существовали и ранее[3][4], но word2vec стал первой популярной реализацией: в первую очередь из-за удобства использования, открытого исходного кода и скорости работы.[источник не указан 1918 дней][5]

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

Векторное представление слов вычисляется для всех слов словаря с помощью алгоритма машинного обучения на входном тексте корпуса. Целью машинного обучения является сопоставление контекстно близким словам близко расположенных векторов: слова, встречающиеся в тексте рядом с одинаковыми словами (и следовательно, имеющие сходный смысл), будут иметь близкие (по косинусной схожести, cosine similarity) вектора.

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

В двух основных работах о word2vec 2013 года предложены методы существенного ускорения работы алгоритма машинного обучения (вплоть до ускорения в 25-100 раз) благодаря использованию техник семплирования (sampling), и, в частности, техники отрицательного семплирования (negative sampling), иерархического семплирования, и суб-семплирования, благодаря которым векторное представление слов и получило после этого свое распространение во всех алгоритмах ОЕЯ(NLP) основанных на нейронных сетях вообще и на сетях глубокого обучения в частности.

Алгоритмы обучения

[править | править код]

Слова в алгоритме обучения рассматриваются в контексте: в окне предварительно определенной ширины 2m+1.

Word2vec имеет два варианта моделирования слов контекста (построения предсказывающей модели слов контекста), CBoW и Skip-gram:

  • CBoW (англ. Continuous Bag of Words, «непрерывный мешок слов», англ. bag — мультимножество) – вариант word2vec, который предсказывает текущее центральное слово окна контекста, исходя из окружающих его слов в окне контекста
  • Skip-gram (n-грамма с пропущенным центральным словом) — вариант word2vec, который предсказывает окружающие слова в окне контекста на основе текущего центрального слова окна контекста.

В алгоритме word2vec порядок слов контекста внутри окна не влияет на результирующий вектор представления.

Можно представить алгоритм word2vec как минимализированную и ускоренную нейросеть.

Базовый алгоритм машинного обучения алгоритма word2vec преследует целью максимизацию правдоподобия предсказываемых слов и с этой целью осуществляет нахождение минимума функционала J(Θ) отрицательного логаритмического правдоподобия (NLL, Negative Log Likelihood) функции потерь кросс-энтропии со-встречаемых слов в окне контекста.

Для нахождения минимума функционала NLL производится дифференциирование функции потерь (нахождение градиента ∇J= ∂J/∂Θ) и поиск минимума функции J(Θ) в пространстве векторных представлений слов Θ, с помощью алгоритма стохастического градиентного спуска (SGD).

В процессе итераций алгоритма SGD, с целью упрощения обработки векторов представлений слов, вектора слова 1) для случая когда оно центральное слово контекста и 2) когда оно не-центральное слово – эти 2 вектора одного и того же слова считаются отдельно, и в конце работы алгоритма обучения объединяются в один вектор путем взятия их среднего. Без применения этого трюка расчеты усложнятся из-за того что само слово не часто встречается в своём собственном контексте, но будучи встреченным породит искажение в расчетах.

Параметром обучения алгоритма является множество векторов Θ: Θ= [wc_1, wc_2, ..., wc_V, wo_1, wo_2, ..., wo_V],

где Vocabulary={w_i} списокк слов встреченных в корпусе

V = |Vocabulary| мощность списка слов встреченных в корпусе,

w_i – искомые векторные представления слов, d-мерные векторы, причём

wc_i – вектор, соответствующий расчетам, когда слово w_i встретилось в центре контекстного окна, и

wo_i – вектор, соответствующий расчетам, когда слово w_i является не центральным словом в окне контекста,

i пробегает значения от 1 до V.

Алгоритм SGD, работая над матрицей Θ стремится найти значения Θ, при которых достигается минимум функции потерь.

В результате в Θ получаются векторные представления слов.

Ускорение алгоритмов обучения

[править | править код]

Алгоритм word2vec (как и основанный на нем эффективный по скорости и как baseline по настоящее время алгоритм fastText) достиг своей популярности и признания благодаря своей повышенной скорости (в 25-100 раз) по сравнению со скоростью базового варианта алгоритма.

Базовый вариант алгоритма использует чрезвычайно многократное вычисление функции softmax() на каждом шаге.

Ускорение алгоритма word2vec достигается применением различных приемов.

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

Приемы можно разделить на 2 группы:

  • ускорение
  • разные виды сэмплирования (sub-sampling, отрицательное сэмплирование, hierarchical softmax и другие )

Идея отрицательного сэмплирования (negative sampling, SGNS), состоит в замене предсказания вероятности встретить слова из словаря в данном контексте, на алгоритм отбрасывающий и для этого штрафующий слова не встречаемые в этих контекстах.

Такую замену этой части алгоритма можно представить как переформулировку задачи в виде задачи классификации совместно встречаемых и не встречаемых слов в рамках окна контекста. И вычислить такую классификацию получается намного быстрее.

Оказалось, что включение в расчеты невстречаемых слов (достаточно 5-20 слов на каждом шаге) дает существенно удешевление вычислительных затрат по сравнению с вычислением точной вероятности вхождения всех слов словаря (вызов softmax()), на каждом шаге.

Результаты

[править | править код]

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

Word2vec выполняет прогнозирование на основании контекстной близости этих слов. Так как инструмент word2vec основан на обучении простой нейронной сети, чтобы добиться его наиболее эффективной работы, необходимо использовать большие корпусы для его обучения. Это позволяет повысить качество предсказаний.

В 2010 году Томаш Миколов (на тот момент работавший в Брненском техническом университете) вместе с соавторами применил простую рекуррентную нейронную сеть с одним скрытым слоем для языкового моделирования.[6]

Алгоритм Word2vec был разработан, запатентован[7] и опубликован в 2013 году группой исследователей под руководством Миколова в Google в двух научных статьях. Первоначальная статья была отклонена рецензентами конференции ICLR в 2013 году. Также потребовались месяцы, чтобы код получил одобрение на публикацию с открытым исходным кодом. Позднее другие исследователи проанализировали и объяснили алгоритм.[8]

Векторы вложений, создаваемые с использованием алгоритма Word2vec, имеют преимущества по сравнению с ранними подходами, такими как n-граммы и латентно-семантический анализ.

Алгоритм GloVe, разработанный командой из Стэнфорда, был создан как конкурент Word2vec. В оригинальной статье о GloVe были указаны улучшения по сравнению с Word2vec.[9] Однако Миколов утверждал, что сравнение было некорректным, так как GloVe обучался на большем объёме данных. Он также отметил, что проект fastText демонстрирует превосходство Word2vec при обучении на одинаковых данных.[10]

По состоянию на 2025 год подход Word2vec считается устаревшим для большинства задач. Однако он продолжает использоваться в нишевых приложениях, где требуется высокая вычислительная эффективность или ограниченные ресурсы. Например, Word2vec используется для обработки текстов на редких языках и для задач с небольшими объёмами данных, где современные трансформерные модели оказываются слишком ресурсозатратными.

Модели на основе трансформеров, такие как ELMo, BERT, GPT и другие, стали стандартом в обработке естественного языка (NLP). Они превосходят Word2vec по многим метрикам, добавляя несколько слоёв внимания и позволяя учитывать контекст на уровне всего текста. Тем не менее, развитие Word2vec и подобных алгоритмов продолжается: появляются модификации, ориентированные на специфические задачи, такие как мультиязыковая обработка или интеграция с квантовыми вычислениями.

Современные исследования продолжают изучать взаимосвязь между традиционными методами, такими как Word2vec, и новыми архитектурами. Это позволяет находить компромиссы между точностью, скоростью работы и вычислительными затратами, что особенно важно для практического применения.

Примечания

[править | править код]
  1. Mikolov et al., 2013a.
  2. Mikolov et al., 2013b.
  3. Bengio et al., 2003.
  4. Collobert and Weston, 2008.
  5. word2vec (англ.). Google Code Archive. Дата обращения: 24 апреля 2020. Архивировано 3 ноября 2020 года.
  6. Миколов, Томаш; Карафиат, Мартин; Буржет, Лукаш; Черноцкий, Ян; Худанпур, Санджив (2010-09-26). Рекуррентные нейронные сети для языкового моделирования. Interspeech 2010. ISCA: ISCA. pp. 1045–1048. doi:10.21437/interspeech.2010-343.
  7. Миколов, Томаш; Кай Чен & Грегори С. Коррадо et al., "Численное представление слов в многомерном пространстве", US 9037464, published 2015-05-19
  8. Голдберг, Йоав; Леви, Омер (2014). Объяснение Word2vec: Вывод метода негативной выборки из работы Миколова и др. arXiv:1402.3722 [cs.CL].
  9. GloVe: Global Vectors for Word Representation (pdf) Архивировано 3 сентября 2020 года. "We use our insights to construct a new model for word representation which we call GloVe, for Global Vectors, because the global corpus statistics are captured directly by the model."
  10. Жулин, Арман; Грейв, Эдуард; Божановски, Петр; Миколов, Томаш (2016-08-09). Bag of Tricks for Efficient Text Classification. arXiv:1607.01759 [cs.CL].

Литература

[править | править код]

Реализации на разных языках программирования