Визуально сравните четыре модели NLP — Neural Network, RNN, CNN, LSTM.

алгоритм
Визуально сравните четыре модели NLP — Neural Network, RNN, CNN, LSTM.

Текст / Департамент Али ТаоF(x) Team- Зиджин

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

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

Содержание этой статьи в значительной степени основано на курсе Стэнфорда CS224N и настоятельно рекомендуется всем, кто интересуется НЛП. Каждый раздел также содержит дополнительные ссылки на соответствующие документы и статьи, чтобы вы могли глубже погрузиться в тему.


Нейронные сети

Дополнительная литература: порекомендуйте книгу Майкла Нельсона «Нейронные сети и глубокое обучение» здесь.

принцип

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


  1. Принимая на вход последовательность слов, количество слов фиксируется, что называется фиксированным окном.
  2. Для каждого слова найдите вложение слова, чтобы преобразовать слово в вектор, затем соедините векторы слов, чтобы получить матрицу.
  3. Скрытый слой получается путем пропускания соединительной матрицы через линейный слой и функцию нелинейности.
  4. Выходное распределение получается путем помещения скрытого слоя в другой линейный слой и функции активации, такой как softmax или tanh. Имея дополнительные скрытые слои, модель может изучать нелинейные взаимодействия между факторами входного слова.

Проблемы с нейронными сетями

  1. Неподвижные окна могут быть слишком маленькими. Например, рассмотрим предложение выше. Если бы в фиксированное окно было введено 5 слов, то мы получили бы «мой день начался потрясающе», игнорируя контекст для остальной части предложения.
  2. Увеличение фиксированного окна усложняет модель. Если мы увеличим масштаб модели, весовая матрица, используемая для вычисления линейных слоев, также увеличится. Если вы делаете длинный обзор, ваше окно никогда не будет достаточно большим, чтобы вместить весь контекст.
  3. Поскольку веса для каждого слова независимы, каждый раз, когда один из столбцов матрицы весов корректируется на 1 слово, остальные столбцы соответствующим образом не корректируются, что делает модель неэффективной. Это проблема, потому что слова в предложении должны иметь что-то общее, и изучение каждого слова по отдельности не будет использовать это свойство.

RNN (рекуррентная нейронная сеть)

Чтобы понять последовательные характеристики человеческого языка, исследователи разработали рекуррентные нейронные сети (RNN) для улучшения традиционных нейронных сетей. Основной принцип RNN состоит в том, чтобы проходить каждый вектор слов слева направо, сохраняя данные для каждого слова, так что, когда мы достигнем последнего слова, у нас все еще будет информация о предыдущих словах.

принцип

(Практика RNN в анализе настроений, источник:  Stanford CS224N lecture slide)


  1. Выберите последовательность слов (предложений) в качестве входных данных.
  2. Найдите вложение слова для каждого слова, чтобы преобразовать слово в вектор. В отличие от нейронных сетей, RNN не объединяют все векторы слов в одну матрицу, потому что цель RNN состоит в том, чтобы поглощать информацию из каждого вектора слов отдельно для получения последовательной информации.
  3. Для каждого шага (каждого вектора слов) мы используем текущее скрытое состояние (умноженное на матрицу весов) и информацию в новом векторе слов для вычисления текущего скрытого состояния. По сути, когда модель достигает последнего слова текста, мы получаем скрытое состояние, содержащее информацию из предыдущих скрытых состояний (и, следовательно, предыдущих слов).
  4. В зависимости от задачи, которую мы решаем, существует несколько способов расчета выхода. Например, если мы работаем над языковой моделью (находим слова, следующие непосредственно за предложением), то мы можем поместить последнее скрытое состояние через другой линейный слой и функцию активации. В этом случае имеет смысл использовать последнее скрытое состояние, так как следующее слово, скорее всего, будет наиболее связано с предыдущим словом. Но если мы проводим анализ тональности, хотя мы можем использовать последнее скрытое состояние, более эффективным способом является вычисление выходного состояния для всех предыдущих скрытых состояний и получение среднего значения этих выходных состояний. Обоснование использования выходного состояния всех предыдущих скрытых состояний заключается в том, что общее настроение может подразумеваться в любом месте текста (а не только начиная с последнего слова).

