Как использовать модели НЛП на основе трансформатора

Руководство для начинающих по пониманию и внедрению BERT, GPT-2 и других моделей NLP для последующих задач.

Несколько месяцев назад я начал работать над проектом, который включал классификацию текста. Я раньше работал только с базовыми техниками НЛП для подготовки текстовых данных и применял простые алгоритмы машинного обучения для классификации. Однако я знал о современных результатах (SOTA), которых могут достичь модели НЛП на основе Transformer, такие как BERT, GPT-3, T5 и RoBERTa.

На самом деле, позвольте мне перефразировать эту часть, чтобы точно описать состояние моих знаний в то время: я знал, что вокруг выпуска GPT-3 и того, насколько хорошо эта модель может генерировать текст самостоятельно, возник значительный шум. И кто-то сказал мне, что эту модель можно использовать для классификации текста. Как именно я могу взять эту модель и сделать так, чтобы она предсказывала ярлыки для моих данных? Я понятия не имел.

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

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

1. Что такое трансформатор?

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

Ключевое преимущество Transformer перед другими структурами нейронной сети (NN) заключается в том, что более удаленный контекст вокруг слова рассматривается более эффективным с вычислительной точки зрения способом [1 , 2]. Фраза сделать… более трудной будет распознана в предложении усложнить процесс регистрации или голосования, даже если усложнить является довольно отдаленной зависимостью от усложнения [1]. Вычисление релевантного контекста вокруг слова может выполняться параллельно, что значительно экономит ресурсы обучения.

Первоначально Transformer был разработан для задач НЛП и применен Vaswani et al. на машинный перевод [1]. Однако он был адаптирован и для распознавания образов, и для других областей. Чтобы получить более подробную информацию о точных механизмах и функционировании трансформатора, ознакомьтесь с этими подробными пояснениями:

2. Как модели НЛП используют архитектуру Transformer и чем они отличаются?

Структура модели Transformer в значительной степени заменила другие реализации модели NLP, такие как RNN [3]. Текущие модели SOTA НЛП используют архитектуру Transformer частично или полностью. Модель GPT использует только декодер структуры Transformer (однонаправленный) [2], тогда как BERT основан на кодере Transformer (двунаправленный) [4]. T5 использует структуру преобразователя кодера-декодера, очень похожую на оригинальную реализацию [3]. Эти общие архитектуры также различаются по количеству и размеру элементов, составляющих кодер или декодер (т.е. количество слоев, скрытый размер и количество используемых ими головок самовнимания [4]).

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

  • [2]: GPT
  • [3]: T5
  • [4]: BERT
  • [5]: Исчерпывающий обзор различных моделей НЛП и их различий.

3. Что такое трансферное обучение, предварительная подготовка и настройка?

Многие модели НЛП на основе Transformer были специально созданы для трансферного обучения [3, 4]. Трансферное обучение описывает подход, при котором модель сначала предварительно обучается на больших немаркированных текстовых корпусах с использованием самостоятельного обучения [5]. Затем он минимально корректируется при тонкой настройке под конкретную задачу NLP (downstream) [3]. Помеченные наборы данных для конкретных задач НЛП обычно относительно малы. Обучение модели только на таком небольшом наборе данных без предварительного обучения приведет к снижению результатов по сравнению с ее предварительно обученной версией [2]. Эту же предварительно обученную модель можно использовать для тонкой настройки различных последующих задач НЛП, включая классификацию текста, обобщение или ответы на вопросы.

Для предварительного обучения можно использовать различные немаркированные источники данных. Они могут не иметь отношения к данным или задаче во время точной настройки, если набор данных достаточно велик. GPT-2 был предварительно обучен с использованием 40 ГБ текста [6]. Следовательно, предварительное обучение требует больших затрат времени и ресурсов и обычно выполняется с использованием нескольких графических процессоров в течение нескольких часов или даже дней. Наборы данных и цели обучения, реализуемые во время предварительного обучения, в значительной степени различаются между моделями. В то время как GPT использовал стандартную цель языкового моделирования [2], которая предсказывает следующее слово в предложении, BERT был обучен моделированию замаскированного языка (MLM) и предсказанию следующего предложения (NSP) [4]. Модель RoBERTa воспроизвела архитектуру модели BERT, но изменила предварительное обучение с использованием большего количества данных, более продолжительным обучением и удалением цели NSP [7].

Контрольные точки предварительно обученных моделей служат отправной точкой для точной настройки. Помеченный набор данных для конкретной последующей задачи используется в качестве обучающих данных. Существует несколько различных подходов к тонкой настройке, в том числе следующие:

  1. Обучение всей модели на помеченных данных.
  2. Тренировка только верхних слоев и замораживание нижних слоев.
  3. Замораживание всей модели и обучение одного или нескольких дополнительных слоев, добавленных поверх.

