Методы вопросов и ответов нового поколения для интеллектуальных решений нового поколения

При ответах на вопросы в открытой области мы обычно проектируем архитектуру модели, которая содержит источник данных, средство извлечения и считыватель / генератор.

Первым из этих компонентов обычно является хранилище документов. Два самых популярных магазина, которые мы здесь используем, - это Elasticsearch и FAISS.

Далее идет наш ретривер - тема этой статьи. Задача поисковика - фильтровать через наше хранилище документов соответствующие фрагменты информации (документы) и передавать их модели считывателя / генератора.

Модель считывателя / генератора - последняя модель в нашем стеке вопросов и ответов. У нас может быть ридер, который извлекает ответ прямо из контекста. Или генератор, который использует языковую генерацию для генерации ответа из контекста.

Работа ретривера имеет решающее значение для работы нашего читателя. По запросу он должен найти наиболее релевантные контексты.

Если читателю дается неправильный контекст, он выдаст неправильные ответы.

Если читателю дается правильный контекст, он может выдавать правильные ответы.

Итак, если мы хотим иметь хоть какой-то шанс получить хорошие ответы, ретривер должен работать хорошо.

Редкие ретриверы

В прошлом для поиска релевантной информации в наших хранилищах документов мы полагались на разреженные векторные извлечения. Для этого мы использовали TF-IDF или BM25.

TF-IDF

Алгоритм TF-IDF - популярный вариант для вычисления сходства двух частей текста.

  • TF указывает, сколько слов в запросе найдено в контексте.
  • IDF - это величина, обратная доле документов, содержащих это слово.

Затем эти два значения умножаются, чтобы получить оценку TF-IDF.

Теперь мы можем обнаружить, что слово «гиппокамп» является общим для запроса и контекста, это повысит оценку TF-IDF, потому что:

  • TF - слово встречается как в запросе, так и в контексте (высокий балл).
  • IDF - слово «гиппокамп» не встречается во многих других документах (поэтому обратная частота слова большое число).

В качестве альтернативы, если мы возьмем слово «the», мы вернем низкий показатель TF-IDF, потому что:

  • TF - слово встречается как в запросе, так и в контексте (высокий балл).
  • IDF - слово «the» встречается во многих других документах (поэтому обратная частота слов низкая число).

Поскольку IDF является низким числом из-за того, насколько распространен , показатель TF-IDF тоже низкий.

Таким образом, оценка TF-IDF отлично подходит для поиска последовательностей, содержащих одни и те же необычные слова.

BM25

BM25 - это разновидность TF-IDF. Здесь мы по-прежнему вычисляем TF и ​​IDF, но оценка TF снижается после возврата большого количества совпадений между запросом и контекстами.

Кроме того, он также учитывает длину документа. Оценка TF-IDF нормализована, поэтому короткие документы будут иметь более высокие оценки, чем длинные, если в них обоих одинаковое количество совпадений слов.

При использовании редких ретриверов BM25 обычно предпочтительнее TF-IDF.

Поиск плотного прохода

Поиск проходов (DPR) для ODQA был представлен в 2020 году в качестве альтернативы традиционным методам поиска проходов TF-IDF и BM25.

Плюсы

Статья, в которой представлена ​​DPR, начинается с утверждения, что этот новый подход превосходит существующие поисковые системы BM25 от Lucene (хранилище документов) по точности поиска проходов 9–19% [1].

DPR может превзойти традиционные методы разреженного поиска по двум ключевым причинам:

  • Семантически похожие слова («привет», «привет», «привет») не будут рассматриваться как совпадающие TF. DPR использует плотные векторы, закодированные с семантическим значением (поэтому «эй», «привет» и «эй» будут точно соответствовать).
  • Редких ретриверов нельзя тренировать. DPR использует функции встраивания, которые мы можем обучить и настроить для конкретных задач.

Минусы

Несмотря на очевидные преимущества в производительности, это не все хорошие новости. Да, мы можем обучить нашу модель DPR, но это также недостаток - тогда как TF-IDF и BM25 поставляются готовыми к работе, а DPR - нет.

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

Кроме того, DPR требует значительно больше вычислений - как во время индексирования, так и во время поиска.

Два BERT и обучение

DPR работает с использованием двух уникальных моделей кодировщиков BERT. Одна из этих моделей - Eᴘ - кодирует отрывки текста в закодированный вектор отрывка (мы храним векторы контекста в нашем хранилище документов).

Другая модель - EQ - отображает вопрос в закодированный вектор вопроса.

Во время обучения мы вводим пару вопрос-контекст в нашу модель DPR, и веса модели будут оптимизированы для максимизации скалярного произведения между двумя соответствующими выходными данными модели Eᴘ / EQ:

Значение скалярного произведения между двумя выходными данными модели Eᴘ (p) и EQ (q) измеряет сходство между обоими векторами. Более высокое скалярное произведение коррелирует с более высоким сходством - потому что чем ближе два вектора друг к другу, тем больше скалярное произведение.

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

Во время выполнения

После обучения модели (или двух моделей) мы можем начать использовать их для индексации и поиска в вопросах и ответах.

Когда мы впервые создаем наше хранилище документов, нам нужно закодировать данные, которые мы храним в нем, с помощью кодировщика Eᴘ, поэтому во время инициализации хранилища документов (или при добавлении новых документов) мы пропускаем каждый отрывок текста через кодировщик Eᴘ и сохраняем вывод. векторы в нашем хранилище документов.

Для вопросов и ответов в реальном времени нам понадобится только кодировщик эквалайзера. Когда мы задаем вопрос, он отправляется на кодировщик эквалайзера, который затем выводит наш вектор эквалайзера EQ (q).

Затем вектор EQ (q) сравнивается с уже проиндексированными векторами Eᴘ (p) в нашем хранилище документов - где мы фильтруем векторы, которые возвращают наивысшую оценку сходства. :

sim (q, p) = EQ (q) ᵀ Eᴘ (p)

Вот и все! Наш ретривер определил наиболее подходящие контексты для нашего вопроса.

Эти релевантные контексты затем передаются в нашу модель читателя (или генератора), которая создаст ответ на основе контекстов - наш процесс вопросов и ответов завершен!

Вот и все, что касается введения в поиск плотных проходов (DPR) для ответов на вопросы в открытой области (ODQA).

Надеюсь, вам понравилась статья. Дайте мне знать, если у вас есть какие-либо вопросы или предложения, через Twitter или в комментариях ниже. Если вас интересует больше подобного контента, я тоже публикую на YouTube.

Спасибо за прочтение!

использованная литература

[1] В. Карпукин и др. др., Поиск плотного пассажа для ответа на вопрос в открытом домене (2020), EMNLP 2020

HuggingFace, ДНР, Transformers Docs

🤖 НЛП с курсом трансформеров

* Все изображения принадлежат автору, если не указано иное