Компиляция | Базовый лагерь технологий искусственного интеллекта (rgznai100)
Помолвка | Джей Чжан, Голубь
В сообществе НЛП была популярна шутка о том, что модель LSTM с механизмом внимания лучше всего справлялась с любой задачей НЛП. Хотя это было верно в течение последних двух лет, сейчас эта модель стала стандартной базовой линией, и по мере роста сообщества НЛП люди перешли к другим, более интересным моделям.
Однако автор этой статьи не хочет тратить 2 года в одиночку, чтобы открыть следующую модель LSTM с механизмом внимания, и при этом он не хочет опровергать некоторые существующие методы или методы, которые хорошо работают. В то время как многие существующие библиотеки глубокого обучения учитывают лучшие практики работы с нейронными сетями, такие как инициализация модели, существует множество других деталей, особенно для предметно-ориентированных задач, которые пользователям все еще необходимо учитывать.
Этот пост не рассказывает о текущем состоянии дел, а вместо этого объединяет различные лучшие практики и методы, связанные с конкретными задачами. другими словами,В этой статье не будет описываться конкретная архитектура модели, а будет рассказано о советах и методах применения этих моделей на практике.Эти практические методы и опыт часто очень эффективны для повышения производительности модели и даже могут заставить модель достичь наилучшего эффекта.Сравнивая с базовым уровнем, мы можем интуитивно лучше понять, почему они эффективны.
Предполагая, что вы уже знакомы с тем, как применять технологию нейронных сетей в области НЛП, интересуетесь общими или специфичными для предметной области задачами НЛП и хотите быстро освоить соответствующие передовые методы для получения значимых результатов как можно скорее, тогда это статья для вас.
В статье автор сначала перечислит лучшие практики и методы, применимые к большинству задач НЛП.Затем авторы перечислят лучшие практики и методы, связанные с некоторыми наиболее распространенными задачами НЛП, в частности такими задачами, как классификация, маркировка последовательностей, генерация естественного языка и нейронный машинный перевод.
Надеюсь помочь вам, следующие, наслаждайтесь!
слово вектор технологии
Технология векторных слов широко используется в недавней области НЛП. В литературе показано, что использование предварительно обученных векторов слов может помочь улучшить результаты модели. Оптимальный размер векторной размерности слова зависит от самой задачи: для задач, связанных с грамматикой, таких как распознавание именованных сущностей или тегирование частей речи, лучше иметь меньшую размерность вектора слова, а для семантически связанных задач, например, анализ настроений. Размерность вектора слов может быть увеличена.
Глубина модели
Модели нейронных сетей, используемые в НЛП, становились все глубже и глубже, хотя и не такими глубокими, как используемые в компьютерном зрении. Современные методы часто используют глубокие двунаправленные модели LSTM, обычно состоящие из 3-4 слоев, например, для задач маркировки частей речи и семантических ролей. Количество слоев модели, используемых для конкретных задач, может быть еще больше, см. Модель NMT от Google с 8-уровневым кодировщиком и декодером. Однако в большинстве случаев повышение производительности за счет углубления модели за пределы двух слоев незначительно.
Эти выводы применимы к большинству задач маркировки последовательностей и прогнозирования структуры. Для задач классификации глубокие модели работают лучше только тогда, когда ввод осуществляется на уровне символов, и в настоящее время использование поверхностных моделей по-прежнему является лучшим подходом.
связь между сетевыми уровнями
Для обучения глубоких нейронных сетей есть несколько приемов, которые очень важны, чтобы избежать проблемы дисперсии градиента. Были предложены различные сетевые уровни и методы соединения. Здесь мы обсудим три из них:
слои шоссе
остаточное соединение
плотное соединение
дорожный слой
Слой шоссе вдохновлен функцией ворот LSTM. Сначала предположим, что имеется однослойный MLP (Multilayer Perceptron, то есть полносвязная нейронная сеть), который будет выполнять нелинейное преобразование g-функции на входе x следующим образом:
Слой шоссе представляет собой функциональную трансформацию, подобную этой:
где ⊙ представляет умножение соответствующих элементов,
Слои шоссе использовались в языковых моделях с самыми современными результатами, а также использовались для других задач, таких как распознавание речи. На домашней странице Шриставы есть дополнительная информация и коды на уровне шоссе.
остаточное соединение
Введение остаточных соединений изначально использовалось в области компьютерного зрения, и это стало основной причиной победы в конкурсе ImageNet в 2016 году. Метод остаточного соединения является более прямым, чем слой магистрали, с использованием следующей функции:
Из приведенной выше формулы он просто добавляет вход текущего слоя к выходу. Эта простая модификация улучшает проблему рассеивания градиента, потому что даже если слой не оказывает большого влияния, он все равно может получить информацию исходного ввода (чтобы он не проходил).
плотное соединение
По сравнению с простым добавлением выходных данных каждого слоя непосредственно к входным данным следующего слоя, плотные соединения (Huang et al., 2017) (награда за лучшую статью на конференции CVPR 2017) увеличивают количество соединений с каждого слоя до прямых соединений все последующие слои. Мы используем h для представления выходных данных, x для представления входных данных и l для представления текущего слоя. Плотные соединения обеспечивают выходные данные всех сетевых слоев перед текущим слоем в качестве входных данных для текущего слоя:
где [⋅;⋅] обозначает конкатенацию. Плотные соединения успешно используются в области компьютерного зрения. Они также обнаружили, что этот метод соединений также полезен для многозадачного обучения различным задачам НЛП, в то время как для задач машинного перевода на основе нейронных сетей метод, использующий сумму остаточных переменных, оказался лучше, чем использование только остаточных соединений.
Выбывать
Хотя пакетная нормализация, широко используемая в компьютерном зрении, устранила другие методы регуляризации, отсев по-прежнему используется в качестве термина регуляризации в глубоких нейронных сетях, широко используемых в НЛП. В большинстве случаев отсев работает. В последние годы были предложены некоторые варианты отсева, такие как адаптивный отсев и развивающийся отсев, но эти методы не получили широкого распространения. Одна из проблем с Dropout в NLP заключается в том, что его нельзя использовать в повторяющихся слоях соединения, потому что наложение масок исключения сделает недействительным ввод конечного вектора слова.
выпадение петли
Периодическое выпадение решает эту проблему за счет использования той же маски выпадения в следующем слое, что не только позволяет избежать увеличения ошибки выпадения, но и эффективно упорядочивает модель последовательности. Например, повторяющиеся методы отсева использовались в задачах семантической маркировки ролей и языкового моделирования с самыми современными результатами на сегодняшний день.
Многозадачное обучение
При наличии достаточного количества дополнительных данных многозадачное обучение (MTL) часто можно использовать для повышения производительности целевой задачи. Прочтите этот пост в блоге, чтобы узнать больше о MTL.
Вспомогательная цель
Обычно мы можем найти некоторые вспомогательные цели, полезные для задачи. Например, предварительно обученный вектор слов можно получить путем предсказания окружающих слов в тексте, а результат вектора слов также можно использовать в качестве вспомогательной цели при обучении. (Ramachandranet al., 2016) [36] использует аналогичную вспомогательную цель для модели seq2seq.
Целенаправленный сетевой уровень
Хотя все распространенные методы многозадачного обучения в области НЛП основаны на совместном использовании параметров, это полезно для изучения различных слоев модели, ориентированных на задачи. Это можно сделать, поместив выходной слой задачи в нижний слой. Другой способ — использовать для достижения отдельное общее пространство.
Механизм внимания
Механизмы внимания чаще всего используются в процессе кодирования моделей seq2seq, но также могут использоваться в любой модели последовательности для просмотра прошлых состояний. Используя механизм внимания, можно основывать состояние скрытого слоя на
функция внимания
-
Аддитивный механизм внимания
-
Мультипликативный механизм внимания
-
внимание к себе
-
И iv) механизм внимания в форме ключ-значение.
Аддитивный механизм внимания
Первоначальный механизм внимания использует одноуровневую сеть прямой связи со скрытым уровнем для расчета выравнивания внимания следующим образом:
где Va и Wa – параметры усвоенного внимания. Соответственно, мы также можем использовать матрицы W1 и W2 для преобразования hi и sj соответственно, а затем просуммировать:
Мультипликативный механизм внимания
Механизм мультипликативного внимания упрощает вычисление исходной функции внимания следующим образом:
Механизмы аддитивного и мультипликативного внимания схожи по временной сложности, но на практике умножение выполняется быстрее и эффективнее с точки зрения использования памяти, поскольку оно может использовать преимущества эффективных алгоритмов умножения матриц. Когда размерность вектора декодера dh мала, их производительность одинакова; когда размерность велика, механизм аддитивного внимания будет работать лучше.
Механизм внимания может не только влиять на состояние кодировщика и использовать предыдущее состояние скрытого слоя, но также получать распределение входной информации (также форму признаков), например анализ вектора слов для текста в задачах понимания прочитанного. Однако механизм внимания не подходит для некоторых задач классификации, не требующих дополнительной информации, таких как классификация настроений. Модели, используемые для этого типа задач, обычно используют конечное скрытое состояние LSTM или используют функцию агрегирования, такую как максимальное объединение или среднее объединение, для получения представлений предложений.
Механизм самостоятельного внимания
Без какой-либо дополнительной информации мы все равно можем извлечь соответствующую информацию из предложения, обратив внимание на само предложение (т. е. само-внимание). Механизмы самостоятельного внимания (также известные как механизмы внутреннего внимания) успешно применялись к различным задачам, включая понимание прочитанного, вывод текста и генеративное обобщение.
Мы можем упростить модель аддитивного внимания, вычислив ненормализованную оценку выравнивания для каждого скрытого состояния hi:
Мы можем рассчитать вектор внимания a и окончательное представление вектора предложения c следующим образом:
Вместо извлечения только одного вектора мы используем матрицу Va для замены va, чтобы получить несколько точек внимания, а затем извлекаем матрицу матрицы внимания A:
На практике мы используем следующие ортогональные ограничения, чтобы предотвратить избыточность, и используем квадрат нормы Фробениуса, чтобы гарантировать разнообразие векторов внимания:
Аналогичный механизм многоголового внимания был принят Vaswani et al.
Механизм внимания в виде ключ-значение
Наконец, механизм внимания в виде ключ-значение — это вариант недавно предложенного механизма внимания, который, в отличие от использовавшейся ранее функции внимания, выполняет расчет внимания, поддерживая независимый вектор. Этот подход эффективно применяется к множеству задач моделирования документов. В частности, механизм внимания в виде ключ-значение разлагает каждый вектор скрытого слоя hi на ключ с ki и значение с vi: а именно
где L — длина окна внимания, а l — вектор. Затем используйте их, чтобы получить вектор представления контекста ci:
Вектор представления контекста ci и текущее значение vi объединяются для предсказания.
оптимизировать
Алгоритмы оптимизации и шаблоны оптимизации обычно также являются частью модели и рассматриваются как черный ящик. Иногда небольшие изменения в алгоритме оптимизации, такие как уменьшение значения β2 для Адама, могут иметь очень большое влияние на результаты оптимизации.
Алгоритм оптимизации
Адам — один из самых популярных и широко используемых алгоритмов оптимизации, и его часто выбирают исследователи в области НЛП. Обычно считается, что Адам значительно лучше, чем традиционный алгоритм стохастического градиентного спуска (SGD). Однако, хотя Адам сходится намного быстрее, чем SGD во время обучения, скорость отжига SGD по скорости обучения немного лучше, чем у Адама. Недавняя исследовательская работа также показывает, что правильная настройка импульса для SGD превзойдет алгоритм Адама.
Хотя Адам внутренне регулирует скорость обучения каждого параметра, мы по-прежнему используем отжиг в стиле SGD в Адаме. В частности, мы можем выполнить отжиг скорости обучения с перезапусками: установить скорость обучения и обучать модель до сходимости. Затем мы вдвое уменьшили скорость обучения и перезапустили алгоритм, загрузив ранее наиболее изученную модель. Для Адама это приводит к тому, что оптимизатор забывает свою предыдущую скорость обучения параметра и перезапускается. (Denkowski, M., & Neubig, G. (2017). Более надежные базовые показатели для надежных результатов в нейронном машинном переводе) показывают, что Адам имеет более высокую скорость обучения после двух перезапусков и превосходит SGD.
Модельный ансамбль
Улучшение конечной производительности путем интеграции нескольких моделей — эффективная стратегия, основанная на эмпирическом подходе. Хотя использование ансамблевых моделей может занять много времени на этапе тестирования, недавние исследования показывают, что сжатие ансамблевых моделей также возможно.
По мере увеличения разнообразия моделей ансамбль этих моделей является важным способом обеспечения надежных конечных результатов. Хотя ансамбль различных результатов для одной и той же модели оказывается эффективным, это происходит за счет разнообразия моделей. Периодические курсы обучения помогают смягчить этот эффект. Однако, учитывая достаточные вычислительные ресурсы, мы предпочитаем интегрировать несколько отдельно обученных моделей, чтобы максимизировать разнообразие моделей.
Оптимизация гиперпараметров
Простая их настройка может улучшить результаты модели по сравнению с простым использованием предопределенных или готовых гиперпараметров модели. Недавние достижения в области байесовской оптимизации сделали ее идеальным инструментом для оптимизации гиперпараметров в нейронных сетях, намного превосходящим широко используемый поиск по сетке. Автонастройка гиперпараметров простой модели LSTM на данный момент дает наилучшие результаты для языковых моделей, даже превосходя некоторые более сложные модели.
Советы по настройке моделей LSTM
Изучение начального состояния Мы обычно используем вектор 0 для инициализации начального состояния модели LSTM. По сравнению с начальным состоянием фиксированной модели мы можем рассматривать параметры начального состояния как параметры, которые необходимо изучить, что может улучшить производительность и также рекомендуется Хинтоном (https://www.cs.toronto.edu/). ~hinton/csc2535/notes/lec10new.pdf). Обратитесь к этому сообщению в блоге (https://r2rt.com/non-zero-initial-states-for-recurrent-neural-networks.html) для реализации Tensorflow.
Векторы слов, которые совместно используют ввод и вывод
Входные и выходные параметры вектора слов являются наиболее многочисленными параметрами в модели LSTM. Если LSTM используется в качестве языковой модели для предсказания слов, входные и выходные параметры могут быть общими. Эта практика особенно подходит для небольших наборов данных, поскольку размер данных ограничивает объем изучения параметров.
Нормализованное уменьшение градиентов
Один из способов снизить риск «взрыва градиентов» — урезать максимальное значение градиента. Однако это не улучшило характеристики модели. По сравнению с простым уменьшением максимального значения градиента эффект от уменьшения глобальной нормы градиента более значителен (здесь есть реализация Tensorflow).
Проецировать вниз
Чтобы еще больше уменьшить количество параметров на выходе, состояния скрытого слоя LSTM можно спроецировать на меньшее пространство. Это особенно полезно для задач с высокой производительностью, таких как языковое моделирование.
Лучшие практики для конкретных задач
Далее мы обсудим некоторые рекомендации для конкретных задач. Большинство из них лучше всего подходят для конкретной задачи, а некоторые из них могут работать и для других задач, но это необходимо проверить. Мы обсудим следующие приложения: классификацию, маркировку последовательностей, генерацию естественного языка (NLG) и частный случай NLG — машинный перевод на основе нейронных сетей.
Классификация
Модели CNN широко используются в задачах классификации в НЛП. Недавно было обнаружено, что модели CNN также подходят для задач типа последовательности из-за их эффективных операций свертки. Ниже приведены некоторые рекомендации, связанные с моделями CNN, и лучшие варианты гиперпараметров.
ядро свертки
Для достижения оптимальных результатов можно комбинировать ядра свертки разных размеров, например, комбинация размера ядра свертки (3, 4, 5) работает лучше всего. Оптимальное количество ядер свертки колеблется в пределах 50-600.
функция объединения
Максимальное объединение с выходом 1 работает лучше, чем среднее объединение и максимальное объединение с выходом k.
Маркировка последовательности
Обозначение последовательности — обычная задача в области НЛП. Большая часть существующего практического опыта связана с конкретными частями структуры модели, и нижеследующее предоставляет практический опыт на этапах вывода и прогнозирования модели.
Режим аннотации последовательности
Для некоторых задач текстовых аннотаций используется другая структура аннотаций. Среди них: режим BIO, при котором первый токен (токен), который появляется в текстовом фрагменте, помечается как тег B, остальные токены помечаются как теги I, а те, которые не относятся к токенам, помечаются как теги O; IOB режим, аналогичный для BIO, но отмеченный только B-меткой, если предыдущий токен был того же класса, но не входил в сегмент; также есть режим IOBES, который дополнительно различает однотокеновые сущности (S-метки ) и последний токен в токене сегмента A (тег E). Эффект, достигаемый в режимах IOBES и BIO, аналогичен.
Выходной слой CRF
Если между выходными данными существует взаимозависимая связь, например, для распознавания именованных объектов, последний слой softmax можно заменить линейным условным случайным полем (CRF). Экспериментальные результаты показывают, что это определенное улучшение для задач, где модель должна быть ограничена.
Ограниченный процесс декодирования
Ограничение декодирования — это способ предотвратить создание ошибочных последовательностей, т. е. отсутствие допустимых переходов BIO, по сравнению с использованием выходного уровня CRF. Преимущество декодирования с ограничениями состоит в том, что можно применять произвольные ограничения, что подходит для некоторых конкретных задач, например задач, требующих применения синтаксических ограничений.
Генерация естественного языка
Большая часть текущего практического опыта также применима к генерации естественного языка (NLG). На самом деле, многие практические методы на сегодняшний день были получены из языкового моделирования, самой примитивной задачи НЛП.
Охват результатов модели
Проблема дублирования вывода — это большая проблема, с которой сталкиваются многие задачи NLG, потому что современные модели не имеют хорошего способа запоминания результатов вывода, полученных моделью. Использование покрытия выходных данных модели в модели — хороший способ решить эту проблему. Если заранее подготовлен список, в том числе, какие объекты должны быть упомянуты в выходных данных, например (Киддон, К., Зеттлемойер, Л., и Чой, Ю. (2016). Генерация глобального когерентного текста с нейронными моделями контрольных списков. Материалы конференции 2016 г. по эмпирическим методам обработки естественного языка (EMNLP2016), 329–339). Если мы используем механизм внимания, мы можем записать вектор охвата ci, который представляет собой сумму распределений внимания на предыдущих временных шагах:
Этот вектор показывает, насколько мы уделили внимание всем словам во входных данных. Мы можем запретить модели использовать повторяющиеся слова в выводе, контролируя этот вектор, представляющий покрытие:
Кроме того, мы можем добавить вспомогательную функцию потерь, чтобы зафиксировать распределение внимания, которое мы хотим для конкретной задачи: для NMT мы хотим выровнять примерно один к одному; поэтому, если метрики, охватывающие векторы, искажены, мы модель будет наказана соответственно. Таким образом, когда модель повторно использует одну и ту же часть входных данных, обучение модели должно быть соответствующим образом оштрафовано.
машинный перевод на основе нейронной сети
Хотя машинный перевод на основе нейронных сетей (NMT) является лишь одним из примеров NLG, NMT получил большое внимание, и специально для него было разработано множество моделей и методов. Соответственно, многие из лучших практик или оптимальных вариантов гиперпараметров применимы только к самой задаче NMT.
Размерность вектора слова
Производительность модели наилучшая, когда размерность вектора слов установлена равной 2048, но это дает небольшое улучшение. На самом деле, даже когда размерность вектора слова равна 128, производительность модели очень хорошая, а скорость сходимости будет почти в два раза выше.
Количество слоев кодера и декодера
Количество слоев энкодера не должно превышать 2-4 слоев. Хотя глубокая модель лучше мелкой, для декодера лучше иметь не более 44 слоев.
направление кодирования
Двунаправленные энкодеры превосходят однонаправленные энкодеры. Суцкевер и др. (2014) [67] предположили, что изменение направления ввода исходной последовательности помогает снизить зависимость от долговременной памяти. Инверсия исходной последовательности в одностороннем кодере дает лучшие результаты, чем отсутствие инверсии.
Стратегия поиска луча
Размер настройки поиска луча составляет около 10, и наилучшая производительность модели может быть достигнута при одновременной регулировке длины.
перевод слова
Сенрих и др. (2016) [66] предложили подход, основанный на кодировании пар байтов (BPE), для разделения слов на последовательности слов. BPE итеративно объединяет часто встречающиеся пары символов, в конечном итоге объединяя часто встречающиеся энграммы в один символ, эффективно отсеивая слова, которых нет в лексиконе. Хотя этот метод изначально был разработан для обработки редких слов, модели, которые обрабатывают словесные единицы, в целом превосходят системы с целыми словами, при этом размер словарного запаса слов составляет 32 000.
Суммировать
Надеюсь, эта статья поможет вам начать работу с новыми задачами НЛП. Даже если вы уже знакомы с большинством из них, я надеюсь, что вы узнали что-то новое или углубили свои предыдущие знания.
исходный адрес
http://ruder.io/deep-learning-nlp-best-practices/index.html#attention
(Примечание: в этой статье есть много ссылок, и они не перечислены здесь. Для просмотра исходного текста вы можете обратиться к полным ссылкам)
- Конец -