Два дополнительных типа тонкой настройки (переходные слои и постепенное размораживание) описаны в [3]. Независимо от подхода, обычно требуется прикрепить к модели выходной слой для конкретной задачи. В этом слое нет необходимости, если вы настраиваете модель только на новом наборе текстовых данных, но цель обучения остается прежней. Это может произойти, если вы используете GPT-2 для определенного набора текстовых данных для генерации языка.

В нескольких исследовательских работах, посвященных предварительно обученным моделям на основе трансформаторов, также были проведены эксперименты по тонкой настройке, чтобы продемонстрировать их эффективность в переносном обучении. BERT, например, был обучен 11 задачам НЛП, тонкой настройке всех параметров во всей модели и передаче результатов на выходной уровень для конкретной задачи.

4. Существуют ли другие подходы, кроме трансферного обучения?

Многозадачное обучение предназначено для увеличения обобщения модели по задачам и областям [8]. Одна и та же модель может выполнять различные нисходящие задачи НЛП без точной настройки или иного изменения параметров модели или архитектуры [6]. GPT-2 был обучен на большом и разнообразном наборе текстовых данных с использованием только цели языкового моделирования. Он достиг результатов SOTA для различных задач НЛП, не будучи настроенным на эти задачи. Во время вывода было предоставлено лишь несколько примеров, чтобы помочь модели понять, какая задача была запрошена [6].

Мета-обучение особенно хорошо подходит для ситуаций, когда набор данных для конкретной задачи содержит только несколько образцов (задачи с низким уровнем ресурсов). Это позволяет моделям развивать хорошую инициализацию и широкий набор навыков, которые быстро адаптируются к новым или ранее увиденным задачам во время вывода [9, 10]. Ключевое различие между многозадачным обучением и мета-обучением заключается в том, что производительность многозадачного обучения смещена в сторону задач с большими наборами данных. Мета-обучение хорошо адаптируется к любой задаче [10]. Подобно многозадачному обучению, для моделей метаобучения не требуется тонкая настройка.

Нулевое, одноразовое и малое обучение иногда называют метаобучением. Эти спецификации относятся к количеству демонстраций, предоставленных во время вывода модели [9].

5. Где можно получить доступ к этим моделям?

Большинство разработанных исследователями моделей на основе Transformer имеют открытый исходный код (за исключением GPT-3 на данный момент). Вы можете найти их реализации моделей на GitHub (например, для BERT). Однако, если вы хотите применить модель к своей собственной задаче НЛП, вам понадобится контрольная точка модели. Вы можете получить к ним доступ через библиотеку трансформеров, предоставленную Hugging Face. Эта библиотека дает вам доступ к более чем 32 предварительно обученным моделям SOTA. Он предоставляет API, который позволяет вам удобно интегрировать модели в ваш код с помощью PyTorch или TensorFlow.

Hugging Face используется такими организациями, как Google, Microsoft и Facebook. Однако его библиотека трансформеров также отлично подходит для новичков. Он имеет обширную документацию и различные блокноты Google Colab, в которых представлены примеры реализации классификации текста с использованием, например, DistilBERT. Они также проведут вас через более общие примеры того, как обучать и настраивать модель.

С объектами конвейера вам нужно всего лишь написать несколько строк кода, чтобы сделать вывод для множества различных задач. Эти конвейеры используют уже настроенные модели, а документация объясняет, какие модели работают с конкретными конвейерами. Hugging Face даже создал конвейер классификации с нулевым выстрелом. Он принимает любой ввод текста и количество меток и возвращает вероятность для каждой из этих меток. Необязательно, чтобы какие-либо из этих меток были видны во время точной настройки (отсюда и название нулевой выстрел).

6. Как вы можете применить эти модели к вашей задаче НЛП?

Если вы знаете, какую задачу НЛП хотите выполнить, вам нужно будет определить, какая модель на основе Transformer лучше всего подходит для этой цели. GPT-2, например, был предварительно обучен и разработан для генерации языков с его однонаправленной архитектурой, что делает его наиболее полезным для задач генерации языков. Однако его также можно настроить, например, для классификации последовательностей.

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

После выбора модели вы можете ее настроить. В качестве альтернативы вы можете выбрать уже настроенную модель, многозадачную или метаобучающуюся модель и сразу же начать с вывода (см. Объекты конвейера в Hugging Face). Помимо 32+ предварительно обученных моделей, предоставленных Hugging Face, его сообщество предоставляет более 9000 спецификаций моделей.

