Большие языковые модели DistilBERT — меньший, быстрый, дешевый и легкий

Дистиллированные модели DistilBERT компактные, быстрые, доступные и легкие

Открывание секретов сжатия BERT: фреймворк студента-учителя для максимальной эффективности

Введение

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

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

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

  • Дистилляция знаний, которая включает обучение более маленькой модели в попытке представить поведение большой модели.
  • Квантование – процесс уменьшения памяти для хранения чисел, представляющих веса модели.
  • Обрезка – отбрасывание наименее важных весов модели.

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

Основы дистилляции

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

Для достижения этой цели требуется предварительно обучить большую модель (BERT в нашем случае). Затем выбирается архитектура более маленькой модели. Чтобы увеличить вероятность успешной имитации, обычно рекомендуется, чтобы архитектура более маленькой модели была похожей на архитектуру большой модели с уменьшенным количеством параметров. Наконец, более маленькая модель учится на основе предсказаний, сделанных более крупной моделью на определенном наборе данных. Для достижения этой цели важно выбрать подходящую функцию потерь, которая поможет более маленькой модели лучше учиться.

В дистилляционной нотации большую модель называют учителем, а более маленькую модель – студентом.

Обычно процедура дистилляции применяется во время предварительного обучения, но может также применяться и во время дообучения.

DistilBERT

DistilBERT учится на основе BERT и обновляет свои веса, используя функцию потерь, состоящую из трех компонентов:

  • Функция потерь маскированной языковой модели (MLM)
  • Функция потерь дистилляции
  • Функция потерь сходства

Ниже мы рассмотрим эти компоненты потерь и поймем необходимость каждого из них. Тем не менее, прежде чем погрузиться в детали, необходимо понять важное понятие, называемое температурой в функции активации softmax. Концепция температуры используется в функции потерь DistilBERT.

Температура softmax

Часто можно встретить преобразование softmax в качестве последнего слоя нейронной сети. Softmax нормализует все выходы модели, так чтобы они суммировались до 1 и могли интерпретироваться как вероятности.

Существует формула softmax, в которой все выходы модели делятся на параметр температуры T:

Формула для температуры softmax. pᵢ и zᵢ - выход модели и нормализованная вероятность для i-го объекта соответственно, T - параметр температуры.

“`html

Температура T контролирует гладкость распределения вывода:

  • Если T > 1, то распределение становится более гладким.
  • Если T = 1, то распределение остается таким же, как если бы был применен обычный софтмакс.
  • Если T < 1, то распределение становится более шероховатым.

Чтобы прояснить, рассмотрим пример. Предположим, что у нас есть задача классификации с 5 метками, в которой нейронная сеть выдает 5 значения, указывающих на уверенность входного объекта в принадлежности к соответствующему классу. Применение софтмакса с разными значениями T приводит к разным распределениям вывода.

Пример нейронной сети, производящей разные распределения вероятностей в зависимости от температуры T

Чем выше температура, тем гладче становится распределение вероятностей.

Преобразование софтмакса для логитов (натуральные числа от 1 до 5) при разных значениях температуры T. При увеличении температуры значения софтмакса становятся более выровненными.

Функция потерь

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

Аналогично модели учителя (BERT), во время предварительного обучения студент (DistilBERT) изучает язык, предсказывая маскированные токены. После предсказания для определенного токена, предсказанное распределение вероятностей сравнивается с распределением, закодированным one-hot, модели учителя.

Распределение, закодированное one-hot, представляет собой распределение вероятностей, где вероятность наиболее вероятного токена установлена на 1, а вероятности всех остальных токенов установлены на 0.

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

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

Потеря эффективного обучения

На самом деле, можно использовать только потерю модели студента для обучения студенческой модели. Однако во многих случаях этого может быть недостаточно. Основная проблема в использовании только потери модели студента заключается в применении софтмакс преобразования с температурой T, установленной равной 1. На практике получаемое распределение с T = 1 оказывается в форме, где одна из возможных меток имеет очень высокую вероятность, близкую к 1, и все остальные вероятности меток становятся низкими, близкими к 0.

Такая ситуация плохо соответствует случаям, когда две или более меток классификации являются допустимыми для определенного ввода: слой софтмакс с T = 1 очень вероятно исключит все допустимые метки, кроме одной, и превратит распределение вероятностей в one-hot кодирование. Это приводит к потере потенциально полезной информации, которую могла бы усвоить студенческая модель, что делает ее менее разнообразной.

Вот почему авторы статьи вводят потерю эффективного обучения, в которой вероятности софтмакса вычисляются с температурой T > 1, позволяя плавно выровнять вероятности и учитывать несколько возможных ответов для студента.

В потере эффективного обучения та же температура T применяется как к студенту, так и к учителю. При этом удаляется one-hot кодирование вероятностей учителя.

Пример вычисления потери эффективного обучения

Вместо поперечной энтропийной потери можно использовать потерю KL-расхождения.

“`

Потеря сходства

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

Формула потери косинусного сходства

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

Пример вычисления потери сходства

Тройная потеря

Наконец, вычисляется сумма линейной комбинации всех трех функций потерь, которая определяет функцию потерь в DistilBERT. Исходя из значения потери, выполняется обратное распространение ошибки на модель студента для обновления весов.

Функция потери DistilBERT

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

Вывод

Процесс вывода в DistilBERT работает точно так же, как и во время тренировки. Единственное нюанс заключается в том, что температура софтмакс T установлена равной 1. Это сделано для получения вероятностей, близких к тем, которые вычисляются BERT.

Архитектура

В целом DistilBERT использует ту же архитектуру, что и BERT, за исключением этих изменений:

  • DistilBERT имеет только половину слоев BERT. Каждый слой в модели инициализируется путем выбора одного слоя BERT из двух.
  • Удаляются эмбеддинги типа токенов.
  • Удаляется плотный слой, который применяется к скрытому состоянию токена [CLS] для задачи классификации.
  • Для более надежной производительности авторы используют лучшие идеи, предложенные в RoBERTa: – использование динамической маскировки – удаление задачи предсказания следующего предложения – тренировка на больших партиях – используется метод накопления градиентов для оптимизированного вычисления градиентов

Размер последнего скрытого слоя (768) в DistilBERT такой же, что и в BERT. Авторы отмечают, что его уменьшение не приводит к значительным улучшениям с точки зрения эффективности вычислений. Сокращение количества общих слоев имеет гораздо большее влияние.

Данные

DistilBERT обучается на том же наборе данных, что и BERT, в котором содержится BooksCorpus (800 млн слов) и английская Википедия (2500 млн слов).

Сравнение BERT и DistilBERT

Ключевые показатели производительности BERT и DistilBERT сравнивались на нескольких самых популярных бенчмарках. Вот факты, важные для сохранения:

  • Во время вывода DistilBERT быстрее BERT на 60%.
  • DistilBERT имеет на 44М меньше параметров и в общей сложности на 40% меньше, чем BERT.
  • DistilBERT сохраняет 97% производительности BERT.
Сравнение BERT и DistilBERT (на наборе данных GLUE)

Вывод

DistilBERT сделал огромный шаг в эволюции BERT, позволив существенно сжать модель и при этом достичь сопоставимой производительности на различных задачах NLP. Кроме того, DistilBERT весит всего 207 МБ, что упрощает его интеграцию на устройства с ограниченными возможностями. Дистилляция знаний – не единственная техника, которую можно применить: DistilBERT можно дополнительно сжать с помощью алгоритмов квантования или обрезки.

Ресурсы

Все изображения, если не указано иное, принадлежат автору