Алгоритм динамического встраивания слов — ELMo

NLP
Алгоритм динамического встраивания слов — ELMo

Вектор слов, изученный традиционными моделями векторов слов, такими как Word2Vec и Glove, является фиксированным, то есть для слова существует только один вектор слов, что явно не подходит для полисемии. Алгоритм ELMo использует глубокую двунаправленную языковую модель (biLM), которая только обучает языковую модель, а вектор слова слова получается в режиме реального времени во входном предложении, поэтому вектор слова тесно связан с контекстной информацией, которая может лучше различать смысл.

1. Алгоритм статического вектора слов

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

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

  • «Просо» в «Я люблю есть просо» относится к еде.

  • «Xiaomi» в слове «Мобильный телефон Xiaomi прост в использовании» относится к бренду мобильного телефона.

Учитывая приведенные выше два предложения, векторы слов для «Xiaomi» в Word2Vec и Glove одинаковы, и более точный вектор слов не может быть указан в соответствии с контекстом.

иELMo— это алгоритм динамического вектора слов, который обучает biLSTM (двунаправленную модель LSTM) на большом корпусе. Когда нисходящей задаче необходимо получить вектор слов, все предложение вводится в biLSTM, а выходные данные biLSTM используются в качестве вектора слов слова, который содержит контекстную информацию. Можно понять, что biLSTM — это функция, вход функции — предложение, а выход — вектор слов в предложении.

2. Двунаправленная языковая модель

Прежде всего, я расскажу, что такое двунаправленная языковая модель и как получить вектор слова через biLSTM.Если вы не знакомы с LSTM, вы можете обратиться к предыдущей статье.«Рекуррентная нейронная сеть RNN, LSTM, ГРУ».

2.1 Двунаправленная языковая модель

Двунаправленные языковые модели включаютфорвардная модельиотсталая модель, для данного предложения из N слов T = [t(1), t(2), ..., t(N)],форвардная модельСледующее слово t(k) должно быть предсказано предыдущими словами [t(1), t(2),..., t(k-1)], а обратная модель должна предсказать предыдущее слово через следующие слова.

2.2 Используйте biLSTM для получения контекстно-зависимых векторов слов

biLSTM — это двунаправленная рекуррентная нейронная сеть, состоящая из прямой сети и обратной сети. Изображение выше — это biLSTM с L = 2 слоями.

Ввод каждого слова t(i) является вектором слов, этот вектор слов фиксирован, вы можете использовать вектор слов, сгенерированный Word2Vec или Glove, который используется в ELMo.CNN-BIG-LSTMСгенерированные векторы слов.Обратите внимание, что вектор слов при вводе ELMo является фиксированным, и ELMo передает вектор входных слов в biLSTM для получения динамической, включая контекстную информацию.

В статье ELMo используются следующие обозначения.Вывод каждого слоя в двунаправленном LSTM для i-го слова,впередВывод содержит семантику до i-го слова,назадВывод содержит семантику после i-го слова.

Добавлять формулы в статью сложно, поэтому используйтеh(k,j,→) представляет прямой вывод, используяh(k, j, ←) означает обратный вывод, пожалуйста, поймите.Выходы каждого слоя h (k-1, j, →) и h (k + 1, j, ←) являются динамическими векторами слов для слов.

LSTM имеет в общей сложности L слоев, для прямого LSTM вывод последнего слоя каждого слова t (k-1)h(k-1,L,→) используется для предсказания следующего слова t(k); для обратного LSTM вывод последнего слоя для каждого слова t(k+1)h(k+1,L, ←) используется для предсказания предыдущего слова t(k). В процессе прогнозирования используется softmax, а целевая функция, которую необходимо оптимизировать biLSTM, выглядит следующим образом:

θ(x) представляет вектор слов, когда слово вводится, и этот вектор слов фиксирован.θ(s) представляет слой softmax, который используется для предсказания слов до и после.θ(LSTM,→) представляет параметры прямого LSTM, используемые для вычисленияh(к-1, л, →).θ(LSTM, ←) представляет параметры обратного LSTM, используемые для вычисленияh(к-1,L, ←).

3. Алгоритм ELMo

3.1 Введение в процесс

Количество слоев biLSTM, используемых в ELMo, составляет L = 2. ELMo сначала обучает модель на большом наборе данных, а затем в последующих задачах может выводить вектор слов каждого слова в соответствии с входным предложением. Например, для предложения T = [t(1), t(2), ..., t(N)] ELMo вычисляет вектор слов следующим образом:

  • Найдите вектор слов E(1), ..., E(N) слова из статической таблицы векторов слов для ввода. ELMo использует в качестве входных данных векторы слов, сгенерированные CNN-BIG-LSTM.

  • Введите вектор слова E (1), ..., E (N) в первый слой вперед LSTM и назад LSTM соответственно, чтобы получить прямой выводh(1,1,→), ...,h(N,1,→), а обратный выводh(1,1, ←), ...,h(N, 1, ←).

  • прямой выводh(1,1,→), ...,h(N, 1, →) передается на прямой LSTM второго уровня, чтобы получить прямой выход второго уровня.h(1,2,→), ...,h(N,2,→); будет выводить в обратном порядкеh(1,1, ←), ...,h(N, 1, ←) передается обратному LSTM второго уровня, чтобы получить обратный вывод второго уровня.h(1,2, ←), ...,h(Н, 2, ←).

  • Тогда вектор слов, который наконец может получить слово i, включает E(i),h(Н,1,→),h(N, 1, ←),h(Н,2,→),h(N, 2, ←), если используется biLSTM L-слоя, можно окончательно получить 2L+1 словесный вектор.

3.2 Использование векторов слов

Выше мы знаем, что слово i в предложении может получить 2L+1 словесных векторов Как мы должны использовать эти 2L+1 словесные векторы в реальном использовании?

Сначала используйте вектор слов CNN-BIG-LSTM E(i) в качестве входных данных в ELMo, размерность E(i) равна 512. Тогда каждый слой LSTM может получить два вектора слов.h(я, слой, →) иh(i,layer, ←) оба вектора также 512-мерные. Тогда для слова i можно построить L+1 словесный вектор.

h(i,0) представляет собой прямую конкатенацию двух E(i), представляющих вектор входного слова, который является статическим и имеет 1024 измерения.

h(i,j) представляет два вектора выходных слов j-го слоя biLSTMh(i,j,→) иh(i,j, ←) напрямую связаны, что является динамическим, с 1024 измерениями.

Векторы слов разных слоев в ELMo часто имеют разную направленность.Вектор слов CNN-BIG-LSTM, используемый во входном слое, может лучше кодировать информацию о частях речи, первый слой LSTM может лучше кодировать синтаксическую информацию, а второй слой LSTM может лучше кодировать семантическую информацию слова.

Авторы ELMo предлагают два способа использования векторов слов:

Первый заключается в непосредственном использовании вывода последнего слоя biLSTM в качестве вектора слов, т.е.h(и, л).

Второй — более общий подход, при котором выходные веса L+1 объединяются вместе по следующей формуле. γ — это коэффициент, зависящий от задачи, который позволяет различным задачам НЛП масштабировать векторы ELMo, что может повысить гибкость модели. s(task,j) — весовые коэффициенты, нормализованные с помощью softmax.

3.3 ЭЛМО-эффект

Вот пример из статьи, верхняя строка — Glove, а две нижние строки — ELMo. Видно, что Glove ищет ближайшего соседа play, и появятся родственные слова, такие как «игра», «представление», «спорт» и т. д., которые могут отличаться от фактического значения paly в предложении. Но в ELMo вы можете видеть, что игра в первом предложении означает игру, и игра в ближайшем соседнем предложении также означает игру. Пьеса во втором предложении означает спектакль. Это показывает, что ELMo может лучше получить вектор слова в соответствии с контекстом.

4. Резюме ELMo

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

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

  • Векторы слов, полученные разными уровнями в biLSTM, имеют разные акценты.Вектор слов CNN-BIG-LSTM, используемый во входном слое, может лучше кодировать информацию о части речи, первый уровень LSTM может лучше кодировать синтаксическую информацию, а второй слой LSTM может лучше кодировать семантическую информацию слов. Окончательный вектор слов получается путем слияния многослойных векторов слов, и окончательный вектор слов может учитывать множество различных уровней информации.

5. Ссылки