2018 год стал переломным в развитии моделей машинного обучения, направленных на решение задач обработки текста (или, правильнее, обработки естественного языка (NLP)).
Концептуальное понимание того, как представлять слова и предложения, чтобы наиболее точно извлечь их значения и связи между ними, быстро растет. Более того, сообщество НЛП продвигает невероятно мощные инструменты, которые вы можете скачать бесплатно и использовать в своих моделях и конвейерах.
Этот переломный момент еще называют Момент ImageNet в НЛП , имея в виду время несколько лет назад, когда подобные разработки значительно ускорили развитие машинного обучения в области задач компьютерного зрения.
(УЛМ-ФиТ не имеет никакого отношения к Коржику, но ничего лучшего я не придумал) Одним из последних фундаментальных разработок в этой области является выпускать БЕРТ , событие, которое положило начало новая эра в НЛП.
BERT — это модель, побившая несколько рекордов успеха в решении ряда задач НЛП.
Вскоре после публикации статьи с описанием модели команда разработчиков также выложила в открытый доступ код модели и дала возможность скачивать разные версии BERT, уже предварительно обученные на больших наборах данных.
Этот знаковый шаг позволил любому разработчику встроить мощный компонент «из коробки» в свои модели машинного обучения обработки естественного языка, сэкономив им время, энергию и ресурсы, необходимые для обучения модели обработки языка с нуля.
Разработка БЕРТ.
Шаг 1: загрузите модель (предварительно обученную на неразмеченных данных); Шаг 2: тонкая настройка модели.
BERT опирается на ряд недавних разработок сообщества НЛП, включая, помимо прочего: Последовательное обучение с полуконтролем (авторы - Эндрю Дай И Куок Ле ), ЭЛМО (авторы - Мэтью Питерс и исследователи из AI2 И UW C.S.E. ), УЛМФиТ (авторы: основатель fast.ai Джереми Ховард И Себастьян Рудер ), OpenAI Трансформатор (авторы — исследователи OpenAI Рэдфорд , Нарасимхан , Салиманы , И Суцкевер ) и Трансформатор ( Васвани и др.
).
Давайте изложим некоторые понятия, которые необходимо знать, чтобы правильно изучать BERT. Начнем с понятий, связанных с использованием этой модели, а затем заглянем под капот. Пример: Классификация предложений Самый очевидный способ использования BERT — классифицировать фрагмент текста.
Такая модель может выглядеть следующим образом:
Для обучения модели вам, как правило, нужно обучить только классификатор с минимальными изменениями в самой модели BERT на этапе обучения.
Этот процесс обучения называется тонкой настройкой, истоки которого лежат в статье.
Последовательное обучение с полуконтролем и модели УЛМФИТ.
Для людей, не погруженных в эту тему, использование классификатора означает, что мы находимся в сфере контролируемого машинного обучения.
Для обучения такой модели требуется размеченный набор данных.
В случае классификатора спама помеченный набор данных будет представлять собой список сообщений электронной почты и их классов («спам» или «не спам»).
Другие примеры использования BERT:
- Анализ настроений
- Входные данные: обзор фильма/продукта.
Выход: положительный/отрицательный тон.
- Пример набора данных: ССТ
- Входные данные: обзор фильма/продукта.
- Проверка фактов :
- Вступление: предложение.
Результат: «Претензия» или «Не претензия».
- Более амбициозный/футуристический пример:
- Входные данные: Исковое предложение.
Выход: «Правда» или «Ложь».
- Входные данные: Исковое предложение.
- Полный факт — это организация, которая разрабатывает автоматизированные средства проверки фактов для общественной пользы.
Частью их конвейера является классификатор, который читает новостные статьи и распознает сомнительные факты, которые затем можно проверить (в настоящее время человеком, позже, возможно, с помощью машинного обучения).
- Видео: Встраивание предложений для автоматической проверки фактов
- Вступление: предложение.
В выпускной статье описаны две модели BERT разных размеров:
- BERT BASE — по размеру и производительности сравним с OpenAI Transformer;
- BERT LARGE (Extended) — поистине огромная модель, добившаяся непревзойденных результатов (современного уровня техники), описанных в статье.
предыдущая статья , где описаны принципы работы модели Трансформера — фундаментальной концепции для BERT и концепций, о которых мы поговорим дальше.
Обе модели BERT имеют большое количество слоев кодировщика (в статье называемых «блоками трансформаторов»): 12 для базовой версии и 24 для расширенной версии.
Они также имеют более крупные слои сети прямой связи (768 и 1024 скрытых нейрона соответственно) и больше голов внимания (12 и 16 соответственно), чем базовая конфигурация Трансформера, описанная в исходной статье (6 слоев кодера, 512 скрытых нейронов, 8 «голов» внимания).
Входные данные модели
Первый входной токен имеет специальный токен [CLS] по причинам, о которых мы поговорим позже.
CLS в данном случае означает классификацию.
Как и обычный преобразователь, BERT принимает на вход последовательность слов, которая затем перемещается вверх по стеку кодера.
Каждый уровень кодировщика применяет самообладание и передает результаты в сеть прямой связи перед отправкой их следующему кодировщику.
С архитектурной точки зрения этот процесс идентичен Трансформеру до следующего шага (за исключением размера, который является настраиваемым параметром).
Но что касается производительности, эти две модели существенно различаются.
Выходные данные модели
Для каждой позиции выходные данные представляют собой вектор размерности скрытый_размер (768 в базовой модели BERT).В примере классификации предложений, который мы рассмотрели выше, давайте сосредоточимся на выводе только первой позиции (которой мы передали специальный токен [CLS]).
Этот вектор можно использовать в качестве входного вектора для выбранного нами классификатора.
Авторам статьи удалось добиться отличных результатов, используя в качестве классификатора нейронную сеть всего с одним слоем.
Если у вас более двух тегов (например, если почтовый клиент сортирует письма на «спам», «не спам», «социальные сети», «предложения» и т. д.), вам просто нужно добавить больше выходных нейронов в нейронную сеть-классификатор и пропускаем их через softmax.
Параллели со сверточными сетями Для тех, кто знаком с компьютерным зрением, эта векторная передача может напоминать то, что происходит между сверточной частью сети, такой как VGGNet, и ее классификационными полносвязными уровнями.
Новая эра вложений Обсуждаемые новые разработки приносят с собой революцию в кодировании слов.
Раньше основной силой, с которой модели НЛП могли иметь дело с языком, были встраивания слов: для таких задач широко использовались такие методы, как Word2Vec и GloVe. Итак, давайте сначала объясним, как использовать эти методы, а затем посмотрим, что изменилось.
Краткий обзор механизма встраивания слов
Чтобы обрабатывать слова с помощью моделей машинного обучения, вам нужна некоторая форма числового представления этих слов, которую модели могут использовать в своих вычислениях.Word2Vec показал, что мы можем использовать вектор (набор чисел) для представления слов таким образом, чтобы можно было передать их семантику или семантические отношения (т.е.
способность различать похожие и противоположные слова или находить параллели в отношениях пар слов, таких как «Стокгольм» — «Швеция» и «Каир» — «Египет»), а также синтаксические или грамматические связи (например, определение того, что связь между «had» и «have» такая же, как между «was» и «had» быть" ).
Сообщество быстро осознало, что лучше использовать встраивания, предварительно обученные на больших объемах текста, чем обучать их вместе с моделью на зачастую довольно небольшом наборе данных.
Теперь можно загружать списки слов и их встраивания, созданные с помощью предварительного обучения Word2Vec или GloVe. Это пример встраивания в GloVe слова «палка» (где размерность встраивания равна 200):
Вложение слова «палка» из модели GloVe представляет собой вектор из 200 чисел с плавающей запятой (округленных до 2 десятичных знаков).
Для удобства в этой статье такие большие векторы будут изображены схематически в виде нескольких квадратов одного цвета.
ELMo: контекст имеет значение
Если мы используем представление GloVe, слово «палка» будет представлено этим вектором независимо от контекста.«Подождите минутку», — сказали некоторые исследователи НЛП (а именно Питерс и др.
др.
, 2017 г.
др.
, 2017 г.
и опять Питерс и др.
др.
, 2018 в статье о ELMo ).
– «Слово «палка» имеет много значений в зависимости от того, где оно употребляется.
Почему бы не встроить его исходя из контекста, в котором оно находится, — чтобы передать не только смысл слова, но и контекстную информацию? Так появились контекстуализированные встраивания слов.
Контекстуализированные вложения придают словам разные векторы в зависимости от их семантики в контексте предложения.
Вместо использования фиксированных вложений слов ELMo просматривает все предложение, прежде чем присваивать каждому слову его встраивание.
Он использует двунаправленную модель долговременной краткосрочной памяти (двунаправленный LSTM), обученную специально для задачи создания таких вложений.
ELMo стал важным шагом на пути к предварительному обучению НЛП.
Если ELMo LSTM был обучен на большом наборе текстов на нашем целевом языке, мы можем использовать его как компонент других моделей, предназначенных для обработки естественного языка.
В чем секрет ELMo? ELMo обрела способность понимать язык после того, как научилась предсказывать новое слово в последовательности слов — задача, называемая моделированием языка.
Это удобно, поскольку у нас есть большие объемы текстовых данных, на которых модель может учиться без необходимости разметки.
Эtap в предварительном обучении ELMo: учитывая входную последовательность «Давайте придерживаться», мы должны предсказать следующее наиболее вероятное слово — задачу моделирования языка.
Во время обучения на большом наборе данных модель начинает изучать языковые конструкции.
Вряд ли она правильно угадает следующее слово в этом примере.
Более реалистично, что после слова типа «зависать» модель присвоит более высокую вероятность слову типа «выйти» (чтобы создать фразу «тусоваться»), чем слову «камера».
На изображении показаны скрытые состояния каждого слоя LSTM, выглядывающие из-за головы ELMo. Они пригодятся позже в процессе создания вложений, после завершения предварительного обучения.
Фактически, ELMo идет еще дальше и обучает двунаправленный LSTM так, что языковая модель «чувствует» не только следующее слово, но и предыдущее.
Отличная презентация об ЭлМо ELMo создает контекстуальное внедрение, группируя скрытые состояния (и первоначальное внедрение) определенным образом (конкатенация следует за взвешенным сложением).
ULM-FiT: реализация трансферного обучения в НЛП ULM-FiT предоставил методы для эффективного использования того, что модель изучает во время предварительного обучения, — это больше, чем просто внедрения или контекстуальные внедрения.
ULM-FiT представил языковую модель и процесс для эффективной настройки этой модели для различных задач.
У НЛП наконец-то появился способ осуществлять трансферное обучение, возможно, так же успешно, как оно использовалось для задач компьютерного зрения.
Трансформатор: выход за рамки сетей LSTM Выпуск статьи и кода, представляющего публике Transformer, а также результаты, которых удалось достичь в задачах машинного перевода, заставили некоторых людей в сообществе НЛП задуматься о замене LSTM. Главным аргументом была способность Трансформеров лучше справляться с длительными зависимостями.
Структура кодера-декодера Transformer идеально подходит для задач машинного перевода.
Но как это может помочь в задачах классификации предложений? И как его можно использовать для предварительного обучения языковой модели, которую можно настроить для решения других задач приложения (например, задач контролируемого обучения, в которых используются предварительно обученные модели или компоненты)? OpenAI Transformer: предварительная подготовка декодера трансформера для языкового моделирования.
Как оказалось, нам не нужен целый Трансформер, чтобы применять трансферное обучение и специальную языковую модель к задачам НЛП.
Мы можем сделать это только на декодере Transformer. Это не случайный выбор: декодер маскирует будущие токены, что отлично подходит для задачи моделирования языка (предсказания следующего слова).
OpenAI Transformer состоит из стека декодеров Transformer. Модель состоит из 12 слоев декодера.
В отсутствие кодеров эти уровни декодирования не будут иметь подуровня внимания кодера-декодера, который использует обычный декодер Transformer. Однако у них все равно будет слой внутреннего внимания (с замаскированными будущими токенами).
Имея такую структуру, мы можем перейти к обучению модели для той же задачи моделирования языка: прогнозирования следующего слова с использованием большого неразмеченного набора данных.
Вам просто нужно скачать 7 тысяч книг и на них обучить модель.
Книги идеально подходят для такого типа задач, потому что.
они позволяют модели научиться находить связанные фрагменты текста, даже если они значительно отделены друг от друга - чего невозможно достичь, обучая модель на твитах или новостных статьях.
.
OpenAI Transformer готов к обучению предсказывать следующее слово на наборе данных из 7000 книг
Перенос обучения в прикладных задачах Теперь, когда OpenAI Transformer предварительно обучен и его слои настроены для обработки естественного языка, мы можем начать использовать его для решения задач приложений.
Во-первых, давайте посмотрим на классификацию предложений (отнесение электронного письма к «спаму» или «не спаму»):
В статье OpenAI указывается на ряд преобразований, которые позволяют обрабатывать входные данные для решения самых разных задач.
На следующем изображении из этой статьи показаны структуры моделей и входные преобразования в зависимости от задач:
Умно, не так ли?
BERT: от декодеров к кодерам OpenAI Transformer предоставил нам настраиваемую предварительно обученную модель, основанную на архитектуре Transformer. Но при переходе от LSTM к Трансформерам кое-что осталось нераскрытым.
Языковая модель ELMo была двунаправленной, но OpenAI Transformer обучает только однонаправленную модель.
Можем ли мы создать модель на основе Трансформера, которая могла бы смотреть как вперед, так и назад (технически «обуславливаться как левым, так и правым контекстом»)?
«Подержи мое пиво», — сказал Берт из фильмов для взрослых.
Модель замаскированного языка
«Мы будем использовать кодеры Transformer», — сказал Берт. "Это безумие!" - ответил Эрни.«Все знают, что двунаправленное кондиционирование позволит каждому слову непоследовательно видеть себя в многоуровневом контексте».
«Мы будем использовать маски», — уверенно заявил Берт.
Для задач языкового моделирования BERT использует интеллектуальные маски для 15% слов во входном предложении и просит модель предсказать пропущенное слово.
Поиск подходящей задачи для обучения стека кодировщиков Transformer — сложное препятствие, которое BERT преодолевает, прибегая к концепции «модели языка в маске» из более ранних исследований (также известной как «закрытый тест»).
Помимо маскировки 15% входного предложения, BERT также слегка перемешивает слова, чтобы улучшить последующую точную настройку модели.
Иногда он случайным образом переставляет слова и просит модель предсказать правильное положение слова.
Проблемы с двумя предложениями
Оглядываясь назад на входные преобразования OpenAI Transformer, некоторые задачи требуют, чтобы модель выдавала что-то значимое в двух предложениях (например, являются ли они просто перефразированием друг друга? Использование статьи Википедии в качестве входного предложения и вопроса об этой статье в качестве другого входного предложения).предложение, можем ли мы ответить на этот вопрос?).
Чтобы BERT лучше справлялся с выявлением связей в нескольких предложениях, предварительное обучение включает в себя дополнительное задание: дать два предложения (А и Б); Какова вероятность того, что B появится после A?
Вторая задача, на которой предварительно обучается BERT, — это задача классификации двух предложений.
Токенизация на этом рисунке упрощена, потому что.
BERT использует в качестве токенов WordPieces, а не слова, поэтому некоторые слова разбиваются на более мелкие части.
Модели для конкретных задач
В статье о BERT перечислено несколько способов его использования для различных задач.
а) Задачи классификации для двух предложений: MNLI, QQP, QNLI, STS-B, MRPC, RTE, SWAG; б) задачи классификации по одному предложению: SST-2, CoLA; в) задания вопросов и ответов: SQuAD v1.1; г) проблемы с маркировкой одним предложением: CoNLL-2003 NER.
BERT для извлечения признаков
Подход тонкой настройки — не единственный способ использования BERT. Как и в случае с ELMo, мы можем использовать предварительно обученный BERT для создания контекстуальных вложений.Эти встраивания затем можно внедрить в существующую модель, и этот процесс показал результаты, сравнимые с точной настройкой таких задач, как распознавание именованных объектов.
Какой вектор больше подходит для контекстуального встраивания? Это зависит от задачи.
В статье представлены 6 вариантов (в сравнении с тюнингованной моделью, достигшей результата 96,4):
Тест-драйв БЕРТ Лучший способ опробовать BERT в действии — включить ноутбук.
BERT FineTuning с облачными TPU , размещенный в Google Colab. Если вы никогда раньше не использовали Cloud TPU, это прекрасная возможность попробовать, потому что.
Код BERT хорошо работает как на TPU, так и на CPU и GPU. Следующим шагом будет просмотр кода в Репозитории BERT :
- Модель встроена в моделирование.
py
(класс BertModel) и практически идентичен обычному кодировщику Transformer. - run_classifier.py – пример процесса тонкой настройки.
Он также создает уровень классификации для контролируемой модели.
Если вы хотите создать свой собственный классификатор, см.
метод create_model() в этом файле.
- Для загрузки доступны несколько предварительно обученных моделей, включая базовую и расширенную BERT для английского и китайского языков, а также многоязычную модель, обученную на Википедии и охватывающую 102 языка.
- BERT не рассматривает слова как токены.
Вместо этого он работает с WordPieces. токенизация.
py – токенизатор, преобразующий слова в WordPieces, подходящие для BERT.
Библиотека АлленНЛП использует его для применения вложений BERT к любой модели.
Авторы
- Оригинальный автор — Джей Аламмар
- Перевод — Смирнова Екатерина
- Редактирование и верстка — Шкарин Сергей
-
6 Грехов, Которые Совершают Программисты
19 Oct, 24 -
Работа Программистом В Кндр.
19 Oct, 24