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

искусственный интеллект глубокое обучение

«Это 27-й день моего участия в ноябрьском испытании обновлений. Подробную информацию об этом событии см.:Вызов последнего обновления 2021 г."

Давайте вместе изучим технологию подготовки к тренировкам bert

Часть 1 Модель BERT и механизм внимания

Bert Model

Краткая история Берта

Рисунок НЛП Развитие

  • Новая парадигма: две конвергенции (модель {трансформатор} конвергенция, предварительно обучение-тонкоустройство конвергенции)

Берт — Обзор сетевой архитектуры

Проще говоря: структура сети BERT: сетевое наложение многослойных трансформаторов

Трансформаторная сетевая архитектура

Рекомендуется смотреть Ли Му напрямую, чтобы читать газету.

Основные элементы сети на уровне Transformer:

  • Многоголовое внимание
  • FFN (полностью подключенный уровень)
  • LayerNorm (нормализация слоя)
  • остаточная ссылка

Рисунок модели берта (слева) модуля трансформатора (справа)

Механизм внимания

Развитие механизма внимания.

2014: В эпоху машинного перевода речь идет о механизме внимания

2017: Рождение Трансформера, внимание к себе привлекает внимание

【Внимание, новаторская работа】«НЕЙРНО-МАШИННЫЙ ПЕРЕВОД ПУТЕМ СОВМЕСТНОГО ОБУЧЕНИЯ ВЫРАВНИВАТЬ И ПЕРЕВОДИТЬ» ICLR2015 --- Йошуа Бенжио (Большая тройка)

Как реализовать Внимание в пионерской работе

Относительно расчета источника внимания:

Шаг 1:Что касается расчета оценки внимания, то это просто векторное представление, состоящее из представления предложения и вычисления сходства каждого h (с использованием формы скалярного произведения для выражения сходства).

Относительно расчета распределения внимания:

Шаг 2:Что касается расчета распределения внимания, то есть использования softmax для преобразования источника внимания в новое представление с суммой вероятностей 1, что является весом внимания.

Расчет выхода внимания:

Шаг 3:Что касается выхода внимания, то есть веса, вычисленные на каждом шаге h и шаге 2, взвешиваются и суммируются.

Приведенные выше три изображения представляют собой механизм внимания в Seq2Seq.

Общая формулировка механизма внимания

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

[Определение]: Учитывая набор векторных (ключ, значение) пар ключ-значение и векторный запрос, механизм внимания представляет собой

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

Мы используем метод заполнения холодильников слонами для аналогии процесса реализации механизма внимания.

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

  • Существует множество методов оценки корреляции. Форма скалярного произведения была введена ранее, существуют и другие формы. Введены три наиболее часто используемые формы:
  • Механизм скалярного произведения внимания:【Самый примитивный】
  • Мультипликативное внимание:[После трансформатора в основном используется форма умножения, и можно изучить матрицу параметров]
  • Дополнительное внимание:[Самый популярный способ в сфере машинного перевода в 2014-2015 гг.]

Шаг 2. Начините слона:Нормируйте оценку ассоциации к распределению

Шаг 3 Закройте дверцу холодильника:Средневзвешенное значение по значениям и распределению

Механизм самоконтроля

Можем ли мы использовать механизм внимания, чтобы получить представление о предложении?

Представление предложения моделирования внимания

  • С точки зрения отдельного слова: например, векторного представления «it_» и всех слов в предложении, внимание вычисляется, тем самым обновляя его векторное представление:

  • Операция внимания полностью распараллеливает взаимодействие между словами в предложении;

\

[Матричная форма]: проверьте размер матрицы

Самостоятельное внимание всего предложения: существующий указатель предложения записывается как, то есть:

[Инструмент с открытым исходным кодом] BERTVIZ визуализирует представление bert

Модели НЛП до Берта

До 2017 года в области NLP доминировали сети LSTM, так почему же этот тип RNN презирают?

Модель РНН:

  • Требуется сложность O (L) для всех слов в предложении для взаимодействия: семантические зависимости дальнего действия трудно выучить (исчезающие градиенты исчезают).
  • Плохой параллелизм: прямой проход и обратный проход привязаны к O(L).

Модель CNN:

  • Модели CNN очень эффективны
  • Однако зависимости между междугородними текстами трудно смоделировать с помощью CNN: необходимо наложить очень много слоев CNN;

Вспомогательные детали, необходимые для самоконтроля

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

Вспомогательный 1: Порядок приговора

  • кодирование положения
    • Куда добавляется код местоположения? Слой встраивания / также может быть добавлен к каждому слою
    • Конкретная форма позиционного кодирования: синусно-косинусное позиционное кодирование (в статье) / позиционное кодирование, управляемое обучением (в реальном bert) PiСлучайная инициализация и обучение вместе с моделью.

Вспомогательный 2: Нелинейное преобразование

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

Вспомогательный 3: Мультиголовка:

  • Многоголовочный механизм:
    • Разные головы обращают внимание на разные контекстные зависимости
    • Эффект ансамбля моделей (аналогичный начальной модели Google)

Вспомогательный 4: Масштабирование

  • Scaled dot-product attenrion:
    • Удалить фактор при расчете оценки внимания(Это значение обычно равно 64):

    • Функция: когда размер модели высок, результат векторного скалярного произведения будет относительно большим.В это время из-за softmax градиент станет меньше, и обучение станет нестабильным.

Можно ли доказать эффект масштабирования?

Вспомогательный 5: Остаточные ссылки

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

Вспомогательный 6: Нормализация слоя (LayerNormalization)

  • Нормализация слоя: найти среднее значение и дисперсию каждого вектора;

  • BatchNom обычно используется в CV, а LayerNom используется в NLP, потому что длина предложения не фиксирована.
  • Значение нормализации слоя: аналогично роли остаточной связи -> ландшафт функции потерь становится более гладким (2018 г.), а дисперсия градиента становится меньше (2019 г.)

На рисунке показаны сходства и различия BatchNormalization и LayerNormalization.

  • Положение нормализации слоя важно:
    • Для пост-ЛН градиент параметров последнего слоя удовлетворяет:

    • Для pre-LN это (2020, Microsoft Research Asia):

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

  • Положение нормализации слоя:
    • AutoTrans предлагает использовать метод автоматического машинного обучения для поиска оптимального сочетания layerNorm;
    • Например, новая конструкция трансформатора, изученная на Mutli-30k.

Советы по оптимизации сети

  • многоголовый механизм внимания
  • scaling
  • остаточная ссылка
  • Нормализация слоя

\

обзор

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

Вывод масштабирования

blog.CSDN.net/QQ_37430422…

Часть 2 Предварительная подготовка и тонкая настройка

Предварительно обученное дерево знаний

Эпоха предварительно обученных моделей

Берт, предложенный группой Google по модели предварительного обучения, становится все больше и больше, а количество параметров уже превысило уровень 100 млн. Последний GTP3 имеет параметры уровня 10 млрд. Последний коммутатор Google Transformer является крупнейшей моделью предварительного обучения с параметры триллионного уровня.

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

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

Обзор Word Vectors (Word2Vec)

You shall know a word by the company it keeps! -- J.R.Firth (1957)

  • Pre-BERT предварительное обучение: векторы слов
    • Глоссарий;: Каждому слову соответствует число;
    • каждое словоПри этом соответствующий один вектор;
    • Тренируйтесь, предсказывая словарный запас соседа;
      • skip-gram
      • CBOW;
    • Skip-gram: Формально, если,ноза словоВероятность:

s

Ограничения векторов слов:

полное значение слова всегда зависит от контекста, и ни одно исследование значения вне полного контекста нельзя воспринимать всерьез» (Дж. Р. Ферт, 1957).

  • Сложность решения полиномиальных задач
  • Исправлено, невозможно выразить контекст:
    • Муравей скоро появится в списке!
    • Муравьи на дереве - это вкусно!
    • Муравьи живут группами.

\

модели на основе word2vec

  • В 2017 году и ранее распространенная форма модели НЛП:
    • Вектор слова + кодировщик (как показано ниже):
      • Модель LSTM или Transformer учится извлекать контекстную информацию с помощью обучающего набора;

    • Что не так с узором?
      • Случайная инициализация части кодировщика сталкивается с большим давлением на оптимизатор;
      • Набор данных должен быть достаточно хорошим и достаточно большим, чтобы кодировщик научился извлекать контекстную информацию;

\

Вызывать предтренировочные задачи

Теперь нам нужны эффективные предварительно обученные встраивания + кодировщики. Как? На что?

  • Во-первых, исключить помеченные задачи и использовать большое количество неразмеченных текстовых данных;
  • Неконтролируемый --> Самостоятельный контроль:

Самоконтролируемое обучение — это тёмная материя глубокого обучения (тёмную материю трудно наблюдать, но она составляет основную часть 80-95% материи во Вселенной) — Янн ЛеКун (один из большой тройки глубокого обучения )

Предварительная задача BERT — задача прогнозирования маски

Masked language modeling (MLM)

Задача предсказания маски:

(1) Замаскируйте слово (замените исходное слово символом «[MASK]»);

(2) Сеть BERT ввода предложений;

(3) Предсказать слово.

Что может быть не так с задачами предсказания маски?

  • Следующая задача, например, предсказание эмоции предложения, не будет иметь [MASK];

Требуются улучшения при реализации задачи предсказания маски:

  • Скрытые слова составляют лишь небольшую часть (15%) от общего количества слов в корпусе;
  • В разделенных 15% ожиданиях:
    • Небольшая часть маскируется, то есть заменяется на [MASK];
    • Часть его случайным образом заменяется другими словами (еще нужно предугадать, какой здесь должен быть токен);
    • Часть исходного слова зарезервирована (токен здесь еще нужно предсказать);

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

Предтренировочная задача BERT — предсказание следующего предложения

Предсказание следующего предложения (NSP)

Определите, является ли предложение B контекстом предложения A.

Таким образом, ввод предложения BERT будет иметь формат [CLS] A, отправленный [SEP], B, отправленный [SEP];

Контекстная связь сохраняется во входной нотации [CLS], а BertPooler используется для извлечения представления всей входной последовательности во время прогнозирования:

  • Здесь следует отметить: не брать векторную таблицу [ ] напрямую, а пройти через модуль BertPooler, который содержит MLP, операцию tanh для получения векторного представления, а затем ввести его в слой двоичной классификации;

Токенизатор подслов Токенизация подслов

BERT tokenizer

Пример

  • Предложение «включи песню, маленькая малиновка, красная грудь» становится «[CLS] включи песню, маленькая малиновка, красная ##bre ##ast [SEP]» при вводе в модель.

Зачем использовать токенизатор подслов:

  • Традиционная лексика основана на английских словах, которые, как правило, велики, а обучение хвостовым словам недостаточно.
  • Традиционные методы представления словарного запаса не могут обрабатывать слова с редкими позициями (проблема OOV).
  • Традиционный метод токенизации слов не способствует модели, изучающей отношения между аффиксами.
    • Например, отношения между «старым», «старшим» и «самым старым», полученные моделью, не могут быть обобщены на «умный», «умнее» и «самый умный».
  • Встраивание символов слишком тонкое для решения OOV, а накладные расходы памяти высоки во время логического вывода.
  • Сила подслова находится между символами слова, что может лучше сбалансировать проблему OOV.

Общие модели подслов: кодирование пар байтов (BPE), WordPiece.

Алгоритм BPE (2016):

Сформировать словарный запас:

(1) Подготовить корпус, определить ожидаемый размер словаря подслов;

(2) Разделите слова на самые маленькие единицы. Например, 26 букв английского языка плюс различные символы используются в качестве начального словарного запаса;

(3) Подсчитайте частоту пар соседних единиц в слове в корпусе и выберите пару единиц с наибольшей частотой для объединения в новую единицу подслова;

(4) Повторяйте шаг 3 до тех пор, пока: не будет достигнут размер словаря подслов, установленный на шаге 1, или максимальная частота токенов в следующей итерации не будет равна 1.

После получения словаря Subword для каждого слова мы можем использовать следующие методы для кодирования:

  • Отсортировать все подслова в словаре по убыванию длины;
  • Для слова w пройдитесь по отсортированному словарю по очереди. Проверить, является ли текущее подслово подстрокой слова (жадное самое длинное совпадение), если да, вывести текущее подслово и продолжить поиск оставшейся строки слова;
  • Если после обхода словаря совпадений по-прежнему нет, замените оставшуюся строку выводом специального символа, например "" ;

Например:

  • Предположим, что теперь в корпусе есть следующие слова (и их частоты):
  • Посмотрите, как меняется размер словарного запаса на каждом этапе

Алгоритм WordPiece (метод, принятый Бертом)

Шаги для создания словаря аналогичны BPE: добавление префикса «##» означает, что токен не используется в качестве начала полного слова;

Самое большое отличие от BPE заключается в том, как выбрать два подслова для слияния: BPE выбирает для слияния соседние подслова с наибольшей частотой, а WordPiece выбирает соседние подслова, которые могут повысить вероятность присоединения языковой модели к словарю;

  • Предположим, что гипотетическое предложение S = (t1, t2...tn) состоит из n токенов, и предположим, что каждое подслово существует независимо
  • Языковая модель вероятности предложения: logP(S)= 21=1 P(t;)
  • Если предположить, что два подслова в соседних позициях объединены, а результирующее подслово обозначено как z, изменение значения логарифмического правдоподобия в этот момент равно:

  • Легко обнаружить, что изменение значения правдоподобия является взаимной информацией между двумя подсловами.

