Это 22-й день моего участия в августовском испытании обновлений. Узнайте подробности мероприятия: Испытание августовского обновления
В задачах обработки естественного языка в качестве основной единицы обычно используются слова.Например, если мы хотим проанализировать настроение предложения «Я был в штате Вашингтон», общая практика состоит в том, чтобы сначала разделить предложение на слово.我
,去过
,华盛顿州
, так как нейронная сеть не может обрабатывать слова, нам нужно каким-то образом преобразовать эти слова в векторы слов. Вектор слова — это вектор, используемый для представления слова, и его также можно рассматривать как вектор признаков слова. Техника сопоставления слов с реальными векторами доменов также называется встраиванием слов.
Почему бы не использовать горячие векторы
Предположим, что количество различных слов в словаре равно, каждое слово может суммироваться от 0 доВзаимооднозначное соответствие последовательных целых чисел. Предположим, что соответствующее целое число слова представлено как, чтобы получить прямое векторное представление слова, мы создаем полностью нулевую длину, и преобразовать его в первыйустановить бит 1
Однако использование векторов горячих слов не является хорошим выбором. Одна из основных причин заключается в том, что вектор горячих слов не может выражать сходство между разными словами, например, косинусное сходство вектора горячих слов любой пары слов равно 0.
word2vec
В 2013 году команда Google выпустила инструмент word2vec. Инструмент word2vec в основном содержит две модели:модель со скип-граммомиНепрерывный мешок слов (сокращенно CBOW)и два метода эффективного обучения:отрицательная выборкаиИерархический софтмакс (иерархический софтмакс). Стоит отметить, что вектор слов word2vec лучше выражает сходство и аналогию между разными словами.
Модель слова «прыгать»
В модели пропуска слов мы используем слово, чтобы предсказать окружающие его слова в текстовой последовательности. Например, дана текстовая последовательность «тот», «мужчина», «ударил», «его», «сын». Если задать размер фонового окна равным 2, то модель скачкообразного изменения слов будет учитывать при заданном «попадании» вероятность генерации соседних слов «тот», «мужчина», «его», «сын» (в этом примере « хит"" называется центральным словом, "тот", "мужчина", "его", "сын" называются фоновыми словами), а именно
Предполагая, что генерация фоновых слов не зависит друг от друга при заданном центральном слове, приведенную выше формулу можно переписать как
Опишем модель пропуска слов. Предположим, что размер словаря, мы связываем каждое слово в словаре с 0 доОднозначное соответствие целых чисел: набор словарных индексов. Целое число, соответствующее слову в словаре, называется индексом слова при длинетекстовая последовательность,слово для момента. Когда размер временного окна, модель пропуска слов должна быть максимизированаВероятность создания фонового слова для любого центрального слова:
Оценка максимального правдоподобия приведенной выше формулы эквивалентна минимизации следующей функции потерь
мы можем использоватьвектор слова, представляющий заглавное слово,Векторы слов, представляющие фоновые слова. Другими словами, для индекса в словаре какслово, которое само имеет два вектораиВ процессе расчета выбираются разные векторы слов в соответствии с их разными ролями.Эти два вектора всех слов в словаре являются параметрами, которые должна изучить модель скачкообразного изменения слов.. Чтобы внедрить параметры модели в функцию потерь, нам нужно выразить вероятность того, что центральное слово в функции потерь генерирует фоновое слово, используя параметры модели. Предполагается, что вероятности заглавных слов не зависят друг от друга. данное заглавное словоИндекс в словаре, фоновое словоИндекс в словаре, вероятность того, что центральное слово в функции потерь генерирует фоновое слово, может быть определена с помощью функции softmax:
Когда длина последовательностиПри увеличении мы обычно случайным образом выбираем меньшую подпоследовательность для вычисления функции потерь и используем SGD для оптимизации этой функции потерь. Путем вывода мы можем вычислить логарифм вероятности генерации приведенной выше формулы относительно центрального вектора словаГрадиент:
Первая часть вывода
Вторая часть вывода
В итоге
После получения градиента с помощью приведенного выше расчета мы можем использовать стохастический градиентный спуск для непрерывного повторения параметров модели.. Другие параметры моделиТаким же образом можно получить итерационный метод. Наконец, для любого индекса в словаре какСлово, мы все получаем слово два набора слов для центрального слова и фоновые слова вектори
мешок непрерывных слов
Модель мешка слов похожа на модель скачкообразного изменения слов. Самое большое отличие от модели с прыгающими словами заключается в том, что модель с непрерывным набором словПредсказать заглавное слово со словами, окружающими текстовую последовательность с заглавным словом. Проще говоря, модель с пропуском слов использует центральное слово для предсказания окружающих слов, а модель непрерывного набора слов использует окружающие слова для предсказания центрального слова. Например, для текста «тот», «мужчина», «ударил», «его», «сын» модель мешка слов касается соседних слов «тот», «мужчина», «его». ,"son "Вероятность образования центрального слова "hit" вместе
Модель непрерывного мешка слов должна максимизировать вероятность создания любого центрального слова из фонового слова:
Оценка максимального правдоподобия приведенной выше формулы эквивалентна минимизации следующей функции потерь
мы можем использоватьиВекторы, представляющие фоновое слово и центральное слово соответственно (обратите внимание, что модели символа и слова перехода различны). данное заглавное словоИндекс в словаре, фоновое словоИндекс в словаре, вероятность того, что фоновое слово в функции потерь генерирует центральное слово, может быть определена с помощью функции softmax как
Аналогично, когда длина последовательностиКогда он больше, мы обычно случайным образом выбираем меньшую подпоследовательность для вычисления функции потерь и используем стохастический градиентный спуск для оптимизации функции потерь.Путем дифференцирования мы можем вычислить логарифм указанной выше вероятности генерации по отношению к любому вектору фонового словаГрадиент:
Приведенная выше формула эквивалентна следующей формуле:
примерный метод обучения
Можно видеть, что независимо от того, является ли это моделью со скачкообразным изменением слов или моделью непрерывного набора слов, стоимость вычисления градиента на каждом шаге такая же, как и у словаря.размер имеет положительную корреляцию. Очевидно, что этот метод обучения требует значительных вычислительных ресурсов, когда словарь большой. Таким образом, использование вышеуказанного метода обучения на практике затруднено. Мы можем использовать приближенные методы для расчета этих градиентов, тем самым снижая вычислительные затраты. Обычно используемые приблизительные методы обучения включаютотрицательная выборкаиПоследовательный софтмакс
отрицательная выборка
Возьмите модель пропуска слов в качестве примера, чтобы обсудить отрицательную выборку. СловарьПричина, по которой размер , появляется в целевой функции, заключается в том, что центральное словоГенерировать фоновые словаВероятностьИспользуется Softmax, а softmax учитывает, что фоновым словом может быть любое слово в словаре, и это отражается в знаменателе softmax.
Мы могли бы также изменить угол, предполагая, что центральное словоГенерировать фоновые словааппроксимируется следующими двумя независимыми совместными событиями
- центральное словои фоновое словотакже появляются в окне тренировочных данных
- центральное словоне появляется в окне обучающих данных одновременно с шумовым словом
- центральное словои первое шумовое словоне появляются в окне тренировочных данных одновременно (шумовые словаРаспределение по шумовым словамгенерируется случайным образом)
- ...
- центральное словоишумовое словоне появляются в окне тренировочных данных одновременно (шумовые словаРаспределение по шумовым словамгенерируется случайным образом)
мы можем использоватьфункция для выражения заглавного словаи фоновое словоВероятность появления обоих в окне обучающих данных:
Затем центральное словоГенерировать фоновые словаЛогарифмическая вероятность , может быть аппроксимирована как
Гипотетическое шумовое словоИндекс в словаре, приведенную выше формулу можно переписать как
Поэтому центральное словоГенерировать фоновые словаФункция потерь
Теперь накладные расходы на вычисление градиента для каждого шага обучения больше не связаны с размером словаря, аЛинейная корреляция. когдаПри выборе меньшей константы стоимость вычисления градиента каждого шага отрицательной выборки также меньше.
Точно так же модель непрерывного мешка слов также может быть подвергнута отрицательной выборке. родственные фоновые слова
Создать заглавное словоФункция потерь
При отрицательной выборке это можно аппроксимировать как
Последовательный софтмакс
Иерархический softmax использует двоичное дерево. Каждый листовой узел дерева представляет собой словарькаждое слово в . каждое словоСоответствующий вектор слов. Давайте возьмем следующий рисунок в качестве примера, чтобы описать рабочий механизм последовательных слоев softmax.
Предполагатьнаходится от корневого узла бинарного дерева до репрезентативного словаколичество узлов на пути листовых узлов и установитьво-первыхузел, вектор этого узла равен. Возьмем приведенную выше картинку в качестве примера,. Затем любые слова, которые должны быть рассчитаны с помощью модели с пропуском слов и модели набора непрерывных слов.сгенерированное словоВероятность:
Среди них, еслиправда,;Напротив
так как,Вероятность появления любого слова в словаре равна 1:
Вышеприведенная формула может быть более абстрактной. Вот конкретный пример для расчетагенерироватьВероятность того, что в бинарном дереве идет от корня кПуть нужно пройти влево, вправо и еще раз влево, так что мы получаем
Исходя из этого, мы можем использовать стохастический градиентный спуск для итеративного вычисления всех векторов слов в словаре в модели пропуска слова и модели непрерывного набора слов.и вектор нелистовых узлов. Вычислительная стоимость каждой итерации определяется выражениемУменьшить до высоты бинарного дерева
Последний вопрос, как устроено бинарное дерево иерархического софтмакса?
Бинарное дерево Дерево Хаффмана здесь, вес - это частота встречаемости слова в корпусе