Мысли и теория

Количественная оценка предварительно обученной модели BERT

предварительное условие для использования предварительно обученной модели как есть без точной настройки

TL;DR

Самоконтролируемое обучение широко используется с использованием преобразователей не только для текста, но в последнее время и для изображений (CLIP, ALIGN) для решения традиционно контролируемых задач (например, классификации) как есть, или с последующей тонкой настройкой. Хотя большинство, если не все, нисходящие задачи НЛП на сегодняшний день выполняются с последующей тонкой настройкой предварительно обученной модели преобразователя, можно использовать предварительно обученную модель как есть, без последующей тонкой настройки .

Например, часто упускается из виду полезность предварительно обученной модели BERT как есть, без какой-либо тонкой настройки для широкого круга задач НЛП . Примеры прямого использования предварительно обученной модели BERT без точной настройки:

  • Неконтролируемый NER. NER, задача с традиционным контролем может быть выполнена без необходимости отмечать отдельные термины в предложении. Вместо этого будет достаточно одноразовой маркировки кластеров словарных векторов BERT для интересующих типов сущностей, когда словарные векторы получаются непосредственно из предварительно обученной модели.
  • Неконтролируемые представления предложений. Хорошо обученная модель BERT для предсказания следующего предложения может использоваться для создания фраз, фрагментов предложения или полных представлений предложений, которые работают так же хорошо или даже заменяют в некоторых задачах представления предложений, созданные под наблюдением. .
  • Неконтролируемый сбор синонимов » (или извлечение общего отношения). Предварительно обученная модель BERT в сочетании с комбинацией анализатора зависимостей / POS-тега может использоваться для базовых показателей извлечения отношений и создания слабо контролируемых помеченных данных для подчиненной контролируемой модели для той же задачи.
  • Условная классификация предложений. Предварительно обученная модель BERT в сочетании с комбинацией анализатора зависимостей / POS-тега может использоваться в качестве базовой модели для выбранных задач классификации предложений с учетом термина, указанного во входном предложении, и создания слабо контролируемых помеченных данных для подчиненных контролируемых модель для той же задачи.
  • Слабый контроль с показателем достоверности. Создание помеченных данных со связанным показателем достоверности для любых последующих тонко настроенных задач. Точно настроенная нижестоящая модель может научиться использовать показатель достоверности в качестве дополнительной входной функции. Это также полезно для выборочного ручного выбора только тех входных данных с низкой достоверностью, чтобы улучшить производительность модели.
  • Количественная оценка покрытия обучающего набора для последующей тонко настроенной задачи. Количественное определение покрытия обучающим набором базового распределения p (x) при обучении модели дискриминатора p (y / x). Это полезно на практике при создании помеченных наборов данных для контролируемых задач, когда предварительно обученная модель настраивается.
  • Количественная оценка обучения точно настроенной модели по сравнению с предварительно обученной моделью. Количественная оценка обучения точно настроенной модели не только с точки зрения набора тестов, но и с точки зрения того, как базовая образец распределения входных данных (захваченный обучающим набором) сопоставлен (точная настройка может изменить характер кластеров, созданных из обучающего набора, по сравнению с кластерами, созданными предварительно обученной моделью).
  • Обнаружение OOD или редко видимый ввод во время развертывания. Присвоение показателя достоверности выходным данным развернутой модели (это может быть предварительно обученная или точно настроенная модель), особенно для входных данных, которые она редко или никогда не видела. Это становится ключевым в производственном развертывании моделей - для выявления OOD (не распространяется) или просто редко встречающихся случаев во время обучения и выявления ошибочных классификаций / ложных срабатываний.

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

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

Компоненты BERT, которые необходимо оценить