Преимущества перед нейронными сетями

  1. Может обрабатывать входные данные любой длины, решая проблему фиксированного размера окна нейронных сетей.
  2. Применение одной и той же матрицы весов к каждому входу — проблема, с которой сталкиваются нейронные сети. Имея ту же матрицу весов, более эффективно использовать RNN для оптимизации матрицы весов в этом отношении.
  3. Размер модели остается постоянным для любой длины ввода.
  4. Теоретически RNN по-прежнему будет учитывать много слов в начале предложения, что даст модели контекст всего текста. В нашем упражнении по анализу настроений для рецензий на фильмы контекст будет очень важен, рецензенты могут часто включать в один обзор положительные высказывания «спецэффекты великолепны» и отрицательные предложения «игра ужасна», чтобы модель могла понять контекст всего обзор имеет решающее значение.

Проблемы с RNN

  1. RNN медленны в вычислительном отношении, потому что каждое скрытое состояние не может быть вычислено до тех пор, пока не будет вычислено предыдущее скрытое состояние. В отличие от нейронных сетей, RNN нельзя распараллелить, а обучение моделей RNN требует больших ресурсов.
  2. Проблема исчезающего градиента: Проблема исчезающего градиента относится к явлению, когда более ранние скрытые состояния меньше влияют на конечное скрытое состояние, тем самым ослабляя влияние более ранних слов на общий контекст. Это означает, что хотя информация из более старого скрытого состояния будет по-прежнему передаваться в новое скрытое состояние, с каждым новым скрытым состоянием информация будет становиться все меньше и меньше. Например, если первое скрытое состояние = [1] и весовая матрица = [0,1], влияние первого скрытого состояния на второе скрытое состояние будет [первое скрытое состояние x весовая матрица] = [0,1]. В третьем скрытом состоянии влияние первого скрытого состояния на третье скрытое состояние составляет [0,1 x 0,1] = [0,01]. Это говорит о том, что влияние более старых скрытых состояний будет постепенно уменьшаться, пока эффект не перестанет быть заметным. Проблема исчезающего градиента может быть математически выведена с использованием цепного правила путем вычисления градиента потерь по отношению к любому скрытому состоянию. Если вам интересно узнать об этом больше, Denny Britz'sэта статьяБудет дано очень подробное объяснение.

Для решения этих проблем исследователи разработали множество вариантов RNN. В этой статье мы обсудим LSTM и кратко представим двунаправленные RNN (двунаправленные RNN), но вы также можете пойти дальше и самостоятельно изучить больше примеров, таких как многоуровневые RNN и GRU.

LSTM (модель долговременной кратковременной памяти)

LSTM — это реактивное решение проблемы исчезающего градиента RNN. Помните, как RNN пытаются сохранить информацию из предыдущих слов? Принцип LSTM заключается в том, что машина узнает важность предыдущих слов, чтобы мы не потеряли информацию из более ранних скрытых состояний. Подробное руководство по LSTM можно найти на сайте Colah's.иллюстрацияИнструкции отличные. ​

принцип


  1. Выберите последовательность слов (предложений) в качестве входных данных.
  2. Найдите вложение слова для каждого слова, чтобы преобразовать слово в вектор.
  3. Для каждого шага (встраивание формулировок) мы выбираем информацию, которую нужно забыть, из предыдущего состояния (например, предыдущее предложение в прошедшем времени, а текущее предложение в текущем времени, затем мы «забываем» предыдущее предложение в прошлом). напряженный факт, так как это не имеет ничего общего с текущим предложением), какая информация запоминается из текущего состояния. Вся эта информация хранится в новом состоянии, называемом состоянием ячейки, которое используется для переноса информации из прошлого в том виде, в котором она должна быть запомнена.
  4. Каждый шаг имеет скрытое состояние, которое берет информацию из состояния ячейки, чтобы решить, что выводить для каждого слова.

Преимущества по сравнению с RNN

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

проблема

  1. Как и RNN, LSTM не могут решить проблему распараллеливания RNN, потому что каждое скрытое состояние и состояние ячейки должны быть вычислены до того, как можно будет вычислить следующее скрытое состояние и состояние ячейки. Это также означает, что для обучения LSTM требуется больше времени и больше памяти.
  2. Пока что и RNN, и LSTM описывают одно направление: слева направо. Это означает, что для таких задач, как машинный перевод, нам не хватает контекста для слов, которые мы еще не видели (в основном ниже). Это мотивировало создание другого варианта RNN и LSTM, которые мы называем двунаправленными RNN или двунаправленными LSTM. Двунаправленные LSTM часто встречаются в документах и ​​приложениях из-за их полезности для понимания контекста.

Добавить уровень внимания в LSTM

Эта часть документа основана на документе Google Attention is All You Need и документе Hierarchical Attention Networks for Document Classification, совместно подготовленном CMU и Microsoft.

Сначала мы используем абзац из книги «Внимание — это все, что вам нужно», чтобы объяснить концепцию внимания.

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

