- Классификация настроений
- Классификация предложений
- Ответы на вопросы с несколькими вариантами ответов
Двунаправленные кодирующие представления из трансформаторов ( BERT ) — это языковая модель , представленная в октябре 2018 года исследователями из Google . [1] [2] Она учится представлять текст как последовательность векторов с помощью самоконтролируемого обучения . Она использует архитектуру преобразователя только с кодером . Она примечательна своим резким улучшением по сравнению с предыдущими современными моделями и является ранним примером большой языковой модели . По состоянию на 2020 год [обновлять]BERT является повсеместной базовой линией в экспериментах по обработке естественного языка (NLP). [3]
BERT обучается с помощью маскированного предсказания токенов и предсказания следующего предложения. В результате этого процесса обучения BERT изучает контекстные, скрытые представления токенов в их контексте, подобно ELMo и GPT-2 . [4] Он нашел применение во многих задачах обработки естественного языка, таких как разрешение кореферентности и разрешение полисемии . [5] Это эволюционный шаг по сравнению с ELMo , и он породил исследование «BERTology», которое пытается интерпретировать то, что изучает BERT. [3]
BERT изначально был реализован на английском языке в двух размерах моделей: BERT BASE (110 миллионов параметров) и BERT LARGE (340 миллионов параметров). Оба были обучены на Toronto BookCorpus [6] (800 миллионов слов) и английской Wikipedia (2500 миллионов слов). Веса были опубликованы на GitHub . [7] 11 марта 2020 года было выпущено 24 меньших модели, самой маленькой из которых была BERT TINY с всего 4 миллионами параметров. [7]
BERT — это архитектура преобразователя «только кодер» . На высоком уровне BERT состоит из 4 модулей:
Заголовок задачи необходим для предварительной подготовки, но он часто не нужен для так называемых «нисходящих задач», таких как ответы на вопросы или классификация настроений . Вместо этого удаляют заголовок задачи и заменяют его новым инициализированным модулем, подходящим для задачи, и настраивают новый модуль. Скрытое векторное представление модели напрямую подается в этот новый модуль, что позволяет эффективное по выборке обучение переносу . [1] [8]
В этом разделе описывается внедрение, используемое BERT BASE . Другой, BERT LARGE , похож, только больше.
Токенизатором BERT является WordPiece, представляющий собой стратегию подслов, подобную кодированию пар байтов . Размер его словаря составляет 30 000, и любой токен, не встречающийся в его словаре, заменяется на [UNK]
(«неизвестно»).
Первый слой — это слой внедрения, который содержит три компонента: внедрения типа токена, внедрения положения и внедрения типа сегмента.
[SEP]
специального токена. Все предыдущие токены — это тип 0.Три вектора встраивания складываются, представляя начальное представление токена как функцию этих трех частей информации. После встраивания векторное представление нормализуется с помощью операции LayerNorm , выводя 768-мерный вектор для каждого входного токена. После этого векторы представления передаются вперед через 12 блоков кодировщика Transformer и декодируются обратно в 30 000-мерное словарное пространство с помощью базового слоя аффинного преобразования.
Стек кодировщика BERT имеет 2 свободных параметра: , количество слоев, и , скрытый размер . Всегда есть головки самовнимания, а размер прямой связи/фильтра всегда равен . Изменяя эти два числа, можно получить целое семейство моделей BERT. [9]
Для БЕРТ
Обозначение стека кодировщика записывается как L/H. Например, BERT BASE записывается как 12L/768H, BERT LARGE как 24L/1024H, а BERT TINY как 2L/128H.
BERT был предварительно обучен одновременно двум задачам. [10]
В моделировании языка в масках 15% токенов будут выбраны случайным образом для задачи прогнозирования в масках, а целью обучения было предсказать токен в масках с учетом его контекста. Более подробно, выбранный токен
[MASK]
с вероятностью 80%,Причина, по которой не все выбранные токены маскируются, заключается в том, чтобы избежать проблемы сдвига набора данных. Проблема сдвига набора данных возникает, когда распределение входных данных, наблюдаемых во время обучения, значительно отличается от распределения, встречающегося во время вывода. Обученная модель BERT может быть применена к представлению слов (например, Word2Vec ), где она будет запущена по предложениям, не содержащим никаких [MASK]
токенов. Позже было обнаружено, что более разнообразные цели обучения, как правило, лучше. [11]
В качестве наглядного примера рассмотрим предложение "моя собака милая". Сначала оно будет разделено на токены типа "моя 1 собака 2 милая 3 4 ". Затем будет выбран случайный токен в предложении. Пусть это будет 4-й токен "милый 4 " . Далее, будет три возможности:
[MASK]
4 »;После обработки входного текста четвертый выходной вектор модели передается на уровень декодера, который выводит распределение вероятностей по своему 30 000-мерному словарному пространству.
Учитывая два диапазона текста, модель предсказывает, появлялись ли эти два диапазона последовательно в обучающем корпусе, выдавая либо [IsNext]
или [NotNext]
. Первый диапазон начинается со специального токена [CLS]
(для «классифицировать»). Два диапазона разделены специальным токеном (для «разделить») [SEP]
. После обработки двух диапазонов 1-й выходной вектор (векторное кодирование для [CLS]
) передается в отдельную нейронную сеть для бинарной классификации в [IsNext]
и [NotNext]
.
[CLS]
моя собака милая, [SEP]
она любит играть», модель должна вывести токен [IsNext]
.[CLS]
моя собака милая [SEP]
, как работают магниты», модель должна выводить токен [NotNext]
.BERT подразумевается как общая предобученная модель для различных приложений в обработке естественного языка. То есть, после предварительной подготовки BERT может быть тонко настроен с меньшими ресурсами на меньших наборах данных для оптимизации его производительности на определенных задачах, таких как вывод естественного языка и классификация текста , а также задачи генерации языка на основе последовательности-в-последовательности, такие как ответы на вопросы и генерация разговорных ответов. [12]
В оригинальной статье BERT были опубликованы результаты, демонстрирующие, что небольшая тонкая настройка (для BERT LARGE , 1 час на 1 Cloud TPU) позволила достичь передовой производительности в ряде задач по пониманию естественного языка : [1]
В оригинальной статье все параметры BERT были точно настроены, и рекомендовалось, чтобы для последующих приложений, которые являются классификациями текста, выходной токен на [CLS]
входном токене подавался в линейный слой softmax для создания выходных меток. [1]
Исходная кодовая база определяла конечный линейный слой как «слой пулера», по аналогии с глобальным пулом в компьютерном зрении, хотя он просто отбрасывает все выходные токены, за исключением одного, соответствующего [CLS]
. [15]
BERT обучался на BookCorpus (800 млн слов) и отфильтрованной версии английской Википедии (2500 млн слов) без списков, таблиц и заголовков.
Обучение BERT BASE на 4 облачных TPU (всего 16 чипов TPU) заняло 4 дня, ориентировочная стоимость составила 500 долларов США. [7] Обучение BERT LARGE на 16 облачных TPU (всего 64 чипа TPU) заняло 4 дня. [1]
Такие языковые модели, как ELMo, GPT-2 и BERT, породили исследование «BERTology», которое пытается интерпретировать то, что узнают эти модели. Их производительность в этих задачах понимания естественного языка пока не очень хорошо изучена. [3] [16] [17] Несколько исследовательских публикаций в 2018 и 2019 годах были сосредоточены на изучении взаимосвязи, лежащей в основе выходных данных BERT в результате тщательно выбранных входных последовательностей, [18] [19] анализа внутренних векторных представлений с помощью классификаторов зондирования, [20] [21] и взаимосвязей, представленных весами внимания . [16] [17]
Высокая производительность модели BERT также может быть связана [ требуется цитата ] с тем фактом, что она двунаправленно обучается. Это означает, что BERT, основанный на архитектуре модели Transformer, применяет свой механизм внутреннего внимания для изучения информации из текста с левой и правой стороны во время обучения и, следовательно, получает глубокое понимание контекста. Например, слово fine может иметь два разных значения в зависимости от контекста ( I feel fine today , She has fine blonde hair ). BERT рассматривает слова, окружающие целевое слово fine с левой и правой стороны.
Однако это имеет свою цену: из-за архитектуры только с кодером , не имеющей декодера, BERT не может быть подсказан и не может генерировать текст , в то время как двунаправленные модели в целом не работают эффективно без правой стороны, поэтому их трудно подсказать. В качестве иллюстративного примера, если кто-то хочет использовать BERT для продолжения фрагмента предложения «Сегодня я пошел в», то наивно можно было бы замаскировать все токены как «Сегодня я пошел в [MASK]
[MASK]
[MASK]
... [MASK]
», где число [MASK]
— это длина предложения, на которое нужно расширить. Однако это представляет собой сдвиг набора данных, так как во время обучения BERT никогда не видел предложений с таким количеством замаскированных токенов. Следовательно, его производительность ухудшается. Более сложные методы позволяют генерировать текст, но с высокой вычислительной стоимостью. [22]
BERT был первоначально опубликован исследователями Google Джейкобом Девлином, Мин-Вей Чангом, Кентоном Ли и Кристиной Тутановой. Проект берет свое начало от предобучения контекстных представлений, включая полуконтролируемое последовательное обучение , [23] генеративное предварительное обучение, ELMo , [24] и ULMFit. [25] В отличие от предыдущих моделей, BERT является глубоко двунаправленным, неконтролируемым языковым представлением, предварительно обученным с использованием только корпуса обычного текста . Контекстно-свободные модели, такие как word2vec или GloVe, генерируют однословное представление встраивания для каждого слова в словаре, тогда как BERT учитывает контекст для каждого вхождения данного слова. Например, в то время как вектор для «running» будет иметь одинаковое векторное представление word2vec для обоих его вхождений в предложениях «He is manage a company» и «He is running a marathon», BERT предоставит контекстуализированное встраивание, которое будет отличаться в зависимости от предложения. [4]
25 октября 2019 года Google объявила, что начала применять модели BERT для поисковых запросов на английском языке в США . [26] 9 декабря 2019 года стало известно, что BERT был принят Google Search для более чем 70 языков. [27] [28] В октябре 2020 года почти каждый запрос на английском языке был обработан моделью BERT. [29]
Модели BERT оказали влияние и вдохновили на создание множества вариантов.
RoBERTa (2019) [30] был инженерным усовершенствованием. Он сохраняет архитектуру BERT (немного больше, с 355M параметрами), но улучшает его обучение, изменяя ключевые гиперпараметры, удаляя задачу предсказания следующего предложения и используя гораздо большие размеры мини-пакетов .
DistilBERT (2019) преобразует BERT BASE в модель, содержащую всего 60% ее параметров (66M), сохраняя при этом 95% ее контрольных показателей. [31] [32] Аналогично, TinyBERT (2019) [33] представляет собой очищенную модель, содержащую всего 28% ее параметров.
ALBERT (2019) [34] использовал общий параметр между слоями и экспериментировал с независимым изменением скрытого размера и выходного размера слоя встраивания слов как двух гиперпараметров. Они также заменили задачу предсказания следующего предложения на задачу предсказания порядка предложений (SOP), где модель должна отличать правильный порядок двух последовательных текстовых сегментов от их обратного порядка.
ELECTRA (2020) [35] применила идею генеративно-состязательных сетей к задаче MLM. Вместо того, чтобы маскировать токены, небольшая языковая модель генерирует случайные правдоподобные замены, а более крупная сеть идентифицирует эти замененные токены. Малая модель стремится обмануть большую модель.
DeBERTa (2020) [36] — это значительный архитектурный вариант с распутанным вниманием . Его ключевая идея заключается в том, чтобы обрабатывать позиционное и токеновое кодирование отдельно во всем механизме внимания. Вместо того чтобы объединять позиционное кодирование ( ) и токеновое кодирование ( ) в один входной вектор ( ), DeBERTa сохраняет их отдельно как кортеж: ( ). Затем на каждом слое собственного внимания DeBERTa вычисляет три отдельные матрицы внимания, а не одну матрицу внимания, используемую в BERT: [примечание 1]
Три матрицы внимания поэлементно суммируются, затем пропускаются через слой softmax и умножаются на матрицу проекции.
Абсолютное кодирование положения включено в конечный слой внутреннего внимания в качестве дополнительных входных данных.