Это вторая часть цикла статей Глубокое обучение в информационном поиске. Эта серия предназначена для тех, кто знаком с основами глубокого обучения и хотел бы глубже погрузиться в область современного информационного поиска. В части I мы изучили основные концепции поиска информации, метрики, используемые в IR, основы проектирования IR-систем и одно семейство методов глубокого обучения, обычно используемых на первом этапе IR-конвейеров. В этой части мы рассмотрим другое семейство методов, используемых для получения представлений доступных для поиска объектов данных. Эти методы также обычно используются на первом этапе конвейера IR-системы для извлечения начальных кандидатов из индекса в масштабе.

Разреженные методы поиска имеют некоторые преимущества, такие как объяснимость, хорошая совместимость с классическими алгоритмами, такими как BM25 и т. д. Но разреженное представление текста на основе токенов не отражает полностью семантику каждого термина в контексте всего текста. Эту проблему нельзя полностью решить, просто взвешивая важность каждого термина в тексте или расширяя документ. С другой точки зрения, сейчас доступно множество методов для получения контекстных встраиваний токенов или всего текста. Эти методы позволяют представить текст в виде вектора в некотором векторном пространстве с заданной размерностью. Размерность векторов не зависит от длины текста. Такие векторы обычно называют плотными векторами. Семантически близкие тексты обычно представляются векторами, близкими в векторном пространстве. Семейство методов, основанных на плотных векторах, называется плотным поиском. Очевидно, что невозможно использовать классические алгоритмы поиска, такие как BM25, с плотными векторами. Так как же работает плотный поиск? Давайте углубимся.

Плотное извлечение

Сначала давайте посмотрим, как обучаются модели плотного представления. Обычно за базовую модель берется какая-то модель. Это может быть любая модель, которая может создавать векторы фиксированной размерности на выходе. Обычно за базовые модели берут нейронные сети. В современных подходах используются, в частности, трансформаторные модели. Базовая модель обычно называется кодер. Затем необходимо заставить базовую модель выдавать близкие векторы для семантически близких сущностей. Это могут быть сущности одного и того же или разных типов, такие как запрос и переход. Во втором случае можно использовать два разных энкодера. Обычно архитектура сиамской сети используется для обучения кодировщиков созданию близких векторов. Эту архитектуру также называют двойным кодировщиком или двойным кодировщиком. Вы можете увидеть схему этой архитектуры вверху этой статьи. Идея этой архитектуры заключается в использовании двух энкодеров во время обучения. Каждый кодировщик получает на вход один объект из пары. Например, первый кодировщик получает запрос, второй кодировщик получает документ. Затем вычисляется расстояние между выходными векторами каждого энкодера. Обычно используется косинусное расстояние, потому что величина векторов обычно не имеет значения при текстовом сходстве, и ее легко вычислить с помощью скалярного произведения векторов. Затем весь двойной кодировщик обучается минимизировать расстояние между совпадающими парами (положительные) и максимизировать расстояние между несовпадающими парами (отрицательные). В наборе данных часто доступны только положительные пары. В этом случае в качестве негативов используются образцы из других пар из той же партии. Обычно для реализации такого рода обучения используется потеря триплетов. Потеря триплетов – это функция потерь для алгоритмов машинного обучения, в которой эталонный ввод (запрос в случае плотного поиска), называемый якорем, сравнивается с совпадающим вводом (положительным) и несоответствующий ввод (отрицательный). В общем случае потери триплетов можно определить следующим образом:

где a – якорь, p – положительное значение, n — отрицательное значение, d — функция расстояния, а λ — значение поля, позволяющее держать отрицательные значения далеко друг от друга. Это можно проиллюстрировать следующей картинкой:

Для улучшения потери триплетов используются различные методы. Например, можно дополнительно штрафовать расстояние до ближайшего отрицательного значения в пакете. Либо можно добавить к обучению внешние близкие негативы. Эти методы называются интеллектуальным анализом жестких негативов.

