Трансформер (модель машинного обучения) - Transformer (machine learning model)

В Трансформатор это глубокое обучение модель, представленная в 2017 году, используется в основном в области обработка естественного языка (НЛП).[1]

Нравиться повторяющиеся нейронные сети (RNN), преобразователи предназначены для обработки последовательных данных, таких как естественный язык, для таких задач, как перевод и резюме текста. Однако, в отличие от RNN, трансформаторы не требуют, чтобы последовательные данные обрабатывались по порядку. Например, если входные данные представляют собой предложение на естественном языке, преобразователю не нужно обрабатывать его начало до конца. Благодаря этой особенности Transformer позволяет гораздо больше распараллеливание чем RNN и, следовательно, сокращает время обучения.[1]

С момента своего появления Трансформеры стали предпочтительной моделью для решения многих проблем в НЛП, заменив старые рекуррентные модели нейронных сетей, такие как долговременная кратковременная память (LSTM). Поскольку модель Transformer способствует большему распараллеливанию во время обучения, она позволяет проводить обучение на больших наборах данных, чем это было возможно до того, как она была представлена. Это привело к развитию предварительно обученные системы Такие как БЕРТ (Представления двунаправленного кодера от трансформаторов) и GPT (Генеративный предварительно обученный преобразователь), которые были обучены с огромными общими языковыми наборами данных и могут быть адаптированы для конкретных языковых задач.[2][3]

Фон

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

Стробированные RNN обрабатывают токены последовательно, поддерживая вектор состояния, который содержит представление данных, видимых после каждого токена. Для обработки токен, модель объединяет состояние, представляющее предложение, до токена с информацией о новом токене для создания нового состояния, представляющего предложение до токена . Теоретически информация от одного токена может распространяться сколь угодно далеко вниз по последовательности, если в каждой точке состояние продолжает кодировать информацию о токене. Но на практике этот механизм несовершенен: отчасти из-за проблема исчезающего градиента состояние модели в конце длинного предложения часто не содержит точной извлекаемой информации о ранних токенах.

Эта проблема была решена путем введения механизмов внимания. Механизмы внимания позволяют модели напрямую смотреть и извлекать из состояния в любой более ранней точке предложения. Уровень внимания может получить доступ ко всем предыдущим состояниям и взвесить их в соответствии с некоторой изученной мерой релевантности для текущего токена, предоставляя более точную информацию об удаленных релевантных токенах. Наглядный пример полезности внимания - перевод. В системе перевода с английского на французский первое слово французского вывода, скорее всего, сильно зависит от начала английского ввода. Однако в классической модели LSTM кодировщика-декодера для получения первого слова французского вывода модели задается только вектор состояния последний Английское слово. Теоретически этот вектор может кодировать информацию обо всем предложении на английском языке, давая модели все необходимые знания, но на практике эта информация часто плохо сохраняется. Если введен механизм внимания, модель может вместо этого научиться обращать внимание на состояния ранних английских лексем при создании начала французского вывода, давая ей гораздо лучшее представление о том, что она переводит.

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

Архитектура

Как и модели, изобретенные до него, Transformer представляет собой архитектуру кодировщика-декодера. Кодер состоит из набора уровней кодирования, которые обрабатывают входные данные итеративно, один слой за другим, а декодер состоит из набора уровней декодирования, которые делают то же самое с выходными данными кодера.

Функция каждого уровня кодировщика состоит в том, чтобы обрабатывать входные данные для генерации кодировок, содержащих информацию о том, какие части входных данных имеют отношение друг к другу. Он передает свой набор кодировок на следующий уровень кодировщика в качестве входных данных. Каждый уровень декодера делает обратное, берет все кодировки и обрабатывает их, используя включенную контекстную информацию для генерации выходной последовательности.[4] Чтобы достичь этого, каждый уровень кодера и декодера использует механизм внимания, который для каждого входа взвешивает релевантность каждого другого входа и соответственно извлекает из них информацию для создания выходных данных.[5] Каждый уровень декодера также имеет дополнительный механизм внимания, который извлекает информацию из выходных данных предыдущих декодеров, прежде чем уровень декодера извлечет информацию из кодировок. Уровни кодера и декодера имеют нейронная сеть с прямой связью для дополнительной обработки выходных данных и содержат остаточные соединения и шаги нормализации уровня.[5]

Повышенное внимание к скалярному продукту

Основные строительные блоки Трансформатора - это масштабированные единицы внимания на основе скалярного произведения. Когда предложение передается в модель Transformer, веса внимания рассчитываются между каждым токеном одновременно. Блок внимания производит вложения для каждого токена в контексте, которые содержат информацию не только о самом токене, но также взвешенную комбинацию других соответствующих токенов, взвешенных по весам внимания.