Пример WordPiece:

  • Русский: Использование токенизатора без регистра на базе BERT
    • 30522 слова; английский переведен в нижний регистр
    • Например, предложение «играть песню, маленькая малиновка, красная грудь» становится [«играть», «the», «песня», «маленький», «робин», «красный», «##bre» после токенизатора слова BERT. "##аст"];
  • Китайский: Google Chinese BERT-base-uncased
    • 21128 слов;
    • нечувствительный к регистру;
    • Разделить китайский иероглиф (разделить китайский иероглиф);
    • Например, предложение «Мне очень нравится песня: вчера еще раз» обрабатывается как [«Я», «очень», «счастлив», «счастлив», «один», «первый», «песня», « :" ,"yes","##ter","##day","on","##ce","more","."];

Слой встраивания Берта

  • Встраиваемый слой
    • встраивание токена;
    • Встраивание сегментации;
    • Вложение позиции;

Распространенные версии BERT

  • Google открыл исходный код двух версий BERT на английском языке и одной версии BERT на китайском языке:
    • База BERT: 12 слоев, 768 скрытых состояний, 12 головок внимания, 110 миллионов параметров.
    • BERT-большой: 12 слоев, 1024 тусклых скрытых состояния, 16 головок внимания, 340 миллионов параметров.
    • Китайский БЕРТ:
  • Предтренировочный корпус:
    • Английская модель: BooksCorpus (800 млн слов), английская Википедия (2 500 млн слов)
    • Китайская Википедия: одна десятая часть английской Википедии;
  • Сколько стоит предварительная подготовка?
    • 64 TPUchips for a total of 4 days.
  • Тонкая настройка выполняется относительно быстро!

задачи тонкой настройки

Тонкая настройка Дерева знаний

СОТА, принесенная БЕРТом

Нужно решить две задачи?

Q1: Как настроить?

Q2: Как сделать FineTurn лучше?

Тонкая настройка BERT: задача классификации предложений

Sentence Classification

Задача классификации:

  • Классифицировать тексты на категории по определенным правилам;
  • Задача классификации текста имеет широкий спектр сценариев применения:
    • Анализ настроений: комментарий, мнение/диалог, понимание
    • Тематическая категория: Новости, общественное мнение/научные статьи
    • Распознавание намерений: сценарии поиска/сценарии диалога
    • Управление контентом: идентификация дискриминационного контента/идентификация нарушающего контента/дискриминация, идентификация насилия и другого контента
    • ...
  • Задача классификации — тонкая настройка:
    • Как сделать? Это в основном согласуется с предсказанием верхних и нижних предложений.
    • Ввод для предложения: [CLS]A send[SEP].
    • Как представление предложения преобразуется в вектор?
      • BertPlooler: векторное представление [CLS] через MLP, операцию tanh для получения векторного представления, а затем ввод на уровень множественной классификации;
      • Другие операции объединения; [макс., среднее, внимание, капсула]

Классификация пар предложений

  • сцена переписывания предложения
  • Вопросы и ответы/Сценарии поиска

Тонкая настройка для задач классификации:

  • Функция потерь:
    • Функция кросс-энтропийных потерь (CE)
  • Принцип тонкой настройки ничем не отличается от общего обучения сети;

Огромные дивиденды от тонкой настройки задач классификации текста:

Тонкая настройка BERT: задача маркировки последовательности

Sequence labeling

Задача маркировки последовательности:

  • Чтобы последовательность была помеченамы должны дать каждомуПредсказание - тег (тег);
  • Сначала определите набор тегов как;
  • Сегментация китайских слов: определяется как {Начало, Середина, Конец, Одиночное};
    • Например, «Синергический нейробиологический эффект генов риска» подразделяется на: синергетический нейробиологический эффект генов риска, который трансформируется в задачу маркировки последовательности: риск/В риск/Е ген/В причина/Е синергия/В Тонг/Е /S Бог/B Сутра/E Здоровье/B Материал/M Наука/E Работа/B Использование/E.
  • Распознавание именованных сущностей: маркируйте сущности в предложениях; используйте режим аннотаций BIO; типы сущностей включают {PER, ORG}
    • Например, Joe/B-PER Cloth/I-PER S/I-PER Job/O Job/O In/O Apple/B-ORG Fruit/I-ORG Company/I-ORG Company/I-ORG;
  • Тегирование части речи, POS: выделение частей речи слов, использование режима тегирования BIO;
    • Дано E.g..jieba: I/B-r в/B-p север/B-ns пекин/-ns дней/B-ns ан/-ns ворота/l-ns

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

  • Формат ввода: [CLS] A отправлено [SEP]
  • Метод 1: векторное представление каждого токена проходит через линейный слой + softmax;
  • Метод 2: Уровень CRF позволяет избежать проблемы «B-PER, I-ORG», изучая режим передачи между тегами;

Тонкая настройка BERT: задача классификации отношений

relation classification

Задача классификации отношений:

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

  • Способ второй:
    • Добавьте реляционное кодирование позиции на уровень внедрения BERT.

Способ 3: добавьте в предложение новый определенный символ, чтобы указать положение объектов головы и хвоста; символ использует [unused1]

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

Sentence label task

Пример несбалансированного сценария:

  • Закон Зипа: в корпусе естественного языка частота слова обратно пропорциональна его рангу в частотной таблице.
  • В сценарии с двумя категориями количество положительных случаев невелико: например, в тесте на нуклеиновые кислоты всех сотрудников количество положительных случаев чрезвычайно мало.

  • Повторная выборка: если предположить, что C — это количество классов в наборе данных, а n — это количество выборок в классе i, то вероятность выборки выборки из класса i:
    • выборка, сбалансированная по экземплярам: каждая выборка отбирается с равной вероятностью, т. е.

    • Выборка, сбалансированная по классам: вероятность того, что будет выбран каждый класс, равна

    • Общая передискретизация (resampling), предполагающая,

  • Повторное взвешивание: в качестве примера возьмем бинарную классификацию.
    • Нормальная кросс-энтропийная потеря:
    • Управляйте вкладом выборок класса меньшинства в общую потерю, добавляя разреженность:

    • Фокусная потеря [CV 2017, обнаружение цели] + повторное взвешивание категорий: