Что такое Word2Vec?

Word2Vec – это метод обработки естественного языка (NLP), который преобразует значение слов в короткие плотные векторы (встраивания слов), которые можно использовать для последующих задач NLP, включая ответы на вопросы, поиск информации, машинный перевод и т. д. и языковое моделирование. Этот вектор (или векторы) контекстуализирует значение слов в корпусе, рассматривая слова, окружающие это слово. Миколов и др. опубликовал в 2013 году статью под названием «Эффективная оценка представлений слов в векторном пространстве», в которой был представлен этот подход.

Раньше слова представлялись в виде разреженных длинных векторов с размерностью, равной размеру полного словаря (общее количество слов), включенного в обучающий корпус до того, как был введен word2vec. Горячие векторы, векторизаторы подсчета, векторы Tf-Idf и т. д. являются примерами классических векторов. Установление какой-либо связи между словами — один из самых больших недостатков кодирования слов в виде разреженных векторов. Это связано с тем, что эти векторы не содержат достаточно информации о словах для установления таких синтаксических или семантических корреляций; например, однократные векторы ортогональны (перпендикулярны и имеют скалярное произведение 0) и, следовательно, не могут использоваться для количественной оценки сходства любого типа.

Цель word2vec, как было сказано ранее, состоит в том, чтобы гарантировать, что слова в сопоставимых контекстах в предложениях отображаются в одно и то же векторное пространство. Это говорит о том, что в корпусе слов слова с сопоставимыми терминами контекста имеют схожие векторы (с высоким косинусным сходством). Еще более удивительным является то, что сходство вложений слов выходит за рамки синтаксических закономерностей; мы можем проиллюстрировать более сложные соотношения между словами, используя основные алгебраические операции. Авторы, например, обнаружили, что вектор('Король') - вектор('Мужчина') + вектор('Женщина') дает вектор, наиболее похожий на векторное представление Королевы (вектор('Королева')).

Как работает Word2Vec?

Две архитектуры используются для обучения встраиваниям word2vec,

  1. Непрерывный мешок слов
  2. Skip-Gram

Непрерывный набор слов предсказывает центральное слово из окна выбранных контекстных слов для изучения представлений слов. Мы сэмплируем окно контекстных слов, окружающих определенное слово, вводим его в модель, а затем предсказываем центральное слово с помощью CBOW. Матрица весов между входным и проекционным слоями является общей для всех слов в этой архитектуре. На проекционном слое мы отображаем горячие векторы входных слов (контекстные слова) (встраивающий слой). Выходной слой создается путем умножения n-мерного слоя вложения на другую весовую матрицу. Чтобы получить распределение вероятностей по словам в словаре, мы проводим операцию softmax на выходном слое.

Skip-Gram предсказывает центральное слово на основе контекстных терминов в лексиконе. Мы пытаемся изучить векторное представление слова, предсказывая контекстные слова вокруг определенного слова. Алгоритм пытается максимально точно классифицировать слово в зависимости от другого слова во фразе. Чем выше качество векторов слов, тем длиннее должно быть окно зависимости. Авторы также обнаружили, что это увеличивает сложность системы и что далекие слова иногда менее связаны с моделируемым настоящим словом.

Новый альтернативный подход к обучению модели пропуска грамм, повышающий скорость обучения и качество представлений векторов слов, – отрицательная выборка.

Как работает отрицательная выборка?

В модели обучающих весов размерности (размер словарного запаса x размер вектора слова) подразумевается, что модель будет исчисляться миллиардами в зависимости от размера словаря. В результате нам пришлось бы обновлять каждый из этих параметров в каждом тренировочном цикле, что отнимает много времени. Мы будем выбирать список отрицательных слов для каждого обучающего примера (входное слово), используя отрицательную выборку. Эти отрицательные слова использовались вместе с выходным словом для обучения классификатора, который выводит 1 для выходных слов и 0 для отрицательных слов. Во время каждой итерации мы обновляем тренировочные веса только для этих слов, изучая вектор слов для входного слова.

Заключение

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