Оглавление:
- Введение
- История Берта
- Архитектура
- QnA с кодом
Введение
Неужели обязательно вручную вытаскивать ответы на свои запросы из большого абзаца/документа в 2021 году??
Я скажу — Не совсем, если у вас достаточно времени, то вы можете часами зачитывать весь абзац/документ или просто звоните 'БЕРТ' и он выдаст ваши ответы из документов в течение секунды.
Классная идея, не так ли?
Итак, если вы не тратите в будущем время на QnA, то эта статья может вам помочь.
БЕРТ…??? Что это?
BERT звучит очень причудливо в наши дни, но за ним стоит глубокая теория и сильные математические расчеты. BERT расшифровывается как «представления двунаправленного кодировщика от преобразователей».
Оооо… Звучит очень сложно, правда !! Не волнуйтесь, я заставлю вас понять с самого базового уровня.
История
В октябре 18 команда Google AI опубликовала исследовательскую работу и через несколько дней сделала API общедоступным для дальнейшего улучшения в мире НЛП. Вот ссылка исследовательской работы.
Вы правильно поняли. Это BERT. Выглядит как забавный персонаж, но у него огромные возможности в области обработки естественного языка. В основном это может сделать -
- Классификация текстов
- Предсказание следующего предложения (классификация)
- Экстрактивная QnA
- Извлекающее обобщение текста
- NER (распознавание имени объекта) и многое другое.
Архитектура
BERT построен на базе Transformers.
Что такое Трансформеры..??
Трансформеры были первым прорывом в мире НЛП и стали современной моделью в начале 2018 года. Она была представлена командой Google Brain. Я не буду вдаваться в трансформеры в этой статье, но я настоятельно рекомендую понять BERT, вам нужно сначала понять трансформеров. Если вы разбираетесь в Трансформерах, то BERT вам не составит труда. Вот один из лучших блогов, которые я читал о Трансформерах Джея Аламмара.
BERT используется в качестве преобразователей для обучения, таких как VGG16, ResNet, Inception Net для задач CNN. Мы можем точно настроить модель BERT в соответствии с нашими требованиями. Но любой может обучить модель BERT с нуля на собственных наборах данных, но это не рекомендуется, так как в первую очередь требуется очень мощная настройка графического процессора, а также большие текстовые данные, что не совсем возможно для конкретного конкретная доменная задача.
Люди берут модель, передают свои данные с определенной задачей и настраивают только последний выходной слой. Работа сделана ! Допустим, у нас есть задача классификации, поэтому мы вызываем модель, проходим через наши данные и точно настраиваем выходные данные последнего слоя, чтобы модель могла выдавать некоторые рекомендуемые выходные данные, затем мы передаем рекомендуемые выходные данные любому простому классификатору, такому как логистическая регрессия/SVM, как рекомендуемые входные данные и прогнозировать выходные классы. Просто, верно?
BERT работает только с кодирующей частью Transformers. Он имеет две модели — BERTбазовую (с 12 слоями кодировщика) и BERTбольшую (с 24 слоями кодировщика). Он берет слово, выполняет встраивание слов контекстным образом (поскольку он использует двунаправленную концепцию из RNN), добавляя позиционный вектор каждых 512 измерений. Затем пропускает их через сеть. Каждый слой кодировщика (самостоятельного внимания) выполняет вычисления и передает их следующим слоям. И, наконец, последний слой генерирует рекомендуемые выходные данные.
И в зависимости от нашей задачи мы берем эти рекомендуемые выходные данные и отправляем их в другую сеть для создания соответствующих выходных данных.
Внутренне BERT использует две стратегии обучения модели — MLM (моделирование маскированного языка) и NSP (предсказание следующего предложения). Теперь вы можете задаться вопросом, что такое инопланетные вещи….? На самом деле это очень простые понятия. MLM — это методика, когда BERT берет последовательность входных данных, затем в последовательности 15% слов случайным образом маскируются самой сетью, чтобы модель могла классифицировать, что будет дальше слово. Это своего рода регуляризация, которая делает сеть более надежной и не приводит к переобучению модели. NSP — это еще один прекрасный метод классификации, который работает следующим образом: сеть одновременно принимает две разные последовательности, за которыми следует специальный токен [SEP], тогда задача состоит в том, что если заданы первая и вторая последовательности предложений, то вторая последовательность релевантна первой последовательности или нет. Это среднее двух последовательностей релевантно, а затем классифицируется как 1, иначе 0. Это уникальные методы, которые работают внутри BERT.
Это было все об архитектуре BERT и внутренней функциональности на очень простом уровне. Если кому-то интересно, посетите блог, который ведет тот же человек, Джей Аламмар.
QnA с кодом
Как и некоторые основные задачи, одна из очень интересных задач, которую может выполнить BERT , это абзац или документ, который может извлечь для вас соответствующие ответы. Нужно помнить одну вещь: он может возвращать только извлеченные ответы из абзаца или документа. Он не может давать абстрактные ответы, как в описательной манере.
Это изображение взято из исследовательской работы, которая показывает, как мы предварительно обучаем модель и настраиваем ее для нашей задачи QnA. Какова бы ни была задача, предварительная подготовка одинакова для всех, как я уже упоминал ранее. BERT уже обучил модель QnA на наборе данных SQuAD. SQuAD расшифровывается как Стэнфордский набор данных для ответов на вопросы (SQuAD).
SQuAD2.0 — новая версия, которая сочетает в себе 100 000 вопросов из SQuAD1.1 с более чем 50 000 вопросов без ответов, написанных краудворкерами, чтобы они выглядели похожими на вопросы, на которые можно ответить. Чтобы преуспеть в SQuAD2.0, системы должны не только отвечать на вопросы, когда это возможно, но также определять, когда ответ не поддерживается абзацем, и воздерживаться от ответа. В этом вся логика.
Давайте кодировать.
А теперь самая интересная часть проекта. Как модель может определить, какое слово/слова будут ответом из абзаца?
После создания рекомендуемых выходных данных из последнего уровня в проекте QnA каждая FFNN последнего уровня кодировщика имеет два разных классификатора поверх них. Один отвечает за классификацию начального индекса ответа, а другой отвечает за классификацию конечного индекса ответа. Какой из них дает наивысшую оценку вероятности среди всей последовательности слов, соответствующее входное слово отвечает за начальный или конечный индекс.
Вывод ниже -
Аналогично для конечного индекса
Ответ таков: метод ##точен и исключительно подробен в их изучении Библии, мнениях и дисциплинированном образе жизни
Чудесно !! Мы получили свой ответ. Но есть одна проблема, какое-то слово содержит «##». Берт выполняет токенизацию в соответствии с функциональностью субтокена. Поэтому, если некоторых слов нет в словаре, он пытается разбить их на подслова и пытается найти соответствующие слова. В нашем случае слова «методический» в лексике BERT не было, поэтому он разделил слово на «методический» и «##ический». Термин «##» использовал слово, отсутствующее в словаре.
Теперь ниже приведен код для соединения термина «##» с исходным.
Ответ: методичные и исключительно подробные в изучении Библии, мнениях и дисциплинированном образе жизни
Теперь создаем функцию для автоматизированного QnA.
Давай попробуем
Первый вывод -
индийская многонациональная компания, предоставляющая услуги в области информационных технологий и консалтинговая компания
Второй вывод —
Мумбаи, Махараштра, Индия
Вот и все.