Предположим, мы хотим перевести «стол красный» на французский язык. Обратите внимание, что мы даем каждому слову в исходном предложении вектор внимания, например, «the» будет иметь вектор внимания, «table» будет иметь вектор внимания и так далее. В векторе внимания для каждого слова, скажем, в векторе внимания для «the», у нас есть элементы для каждого слова в предложении, и n-й элемент в векторе внимания представляет n-е слово со словом «the». Например, если вектор внимания для «the» равен [0,6, 0,3, 0,07, 0,03], то «the» является наиболее релевантным для «the» (исходное слово наиболее релевантно самому себе) и наименее релевантным для «the». красный'. ​

Поскольку наше упражнение будет основано на анализе тональности (а не на переводе), мы не будем рассматривать механизм кодировщика-декодера, описанный в статье «Внимание». Вместо этого давайте взглянем на статью Hierarchical и посмотрим, как внимание вписывается в нашу стандартную модель LSTM в классификации текста.

принцип

  1. Выполните шаги 1-3 LSTM, чтобы создать скрытое состояние для каждого слова.
  2. Для каждого скрытого состояния мы передаем его другому скрытому слою нейронной сети. Это позволяет вычислять все скрытые состояния одновременно, тем самым решая проблему распараллеливания LSTM.
  3. Мы получаем нормализованную важность от 0 до 1 для каждого слова. Например, в «Я люблю этот фильм» слово «любовь» наиболее важно для значения предложения, поэтому «любовь» будет иметь более высокое нормализованное значение. 
  4. Векторы предложений вычисляются с использованием каждого скрытого состояния и нормализованной важности, которая является «оценкой» для каждого предложения. Векторы предложений очень важны в этой модели, потому что каждый вектор предложений будет использоваться в другом слое LSTM для определения общего настроения текста и, следовательно, классификации текста.

Преимущества по сравнению с LSTM

  1. Лучшая производительность: как указано в документе Hierarchical, использование трансформаторов может превзойти предыдущие модели. Вероятно, это происходит из-за нормализованной важности каждого слова. В этой статье слово «хороший» используется в качестве примера, чтобы проиллюстрировать, что важность слов сильно зависит от контекста. Использование слова «хороший» в обзоре не означает автоматически, что это положительный отзыв, поскольку в контексте его можно использовать как «плохой». Модель умеет подчеркивать важные слова в важных предложениях.

CNN (Сверточная нейронная сеть)

CNN часто используются при обработке изображений, но было показано, что эта архитектура успешно решает проблемы NLP, особенно при классификации текста. Подобно приведенной выше модели, CNN работает, «получая самые важные слова» для классификации предложений.

принцип

CNN в иллюстрациях НЛП Источник: Чжан Ю. и Уоллес Б. (2015 г.) Анализ чувствительности (и практическое руководство) сверточных нейронных сетей для классификации предложений.


  1. Используйте встраивание слов для преобразования слов в векторы.
  2. Объединяйте векторы слов в матрицу партиями.
  3. Поместите матрицу слов в слой, аналогичный скрытому слою нейронной сети, используя фильтры вместо весов. Каждый фильтр будет представлять категорию слов, такую ​​как еда, вежливость и т. д., поэтому после этого слоя каждая матрица слов будет иметь оценку по каждой категории слов.
  4. Для каждой категории слов мы выбираем наивысший балл из всех слоев.
  5. Классифицировать текст с помощью функции softmax.

Например, в предложении «Я люблю этот фильм» «положительные эмоции» будут иметь высокий балл, потому что у нас есть слово «любовь». Несмотря на то, что «это» или «фильм» могут быть не особенно положительными, CNN все же может распознать это предложение как положительное предложение.

Преимущества по сравнению с RNN

  1. Хорошая производительность классификации: как описано в этой статье, хотя простая статическая модель CNN имеет небольшую точную настройку своих параметров, она работает хорошо даже по сравнению с более сложными моделями глубокого обучения (включая некоторые модели RNN).
  2. Становится возможной параллельная обработка, так что это более гибкая и эффективная модель, чем RNN.

проблема

  1. Требуется заполнение: чтобы модель принимала все слова, требуется заполнение как перед первым словом, так и после последнего слова.

Суммировать

Напомним, что в этой статье мы рассмотрели основы традиционных нейронных сетей, рекуррентных нейронных сетей, LSTM и преобразователей. Мы обсудили их соответствующие преимущества и недостатки, чтобы проиллюстрировать, почему были разработаны новые модели.



Front-end-F-x-Team Amoy открывает WeiboЛа! (Отображается после входа в Weibo)
Помимо статей, вас ждет разблокировка еще командного контента ?