При построении поискового индекса используется пошаговый обученный энкодер для получения плотных векторов для поисковых сущностей (документов, отрывков). Эти векторы хранятся в файле index. На этапе поиска используется обученный кодировщик для создания плотного вектора запроса. Затем этот вектор используется для вычисления косинусного расстояния между вектором запроса и векторами кандидатов из поискового индекса. Затем из индекса извлекается некоторая разумная вершина ближайших кандидатов.

В масштабе нецелесообразно вычислять расстояния между запросом и каждым кандидатом из огромного индекса. Но как реализовать это масштабируемым образом? Существуют разные решения этой проблемы. Одним из наиболее распространенных является использование LSH-индекса. LSH (хэширование с учетом местоположения) — это алгоритм, который с высокой вероятностью [1] хэширует похожие входные объекты в одни и те же сегменты. Использование LSH позволяет реализовать приблизительный поиск ближайшего соседа. LSH-индекс использует набор функций LSH, называемый семейством LSH. Функция LSH — это хэш-функция, которая отображает элементы метрического пространства в сегменты. Многие хэш-таблицы создаются с соответствующими хеш-функциями, каждая из которых строится путем объединения нескольких случайно выбранных хэш-функций из одного семейства LSH. На этапе построения поискового индекса все объекты, доступные для поиска, хэшируются в каждую хэш-таблицу. На шаге поиска алгоритм выполняет итерацию по хеш-таблицам и извлекает объекты, которые хешируются, в то же ведро, что и вектор запроса. Как только сущность найдена, процесс поиска останавливается. Этот подход позволяет масштабировать десятки и сотни миллионов доступных для поиска объектов. Такие библиотеки, как FAISS, ScaNN и векторные базы данных, такие как Milvus и Qdrant, используют аналогичные алгоритмы для реализации приближенного поиска ближайшего соседа.

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

Глубокое обучение и преобразователи в плотном поиске

Одной из первых работ, в которой для плотного поиска используются большие модели на основе трансформаторов, является DPR (Dense Passage Retriever). В этой работе авторы показывают, что поиск может быть практически реализован с использованием плотных векторов, а качественные вложения текстовых отрывков могут быть изучены из небольшого количества вопросов и отрывков с помощью модели типа бикодировщика [2].

В Dense Passage Retriever две независимые сети BERT используются в качестве кодировщиков для вопросов и прохождения. Специальный токен `[CLS]` BERT используется для получения представления в токене в качестве вывода. Вся модель двойного кодировщика обучается путем оптимизации функции потерь как отрицательной логарифмической вероятности положительного прохода. Для обучения используется набор данных пар вопросов и ответов. Обычно отрицательные примеры недоступны в наборе данных и должны быть отобраны. В качестве отрицаний DPR использует отрывки из того же мини-пакета и один отрывок, возвращенный BM25, которые не содержат ответа, но соответствуют большинству токенов вопросов. Эта стратегия извлечения отрицательных примеров может сделать вычисления эффективными при достижении высокой производительности поиска.

DPR был оценен на ряде открытых наборов данных для ответов на вопросы (Natural Questions, TriviaQA, WebQuestions, CuratedTREC) в качестве извлекателя первого этапа и значительно превзошел сильные IR-системы на основе BM25 на 9–19 % в абсолютном выражении. -20 точность поиска прохода.

Другая модель была представлена ​​в исследовательской статье, посвященной сравнению различных методов разреженного, плотного и гибридного поиска. Он называется ME-BERT. Это модель, в которой каждый документ представлен ровно m векторами. Авторы использовали m= 8 как хороший компромисс между стоимостью и точностью и нашли значения от 3 до 4 для m. более точен для некоторых наборов данных. Модель с k-мерными вложениями называется ME-BERT-k[3]. В дополнение к использованию токена BERT `[CLS]` в качестве векторного представления авторы реализовали уровень прямой связи с размерностью 768 × k для получения k векторов от одного кодировщика. Эта модель использует максимальное количество скалярных произведений каждого вектора документа с вектором запроса, чтобы получить показатель релевантности для пары запрос-документ.

Модель инициализируется из базы BERT, и все параметры настраиваются с использованием кросс-энтропийной потери с использованием 7 выборок негативов из предварительно вычисленного
списка из 200 документов и дополнительных негативов в пакете (с общим числом 1024 кандидатов). в партии); предварительно вычисленные кандидаты включают 100 лучших соседей из BM25 и 100 случайных выборок. ME-BERT превзошел обычные модели с двойным кодированием и разреженные модели поиска в наборах данных MS-MARCO-Document и MS-MARCO-Passage.

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

Например, подход Approximate Nearest Negative Negative Contrastive Learning (ANCE) представляет собой механизм обучения, который глобально выбирает негативы жесткого обучения из всего корпуса, используя асинхронно обновляемый индекс ANN [ 4].

ANCE состоит из двух компонентов: Trainer и Inferencer. Оба компонента используются в процессе обучения модели. Тренер использует отрицательные значения из индекса ANN для обучения модели плотного поиска. Inferencer использует недавнюю контрольную точку для обновления представления документов в корпусе, а затем обновляет индекс ANN с самыми последними вложениями документов. См. схему из оригинальной статьи выше.

ANCE можно использовать для обучения любой модели плотного поиска. В оригинальной статье авторы использовали ANCE для обучения би-кодировщика на основе BERT с оценкой подобия скалярного произведения
и потерей вероятности отрицательного логарифма. Результаты оценивались на MSMARCO-Passage, TREC 2019 DL Passage и TREC 2019 DL Document. Этот подход превзошел все разреженные методы поиска на тот момент и DPR в поиске прохода.

Как уже упоминалось, плотные поисковые модели обычно используются на первом этапе конвейера информационно-поисковых систем. Причина в том, что эти модели предназначены для реализации поиска из огромного поискового индекса в масштабе. Этот фактор накладывает существенные ограничения на производительность поиска модели. Существует другой класс моделей, которые обучены прогнозировать показатель релевантности для пары запрос-кандидат (вопрос-документ), а не получать хорошие векторные представления. Эти модели позволяют достичь гораздо лучших результатов поиска с точки зрения MRR и NDCG. Мы рассмотрим эти модели в следующей части этой серии статей. Но важным моментом является то, что этот тип моделей можно использовать для улучшения моделей плотного поиска с использованием методов, называемых псевдомаркировкой и дистилляцией знаний.

Псевдомаркировка – это метод использования одной модели для прогнозирования меток для немаркированных данных с последующим добавлением этих новых данных в основной набор данных с метками для обучения другой модели. Дистилляция знаний – это процесс переноса знаний из большой модели в меньшую посредством обучения меньшей модели для сопоставления логита с логитом более производительной большой модели. В более поздних работах по плотному поиску используются эти два метода.

Подход под названием RocketQA ввел три основных технических усовершенствования для обучения модели плотного поиска: кросс-пакетные негативы, жесткие негативы с шумоподавлением и увеличение данных [5]. Техника перекрестных отрицаний используется при обучении модели на нескольких графических процессорах. Сначала встраивания проходов вычисляются в каждом отдельном графическом процессоре, а затем эти вложения проходов распределяются между всеми графическими процессорами. Помимо внутрипакетных негативов, плотные векторы всех пассажей собираются со всех других графических процессоров в качестве дополнительных негативов для каждого вопроса. Смотрите изображение из оригинальной бумаги ниже:

