О BERT и пойдет речь в этой статье. Я предполагаю, что вы знаете Трансформеров.

Трансформатор - это модель самовнимания для обработки последовательного ввода, подобного тому, что делает RNN, но параллельно.

Если мы случайным образом инициализируем модель DL для решения задачи НЛП, нам потребуются большие объемы данных и время. Это связано с тем, что наша модель должна изучать сам язык (грамматику, семантику и т. Д.), А также нашу конкретную задачу. Это может дать неоптимальные результаты. Если мы сможем сначала изучить семантику нашего языка, а затем точно настроить модель для наших конкретных задач (добавив выходной слой), мы сможем достичь лучших результатов. Это похоже на использование предварительно обученной модели зрения, предварительно обученной в ImageNet. Это то, что делает BERT.

BERT (B двунаправленный кодировщик E кодировщиков R от трансформеров) в основном является предварительно обученным языком модель, которую можно настроить для конкретных задач НЛП, таких как ответы на вопросы, семантический анализ и т. д. Предварительно обученную модель можно скачать с авторов github [2]. Предварительно обученная модель доступна с разным количеством слоев трансформатора, скрытым затемнением и количеством головок внимания. У каждого языка есть своя предварительно обученная модель. Авторы достигли SOTA в 11 задачах НЛП, включая GLUE, MultiNLI, SQuAD v1.1, SQuAD v2.0, используя ту же предварительно обученную модель, а затем тонкую настройку в соответствии с конкретными задачами.

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

Что означает каждая буква в BERT?

B - Двунаправленный - предлагаемая модель использует контекст с обоих направлений.

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

T - Трансформатор - в модели для обработки текста используются трансформеры вместо RNN.

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

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

Есть два неконтролируемых метода:

Маскированная языковая модель (MLM)

Учитывая текст, мы случайным образом маскируем некоторый процент вводимых слов (15% в документе) и прогнозируем замаскированные токены, используя только его контекст. Эти замаскированные токены прогнозируются с использованием скрытого представления из последнего слоя. Эта задача также называется задачей закрытия. Например.-

Моя собака волосатая - ›Моя собака [МАСКА]

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

Но теперь возникает другая проблема - токен [MASK] не появляется во время точной настройки, что создает несоответствие между предварительным обучением и точной настройкой. Чтобы избежать этого, мы не всегда заменяем выбранные слова замаскированным токеном. 80% времени мы используем замаскированный токен, 10% времени используем случайный токен и 10% времени используем исходный токен. Например.-

Моя собака волосатая - ›Моя собака [МАСКА] (80% времени)

Моя собака волосатая - ›Моя собака - яблоко (в 10% случаев)

Моя собака волосатая - ›Моя собака волосатая (в 10% случаев)

Еще одно преимущество маскирования заключается в том, что преобразователь не знает, какие слова ему будет предложено предсказать (на последнем слое). Таким образом, он заставляет преобразователь запоминать представление контекста для каждого входного токена.

Многие задачи, такие как ответы на вопросы (QA) и интерфейс естественного языка (NLI), требуют понимания отношений между двумя предложениями, которые не фиксируются языковой моделью. Итак, используем задачу NSP.

В этой задаче нам дают два предложения (A и B) и просят предсказать, следует ли B за A. Обучающие данные могут быть сгенерированы тривиально. В 50% случаев B следует за A в корпусе, а в 50% случаев B является случайным предложением из корпуса.

Обе вышеуказанные задачи (MLM и NSP) объединены, и модель обучается с комбинированной функцией потерь. Например.-

(Токен [SEP] используется для разделения двух предложений. Токены [SEP] и [CLS] обсуждаются в следующем разделе)

[CLS] человек пошел в магазин [MASK] [SEP] он купил галлон [MASK] молока [SEP] = ›должен выдать высокую вероятность для задачи NSP.

[CLS] человек [МАСКА] в магазин [SEP] пингвин [МАСКА] нелетающие птицы [SEP] = ›должен выводить низкую вероятность для задачи NSP.

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

Для обработки различных задач НЛП BERT должен обрабатывать как ввод одного предложения, так и пару предложений (например, ‹Вопрос, Ответ›) в единой последовательности.

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

«Последовательность» относится к одному или двум предложениям, собранным вместе.

Для каждого токена мы используем вложения WordPiece [5]. Объем словарного запаса = 30,000

[CLS] -первый токен каждой последовательности. Окончательное представление скрытого состояния © этого токена используется в качестве представления последовательности для задач классификации.

[SEP] - используется для разделения двух предложений.

В конце предыдущего раздела приведены два примера.

Вложения электронного ввода

Tᵢ / Tᵢ’- Окончательное скрытое представление токена i предложения A / B

Tᵢ используются для задачи MLM

C используется для задачи NSP (C не является значимым представлением предложения без точной настройки, так как он был обучен только для задачи NSP)

И C, и Tᵢ ∈ ℝʰ, где h - размер скрытого измерения.

Встраивание входных данных = Встраивание токенов + Встраивание сегментов + Встраивание позиций

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

Встраивание позиций используется для фиксации абсолютного положения каждого входа (как в оригинальной Transformer Paper).

Изучены вложения Eₐ, E_b, [CLS] и [SEP].

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

  1. Обе задачи (MLM и NSP) имеют комбинированную функцию потерь.

Общая потеря = сумма среднего замаскированного правдоподобия LM + средняя вероятность NSP

2. В этой статье используется активация GELU [4] вместо ReLU.

3. Авторы обучили две модели BERT - BERT_BASE и BERT_LARGE.

BERT_BASE- L = 12, H = 768, A = 12, Всего параметров = 110M

BERT_LARGE- L = 24, H = 1024, A = 16, Всего параметров = 340M

L- количество слоев (трансформаторных блоков)

H- скрытый размер

A- количество голов самовнимания

BERT_LARGE лучше, чем BETTER_BASE, и превосходит все результаты SOTA на 11 задачах НЛП.

Тонкая настройка

Для каждой задачи мы предоставляем BERT специфические входные и выходные данные и полностью настраиваем все параметры.

На входе предложения A и B из предварительного обучения аналогичны -

  1. пары предложений в перефразировании
  2. пара гипотеза-посылка в следствии
  3. пара вопрос-отрывок в QA
  4. вырожденная пара текст-ϕ (одно предложение) при классификации текста или тегах последовательностей

На выходе-

  1. представления токенов передаются на выходной уровень для задач уровня токенов (например, тегирование последовательности или контроль качества)
  2. Представление [CLS] подается на выходной уровень для задач классификации (например, таких как следствие или анализ тональности).

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

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

КЛЕЙ

Оценка общего понимания языка (GLUE) - это набор из 9 различных задач НЛП. Все они представляют собой задачи классификации с одним предложением или парами предложений. Итак, мы можем использовать C (скрытое представление токена [CLS]) в качестве агрегированного представления и использовать его для классификации. Мы вводим выходной слой прямой связи размерности K x H, где K = размер словаря. Мы используем журнал softmax в качестве потери классификации.

SQuAD v1.1

Стэнфордский набор данных с ответами на вопросы (SQuAD) - это набор тысяч пар вопрос / ответ. Учитывая вопрос и отрывок (из Википедии), мы должны предсказать диапазон ответов в отрывке. Интервал здесь означает, что ответом должен быть непрерывный фрагмент текста отрывка, который является ответом на вопрос. Итак, мы должны предсказать только начальную и конечную позиции этого текста. Производительность по этой задаче рассчитывается с использованием оценки F1.

Мы вводим начало и векторы, S и E ∈ ℝʰ во время точной настройки. Вероятность того, что слово i будет началом диапазона ответов, - это скалярное произведение между S и Tᵢ, за которым следует softmax по всем словам в абзаце. Точно так же мы можем найти вероятность окончания диапазона ответов.

Оценка кандидата от позиции i до позиции j определяется как S⋅Tᵢ + E⋅Tⱼ и максимальный интервал оценки, где j≥i - прогноз. Целью обучения является сумма логарифмических вероятностей правильных начальных и конечных положений.

SQuAD v2.0

То же, что и SQuAD v1.1, но теперь возможно, что ответа не существует.

Мы рассматриваем вопросы, у которых нет диапазона ответов, как имеющие диапазон ответов, который начинается и заканчивается токеном [CLS]. Оценка количества ответов, оставшихся без ответа = S⋅C + E⋅ C.

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

РАСКАЧИВАТЬСЯ

В «Ситуациях с состязательными поколениями» (SWAG) есть тысячи примеров пар предложений. Для данного предложения задача состоит в том, чтобы выбрать наиболее правдоподобное продолжение из четырех вариантов.

Во время точной настройки мы создаем четыре входные последовательности, каждая из которых содержит данное предложение (предложение A) и каждый из четырех вариантов (предложение B). Вводится новый вектор, скалярное произведение которого на C дает оценку для каждого из четырех вариантов.

Функциональный подход

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

Использованная литература-

  1. BERT- https://arxiv.org/pdf/1810.04805.pdf
  2. Предварительно обученные модели BERT - https://github.com/google-research/bert#pre-trained-models
  3. Бумага для трансформаторов- https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf
  4. Блог трансформера - http://jalammar.github.io/illustrated-transformer/
  5. Статья GELU - https://medium.com/@shoray.goel/gelu-gaussian-error-linear-unit-4ec59fb2e47c
  6. Бумага для встраивания WordPiece - https://arxiv.org/pdf/1609.08144.pdf