Самостоятельное обучение модели BERT дает

  • словарные векторы. Это контекстно-нечувствительные векторы, в которых все значения слова свернуты в один вектор (например, ячейка - все ее значения, сотовый телефон, тюремная камера, биологическая ячейка свернуты в один вектор)
  • Веса модели, которые преобразуют входные предложения, представленные векторами изученного словаря, в контекстно-зависимые векторы каждого токенизированного входного слова. Веса модели также помогают создать богатое представление предложения для входного предложения (при условии, что модель была обучена для следующей задачи прогнозирования предложения).

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

  • количественная мера контекстно-зависимого выходного вектора модели для замаскированной фразы в предложении
  • количественная мера вектора [CLS] для замаскированной фразы в предложении.
  • качественная и количественная мера контекстно-независимых словарных векторных кластеров, количество которых является количественной мерой (большое количество одноэлементных кластеров подразумевает неправильную / плохо подготовленную модель), а уровень разделения сущностей по кластерам является качественным measure (обязательно будут смешанные кластеры сущностей, учитывая независимый от контекста характер словарных векторов). Качество этих кластеров напрямую влияет на два количественных теста, упомянутых выше.

Количественный тест (для тестов один и два выше) дает матрицу неточностей с оценками F1 для каждого типа объекта.

Метод оценки модели

Предсказание BERT точного термина, который был пропущен в предложении (даже если пропущенный термин присутствовал в базовом словаре), ненадежен с точки зрения фактической корректности, как и для любой языковой модели, независимо от это модель авторегрессионного или автокодировщика. Однако предсказание BERT типа объекта для замаскированной позиции является неизменно точным, если модель была предварительно обучена на корпусе с использованием настраиваемого словаря, который действительно представляет входное предложение. То есть, если мы введем предложение ___ используется для лечения рака, лучшие прогнозы хорошо обученной модели будут в основном касаться лекарств и методов лечения. Эта надежная возможность прогнозирования типа объекта BERT используется ниже для оценки модели (по сути, это тот же подход, который использовался для выполнения неконтролируемого NER, описанного в предыдущей статье).

Результаты теста

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

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

Предтренировочные шаги

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

  • Предварительная обработка корпуса. Обнаружение границ предложения и разделение предложений на границах предложений играет роль в достижении хорошей производительности. Обратной стороной запрета сворачивания предложений на границах предложений является риск обрезания длинных последовательностей на максимальном пределе 510 (с учетом CLS и SEP) границы обучения. Для патологически длинных предложений, превышающих предел длины предложения, один из подходов состоит в том, чтобы просто сложить их на некоторой длине в новую строку, где ограничение на разрыв новой строки влияет на среднюю токенизированную длину предложения. Токенизированная длина предложения обычно больше, чем исходная длина предложения. В идеале можно было бы разметить предложение, используя тот же токенизатор, который использовался для обучения, а затем свернуть на его основе, но это может быть слишком затратной операцией для выполнения в масштабе для большого корпуса - средняя мера увеличения длины предложения (~ 1,5 –2x) может быть практическим выбором. Разделение абзацев и документов дополнительным символом новой строки (т.е. двумя символами новой строки, разделяющими документы и одной новой строкой, разделяющей предложения в документе) также является ключом к обеспечению высокой точности при прогнозировании следующего предложения, что, в свою очередь, влияет на качество [CLS] векторов
  • Создание словаря. Создание пользовательского словаря для интересующего вас корпуса также играет важную роль в производительности модели. Один из подходов к обеспечению того, чтобы выученный словарный запас действительно представлял базовый корпус, состоит в том, чтобы исключить слова (только для генерации словарного запаса), которые являются чисто числовыми терминами (а не какими-либо терминами с числовыми значениями, такими как cd20 - ген) и иноязычные символы (относительно интересующего языка), если цель предварительного обучения не состоит в изучении хорошего представления числовых терминов (например, лет) и предложения на иностранных языках. Простой подход состоит в том, чтобы удалить эти термины, а затем просто добавить числа 0–9 (убедитесь, что они дублируются достаточно много раз, чтобы соответствовать минимальному пороговому значению, чтобы их можно было уловить при генерации словаря), чтобы гарантировать они присутствуют в последнем словарном запасе. Однако обратите внимание, что входные данные для генерации обучающей записи не удаляют никаких терминов - это исходный нетронутый корпус с примененной к нему границей предложения. Числовые термины в этом нетронутом корпусе будут преобразованы в подслова, состоящие из числовых терминов. Символы иностранного языка будут преобразованы в токены [UNK], сохраняя структуры предложений, в которые они входят.
  • Создание обучающих записей. В репозитории Google Github есть обучающие записи с поддержкой маскирования всего слова. PyTorch HuggingFace также поддерживает его, однако он по-прежнему не подходит для обучения большого корпуса, поскольку считывает весь корпус в память. Создание обучающих записей с помощью кода Google может занять много времени, поскольку оно выполняется последовательно (даже дольше, чем фактическое время обучения), поэтому может быть лучше создавать обучающие записи параллельно, разделяя корпус (используя параллель и т. д.)
  • Актуальный тренировочный процесс. В выпуске Google TensorFlow для обучения нет поддержки нескольких графических процессоров (вывод nvidia-smi может вводить в заблуждение, если не используется с параметром dmon для просмотра фактического использования нескольких графических процессоров). Однако у Nvidia есть релиз контейнера с несколькими графическими процессорами, который использует все графические процессоры для обучения (использует Horovod для внутренних целей) - так что это может быть идеальным выбором. Однако на сегодняшний день версия Nvidia не поддерживает маскировку всего слова для создания обучающих записей, поэтому нам, возможно, придется использовать процесс создания записей Google, а затем обучаться с помощью кода Nvidia. Кроме того, изменения оптимизатора Nvidia могут помочь в более быстрой сходимости, если выбраны правильные скорости обучения. Процесс обучения из ~ 500 тыс. Шагов для корпуса размером 24 ГБ для BERT-Large был завершен всего за два дня на A100 с 4 графическими процессорами. Размер пакета - это ключевой гиперпараметр, влияющий на производительность модели. A100 работает с большой памятью графического процессора 40 ГБ, что было полезно при обучении работе с большими пакетами (длина последовательности 128 - размер пакета 64, за которым следует длина последовательности 512 с размером пакета 16). Пропускная способность на A100 с использованием 4 графических процессоров составляла ~ 1200 последовательностей в секунду. Скорость обучения 7,5 e-4 дает потерю в обучении около 1,5 с потерей NSP ~ 0,005.

