Портал:[НЛП] Принцип внимания и анализ исходного кода
Поскольку был предложен механизм внимания, модель Seq2seq с вниманием была усовершенствована в различных задачах, поэтому текущая модель seq2seq относится к модели, сочетающей rnn и внимание, Конкретный принцип можно найти в статье на портале. После этого Google предложил модель преобразователя для решения проблемы последовательности в последовательность, которая заменила lstm структурой полного внимания и добилась лучших результатов в задачах перевода. Эта статья в основном представляет собой статью "Внимание - это все, что вам нужно". Я все еще не понял ее, когда впервые прочитал. Надеюсь, я смогу заставить всех понять эту модель быстрее в моей собственной интерпретации ^ ^
1. Структура модели
Структура модели следующая:
Как и большинство моделей seq2seq, структура преобразователя также состоит из энкодера и декодера.
1.1 Encoder
Кодировщик состоит из N = 6 одинаковых слоев. Слой относится к единице в левой части рисунка выше. Крайний слева "Nx", здесь x6. Каждый уровень состоит из двух подуровней, механизма самоконтроля с несколькими головками и полностью подключенной сети прямой связи. Каждый из подуровней имеет остаточное соединение и добавленную нормализацию, поэтому выходные данные подуровня могут быть выражены как:
Далее два подуровня объясняются по порядку:
- Multi-head self-attention
Детская обувь, знакомая с принципом внимания, знает, что внимание может выражаться в следующих формах:
Многоголовое внимание достигается за счет h различныхЛинейное преобразованиеСпроектируйте Q, K, V и, наконец, объедините разные результаты внимания:
Само-внимание состоит в том, чтобы воспринимать Q, K и V одинаково.
Кроме того, при расчете внимания в статье используется масштабированное скалярное произведение, то есть:
Автор также упомянул другой вычислительный метод аналогичной сложности, аддитивное внимание, вКогда я был очень молод, результаты были похожи на скалярное произведение,Когда он большой, он будет работать лучше, если он не масштабируется, но скорость вычисления скалярного произведения выше, и влияние может быть уменьшено после масштабирования (поскольку градиент softmax слишком мал, см. ссылку в документе для подробностей).
- Position-wise feed-forward networks
Второй подуровень — это полностью связанный слой, который является позиционным, поскольку обработанный вывод внимания — это вывод внимания определенной позиции i.
1.2 Decoder
Структуры декодера и кодировщика похожи, но есть дополнительный подуровень внимания.Здесь давайте проясним процесс ввода, вывода и декодирования декодера:
- Выход: распределение вероятностей выходного слова, соответствующего позиции i.
- Вход: выход кодера и выход декодера, соответствующие позиции i-1. Таким образом, среднее внимание не является самостоятельным вниманием, его K, V исходят от кодировщика, а Q поступает с выхода декодера предыдущей позиции.
- расшифровка:Здесь следует обратить особое внимание: кодирование можно вычислять параллельно и кодировать все сразу, но декодирование не решает все последовательности сразу, а решает их одну за другой, как rnn., так как ввод предыдущей позиции используется как запрос внимания
После разъяснения процесса декодирования верхнее изображение легко понять. Основное отличие здесь состоит в том, что вновь добавленное внимание имеет дополнительную маску, потому что вывод во время обучения - это основная правда, которая может гарантировать предсказание. i-я позиция будет не подвергаться воздействию будущей информации.
Принцип внимания с маской показан на рисунке (многоголовое внимание прилагается):
1.3 Positional Encoding
В дополнение к основному Encoder и Decoder есть также части предварительной обработки данных. Transformer отказывается от RNN, а самым большим преимуществом RNN является абстракция данных во временных рядах, поэтому автор предлагает в статье два метода позиционного кодирования: суммирование закодированных данных и встраивание данных, а также добавление информации об относительном положении.
Здесь автор упоминает два метода:
- Прямой расчет с функциями синуса и косинуса разных частот
- Изучите позиционное вложение (использованная литература)
После экспериментов было обнаружено, что результаты двух методов одинаковы, поэтому в конечном итоге был выбран первый метод Формула выглядит следующим образом:
Авторы отмечают, что преимущества метода 1 двояки:
- в любом местевозможноПредставление линейной функции и характеристики тригонометрической функции рассматриваются ниже:
2. Если это изученное позиционное вложение (лично я не читал статью), оно будет ограничено размером словаря, как вектор слова. То есть можно узнать только представление «вектор, соответствующий позиции 2, равен (1,1,1,2)». Поэтому тригонометрическая формула заведомо не ограничена длиной последовательности, то есть может быть представлена более длинная последовательность, чем встречающаяся последовательность.
2. Преимущества
Автор в основном сделал следующие три пункта:
- Общая вычислительная сложность на слой
2. Amount of computation that can be parallelized, as mesured by the minimum number of sequential operations required
Авторы используют наименьшую операцию сериализации для измерения вычислений, которые можно распараллелить. То есть для последовательности, внимание к себе можно рассчитать напрямуюРезультат скалярного произведения , и rnn должен быть в порядке отРассчитано на
3. Path length between long-range dependencies in the network
Здесь длина пути относится к длине пути, по которому нужно пройти, чтобы вычислить длину последовательности из n информации. cnn нужно увеличить количество слоев свертки для расширения поля зрения, rnn нужно вычислять по одному от 1 до n, а для самовнимания нужен только один шаг вычисления матрицы. Таким образом, также можно увидеть, что внимание к себе может решить проблему долгосрочной зависимости лучше, чем rnn. Конечно, если объем вычислений слишком велик, например, длина последовательности n> размерность последовательности d, окно также можно использовать для ограничения количества вычислений с самостоятельным вниманием.
4. Кроме того, из каштанов, приведенных автором в приложении, видно, что модель самовнимания более интерпретируема, а результаты распределения внимания показывают, что модель усвоила некоторую синтаксическую и семантическую информацию
3. Недостатки
Недостатки не упоминались в исходном тексте, но позже были указаны в Универсальных Трансформерах, добавим их сюда, в основном по двум пунктам:
- На практике: некоторые проблемы, которые может легко решить rnn, не выполняются преобразователем, например, копирование строк, особенно когда последовательность длиннее обучающей последовательности.
- Теоретически: трансформаторы невычислительно универсальны (Полнота по Тьюрингу), (я думаю) потому что цикл "пока" не может быть реализован
4. Резюме
Transformer — первая модель, созданная с чистым вниманием, которая не только быстрее вычисляет, но и достигает лучших результатов в задачах перевода. Текущий перевод гугля надо делать на этой основе, но я спрашивал у одного-двух знакомых.Ответ получил что в основном зависит от объема данных.Если объем данных большой то может лучше использовать трансформер. Если он мал, продолжайте использовать модель на основе rnn.
выше.
【Использованная литература】: