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

Помимо выходных слоев, одни и те же архитектуры используются как для предварительной подготовки, так и для тонкой настройки. Одни и те же параметры предварительно обученной модели используются для инициализации моделей для различных последующих задач. При тонкой настройке все параметры уточняются. Входными данными могут быть одно предложение (для распознавания объекта имени) или пара предложений (для ответа на вопрос). На протяжении всей этой работы «предложение» может быть произвольным отрезком непрерывного текста, а не реальным лингвистическим предложением. «Последовательность» относится к последовательности входных токенов для BERT, которая может представлять собой одно или два предложения, упакованные вместе. Перед каждым входом добавляется специальный символ [CLS]. Если ввод представляет собой пару, между ними вставляется специальный токен-разделитель [SEP] (например, разделяющий вопросы/ответы).

Архитектура

BERT — это обученный стек Transformer Encoder. Чтобы понять кодировщик Transformer, пожалуйста, обратитесь к моему предыдущему сообщению: Шаг за шагом в Transformer. Первый входной токен поставляется со специальным токеном [CLS]. CLS здесь означает классификацию. Каждая позиция выводит вектор размером hidden_size (768 в базе BERT). В примере с классификацией предложений мы фокусируемся на выводе только первой позиции (которую мы передали специальный токен [CLS]).

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

Входное представление

Чтобы заставить BERT справляться с различными последующими задачами, входное представление может однозначно представлять как одно предложение, так и пару предложений (например, h Вопрос, Ответ) в одной последовательности токенов. Его входное представление строится для заданного токена путем суммирования соответствующих вложений токенов, вложений сегментов и вложений позиций.

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

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

Задача 1. Маскированный LM (языковое моделирование)

Мы случайным образом маскируем некоторый процент входных токенов, а затем предсказываем эти замаскированные токены. Эта процедура называется «маскированный LM» (MLM). Токен [MASK] используется для замены замаскированных слов. Недостатком является то, что мы создаем несоответствие между предварительным обучением и тонкой настройкой, поскольку токен [MASK] не появляется во время тонкой настройки. Чтобы смягчить это, мы не всегда заменяем «замаскированные» слова фактическим токеном [MASK]. Вместо этого мы резервируем случайную выборку некоторых токенов для замены случайным словом или оставляем их без изменений:

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

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

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

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

Для каждой задачи мы подключаем входы и выходы, специфичные для задачи, в BERT и настраиваем все параметры от начала до конца. На входе предложение A и предложение B из предварительной подготовки аналогичны (1) парам предложений в перефразировании, (2) парам гипотеза-посылка в следствии, (3) парам вопрос-отрывок в ответе на вопрос и (4) вырожденная пара текст-∅ в классификации текста или тегировании последовательности. На выходе представления токенов передаются на выходной уровень для задач на уровне токенов, таких как пометка последовательности или ответы на вопросы. Представление [CLS] передается на выходной уровень для классификации, например для анализа следствий или настроений.

На следующем рисунке показано, как адаптировать одну и ту же модель BERT для разных задач:

Наборы стендовых данных включают:

MNLI: Multi-Genre Natural Language Inference — это крупномасштабная задача классификации следствий на основе краудсорсинга (Williams et al., 2018). Учитывая пару предложений, цель состоит в том, чтобы предсказать, является ли второе предложение следствием, противоречием или нейтральным по отношению к первому.

QQP: Quora Question Pairs — это задача бинарной классификации, целью которой является определение того, являются ли два вопроса, заданные в Quora, семантически эквивалентными.

SST-2:Стэнфордское дерево настроений — это бинарная задача классификации одного предложения, состоящая из предложений, извлеченных из обзоров фильмов, с человеческими аннотациями их настроений.

SQuAD: Стэнфордский набор данных для ответов на вопросы (SQuAD v1.1) представляет собой набор из 100 000 пар вопросов и ответов, полученных путем краудсорсинга.

CoNLL-2003: задача распознавания именованных объектов (NER).

Следующие шаги

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

BERT: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка

Учебник Tensorflow о том, как настроить BERT для различных задач, а также отличный пример использования TPU для обучения:

Решаем задачи GLUE с помощью BERT на ТПУ

Концентратор Tensorflow предварительно обученных моделей BERT, готовый к загрузке и использованию:

Коллекция Tensorflow Hub BERT

Я надеюсь, что этот пост поможет вам понять BERT и начать использовать BERT для решения задач НЛП!