Представляем базовую модель RoBERTa: всесторонний обзор

Представляем базовую модель RoBERTa: всесторонний обзор

Введение

RoBERTa (сокращение от «Robustly Optimized BERT Approach») — это продвинутая версия модели BERT (Bidirectional Encoder Representations from Transformers), созданная исследователями из Facebook AI. Как и BERT, RoBERTa является языковой моделью на основе трансформеров, которая использует самовнимание для анализа входных последовательностей и получения контекстуализированных представлений слов в предложении.

В этой статье мы подробнее рассмотрим RoBERTa.

RoBERTa против BERT

Ключевое отличие RoBERTa от BERT заключается в том, что RoBERTa обучалась на значительно большем наборе данных и с более эффективной процедурой обучения. В частности, RoBERTa обучалась на 160 ГБ текста, что более чем в 10 раз превышает размер набора данных, использованного для BERT. Кроме того, RoBERTa использует во время обучения технику динамического маскирования, которая улучшает способность модели изучать более устойчивые и обобщаемые представления слов.

RoBERTa продемонстрировала превосходную производительность по сравнению с BERT и другими ведущими моделями в различных задачах обработки естественного языка, таких как машинный перевод, классификация текста и ответы на вопросы. Она также послужила фундаментальной моделью для многих успешных NLP-моделей и завоевала популярность как в исследованиях, так и в промышленных приложениях.

Таким образом, RoBERTa — это мощная и эффективная языковая модель, которая внесла значительный вклад в NLP, продвигая прогресс в широком спектре приложений.

Архитектура модели RoBERTa

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

Общая процедура предобучения и дообучения для BERT показана на рисунке 1 ниже. В BERT одна и та же архитектура используется как для предобучения, так и для дообучения, за исключением выходных слоев. Параметры предобученной модели используются для инициализации моделей для различных последующих задач. Во время дообучения все параметры корректируются.

Архитектура модели BERT

В отличие от этого, RoBERTa не использует цель предобучения «следующее предложение». Вместо этого она обучается с гораздо большими мини-батчами и более высокими скоростями обучения. RoBERTa использует другую схему предобучения и заменяет символьный BPE-словарь байтовым BPE-токенизатором (похожим на GPT-2). Кроме того, RoBERTa не требует определения того, какой токен принадлежит какому сегменту, так как в ней отсутствуют token_type_ids. Сегменты можно легко разделить с помощью токена разделения tokenizer.sep_token (или ).

Кроме того, в отличие от 16 ГБ набора данных, первоначально использованного для обучения BERT, RoBERTa обучается на огромном наборе данных, превышающем 160 ГБ несжатого текста. Этот набор данных включает 16 ГБ английской Википедии и Books Corpus, использованных в BERT, а также дополнительные данные из корпуса WebText (38 ГБ), набора новостей CommonCrawl (63 миллиона статей, 76 ГБ) и Stories из Common Crawl (31 ГБ). RoBERTa была предобучена с использованием этого обширного набора данных и 1024 GPU V100 Tesla, работающих в течение дня.

Преимущества модели RoBERTa

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

  1. Удаление цели предсказания следующего предложения (NSP): В BERT модель обучается предсказывать, являются ли два сегмента документа из одного и того же или разных документов, используя вспомогательную NSP-потерю. Авторы экспериментировали с версиями модели с NSP-потерей и без нее и обнаружили, что удаление NSP-потери либо соответствует, либо незначительно улучшает производительность на последующих задачах.
  2. Обучение с большими размерами батчей и более длинными последовательностями: BERT изначально обучался 1 миллион шагов с размером батча 256 последовательностей. RoBERTa обучалась с 125 шагами по 2000 последовательностей и 31 000 шагов с 8000 последовательностей на батч. Большие батчи улучшают перплексию на задаче маскированного языкового моделирования и точность конечной задачи. Их также легче распараллеливать с помощью распределенного параллельного обучения.
  3. Динамическое изменение паттерна маскирования: В BERT маскирование выполняется один раз во время предобработки данных, что приводит к единственной статической маске. Чтобы избежать этого, данные для обучения дублируются и маскируются 10 раз с разными стратегиями в течение 40 эпох, что дает 4 эпохи с одинаковой маской. Эта стратегия сравнивалась с динамическим маскированием, при котором каждый раз при передаче данных в модель генерируются разные маски.

Производительность RoBERTa

Модель RoBERTa на тот момент достигла современной производительности на задачах MNLI, QNLI, RTE, STS-B и RACE и продемонстрировала значительные улучшения производительности на тесте GLUE. С результатом 88.5 RoBERTa заняла первое место в таблице лидеров GLUE.

Сравнение BERT и последовательных улучшений над ним

Как использовать RoBERTa

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

Мы будем использовать модель RoBERTa, дообученную на специфическом для задачи наборе данных, а именно предобученную модель cardiffnlp/twitter-roberta-base-emotion из хаба Huggingface.

Сначала нам нужно установить и импортировать все необходимые пакеты и загрузить модель с помощью RobertaForSequenceClassification (которая включает голову классификации) и токенизатор с помощью RobertaTokenizer.

!pip install -q transformers#Импорт необходимых пакетов
import torch
from transformers import RobertaTokenizer, RobertaForSequenceClassification#Загрузка модели и токенизатора
model_name = “cardiffnlp/twitter-roberta-base-emotion”
tokenizer = RobertaTokenizer.from_pretrained(model_name)
model = RobertaForSequenceClassification.from_pretrained(model_name)#Токенизация входа
inputs = tokenizer(“I love my cat”, return_tensors=“pt”)#Получение логитов и их использование для предсказания лежащей в основе эмоции
with torch.no_grad():
logits = model(**inputs).logitspredicted_class_id = logits.argmax().item()model.config.id2label[predicted_class_id]

Output: Optimism

Результат — «Optimism», что верно, исходя из предопределенных меток использованной нами модели классификации. Мы можем использовать другую предобученную модель или дообучить модель, чтобы получить результаты с более подходящими метками.

Результаты оценки RoBERTa

Обучение с динамическим маскированием

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

Сравнение статического и динамического маскирования для BERT

На основе упомянутых выше результатов для предобучения RoBERTa используется подход динамического маскирования.

Полные предложения без NSP-потери

Сравнение обучения без NSP-потери с обучением на блоках текста из одного документа (doc-sentences) показало, что такая конфигурация превосходит исходные результаты BERTBASE. Кроме того, удаление NSP-потери либо соответствует, либо незначительно улучшает производительность на последующих задачах.

Таблица, иллюстрирующая производительность RoBERTa с NSP-потерей и без нее

Хотя было замечено, что ограничение последовательностей одним документом (DOC-SENTENCES) дает несколько лучшую производительность по сравнению с включением последовательностей из нескольких документов (FULL-SENTENCES), RoBERTa выбирает использование FULL-SENTENCES для более легкого сравнения, так как формат DOC-SENTENCES приводит к переменным размерам батчей.

Обучение с большими батчами

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

Сравнение производительности RoBERTa на разных задачах с различными размерами батчей

Более крупный байтовый BPE

Байтовое кодирование пар (BPE) сочетает аспекты символьного и словесного представлений, что позволяет эффективно обрабатывать обширные словари, типичные для корпусов естественного языка. RoBERTa отличается от BERT использованием более крупного байтового BPE-словаря, состоящего из 50K подсловных единиц, без необходимости дополнительной предобработки или входной токенизации.

Ограничения RoBERTa

Хотя RoBERTa — мощная модель, она не лишена ограничений. Вот некоторые из них:

  1. Вычислительные ресурсы: Обучение и дообучение RoBERTa требует значительных вычислительных ресурсов, включая мощные GPU и большие объемы памяти. Это может затруднить эффективное использование RoBERTa для отдельных лиц или организаций с ограниченными ресурсами.
  2. Специфика предметной области: Предобученные языковые модели, такие как RoBERTa, могут работать неоптимально на задачах или наборах данных, специфичных для предметной области, без дополнительного дообучения. Для достижения желаемого уровня производительности может потребоваться дополнительное обучение на данных, специфичных для предметной области.
  3. Эффективность данных: RoBERTa и подобные модели требуют больших объемов данных для предобучения, которые могут быть недоступны для всех языков или предметных областей. Эта зависимость от обширных данных может ограничить их применимость в условиях, где данных мало или их дорого получить.
  4. Интерпретируемость: Черный ящик RoBERTa может затруднить интерпретацию того, как модель приходит к своим предсказаниям. Понимание внутренней работы модели и диагностика ошибок или смещений могут быть сложными, особенно в сложных приложениях или чувствительных областях.
  5. Проблемы дообучения: Хотя дообучение RoBERTa для конкретных задач может улучшить производительность, оно требует опыта и экспериментов для выбора правильных гиперпараметров, методов увеличения данных и стратегий обучения. Этот процесс может быть трудоемким и ресурсоемким.
  6. Смещение и справедливость: Предобученные языковые модели, такие как RoBERTa, могут наследовать смещения, присутствующие в обучающих данных, что приводит к смещенным или несправедливым предсказаниям. Решение проблемы смещения и обеспечение справедливости моделей AI остается серьезной проблемой, требующей тщательного подбора данных и учета при проектировании модели.
  7. Обобщение на распределения вне выборки: RoBERTa может испытывать трудности с обобщением на данные вне распределения или справляться со сценариями, значительно отличающимися от ее обучающих данных. Это ограничение может повлиять на надежность и стабильность RoBERTa в реальных приложениях, где сдвиги распределения данных являются обычным явлением.

Чтобы преодолеть эти ограничения, вы можете выбрать более продвинутые модели, такие как Llama 3, которая была выпущена недавно. Или вы можете применить novita.aiLLM API key к вашей существующей системе без проблем и с низкой стоимостью:

Модели, представленные в novita.ai LLM API

Заключение

RoBERTa значительно продвигает обработку естественного языка, опираясь на основу BERT, используя гораздо больший обучающий набор данных и улучшенные техники, такие как динамическое маскирование и удаление цели предсказания следующего предложения. Эти усовершенствования, наряду с использованием байтового BPE-токенизатора и больших размеров батчей, позволяют RoBERTa достигать превосходной производительности в различных задачах NLP. Хотя она требует значительных вычислительных ресурсов и опыта в дообучении, влияние RoBERTa на эту область огромно: она устанавливает новые эталоны и служит универсальной моделью для исследовательских и промышленных приложений.

novita.ai — это единая платформа для безграничного творчества, предоставляющая доступ к 100+ API. От генерации изображений и обработки языка до улучшения аудио и манипуляции видео, с недорогой оплатой по мере использования, она избавляет вас от забот по обслуживанию GPU при создании собственных продуктов. Попробуйте бесплатно.*

Рекомендуемое чтение

В чем разница между LLM и GPT

Прогнозы лидерборда LLM 2024 раскрыты

Novita AI LLM Inference Engine: максимальная пропускная способность и самый дешевый инференс из доступных