Вам необходимо хотя бы немного знать нейронные сети (NN) и глубокое обучение, чтобы настроить модель в большинстве случаев. Помните, что вы обычно добавляете слой NN для конкретной задачи в предварительно обученную модель и реализуете процесс обучения. Более того, вам нужно превратить свой набор данных в правильную структуру данных, чтобы он был совместим с вашим процессом обучения. Если вы еще не работали с сетями-сетями, я рекомендую вам прочитать о них здесь:

Чтобы приступить к решению конкретной задачи и точной настройке вашей модели, взгляните на эти примеры реализаций для различных последующих задач НЛП:

Заключение

Поначалу использование моделей НЛП на основе трансформаторов кажется сложной задачей. Было опубликовано множество статей, в которых подробно объясняются концепции, связанные с этими моделями. Однако, прежде чем я углублюсь в эти детали, я хотел бы получить более широкий обзор. Это высокоуровневый обзор наиболее важных элементов, относящихся к моделям, процессу обучения и его применению в вашем собственном НЛП. вариант использования, надеюсь, разъяснил, как их использовать. Для своей задачи классификации текста я остановился на модели Longformer и настроил ее с помощью PyTorch Lightning.

Хотите читать больше качественных историй на Medium? Подумайте о подписке на членство, которое поддерживает меня и других авторов Medium.



Вы хотите начать работу с моделями НЛП на основе Transformer, но у вас еще нет конкретной идеи проекта? Почему бы вам не ознакомиться с моим руководством из 5 шагов о том, как придумывать уникальные идеи для проектов в области науки о данных:



Ссылки на научные статьи

[1] Васвани А., Шазир Н., Пармар Н., Ушкорейт Дж., Джонс Л., Гомес А. Н., Кайзер Л. и Полосухин И. (2017). Внимание - все, что вам нужно. ArXiv: 1706.03762 [Cs]. Http://arxiv.org/abs/1706.03762

[2] Рэдфорд, А., Нарасимхан, К., Салиманс, Т., и Суцкевер, И. (2018). Улучшение понимания языка с помощью генеративного предварительного обучения. Https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

[3] Раффель, К., Шазир, Н., Робертс, А., Ли, К., Наранг, С., Матена, М., Чжоу, Ю., Ли, В., и Лю, П. Дж. (2020) . Изучение ограничений передачи обучения с помощью унифицированного преобразователя текста в текст. ArXiv: 1910.10683 [Cs, Stat]. Http://arxiv.org/abs/1910.10683

[4] Девлин, Дж., Чанг, М.-В., Ли, К., и Тутанова, К. (2019). BERT: Предварительная подготовка глубоких двунаправленных преобразователей для понимания языка. ArXiv: 1810.04805 [Cs]. Http://arxiv.org/abs/1810.04805

[5] Асенмахер, М., и Хойманн, К. (2020). О сопоставимости предварительно обученных языковых моделей. ArXiv: 2001.00781 [Cs, Stat]. Http://arxiv.org/abs/2001.00781

[6] Рэдфорд, А., Ву, Дж., Чайлд, Р., Луан, Д., Амодеи, Д., и Суцкевер, И. (2019). Языковые модели предназначены для многозадачного обучения без учителя. Блог OpenAI, 1 (8), 9. https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[7] Лю Ю., Отт, М., Гоял, Н., Ду, Дж., Джоши, М., Чен, Д., Леви, О., Льюис, М., Зеттлемойер, Л., и Стоянов , В. (2019). RoBERTa: надежно оптимизированный подход к предварительному обучению BERT. ArXiv: 1907.11692 [Cs]. Http://arxiv.org/abs/1907.11692

[8] Уоршем Дж. И Калита Дж. (2020). Многозадачное обучение для обработки естественного языка в 2020-х годах: куда мы идем? Письма о распознавании образов, 136, 120–126. Https://doi.org/10.1016/j.patrec.2020.05.031

[9] Браун, Т. Б., Манн, Б., Райдер, Н., Суббиа, М., Каплан, Дж., Дхаривал, П., Нилакантан, А., Шьям, П., Састри, Г., Аскелл, А. ., Агарвал, С., Герберт-Фосс, А., Крюгер, Г., Хениган, Т., Чайлд, Р., Рамеш, А., Зиглер, Д.М., Ву, Дж., Винтер, К.,… Амодеи , Д. (2020). Языковые модели легко изучаются. ArXiv: 2005.14165 [Cs]. Http://arxiv.org/abs/2005.14165

[10] Доу, З.-Й., Ю. К., и Анастасопулос, А. (2019). Исследование алгоритмов метаобучения для задач понимания естественного языка с низким уровнем ресурсов. ArXiv: 1908.10423 [Cs]. Http://arxiv.org/abs/1908.10423