Как использовать модель BERT?

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

Пройти 1

Целью предварительной подготовки является изучение языка и контекста. BERT изучает язык, тренируясь одновременно над двумя задачами без присмотра. Они есть,

  1. Модель маскированного языка (MLM)
  2. Предсказание следующего предложения (NSP)

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

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

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

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

Проход 2

На практике и MLM, и NSP обучаются одновременно.

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

Выходная сторона имеет C, который представляет собой двоичный вывод, показывающий, следует ли предложение B за предложением A в контексте. Каждый из T здесь представляет собой вектор слов, который соответствует выходным данным для проблемы модели маскированного языка. Таким образом, количество векторов слов, которые мы вводим, такое же, как и векторов слов, которые мы выводим на этапе тонкой настройки.

Обычно для задач классификации мы настраиваем его, передавая токены (вложения?) предложений в BERT, который в конечном итоге дает метку класса в качестве вывода в C.

Проход 3

Как генерируются вложения из токенов? Первоначально вложения строятся из трех векторов,

  1. Вложения токенов
  2. Вложения сегментов
  3. Вложения позиций

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

Во время обучения нам нужно свести к минимуму потери, два ключевых момента:

  1. Все векторы в выходных данных имеют одинаковый размер.
  2. Все векторы в выходных данных генерируются одновременно.

Нам нужно взять каждый вектор слова и передать его в полносвязный выходной слой с тем же количеством нейронов, равным количеству токенов в словаре (30k, если мы обратимся к бумаге). А затем мы применим слой softmax, это преобразует вектор слова в распределение, а фактическая метка будет горячим кодировщиком фактического слова. Итак, мы сравниваем эти распределения, а затем обучаем сеть, используя кросс-энтропийные потери.

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

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

Если мы сложим Encoder Transformers в 12 слоев, это будет BERT-базовый, если 24 BERT-большой и так далее.

Пришло время использовать BERT в реальной жизни. (Часть — 4?)

www.arpanghoshal.com