Конкретно, для каждой единицы внимания модель Transformer изучает три весовые матрицы; веса запроса , ключевые веса , а весовые коэффициенты . За каждый токен , вход вложение слов умножается на каждую из трех весовых матриц для создания вектора запроса , ключевой вектор , а вектор значений . Веса внимания рассчитываются с использованием векторов запроса и ключевых: веса внимания. из токена токен это точечный продукт между и . Веса внимания делятся на квадратный корень из размерности ключевых векторов, , который стабилизирует градиенты во время тренировки, и прошел через softmax который нормализует веса для суммирования . Дело в том, что и разные матрицы позволяет внимание быть несимметричным: если токен уделяет внимание токену (т.е. большой), это не обязательно означает, что токен будет уделять внимание токену (т.е. большой). Вывод блока внимания для токена взвешенная сумма векторов значений всех токенов, взвешенная по , внимание со стороны к каждому токену.

Вычисление внимания для всех токенов может быть выражено как вычисление одной большой матрицы, что полезно для обучения из-за оптимизации вычислительной матричной операции, которая ускоряет вычисление матричных операций. Матрицы , и определяются как матрицы, в которых -ые строки - это векторы , , и соответственно.

Многоголовое внимание

Один комплект матриц называется голова внимания, и каждый слой в модели Transformer имеет несколько головок внимания. В то время как одна глава внимания уделяет внимание токенам, относящимся к каждому токену, с несколькими руководителями внимания модель может научиться делать это для разных определений «релевантности». Исследования показали, что многие главы внимания в Трансформерах кодируют отношения релевантности, которые могут интерпретироваться людьми. Например, есть головы внимания, которые для каждого токена в основном обращаются к следующему слову, или головы внимания, которые в основном обращаются от глаголов к их прямым объектам.[6] Поскольку модели Transformer имеют несколько головок внимания, они имеют возможность фиксировать множество уровней и типов отношений релевантности, от поверхностного до семантического. Множественные выходы для слоя внимания с несколькими головами объединяются для передачи на уровни нейронной сети с прямой связью.

Кодировщик

Каждый кодировщик состоит из двух основных компонентов: механизма самовнимания и нейронной сети с прямой связью. Механизм самовнимания принимает набор входных кодировок из предыдущего кодировщика и взвешивает их соответствие друг другу, чтобы сгенерировать набор выходных кодировок. Затем нейронная сеть с прямой связью дополнительно обрабатывает каждое выходное кодирование отдельно. Эти выходные кодировки, наконец, передаются следующему кодировщику в качестве его входа, а также декодерам.

Первый энкодер принимает позиционную информацию и вложения входной последовательности в качестве входа, а не кодировок. Позиционная информация необходима Трансформатору для использования порядка последовательности, потому что никакая другая часть Трансформатора не использует это.[1]

Декодер

Каждый декодер состоит из трех основных компонентов: механизма самовнимания, механизма внимания к кодировкам и нейронной сети с прямой связью. Декодер функционирует аналогично кодировщику, но добавлен дополнительный механизм внимания, который вместо этого извлекает соответствующую информацию из кодировок, сгенерированных кодировщиками.[1][5]

Как и первый кодировщик, первый декодер принимает позиционную информацию и вложения выходной последовательности в качестве своих входных данных, а не кодирования. Поскольку трансформатор не должен использовать текущий или будущий выходной сигнал для прогнозирования выходного сигнала, выходная последовательность должна быть частично замаскирована, чтобы предотвратить обратный поток информации.[1] За последним декодером следует последний линейное преобразование и слой softmax, чтобы произвести выходные вероятности по словарю.

Альтернативы

Обучение архитектур на основе трансформаторов может быть очень дорогостоящим, особенно для длинных предложений.[7] Альтернативные архитектуры включают Reformer, который снижает вычислительную нагрузку от к , куда - длина последовательности. Это делается с помощью хеширование с учетом местоположения и обратимые слои.[8][9]

Обучение персонала

Трансформаторы обычно подвергаются полу-контролируемое обучение с участием без присмотра предварительная подготовка с последующим под наблюдением тонкая настройка. Предварительное обучение обычно выполняется на гораздо большем наборе данных, чем точная настройка, из-за ограниченной доступности помеченных данных обучения. Задачи для предварительной подготовки и тонкой настройки обычно включают:

Реализации

Модель Transformer была реализована в основных средах глубокого обучения, таких как TensorFlow и PyTorch. Ниже приведен псевдокод для реализации варианта Transformer, известного как «vanilla» трансформатор:

def vanilla_transformer(enc_inp, dec_inp):    "" "Вариант трансформатора, известный как" ванильный "трансформатор." ""    Икс = встраивание(enc_inp) * sqrt(d_m)    Икс = Икс + pos_encoding(Икс)    Икс = выбывать(Икс)    за _ в классифицировать(n_enc_layers):        attn = multi_head_attention(Икс, Икс, Икс, Никто)        attn = выбывать(attn)        attn = layer_normalization(Икс + attn)        Икс = point_wise_ff(attn)        Икс = layer_normalization(Икс + attn)    # x в этот момент выход энкодера    enc_out = Икс    Икс = встраивание(dec_inp) * sqrt(d_m)    Икс = Икс + pos_encoding(Икс)    Икс = выбывать(Икс)    маска = причинная_маска(Икс)    за _ в классифицировать(n_dec_layers):        attn1 = multi_head_attention(Икс, Икс, Икс, маска)        attn1 = layer_normalization(attn1 + Икс)        attn2 = multi_head_attention(attn1, enc_out, enc_out, Никто)        attn2 = выбывать(attn2)        attn2 = layer_normalization(attn1 + attn2)        Икс = point_wise_ff(attn2)        Икс = layer_normalization(attn2 + Икс)    возвращаться плотный(Икс)

