Часть серии статей о |
Машинное обучение и интеллектуальный анализ данных |
---|
Внимание — это метод машинного обучения , который определяет относительную важность каждого компонента в последовательности по отношению к другим компонентам в этой последовательности. В обработке естественного языка важность представлена «мягкими» весами, назначенными каждому слову в предложении. В более общем смысле внимание кодирует векторы, называемые вложениями токенов , в последовательности фиксированной ширины , размер которых может варьироваться от десятков до миллионов токенов.
В отличие от «жестких» весов, которые вычисляются во время обратного прохода обучения, «мягкие» веса существуют только в прямом проходе и, следовательно, изменяются с каждым шагом ввода. Более ранние разработки реализовали механизм внимания в системе перевода языка последовательной рекуррентной нейронной сети (RNN), но более поздняя разработка, а именно трансформатор , удалила более медленную последовательную RNN и в большей степени полагалась на более быструю параллельную схему внимания.
Вдохновленный идеями о внимании у людей , механизм внимания был разработан для устранения недостатков использования информации из скрытых слоев рекуррентных нейронных сетей. Рекуррентные нейронные сети отдают предпочтение более новой информации, содержащейся в словах в конце предложения, в то время как информация, находящаяся ранее в предложении, имеет тенденцию ослабляться . Внимание позволяет токену равный доступ к любой части предложения напрямую, а не только через предыдущее состояние.
Научные обзоры истории механизма внимания представлены в работах Ниу и др. [1] и Сойданера [2] .
Избирательное внимание у людей хорошо изучено в нейронауке и когнитивной психологии. [3] В 1953 году Колин Черри изучал избирательное внимание в контексте аудирования, известное как эффект коктейльной вечеринки . [4]
В 1958 году Дональд Бродбент предложил модель фильтра внимания . [5] Избирательное внимание зрения изучалось в 1960-х годах Джорджем Сперлингом в рамках парадигмы частичного отчета . Было также замечено, что контроль саккад модулируется когнитивными процессами, поскольку глаз преимущественно движется к областям высокой заметности . Поскольку ямка глаза мала, глаз не может резко разрешить все поле зрения сразу. Использование контроля саккад позволяет глазу быстро сканировать важные особенности сцены. [6]
Эти исследовательские разработки вдохновили такие алгоритмы, как Неокогнитрон и его варианты. [7] [8] Между тем, разработки в области нейронных сетей вдохновили модели схем биологического зрительного внимания. [9] [2] Например, одна хорошо цитируемая сеть 1998 года была вдохновлена низкоуровневой зрительной системой приматов . Она создавала карты заметности изображений, используя созданные вручную (не выученные) признаки, которые затем использовались для руководства второй нейронной сетью при обработке участков изображения в порядке уменьшения заметности. [10]
Ключевой аспект механизма внимания можно записать (схематически) как: где угловые скобки обозначают скалярное произведение. Это показывает, что оно включает в себя мультипликативную операцию. Мультипликативные операции в искусственных нейронных сетях изучались под названиями группового метода обработки данных (1965) [11] [12] (где полиномы Колмогорова-Габора реализуют мультипликативные единицы или «ворота» [13] ), нейронные сети более высокого порядка , [14] единицы умножения , [15] единицы сигма-пи , [16] быстрые контроллеры веса , [17] и гиперсети . [18]
В быстром контроллере веса ( Schmidhuber , 1992) одна из двух его сетей имеет «быстрые веса» или «динамические связи» (1981). [19] [20] [21] Медленная нейронная сеть обучается с помощью градиентного спуска для генерации ключей и значений для вычисления изменений веса быстрой нейронной сети, которая вычисляет ответы на запросы. [17] Позже было показано, что это эквивалентно ненормализованному линейному трансформатору. [22] В последующей статье была разработана похожая система с активным изменением веса. [23]
В эпоху глубокого обучения был разработан механизм внимания для решения аналогичных проблем кодирования-декодирования. [1]
В машинном переводе модель seq2seq , предложенная в 2014 году [24], будет кодировать входной текст в вектор фиксированной длины, который затем будет декодироваться в выходной текст. Если входной текст длинный, вектор фиксированной длины не сможет нести достаточно информации для точного декодирования. Для решения этой проблемы был предложен механизм внимания.
В 2015 году была предложена модель подписи изображений, вдохновленная моделью seq2seq [25] , которая кодировала бы входное изображение в вектор фиксированной длины. Сюй и др. (2015), [26] ссылаясь на Бахданау и др. (2014), [27] применили механизм внимания, используемый в модели seq2seq, к подписи изображений.
Одной из проблем с моделями seq2seq было использование ими рекуррентных нейронных сетей, которые не поддаются распараллеливанию, поскольку и кодер, и декодер должны обрабатывать последовательность токенов по одному токену. Decomposable Attention [28] попытались решить эту проблему, обрабатывая входную последовательность параллельно, перед вычислением «мягкой матрицы выравнивания» ( термин выравнивания используют Баганау и др. [27] ), чтобы обеспечить параллельную обработку.
Идея использования механизма внимания для собственного внимания вместо кодера-декодера (перекрестное внимание) также была предложена в этот период, например, в дифференцируемых нейронных компьютерах [29] и нейронных машинах Тьюринга . [30] Это было названо интра-вниманием [31], где LSTM дополняется сетью памяти, поскольку она кодирует входную последовательность.
Эти направления развития были объединены в 2017 году в архитектуре Transformer , опубликованной в статье Attention Is All You Need .
Сеть внимания была разработана для выявления моделей высокой корреляции между словами в заданном предложении, предполагая, что она изучила модели корреляции слов из обучающих данных. Эта корреляция фиксируется как нейронные веса, изученные во время обучения с обратным распространением .
Эта схема внимания была сравнена с аналогией Query-Key реляционных баз данных. Это сравнение предполагает асимметричную роль для векторов Query и Key, где один интересующий элемент (вектор Query «that») сопоставляется со всеми возможными элементами (векторами Key каждого слова в предложении). Однако параллельные вычисления как Self, так и Cross Attentions сопоставляют все токены матрицы K со всеми токенами матрицы Q; поэтому роли этих векторов симметричны . Возможно, потому что упрощенная аналогия с базой данных несовершенна, много усилий было вложено в дальнейшее понимание Attention путем изучения их ролей в целевых настройках, таких как контекстное обучение, [32] маскированные языковые задачи, [33] урезанные трансформаторы, [34] статистика биграмм, [35] статистика N-грамм, [36] попарные свертки, [37] и арифметическая факторизация. [38]
Метод seq2seq, разработанный в начале 2010-х годов, использует две нейронные сети: сеть кодировщика преобразует входное предложение в числовые векторы, а сеть декодера преобразует эти векторы в предложения на целевом языке. Механизм Attention был привит к этой структуре в 2014 году и показан ниже. Позже он был усовершенствован в дизайне Transformer (2017).
Этикетка | Описание |
---|---|
100 | Макс. длина предложения |
300 | Размер вложения (размер слова) |
500 | Длина скрытого вектора |
9к, 10к | Размер словаря входного и выходного языков соответственно. |
х , Y | 9k и 10k 1-hot векторов словаря. x → x реализовано как таблица поиска, а не как векторное умножение. Y — это 1-hot максимизатор линейного слоя декодера D; то есть он берет argmax выходного сигнала линейного слоя D. |
х | Вектор встраивания слов длиной 300. Векторы обычно предварительно рассчитываются из других проектов, таких как GloVe или Word2Vec . |
час | Скрытый вектор кодировщика длиной 500. В каждый момент времени этот вектор суммирует все предшествующие ему слова. Последний h можно рассматривать как вектор «предложения» или вектор мысли , как называет его Хинтон. |
с | Вектор скрытого состояния декодера длиной 500. |
Э | 500 нейронов рекуррентного нейросетевого кодера. 500 выходов. Количество входов составляет 800–300 от исходного внедрения + 500 от рекуррентных соединений. Кодер напрямую подает данные в декодер только для его инициализации, но не после этого; поэтому эта прямая связь показана очень слабо. |
Д | 2-слойный декодер. Рекуррентный слой имеет 500 нейронов, а полностью связанный линейный слой имеет 10 тыс. нейронов (размер целевого словаря). [40] Только линейный слой имеет 5 миллионов (500 × 10 тыс.) весов – примерно в 10 раз больше весов, чем рекуррентный слой. |
счет | 100-долгое выравнивание оценка |
ж | 100-длинный векторный вес внимания. Это «мягкие» веса, которые изменяются во время прямого прохода, в отличие от «жестких» нейронных весов, которые изменяются во время фазы обучения. |
А | Модуль внимания – это может быть скалярное произведение рекуррентных состояний или полностью связанных слоев запрос-ключ-значение. Выход – вектор w длиной 100. |
ЧАС | 500×100. 100 скрытых векторов h, объединенных в матрицу |
с | Вектор контекста длиной 500 = H * w. c — линейная комбинация векторов h, взвешенных по w. |
При переводе между языками выравнивание — это процесс сопоставления слов из исходного предложения со словами переведенного предложения. В примере I love you выше второе слово love выравнивается с третьим словом aime . Складывание мягких векторов строк вместе для je , t' и aime дает матрицу выравнивания :
я | любовь | ты | |
---|---|---|---|
je | 0,94 | 0,02 | 0,04 |
т' | 0.11 | 0,01 | 0,88 |
цель | 0,03 | 0,95 | 0,02 |
Иногда выравнивание может быть множественным-к-множеству. Например, английская фраза look it up соответствует cherchez-le . Таким образом, «мягкие» веса внимания работают лучше, чем «жесткие» веса внимания (устанавливая один вес внимания на 1, а другие на 0), поскольку мы хотели бы, чтобы модель создавала контекстный вектор, состоящий из взвешенной суммы скрытых векторов, а не «наилучший», поскольку наилучшего скрытого вектора может и не быть.
Этот взгляд на вес внимания решает часть проблемы объяснимости нейронной сети . Сети, которые выполняют дословный перевод без учета порядка слов, покажут самые высокие оценки вдоль (доминирующей) диагонали матрицы. Недиагональное доминирование показывает, что механизм внимания более нюансирован. При первом проходе через декодер 94% веса внимания приходится на первое английское слово I , поэтому сеть предлагает слово je . При втором проходе декодера 88% веса внимания приходится на третье английское слово you , поэтому она предлагает t' . При последнем проходе 95% веса внимания приходится на второе английское слово love , поэтому она предлагает aime .
Рассмотрим задачу перевода с английского на французский язык языка seq2seq. Для конкретности рассмотрим перевод "the zone of international control <end>", который должен переводиться как "la zone de contrôle international <end>". Здесь мы используем специальный токен <end> в качестве управляющего символа для обозначения конца ввода как для кодера, так и для декодера.
Входная последовательность текста обрабатывается нейронной сетью (которая может быть LSTM, кодировщиком Transformer или какой-либо другой сетью) в последовательность векторов действительных значений , где обозначает «скрытый вектор».
После того, как кодер закончил обработку, декодер начинает работать над скрытыми векторами, чтобы создать выходную последовательность , авторегрессивно. То есть, он всегда принимает в качестве входных данных как скрытые векторы, созданные кодером, так и то, что сам декодер создал ранее, чтобы создать следующее выходное слово:
Здесь мы используем специальный токен <start> в качестве управляющего символа для разграничения начала ввода для декодера. Декодирование завершается, как только в выводе декодера появляется "<end>".
Поскольку ручное создание весов противоречит цели машинного обучения, модель должна вычислять веса внимания самостоятельно. Используя аналогию с языком запросов к базе данных , мы заставляем модель конструировать тройку векторов: ключ, запрос и значение. Грубая идея заключается в том, что у нас есть «база данных» в форме списка пар ключ-значение. Декодер отправляет запрос и получает ответ в форме взвешенной суммы значений , где вес пропорционален тому, насколько близко запрос напоминает каждый ключ .
Декодер сначала частично обрабатывает входные данные "<start>", чтобы получить промежуточный вектор , 0-й скрытый вектор декодера. Затем промежуточный вектор преобразуется линейной картой в вектор запроса. Тем временем скрытые векторы, выводимые кодером, преобразуются другой линейной картой в ключевые векторы . Линейные карты полезны для предоставления модели достаточной свободы для поиска наилучшего способа представления данных.
Теперь запрос и ключи сравниваются с помощью скалярных произведений: . В идеале модель должна была научиться вычислять ключи и значения, так что is большой, is маленький, а остальные очень маленькие. Это можно интерпретировать так, что вес внимания должен быть в основном применен к 0-му скрытому вектору кодировщика, немного к 1-му и по сути ничего к остальным.
Чтобы сделать правильно взвешенную сумму, нам нужно преобразовать этот список скалярных произведений в распределение вероятностей по . Это можно сделать с помощью функции softmax , что даст нам веса внимания: Затем это используется для вычисления вектора контекста :
где — векторы значений , линейно преобразованные другой матрицей, чтобы предоставить модели свободу в поиске наилучшего способа представления значений. Без матриц модель была бы вынуждена использовать один и тот же скрытый вектор как для ключа, так и для значения, что может быть нецелесообразно, поскольку эти две задачи не одинаковы.
Это механизм dot-attention. Конкретная версия, описанная в этом разделе, — это «перекрестное внимание декодера», поскольку выходной контекстный вектор используется декодером, а входные ключи и значения поступают от кодера, но запрос поступает от декодера, таким образом, «перекрестное внимание».
Более кратко, мы можем записать это как , где матрица — это матрица, строки которой . Обратите внимание, что вектор запроса, , не обязательно совпадает с вектором ключ-значение . Фактически, теоретически возможно, что векторы запроса, ключа и значения будут разными, хотя на практике это делается редко.
Многие варианты внимания реализуют мягкие веса, такие как
Для сверточных нейронных сетей механизмы внимания можно различать по измерению, на котором они работают, а именно: пространственное внимание, [44] канальное внимание, [45] или их комбинации. [46] [47]
Много усилий было вложено в дальнейшее понимание внимания путем изучения его роли в целевых условиях, таких как контекстное обучение, [32] маскированные языковые задачи, [33] упрощенные трансформаторы, [34] статистика биграмм, [35] статистика N-грамм, [36] парные свертки, [37] и арифметическая факторизация. [38]
Эти варианты рекомбинируют входы на стороне кодировщика, чтобы перераспределить эти эффекты на каждый целевой выход. Часто корреляционная матрица скалярных произведений предоставляет коэффициенты повторного взвешивания. На рисунках ниже W — это матрица весов контекстного внимания, аналогичная формуле в разделе «Основные вычисления» выше.
1. скалярное произведение кодера-декодера | 2. кодер-декодер QKV | 3. скалярное произведение только для кодировщика | 4. QKV только для кодера | 5. Учебник Pytorch |
---|---|---|---|---|
Этикетка | Описание |
---|---|
Переменные X, H, S, T | Переменные верхнего регистра представляют все предложение, а не только текущее слово. Например, H — это матрица скрытого состояния кодировщика — одно слово на столбец. |
С, Т | S, скрытое состояние декодера; T, встраивание целевого слова. В варианте обучения Pytorch Tutorial T чередуется между 2 источниками в зависимости от уровня используемого принуждения учителя . T может быть встраиванием выходного слова сети; т. е. встраиванием(argmax(FC output)). В качестве альтернативы принуждению учителя T может быть встраиванием известного правильного слова, которое может произойти с постоянной вероятностью принуждения, скажем, 1/2. |
Х, Н | H — скрытое состояние кодера; X — вложения входных слов. |
Вт | Коэффициенты внимания |
Qw, Kw, Vw, FC | Матрицы весов для запроса, ключа, значения соответственно. FC — полносвязная матрица весов. |
⊕, ⊗ | ⊕, конкатенация векторов; ⊗, умножение матриц. |
корр | Столбцовый softmax(матрица всех комбинаций скалярных произведений). Скалярные произведения — x i * x j в варианте № 3, h i * s j в варианте 1 и столбец i ( Kw * H ) * столбец j ( Qw * S ) в варианте 2 и столбец i ( Kw * X ) * столбец j ( Qw * X ) в варианте 4. Вариант 5 использует полносвязный слой для определения коэффициентов. Если вариант — QKV, то скалярные произведения нормализуются с помощью √ d, где d — высота матриц QKV. |
Внимательность по сути то же самое, что и перекрестное внимание, за исключением того, что векторы запроса, ключа и значения исходят из одной и той же модели. И кодер, и декодер могут использовать внимание, но с тонкими различиями.
Для самовнимания кодировщика мы можем начать с простого кодировщика без самовнимания, например, «встроенного слоя», который просто преобразует каждое входное слово в вектор с помощью фиксированной таблицы поиска . Это дает последовательность скрытых векторов . Затем их можно применить к механизму внимания скалярного произведения, чтобы получить или, более кратко, . Это можно применять многократно, чтобы получить многослойный кодировщик. Это «самовнимание кодировщика», иногда называемое «вниманием всех ко всем», поскольку вектор в каждой позиции может уделять внимание каждому другому.
Для самовнимания декодера, все-ко-всем внимание не подходит, потому что во время процесса авторегрессивного декодирования декодер не может уделять внимание будущим выводам, которые еще не декодированы. Это можно решить, принудительно установив веса внимания для всех , что называется «каузальной маскировкой». Этот механизм внимания — «каузально замаскированное самовнимание».
Размер матрицы внимания пропорционален квадрату числа входных токенов. Поэтому, когда вход длинный, вычисление матрицы внимания требует большого объема памяти GPU . Flash Atmeast — это реализация, которая снижает потребность в памяти и повышает эффективность без ущерба для точности. Это достигается путем разбиения вычисления внимания на более мелкие блоки, которые помещаются в более быструю память на чипе GPU, что снижает необходимость хранить большие промежуточные матрицы и, таким образом, снижает использование памяти при одновременном повышении вычислительной эффективности. [52]
Для матриц: и масштабированное скалярное произведение или внимание QKV определяется как: где обозначает транспонирование , а функция softmax применяется независимо к каждой строке ее аргумента. Матрица содержит запросы, в то время как матрицы совместно содержат неупорядоченный набор пар ключ-значение. Векторы значений в матрице взвешиваются с использованием весов, полученных в результате операции softmax, так что строки матрицы -by- output ограничиваются выпуклой оболочкой точек в , заданной строками .
Чтобы понять свойства инвариантности перестановки и эквивариантности перестановки внимания QKV, [53] пусть и будут матрицами перестановки ; и произвольной матрицей. Функция softmax является эквивариантной перестановки в том смысле, что:
Заметив, что транспонированная матрица перестановки также является ее обратной, следует, что:
что показывает, что внимание QKV эквивариантно относительно переупорядочения запросов (строк ); и инвариантно относительно переупорядочения пар ключ-значение в . Эти свойства наследуются при применении линейных преобразований к входам и выходам блоков внимания QKV. Например, простая функция самовнимания определяется как:
является перестановочно-эквивариантным относительно переупорядочивания строк входной матрицы нетривиальным образом, поскольку каждая строка вывода является функцией всех строк ввода. Аналогичные свойства сохраняются для multi-head awareness , которое определено ниже.
Когда внимание QKV используется в качестве строительного блока для авторегрессионного декодера, и когда во время обучения все входные и выходные матрицы имеют строки, используется вариант маскированного внимания : где маска, является строго верхней треугольной матрицей с нулями на и под диагональю и в каждом элементе над диагональю. Выход softmax, также в тогда является нижним треугольным , с нулями во всех элементах над диагональю. Маскирование гарантирует, что для всех , строка выхода внимания не зависит от строки любой из трех входных матриц. Свойства инвариантности перестановок и эквивариантности стандартного внимания QKV не сохраняются для маскированного варианта.
Многоголовочное внимание , где каждая голова вычисляется с помощью внимания QKV как: и , и являются матрицами параметров.
Свойства перестановки (стандартного, немаскированного) внимания QKV применяются и здесь. Для матриц перестановки :
из чего мы также видим, что многоголовое самовнимание :
является эквивариантным относительно переупорядочения строк входной матрицы .
где и и — матрицы обучаемых весов. [41]
где — обучаемая весовая матрица. [42]