Метод дешумирования жестких негативов позволяет отфильтровывать ложноотрицательные результаты из выборки жестких негативов. Добавление данных – это метод, используемый для увеличения объема обучающих данных путем добавления вновь созданных синтетических данных из существующих данных. RocketQA реализует как жесткие негативы с шумоподавлением, так и увеличение данных с использованием псевдомаркировки. Он использует более мощную большую модель (обученную для прогнозирования оценки релевантности для пары вопросов и отрывков) для маркировки новых немаркированных данных, а затем использует их для увеличения набора данных. Также более производительная большая модель используется для поиска ложноотрицательных результатов при добыче жестких негативов. RocketQA превзошла предыдущие подходы к набору данных MSMARCO и Natural Questions.

Более поздний подход, названный PAIR (PAориентированные на смысл отношения,Iмилярность отношения), был сосредоточен на обучении, ориентированном на переход. и внес три основных технических вклада, представив формальные формулировки двух видов отношений подобия, создав высококачественные псевдопомеченные данные посредством дистилляции знаний и разработав эффективную двухэтапную процедуру обучения, которая включает ограничение отношения подобия, ориентированное на проход. Цель изучения отношения подобия, ориентированного на отрывок, состоит в том, чтобы отодвинуть отрицательный отрывок дальше от положительного и сделать сходство между положительным отрывком и вопросом больше, чем сходство между положительным отрывком и отрицательным отрывком [6]. Для реализации этого метода авторы PAIR объединили в функциях потери, ориентированные на запрос и на проход. Кроме того, они использовали хорошо обученную большую модель для получения псевдопомеченных положительных и жестких отрицательных результатов для непомеченных запросов. На этапе предобучения двухэтапного процесса обучения авторы обучили двойной кодировщик псевдоразмеченными данными из неразмеченного набора данных путем оптимизации комбинированной функции потерь. На этапе тонкой настройки они настроили двойной кодировщик (предварительно обученный на первом этапе) как с помеченными, так и с псевдопомеченными данными, оптимизировав только потери, связанные с запросом. Все эти методы позволили добиться немного лучшего MRR и отзыва, чем при подходе RocketQA, для наборов данных MS-MARCO и Natural Questions.

В другом подходе, называемом Состязательный поиск-ранжирование (AR2), используется метод состязательного обучения для улучшения плотного поиска. AR2 состоит из извлекателя с двойным кодировщиком и высокопроизводительного ранжировщика. Две модели совместно оптимизируются в соответствии с минимаксной состязательной целью: извлекатель учится извлекать отрицательные документы, чтобы обмануть оценщика, а ранжировщик учится ранжировать набор кандидатов, включая как наземные, так и извлеченные, а также обеспечивают прогрессивную прямую обратную связь с извлекателем с двойным кодировщиком. В этой состязательной игре извлекатель постепенно создает более сложные отрицательные документы для обучения лучшего ранжировщика, в то время как ранжировщик с перекрестным кодированием обеспечивает прогрессивную обратную связь для улучшения извлекателя [7]. AR2 оценивался по трем тестам: Natural Questions, MS-MARCO и TriviaQA. Он показал немного лучшие результаты (+ 1,3–2,1% для отзыва), чем предыдущие современные результаты.

Другой метод улучшения плотного поиска – предварительное обучение с сопоставлением доменов. Было продемонстрировано, что предварительное обучение больших моделей би-кодировщика на наборе из 65 миллионов синтетически сгенерированных вопросов и 200 миллионов пар пост-комментариев из ранее существовавшего набора данных разговоров Reddit позволяет улучшить плотный поиск и MRR. 8]. Он был оценен на наборе наборов данных поиска информации и поиска диалогов: ConvAI2, Ubuntu v2, DSTC7.

Выводы

