BERT в двух словах: Инновационная языковая модель для NLP
Модель BERT (Bidirectional Encoder Representations from Transformers — “двунаправленные презентации кодировщика для трансформеров”) была представлена миру в статье, опубликованной исследователями из Google AI Language. Она вызвала нешуточный ажиотаж в сообществе машинного обучения, представив самые передовые на сегодняшний день результаты для целого ряда разных NLP (Natural Language Processing — “обработка естественного языка”) задач, включая формирование ответов на вопросы (SQuAD v1.1), формирование рассуждений на естественном языке (MNLI) и множество других категорий.
Ключевым техническим нововведением BERT является применение двунаправленного обучения трансформеров (популярной нынче модели с механизмом “внимания”) к языковому моделированию. Этот подход идет в разрез с предыдущими работами, которые рассматривали текстовую последовательность либо только слева направо, либо сочетали обучение слева направо и справа налево. Результаты этой работы показывают, что языковая модель с двунаправленным обучением способна достичь более глубокого понимания языкового контекста и потока, чем однонаправленные языковые модели. В статье исследователи подробно описывают новую технику под названием MLM (Masked Language Model — “маскированное языковое моделирование”), которая позволяет проводить двунаправленное обучение в моделях, для которых ранее это было невозможно.
Предыстория
Исследователи в области компьютерного зрения неоднократно демонстрировали пользу трансферного обучения (предварительного обучения модели нейронной сети на хорошо известной задаче, как например ImageNet, с последующим дообучением) с использованием уже обученной нейронной сети в качестве основы для новой модели с конкретной направленностью. В последние годы исследователи пришли к выводу, что подобная техника может быть чрезвычайно полезна и во многих задачах обработки естественного языка.
Еще один подход, проиллюстрирован в статье ELMo, который также очень популярен в NLP-задачах, — это обучение на основе признаков. В этом подходе предварительно обученная нейронная сеть создает векторные представления слов (word embeddings), которые затем используются в качестве признаков в NLP-моделях.
Как работает BERT
BERT использует трансформер — механизм “внимания”, который изучает контекстуальные отношения между словами (или подсловами) в тексте. В своей оригинальной форме трансформер включает в себя два отдельных механизма — кодировщик, который считывает введенный текст, и декодер, который выдает прогноз для задачи. Поскольку целью BERT является создание языковой модели, то ей необходим только кодировщик. Подробный разбор работы трансформера приведен в статье Google.
В отличие от направленных моделей, которые считывают вводимый текст последовательно (слева направо или справа налево), кодировщик трансформера считывает сразу всю последовательность слов. Поэтому он считается двунаправленным, хотя правильнее было бы сказать, что он не имеет конкретного направления. Эта особенность позволяет модели изучать контекст слова на основе всего его окружения (слева и справа от слова).
На приведенном ниже графике представлена общая структура кодировщика трансформера. Вход представляет собой последовательность токенов, которые сначала встраиваются в векторы, а затем обрабатываются в нейронной сети. Выход представляет собой последовательность векторов размера H, в которой каждый вектор соответствует входному токену с тем же индексом.
При обучении языковых моделей возникает проблема определения цели прогнозирования. Многие модели предсказывают следующее слово в последовательности (например, “Ребенок пришел домой из ___”) — это направленный подход, который по своей сути ограничивает контекстное обучение. Чтобы преодолеть эту проблему, BERT использует две стратегии обучения:
Маскированное языковое моделирование (MLM)
Перед вводом последовательности слов в BERT 15% слов в каждой последовательности заменяется токеном [MASK]. Затем модель пытается предсказать исходное значение замаскированных слов на основе контекста, предоставляемого другими, не замаскированными словами в последовательности. С технической точки зрения, предсказание выходных слов требует:
- Добавления слоя классификации поверх выходных данных кодировщика.
- Умножение выходных векторов на матрицу векторных представлений словаря (embedding matrix), преобразующую их к размерности словаря.
- Расчет вероятности каждого слова в словаре с помощью softmax.
Функция потерь BERT учитывает только прогнозы замаскированных значений и игнорирует прогнозы не замаскированных слов. Как следствие, модель сходится медленнее, чем направленные модели, что компенсируется большей осведомленностью о контексте (смотрите Выводы #3).
Примечание: На практике реализация BERT немного сложнее и не заменяет все 15% замаскированных слов. Дополнительную информацию ищите в Приложении A.
Прогнозирование следующего предложения (NSP)
В рамках процесса обучения BERT модель в качестве входных данных получает пары фраз, на которых она учится предсказывать, является ли вторая фраза в паре следующей после первой в исходном тексте. Во время обучения 50% входных данных представляют собой пары, в которых вторая фраза действительно является следующей фразой в исходном тексте, а в остальных 50% в качестве второй фразы выбирается случайная фраза из того же текста. Предполагается, что случайная фраза будет не связана по смыслу с первой фразой.
Чтобы помочь модели различить две фразы в процессе обучения, перед входом в модель входные данные обрабатываются следующим образом:
- В начало первой фразы вставляется токен [CLS]. В конец каждой из фраз вставляется токен [SEP].
- К каждому токену добавляется эмбеддинг (векторное представление) фразы, обозначающий Фразу A или Фразу B. Эмбеддинги фраз по своей концепции аналогичны эмбеддингам токенов со словарем из двух элементов.
- К каждому токену добавляется позиционный эмбеддинг, чтобы указать его положение в последовательности. Концепция и реализация позиционного эмбеддинга хорошо раскрыты в статье, посвященной трансформеру.
Источник: BERT [Devlin et al., 2018], с некоторыми изменениями
Чтобы предсказать, действительно ли вторая фраза связана с первой, выполняются следующие шаги:
- Вся входная последовательность проходит через модель-трансформер.
- Выход токена [CLS] преобразуется в вектор размерности 2×1 с помощью простого слоя классификации (обученные матрицы весов и смещений).
- Вычисление вероятности IsNextSequence с помощью softmax.
В процессе обучения BERT-модели, MLM и NSP обучаются вместе с целью минимизировать комбинированную функцию потерь двух стратегий.
Как использовать BERT (дообучение)
Использовать BERT для конкретной задачи относительно просто:
BERT можно использовать для самых разных языковых задач, добавляя небольшой для корректировки базовой модели:
- Задачи классификации, такие как, например, анализ тональности, выполняются аналогично классификации “следующей фразы”, добавляя слой классификации поверх выходных данных трансформера для токена [CLS].
- В задачах формирования ответов на вопросы (например, SQuAD v1.1) программа получает вопрос относительно текстовой последовательности и должна отметить ответ в этой последовательности. Используя BERT, модель вопрос/ответ можно обучить, изучая два дополнительных вектора, которые отмечают начало и конец ответа.
- При распознавании именованных объектов (NER — Named Entity Recognition) программа получает текстовую последовательность и должна помечать различные типы объектов (человек, организация, дата и т. д.), которые появляются в тексте. Используя BERT, NER-модель можно обучить, пропуская выходной вектор каждого токена через классификационный слой, который прогнозирует NER-метку.
При дообучении большинство гиперпараметров остаются такими же, как и при обучении базовой BERT. В статье даются конкретные рекомендации (раздел 3.5) по гиперпараметрам, требующим дообучения. Команда, разработавшая BERT, использовала эту технику для достижения самых высоких на сегодняшний день результатов в широком спектре сложных задач обработки естественного языка, подробно описанных в четвертом разделе статьи.
Выводы
- Размер модели имеет значение даже при большом масштабе. BERT_large с 345 миллионами параметров — самая большая модель в своем роде. Даже на небольших задачах очевидно превосходит BERT_base, которая реализует ту же архитектуру с “всего” 110 миллионами параметров.
- При достаточном количестве данных для обучения больше шагов обучения == более высокая точность. Например, в MNLI-задаче точность BERT_base улучшается на 1,0% при обучении с 1 млн шагов (размер батча — 128 000 слов) по сравнению с 500 000 шагов для батча того же размера.
- Двунаправленный подход BERT (MLM) сходится медленнее, чем подходы слева направо (поскольку в каждом батче прогнозируется только 15% слов), но двунаправленное обучение все-равно превосходит обучение слева направо после небольшого количества предварительных шагов.
Вычислительные потребности (обучение и применение)
Заключение
BERT, несомненно, является прорывом в использовании машинного обучения для обработки естественного языка. Тот факт, что она вполне доступна и позволяет быстро настраивать ее, вероятно, позволит найти широкий спектр практических применений в будущем. В этом посте мы попытались лишь описать основные идеи статьи, не утопая в технических деталях. Для тех, кто хочет более глубокого погружения в эту тему, мы настоятельно рекомендуем прочитать оригинал статьи и сопутствующие ей статьи, на которые в ней есть ссылки. Еще одной полезной ссылкой для вас будет исходный код и BERT-модели, которые охватывают 103 языка и были щедро представлены миру исследовательской группой в качестве открытого исходного кода.
Приложение A — Маскировка слов
Обучение языковой модели в BERT выполняется путем предсказания 15% токенов во входных данных, которые были выбраны случайным образом. Эти токены предварительно обрабатываются следующим образом — 80% заменяются токеном “[MASK]”, 10% — случайным словом и 10% — исходным словом. Замысел, который привел авторов к выбору этого подхода, заключается в следующем (спасибо Джейкобу Девлину из Google за информацию):
- Если бы мы использовали [MASK] в 100% случаев, модель не обязательно давала бы хорошие представления токенов для немаскированных слов. Немаскированные токены по-прежнему использовались для формирования контекста, но модель была бы в большей степени оптимизирована для прогнозирования замаскированных слов.
- Если бы мы использовали [MASK] в 90% случаев и случайные слова в остальных 10%, это научило бы модель тому, что наблюдаемое слово никогда не бывает правильным.
- Если бы мы использовали [MASK] в 90% случаев и сохраняли исходное слово в остальных 10%, тогда модель могла бы просто тривиально скопировать неконтекстный эмбеддинг.
Исследователи не проводили абляцию коэффициентов для этого подхода, и, возможно, он работал бы еще лучше с немного другими коэффициентами. Кроме того, производительность модели не проверялась при банальной маскировке 100% выбранных токенов.
Дополнительные сведения об этом исследовании вы можете найти на Lyrn.AI.
Как применять подход векторного представления слов в NLP? Поговорим об этом сегодня вечером на открытом уроке. На занятии узнаете:
— про подход векторного представления слов в NLP;
— несколько классических методов векторных представлений слов;
— как применять методы word embedding для решения NLP-задач.
Регистрация открыта по ссылке для всех желающих.
BERT (языковая модель)
BERT (англ. Bidirectional Encoder Representations from Transformers) — языковая модель, основанная на архитектуре трансформер, предназначенная для предобучения языковых представлений с целью их последующего применения в широком спектре задач обработки естественного языка.
Модель и архитектура
BERT представляет собой нейронную сеть, основу которой составляет композиция кодировщиков трансформера. BERT является автокодировщиком. В каждом слое кодировщика применяется двустороннее внимание, что позволяет модели учитывать контекст с обеих сторон от рассматриваемого токена, а значит, точнее определять значения токенов.
Представление данных
Рисунок 1. Представление входных данных модели
При подаче текста на вход сети сначала выполняется его токенизация. Токенами служат слова, доступные в словаре, или их составные части — если слово отсутствует в словаре, оно разбивается на части, которые в словаре присутствуют (см. рис. 1). Словарь является составляющей модели — так, в BERT-Base [1] используется словарь около 30,000 слов. В самой нейронной сети токены кодируются своими векторными представлениями (англ. embeddings), а именно, соединяются представления самого токена (предобученные), номера его предложения, а также позиции токена внутри своего предложения. Входные данные поступают на вход и обрабатываются сетью параллельно, а не последовательно, но информация о взаимном расположении слов в исходном предложении сохраняется, будучи включённой в позиционную часть эмбеддинга соответствующего токена.
Выходной слой основной сети имеет следующий вид: поле, отвечающее за ответ в задаче предсказания следующего предложения, а также токены в количестве, равном входному. Обратное преобразование токенов в вероятностное распределение слов осуществляется полносвязным слоем с количеством нейронов, равным числу токенов в исходном словаре.
Обучение
Предобучение
Рисунок 2. Схема этапа предобучения BERT
BERT обучается одновременно на двух задачах — предсказания следующего предложения (англ. next sentence prediction) и генерации пропущенного токена (англ. masked language modeling). На вход BERT подаются токенизированные пары предложений, в которых некоторые токены скрыты (см. рис. 2). Таким образом, благодаря маскированию токенов, сеть обучается глубокому двунаправленному представлению языка, учится понимать контекст предложения. Задача же предсказания следующего предложения есть задача бинарной классификации — является ли второе предложение продолжением первого. Благодаря ей сеть можно обучить различать наличие связи между предложениями в тексте.
Интерпретация этапа предобучения — обучение модели языку.
Точная настройка (Fine-tuning)
Этот этап обучения зависит от задачи, и выход сети, полученной на этапе предобучения, может использоваться как вход для решаемой задачи. Так, например, если решаем задачу построения вопросно-ответной системы, можем использовать в качестве ответа последовательность токенов, следующую за разделителем предложений. В общем случае дообучаем модель на данных, специфичных задаче: знание языка уже получено на этапе предобучения, необходима лишь коррекция сети.
Интерпретация этапа fine-tuning — обучение решению конкретной задачи при уже имеющейся общей модели языка.
Гиперпараметры
Гиперпараметрами модели являются [math]H[/math] — размерность скрытого пространства кодировщика, [math]L[/math] — количество слоёв-кодировщиков, [math]A[/math] — количество голов [2] в механизме внимания.
Данные и оценка качества
Предобучение ведётся на текстовых данных корпуса BooksCorpus [3] (800 млн. слов), а также на текстах англоязычной Википедии (2.5 млрд. слов). Качество модели авторы оценивают на популярном для обучения моделей обработки естественного языка наборе задач GLUE. [4]
Реализация
В репозитории Google Research доступны для загрузки и использования несколько вариантов обученной сети в формате контрольных точек обучения модели популярного фреймворка TensorFlow [5] . В таблице в репозитории приведено соответствие параметров [math]L[/math] и [math]H[/math] и моделей. Использование моделей с малыми значениями гиперпараметров на устройствах с меньшей вычислительной мощностью позволяет сохранять баланс между производительностью и потреблением ресурсов. Также представлены модели с различным типом скрытия токенов при обучении, доступны два варианта: скрытие слова целиком (англ. whole word masking) или скрытие составных частей слов (англ. WordPiece masking).
Также модель доступна для использования с помощью популярной библиотеки PyTorch. [6]
Пример использования
Приведём пример предказания пропущенного токена при помощи BERT в составе PyTorch. Скрытый токен — первое слово второго предложения.
# Загрузка токенизатора и входные данные tokenizer = torch.hub.load('huggingface/pytorch-transformers', 'tokenizer', 'bert-base-cased') text_1 = "Who was Jim Henson ?" text_2 = "Jim Henson was a puppeteer" # Токенизация ввода, также добавляются специальные токены начала и конца предложения. indexed_tokens = tokenizer.encode(text_1, text_2, add_special_tokens=True) segments_ids = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1] # Конвертирвание ввода в формат тензоров PyTorch segments_tensors = torch.tensor([segments_ids]) tokens_tensor = torch.tensor([indexed_tokens]) encoded_layers, _ = model(tokens_tensor, token_type_ids=segments_tensors) # Выбираем токен, который будет скрыт и позднее предсказан моделью masked_index = 8 indexed_tokens[masked_index] = tokenizer.mask_token_id tokens_tensor = torch.tensor([indexed_tokens]) # Загрузка модели masked_lm_model = torch.hub.load('huggingface/pytorch-transformers', 'modelWithLMHead', 'bert-base-cased') predictions = masked_lm_model(tokens_tensor, token_type_ids=segments_tensors) # Предсказание скрытого токена predicted_index = torch.argmax(predictions[0][0], dim=1)[masked_index].item() predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0] assert predicted_token == 'Jim'
Возможности
Преимущества
В отличие от прежних классических языковых моделей, BERT обучает контексто-зависимые представления. Например, word2vec [7] генерирует единственный эмбеддинг для одного слова, даже если слово многозначное и его смысл зависит от контекста. Использование BERT же позволяет учитывать окружающий контекст предложения, и генерировать различные эмбеддинги в таких случаях.
Контексто-зависимые модели в основном позволялют учитывать лишь левый или правый контекст токена. BERT же учитывает двусторонний контекст, что помогает модели лучше понимать смысл многозначных слов.
Применение
В 2019 году компания Google объявила об использовании BERT для анализа англоязычных поисковых запросов. [8] В конце того же года также было начато использование модели в алгоритме поиска на других языках. [9]
См. также
- Векторное представление слов
- Обработка естественного языка
- Автокодировщик
Примечания
- ↑Github — Google Research — BERT
- ↑Multi-Head Attention: Collaborate Instead of Concatenate
- ↑Aligning Books and Movies: Towards Story-like Visual Explanations by Watching Movies and Reading Books
- ↑GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding
- ↑TensorFlow
- ↑PyTorch
- ↑word2vec
- ↑Google Blog — Understanding searches better than ever before
- ↑Search Engine Journal — Google’s BERT Rolls Out Worldwide
Источники информации
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — Оригинальная статья
- BERT (language model) — статья в англоязычной Википедии
Алгоритм BERT: что умеет и не умеет делать
BERT – это алгоритм поисковой системы, которую создали ещё в 2018 году. Он был призван для того, чтобы улучшить релевантность результатов в поисковой выдаче за счёт чего он анализирует не ключевые фразы, а предложения.
Полное название алгоритма BERT — Bidirectional Encoder Representations from Transformers, что переводится на русский язык, как двунаправленная нейронная сеть кодировщик. В данный момент этот алгоритм применяется лишь на 10% запросов к поисковой системе, и в основном это для Соединённых Штатов Америки.
Главная особенность BERTа – способность анализировать запрос, как цельные предложения (в том числе предлоги и словосочетания) и подбирать наиболее релевантный результат, ориентируясь на контекст.
Внедрение BERT в основной алгоритм поисковой системы Google
В 2019 году (в октябре) Google «выкатил» обновление ядра алгоритма поиска под названием БЕРТ. Впредь, одноимённая нейронная сеть будет работать в качестве составляющего ядра алгоритма поиска. Как заверяет Google – это очень крупное обновление ядра со времен RankBrain (самообучающаяся система с искусственным интеллектом).
Большинство вебмастеров не заметили каких-то скачков трафика после «выката» нового алгоритма, однако, как заверяет Google, оно коснулось около 10% всех поисковых запросов. Для того, чтобы понять, почему вебмастера могли не ощутить значительных скачков в трафике, можем рассмотреть, как работает сам BERT, и на какие запросы он влияет.
В основном, все вебмастера сфокусированы на среднечастотных (СЧ) запросах, или на высокочастотных (ВЧ), которые состоят из 1-3 слов. BERT в свою очередь сфокусирован на обработку длинных запросов (НЧ и микро-НЧ). Именно поэтому, некоторые вебмастера не ощутили колебаний в трафике, на что повлиял данный алгоритм.
Очень сильно ощутили спад трафика «дорвейщики», которые делают упор на ВЧ запросы.
- BERT лучше всего понимает низкочастотные и микро-низкочастотные (запросы с длинными хвостами)
- Также, необходимо понимать, что алгоритм БЕРТ – это не фактор ранжирования, однако эта нейронная сеть позволяет Гуглу лучше разъяснять запросы пользователей и лучше понимать интент.
Заключение
Внедрение нейронной сети БЕРТ в ядро алгоритмов поиска Гугл – это очередной шаг корпорации к улучшению понимания вводимых запросов пользователей.
Данный алгоритм пройдёт не только post-, но и pre- тренинг и постоянно будет обучаться как сам по себе, так и с помощью асессоров, которые контролируют качество органики.
BERT: прорыв в NLP-технологиях или очередной хайп на теме Deep Learning?
C 2013 года, согласно Google.Trends, популярность термина «глубокое обучение» (Deep Learning, DL) стремительно растет, поскольку этот метод Machine Learning становится все более востребованным в Data Science. В этой статье я кратко расскажу о достоинствах глубокого обучения нейронных сетей на примере BERT-модели и возможностях ее практического применениях в задачах обработки естественного языка (NLP, Natural Language Processing), а также сравню ее с некоторыми другими подобными технологиями.
Что такое глубокое обучение и причем здесь BERT
Начнем с определения: глубокое обучение – это методы машинного обучения, основанные на обучении представлениям (feature/representation learning), а не специализированных алгоритмах под конкретные задачи. В DL многослойные нейронные сети выступают средствами реализации многоуровневой системы нелинейных фильтров для извлечения признаков. Для DL-моделей характерно иерархическое сочетание нескольких алгоритмов обучения: с учителем, без учителя, с подкреплением [1]. В частности, BERT представляет собой нейросеть, которая используется для специфических проблем обработки естественного языка после предварительного обучения на огромном объеме данных с несложными задачами.
Отметим, что идеи глубокого обучения были известны ещё во время становления понятия «искусственный интеллект» (ИИ) в его современном понимании, 70-80-е гг. XX века, когда многослойные перцептроны и другие модели нейросетей стали применяться в реальных системах распознавания образов. Однако, практическая эффективность этих методов в то время была недостаточно высока, т.к. существующие аппаратные возможности вычислительной техники не позволяли реализовать сложную архитектуру таких сетей. Таким образом, активное развитие DL-методов приостановилось до середины 2000-х годов, когда мощность графических процессоров выросла настолько, что обучение нейросетей стало относительно быстрым и недорогим процессом, а также мировой объем данных накопил значительное количество датасетов для тренировки сетей. Кроме того, к этому времени работы ученых в области ИИ (Хинтон, Осиндеро, Тэ, Бенджио) показали эффективность многоуровневого обучения нейросетей, при котором каждый слой обучается отдельно при помощи ограниченной машины Больцмана, а затем с помощью метода обратного распространения ошибки (backpropagation) [1]. Подробнее про историю развития и принципы работы нейросетей я расскажу в своей новой статье, а сейчас перейдем к BERT.
BERT – это двунаправленная мультиязычная модель с transformer-архитектурой (рис. 1), предназначенная для решения конкретных NLP-задач, например, определение эмоциональной окраски (тональности) текста, вопросно-ответные системы, классификация текстов, построение выводов по тексту и т.д. Помимо распознавания речи, классической NLP-задачей является анализ текста, включая извлечение данных, информационный поиск и анализ высказываний. Также к обработке естественного языка относятся генерирование текстов, синтез речи, машинный перевод и автоматическое реферирование, аннотирование и упрощение текстовой информации. Таким образом, цель применения NLP-технологий – это не только распознавание живого языка средствами искусственного интеллекта, но и возможность адекватного с ним взаимодействия. Последнее, фактически, означает понимание AI-инструментом устной или письменной речи [2].
BERT-модель предварительно обучена без учителя на 2-х NLP-задачах: моделирование языковых масок и предсказание следующего предложения. В основу работы BERT положены самые последние достижения в области нейросетей и NLP-технологий, опубликованные в 2018 году (ELMo, ULMFiT, OpenAI Transformer и GPT-2), которые позволяют предобучать языковые модели без учителя на больших корпусах данных и затем подстраивать их под конкретные проблемы [3]. Благодаря этому с помощью BERT можно разрабатывать эффективные ИИ-программы для обработки естественного языка: отвечать на вопросы, заданные в произвольной форме, создавать чат-ботов, выполнять автоматические переводы, анализировать текст и пр. [4]. В 2019 году Google Research выпустил свою реализацию BERT с открытым кодом на tensorflow, включая несколько предобученных многоязыковых моделей со множеством слоев, узлов, выходов и параметров. В частности, многоязыковая модель BERT-Base, поддерживающая 104 языка, состоит из 12 слоев, 768 узлов, 12 выходов и 110M параметров [3].
Практика применения BERT и других нейросетей в NLP-задачах: несколько примеров
Одним из классических NLP-кейсов считается задача классификации текста, которая предполагает, что каждый документ принадлежит одному или нескольким классам (меткам). Однако на практике текст может быть одновременно и независимо причислен к нескольким классам (рис. 2), например, классификация товаров на предприятии, определение жанра у фильма или литературного произведения, тематическая сортировка электронных писем в зависимости от мотивов их содержимого [3].
К примеру, результаты анализа пользовательских отзывов о фильмах или продуктах в интернет-магазине могут использоваться рекомендательными системами этих бизнесов с целью побуждения клиента к новым покупкам. А задача определения эмоциональной окраски текста и анализа его содержимого актуальна в области управления корпоративной репутацией, а именно в SERM-маркетинге (Search Engine Reputation Management), направленного на создание положительного имиджа компании за счет влияния на поисковую выдачу с помощью PR-, SMM- и SEO-приемов.
Сегодня автоматизированный сбор данных об упоминании компании и их первичный анализ выполняется специализированными SERM-системами с разным набором функций и стоимостью, от бесплатных онлайн-сервисов до коммерческих решений. Эти инструменты анализируют выдачу ключевых слов с названием бренда в поисковых системах, прайс-агрегаторах, тематических порталах, на сайтах с отзывами и рекомендациями, а также в социальных сетях и видеороликах [5].
В качестве яркого примера, иллюстрирующего возможности ML в этом NLP-контексте приведем кейс Сбербанка, который анализировал пользовательские отзывы магазина Google Play о своем мобильном приложении с целью выявления инцидентов и их предупреждения. Было проанализировано 882 864 пользовательских отзыва, оставленных в период с октября 2014 г. по октябрь 2017 г. Для определения темы инцидентов использовались лишь негативные рекомендации (1-2 звезды), но в целом для обучения ML-модели применялась вся выборка. Для прогноза приемлемого уровня отрицательных отзывов на выбранную дату был выбран 3-месячный интервал до нее. Предсказание строили на неделю вперед от выбранной даты, с дискретизацией в одни сутки [6].
Аномалия фиксировалась при превышении фактического количества негативных отзывов выше доверительного уровня. За доверительный уровень принята сумма прогнозного значения и доверительного интервала. На рисунке 3 красным цветом показано фактическое количество отзывов, а желтым – прогнозное значение нормального уровня с доверительным интервалом [6].
Дальнейший анализ производился по датам, на которые приходятся 5 явно выраженных пиков. Тексты отзывов от этих дат были кластеризованы по ключевым словам, описывающих суть проблемы, например, «соединение», «смс», «обновление» и т.д. По результатам кластеризации были выявлены проблемы по следующим темам [6]:
- работа приложения, связанная с обновлением версии;
- вход в приложение после обновления;
- вход в приложение и политикой конфиденциальности;
- работа приложения, связанная с соединением с банком;
- отправка пользователю смс с кодом;
- перевод денежных средств;
- интерфейс приложения;
- работа приложения, связанная со встроенным антивирусом.
Отметим, что натренированная модель машинного обучения смогла выполнить не только постфактумный анализ, но и работала на опережение, т.е. предсказала увеличение проблем определенной категории в отдельные даты. В дальнейшем такая методика может применяться не только для предупреждения инцидентов, связанных с работой мобильного приложения, но и для других SERM-задач [6].
Тематическое моделирование vs векторные NLP-технологии
В вышеописанном кейсе Сбербанка использовалась библиотека с открытым кодом BigARTM, предназначенная для тематического моделирования больших коллекций текстовых документов и массивов транзакционных данных. Эта технология статистического анализа текстов для автоматического выявления тематики в больших коллекциях документов определяет, к каким темам относится каждый документ, и какими словами описывается каждая тема. При этом не требуется ручной разметки текстов, а обучение ML-модели происходит без учителя. Тематическое моделирование допускает многоклассовую классификацию, т.е. чтобы документ относился одновременно к нескольким кластерам-темам, и позволяет отвечать на вопросы «о чём этот текст» или «какие общие темы имеет эта пара текстов». Тематическая модель формирует сжатое векторное представление текста, которое помогает классифицировать, рубрицировать, аннотировать, сегментировать тексты. В отличие от известных векторных представлений семейства x2vec (word2vec, paragraph2vec, graph2vec и т.д.), в тематических векторах каждая координата соответствует теме и имеет содержательную интерпретацию. Тематическая модель привязывает к каждой теме список ключевых слов или фраз, который описывает ее семантику [7].
В отличие от тематической модели, BERT работает по принципу векторного представления слов, основанном на контекстной близости, когда слова, встречающиеся в тексте рядом с одинаковыми словами (а, следовательно, имеющие схожий смысл), в векторном представлении будут иметь близкие координаты векторов. Полученные векторы могут быть использованы для обработки естественного языка и машинного обучения, в частности, для прогнозирования слов [8]. Таким образом, BERT выполняет также и предиктивные функции, в отличие от тематической ML-модели. Это свойство векторных NLP-технологий может использоваться в некоторых специфических задачах анализа текста, например, для определения авторства. Для каждого человека характерны некоторые специфические словосочетания, клише и прочие лексические конструкции, которые можно сгруппировать в устойчивые вектора и вычислить частоту их повторения в определенных текстах, определив авторскую принадлежность.
Как устроена нейронная сеть BERT: архитектура и принцип работы
Чтобы натренировать BERT на предсказывание слов, на вход нейросети подаются фразы, где часть слов заменена на маску [MASK]. Например, получив на входе предложение «Я пришел в [MASK] и купил [MASK]», BERT на выходе должна показать слова «магазин» и «молоко». Это упрощенный пример с официальной страницы BERT, на более длинных предложениях разброс возможных вариантов становится меньше, а ответ нейросети однозначнее. Чтобы нейросеть научилась понимать соотношения между разными предложениями, необходимо дополнительно обучить ее предсказывать, является ли вторая фраза логичным продолжением первой [4].
При подаче текста на вход BERT-модели сначала выполняется его токенизация — разбиение на более мелкие единицы (токены): абзацы делятся на предложения, предложения на слова и пр. (рис. 4). Входной текст разбивается на список токенов, доступных в словаре. Например, уже упомянутая выше модель BERT-Base использует словарь из 30522 слов. Если в словаре отсутствует слово, то оно постепенно разбивается на более мелкие части, которые уже находятся в словаре. Таким образом контекст нового слова будет комбинацией смыслов его частей [3].
Таким образом, BERT является автокодировщиком (autoencoder, AE), который скрывает и изменяет некоторые слова, пытаясь восстановить изначальную последовательность слов из контекста. Это приводит к следующим недостаткам работы модели [9]:
- каждое скрытое слово предсказывается в отдельности, из-за чего теряется информация о возможных связях между маскированными словами, например, «New York» является устойчивым сочетанием слов, при разделении которого на независимые части первоначальный смысл теряется полностью;
- несоответствие между фазами тренировки и использования предобученной модели BERT: при тренировке применяются скрытые слова ([MASK]), а при использовании предобученной модели такие токены уже не подаются на ее вход.
Тем не менее, несмотря на вышеотмеченные проблемы, BERT называют последним достижением (state-of-the-art) в NLP-области.
Результаты тестирования и альтернативы BERT
Тестовые исследования по оценке BERT, проведенные в 2019 году доказали эффективность этого DL-метода, достигнув наивысших отметок в классических испытаниях по пониманию естественного языка. В частности, модель распознавания ALBERT, созданная в Google AI, заработала 92,2 пункта в стэнфордском тесте SQUAD, в котором нужно было отвечать на вопросы, и 89,4 балла в тесте на оценку верности понимания языка GLUE. В июле 2019 года соцсеть Facebook представила собственную ML-модель RoBERTa на основе BERT, а месяцем раньше Microsoft AI показал свою аналогичную DL-нейросеть MT-DNN, которая добилась высших показателей в 7 из 9 тестов GLUE [10].
Однако, BERT – это не единственная DL-сеть, показывающая отличные результаты в решении NLP-задач, хотя, возможно и самая популярная. XLNet, преодобученная ML-модель многослойной transformer-архитектуры, показывает лучшие, по сравнению с BERT, показатели в тесте RACE (Reading Comprehension From Examinations). На рисунке 5 приведены результаты точности понимания содержимого текста на двух датасетах разного объема: среднего (Middle) и большого (High). Сети BERT и XLNet имели 24 слоя и были аналогичны по размерам. В других задачах текстовой классификации DL-модель XLNet также показала лучшие результаты (рис. 6) [11].
Такие отличные результаты XLNet обусловлены следующими факторами [11]:
- XLNet не маскирует слова в последовательности, благодаря чему отсутствует проблема несоответствия модели на предобучении и на тюнинге для отдельной задачи, что свойственно BERT;
- в отличие от типовых авторегрессионных моделей, XLNet не использует фиксированные прямонаправленный и обратнонаправленный порядки факторизации. Вместо этого XLNet максимизирует ожидаемый логарифм вероятности последовательности слов с учетом всех перестановок порядков слов. Благодаря шагу с перестановками, контекст для каждой позиции в последовательности может состоять из слов с правой и левой сторон. Таким образом, слово на каждой позиции в последовательности использует контекстную информацию со всех остальных позиций (bidirectional context).
В итоге, XLNet интегрирует в себе свойства авторегрессивных языковых моделей и автокодировщиков, минуя недостатки обоих методов.
Резюме
Подводя итоги реализации идей глубокого обучения в виде BERT-подобных моделей для задач обработки естественного языка, можно сделать несколько выводов:
- NLP-технологии активно используются в современном маркетинге, PR и управлении корпоративной репутацией;
- предварительное обучение ML-моделей без учителя на больших корпусах данных с последующей подстройкой под конкретные задачи позволяет существенно ускорить процесс тренировки и получить итоговые результаты с высокой степенью точности;
- BERT и другие аналогичные нейросети эффективны в случае типовых NLP-задач и могут выступать в качестве «полуфабриката» для создания чат-бота или рекомендательной системы, однако, даже при наличии статуса state-of-the-art, пока они не способны полностью заменить собой человека;
- XLNet продолжает идеи BERT, однако лишена недостатков этой архитектуры, что предупреждает проблему несоответствия ML-модели на предварительном обучении и последующей тренировке под специфику задачи, а также при использовании в «реальных условиях» (production).
- Глубокое обучение
- NLP – обработка естественного языка
- Как использовать BERT для мультиклассовой классификации текста
- BERT — state-of-the-art языковая модель для 104 языков. Туториал по запуску BERT локально и на Google Colab
- Как Big Data и Machine Learning помогут вам управлять корпоративной репутацией в интернете: разбираемся с SERM- технологиями
- Как мы анализировали отзывы о мобильном приложении с помощью машинного обучения
- BigARTM
- Технология Word2vec
- XLNet против BERT
- ИИ Google превзошел человека в распознавании языков
- XLNet: новый state-of-the-art в задачах обработки естественного языка