Приложения

Трансформатор находит большинство применений в области обработка естественного языка (НЛП), например, задачи машинный перевод и прогнозирование временных рядов.[11] Многие предварительно обученные модели, такие как GPT-3, GPT-2, BERT, XLNet и RoBERTa демонстрируют способность Transformers выполнять широкий спектр таких задач, связанных с NLP, и имеют потенциал для поиска реальных приложений.[2][3][12] Они могут включать:

В 2020 году было показано, что архитектура трансформатора, а точнее GPT-2, может быть адаптирована для игры в шахматы.[17]

Рекомендации

  1. ^ а б c d е Полосухин Илья; Кайзер, Лукаш; Gomez, Aidan N .; Джонс, Ллион; Uszkoreit, Jakob; Пармар, Ники; Шазир, Ноам; Васвани, Ашиш (12.06.2017). «Внимание - все, что вам нужно». arXiv:1706.03762 [cs.CL ].
  2. ^ а б c «Открытый исходный код BERT: современная предварительная подготовка для обработки естественного языка». Блог Google AI. Получено 2019-08-25.
  3. ^ а б c «Лучшие языковые модели и их последствия». OpenAI. 2019-02-14. Получено 2019-08-25.
  4. ^ «Последовательное моделирование с помощью нейронных сетей (часть 2): модели внимания». Индико. 2016-04-18. Получено 2019-10-15.
  5. ^ а б c Аламмар, Джей. «Иллюстрированный трансформер». jalammar.github.io. Получено 2019-10-15.
  6. ^ Кларк, Кевин; Ханделвал, Урваши; Леви, Омер; Мэннинг, Кристофер Д. (август 2019 г.). «На что смотрит BERT? Анализ внимания BERT». Материалы семинара по ACL 2019 BlackboxNLP: Анализ и интерпретация нейронных сетей для NLP. Флоренция, Италия: Ассоциация компьютерной лингвистики: 276–286. Дои:10.18653 / версия 1 / W19-4828.
  7. ^ Китаев, Никита; Кайзер, Лукаш; Левская, Ансельм (2020). «Реформатор: эффективный трансформатор». arXiv:2001.04451 [cs.LG ].
  8. ^ «Задача с длинными последовательностями».
  9. ^ «Реформатор: эффективный трансформатор». Блог Google AI. Получено 2020-10-22.
  10. ^ а б Ванга, Алекс; Сингх, Аманприт; Майкл, Джулиан; Хилл, Феликс; Леви, Омер; Боуман, Сэмюэл (2018). «GLUE: многозадачная платформа для тестирования и анализа естественного языка». Материалы семинара EMNLP 2018 BlackboxNLP: Анализ и интерпретация нейронных сетей для NLP. Страудсбург, Пенсильвания, США: Ассоциация компьютерной лингвистики: 353–355. arXiv:1804.07461. Дои:10.18653 / v1 / w18-5446. S2CID  5034059.
  11. ^ Аллард, Максим (2019-07-01). "Что такое трансформатор?". Середина. Получено 2019-10-21.
  12. ^ Ян, Чжилин Дай, Цзихан Ян, Имин Карбонелл, Хайме Салахутдинов, Руслан Ле, Куок В. (19.06.2019). XLNet: обобщенное предварительное обучение авторегрессии для понимания языка. OCLC  1106350082.CS1 maint: несколько имен: список авторов (связь)
  13. ^ Монстры, данные (2017-09-26). «10 приложений искусственных нейронных сетей в обработке естественного языка». Середина. Получено 2019-10-21.
  14. ^ Ривз, Александр; Гоял, Сиддхартх; Мейер, Джошуа; Го, Деми; Отт, Майл; Зитник, К. Лоуренс; Ма, Джерри; Фергус, Роб (2019). «Биологическая структура и функция возникают в результате увеличения объема обучения без учителя до 250 миллионов белковых последовательностей». bioRxiv  10.1101/622803.
  15. ^ Намбияр, Анантан; Хефлин, Мейв; Лю, Саймон; Маслов, Сергей; Хопкинс, Марк; Ритц, Анна (2020). «Преобразование языка жизни: нейронные сети-преобразователи для задач прогнозирования белков». Дои:10.1145/3388440.3412467. Цитировать журнал требует | журнал = (помощь)
  16. ^ Рао, Рошан; Бхаттачарья, Николас; Томас, Нил; Дуань, Ян; Чен, Си; Кэнни, Джон; Аббель, Питер; Сон, Юн С. (2019). «Оценка обучения передаче белков с помощью TAPE». bioRxiv  10.1101/676825.
  17. ^ Ноевер, Дэвид; Чолино, Мэтт; Калин, Джош (21 августа 2020 г.). «Шахматный трансформер: освоение игры с использованием генеративных языковых моделей». arXiv:2008.04057 [cs.AI ].