В этой статье мы рассмотрели концепцию плотного поиска. Затем мы рассмотрели несколько разных подходов к повышению производительности плотного поиска с помощью глубокого обучения: от DPR до относительно современных RocketQA, PAIR и AR2. Вы можете видеть, что самые последние методы дают лучшие результаты в наборах данных для поиска общедоступной информации, таких как MS-MARCO или Natural Questions. Но это не значит, что при построении каждой производственной IR-системы нужно использовать самый последний подход. Следует учитывать несколько факторов: домен, доступность размеченных данных, количество неразмеченных данных, качество размеченных данных, тип задачи поиска. Например, если ваши размеченные данные имеют много неразмеченных положительных результатов, то процесс обучения плотного ретривера выиграет от жестких отрицательных значений с шумоподавлением. Если доступно много данных из вашей проблемной области и у вас достаточно ресурсов для обучения большого высокопроизводительного ранжировщика, то ваша модель плотного поиска может выиграть от метода псевдомаркировки. Также нет очевидного выбора между методами плотного и разреженного поиска. Например, если ваша IR-система получает много запросов с относительно уникальными идентификаторами, именами и аббревиатурами, нацеленными на небольшое подмножество кандидатов из индекса, то разреженный поиск может показать лучшую производительность.

Как уже упоминалось, методы плотного поиска и разреженного поиска обычно используются на первом этапе конвейера информационно-поисковых систем. В следующей части этой серии статей мы рассмотрим более мощные модели, которые используются на этапе ранжирования IR-конвейеров.

Рекомендации

  1. Раджараман А., Уллман Дж., Анализ массивных наборов данных, гл. 3, издательство Кембриджского университета, 2010 г.
  2. Владимир Карпухин, Барлас Огуз, Севон Мин, Патрик Льюис, Леделл Ву, Сергей Эдунов, Данки Чен, Вен-тау Йи, Поиск плотных проходов для ответов на открытые вопросы, в материалах конференции 2020 года по эмпирическим методам обработки естественного языка. , EMNLP 2020, Интернет, 16–20 ноября 2020 г., страницы 6769–6781, arXiv: 2004.04906.
  3. Йи Луан, Джейкоб Эйзенштейн, Кристина Тутанова, Майкл Коллинз, Разреженные, плотные и внимательные представления для поиска текста, CoRR, 2020, arXiv: 2005.00181.
  4. Ли Сюн, Ченян Сюн, Е Ли, Квок-Фунг Тан,
    Цзялин Лю, Пол Беннетт, Джунаид Ахмед и Арнольд
    Овервейк. 2020. Приближенное отрицательное контрастивное обучение ближайших соседей для поиска плотного текста, CoRR, 2020, arXiv: 2007.00808
    .
  5. Инци Цюй, Юйчен Дин, Цзин Лю, Кай Лю, Руйян Рен, Уэйн Синь Чжао, Дасян Дун, Хуа Ву и Хайфэн Ван. 2021. RocketQA: оптимизированный подход к обучению поиску плотных проходов для ответов на открытые вопросы. В материалах конференции 2021 года Североамериканского отделения Ассоциации компьютерной лингвистики: технологии человеческого языка, страницы 5835–5847, онлайн, 2021, arXiv: 2010.08191.
  6. Ruiyang Ren, Shangwen Lv, Yingqi Qu, Jing Liu, Wayne Xin Zhao, QiaoQiao She, Hua Wu, Haifeng Wang и Ji-Rong Wen, Pair: Использование отношения подобия, ориентированного на отрывок, для улучшения поиска плотных проходов, 2021, препринт arXiv , архив: 2108.06027.
  7. Хан Чжан, Еюнь Гонг, Елонг Шен, Цзяньчэн Лв, Нан Дуань и Вейчжу Чен, Состязательный ретривер-ранжировщик для поиска плотного текста, 2021 г., препринт arXiv, arXiv: 2110.03611.
  8. Барлас Огуз, Кушал Лахотиа, Анчит Гупта, Патрик Льюис, Владимир Карпухин, Александра Пиктус, Силун Чен, Себастьян Ридель, Скотт Йих, Сонал Гупта и Яшар Мехдад, Предварительные тренировочные задачи с сопоставлением доменов для плотного поиска. В выводах Ассоциации компьютерной лингвистики: NAACL 2022, страницы 1524–1534, Сиэтл, США. Ассоциация компьютерной лингвистики, arXiv:2107.13602