Шаги оценки

Оценка проводилась путем преобразования контрольной точки Tensorflow в модель PyTorch. Оценка предварительно обученной модели проводилась следующим образом.

  • Извлечение векторов словаря с помощью BERT и кластеризация - это можно сделать с помощью утилит в репозиториях, перечисленных ниже. После завершения кластеризации эти кластеры необходимо вручную пометить для конкретных интересующих объектов. Это займет не более часа ручной разметки для словаря ~ 30k, учитывая, что кластеризация обычно дает ~ 3000 кластеров.
  • Запустите оценочные скрипты. Ожидается тройка (1) предложений с замаскированной фразой (2) замаскированная фраза, (3) тип объекта замаскированной фразы. Формат тестовых данных показан ниже. Результатом оценки является матрица неточностей для интересующих объектов. Поведение по умолчанию для отчетов с оценкой F1 - это максимальное значение F1 для всех оцениваемых объектов.

Последние мысли

Недавняя альтернатива существующему стандартному подходу к тонкой настройке предварительно обученной модели с головкой для конкретной задачи - подсказка предварительно обученной модели с обучением за несколько шагов является многообещающей. Этот подход основан на подсказках, популяризированных GPT-3, где модель выполняет новые задачи без точной настройки (без обновления градиента), просто взаимодействуя с текстом с предварительно обученной авторегрессионной моделью. Хотя надзор на основе подсказок отличается от традиционного надзора, он по-прежнему требует усилий человека для (или, альтернативно, точной настройки) модели с подсказками для конкретных задач. Использование моделей BERT, описанных в этом посте, предлагает другой подход к той же проблеме, когда человеческие усилия тратятся на маркировку нескольких кластеров, размер которых ограничен процессом кластеризации, в отличие от традиционного надзора за маркировкой предложений. , или более поздний подход, основанный на подсказках.

Благодарности

Наборы тестовых данных Pubmed и SEC, использованные для оценки, были созданы моим коллегой Харишем алгоритмически путем сбора предложений для выбранных терминов уже известных типов сущностей и маскирования их в предложениях.

Код, использованный для оценки, доступен здесь. Код для подготовки модели к оценке (создание кластера) доступен здесь. Код для создания представлений предложений с использованием векторов [CLS] доступен здесь.