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

Вступление

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

Чтобы измерить сходство между двумя предложениями с помощью BERT, мы должны объединить их с токеном [SEP] между ними и пропустить эту последовательность через BERT. Затем мы можем на другом конце использовать токен [CLS] в качестве входных данных для простого классификатора или регрессора, чтобы сообщить нам, как связаны эти предложения. Этот процесс может показаться несложным с вычислительной точки зрения, потому что по большому счету это не так. Этот способ измерения отношения предложений становится проблемой только в реальных сценариях, где он полезен. Есть два основных сценария

  1. Нахождение двух наиболее похожих предложений в наборе данных из n. Это потребует от нас пропустить каждую уникальную пару через BERT, чтобы найти ее показатель сходства, а затем сравнить его со всеми другими оценками. . Для n предложений это приведет к n (n - 1) / 2. Это оказывается настоящей проблемой, если вы пытаетесь интегрировать это в среду реального времени. Небольшой набор данных всего из 10.000 предложений потребует 49.995.000 проходов через BERT, что на современном графическом процессоре заняло бы 60+ часов! Это, очевидно, делает BERT бесполезным в большинстве этих сценариев.
  2. Выполнение семантического поиска. Эта задача влечет за собой поиск наиболее похожего предложения в наборе данных по запросу. В идеале это можно сделать путем сравнения запроса со всеми существующими предложениями, поскольку для набора данных из n предложений потребуется n сравнений. Поскольку BERT должен обрабатывать каждую из этих пар, потребуется ли для одного и того же скромного набора данных из 10.000 предложений 40+ секунд только для генерации результатов одного запроса. Я точно знаю, что вы бы закрыли или обновили сайт, если бы Google потребовалось 40 секунд для возврата результатов поиска. Опять же, вычислительная сложность делает BERT непригодным для этого сценария.

Подводя итог, можно попросить BERT сравнить предложения, но это слишком медленно для приложений реального времени. Главный виновник заключается в том, что BERT необходимо обрабатывать оба предложения одновременно, чтобы измерить сходство.

Что, если бы мы могли предварительно вычислить представления (вложения) для каждой последовательности в нашем наборе данных отдельно от всех остальных? Эти вложения можно было бы затем использовать на втором этапе для измерения, например, сходства с помощью функции косинусного сходства, которая не требовала бы от нас запроса BERT для выполнения этой задачи. Это кажется достаточно простым решением, которое было исследовано в Sentence-BERT: встраивание предложений с использованием сиамских BERT-сетей Нильса Реймерса и Ирины Гуревич.

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

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

Как работает SentenceBERT?

Давайте начнем с рассмотрения архитектуры SentenceBERT, которую я буду называть здесь SBERT. SBERT - это так называемая двойная сеть, которая позволяет обрабатывать два предложения одинаковым образом одновременно. Эти два близнеца идентичны по всем параметрам (их вес связан), что позволяет нам рассматривать эту архитектуру как единую модель, используемую несколько раз. (Я думаю, что причина двойной формулировки связана с математической простотой, но мне нужно прочитать исходную статью, чтобы понять это)

Из изображения становится очевидным, что BERT составляет основу этой модели, к которой был добавлен слой объединения. Этот уровень объединения позволяет нам создавать представление фиксированного размера для входных предложений различной длины. Авторы экспериментировали с различными стратегиями объединения; Пул MEAN- и MAX или использование токена CLS BERT по умолчанию уже генерируется. Как они работают и сравниваются, мы обсудим позже.

Поскольку целью создания этих встраиваний предложений фиксированного размера было кодирование их семантики, авторы точно настроили свою сеть на данных семантического текстового сходства. Они объединили набор данных Stanford Natural Language Inference (SNLI) с набором данных Multi-Genre NLI (MG-NLI), чтобы создать коллекцию из 1 000 000 пар предложений. Задача обучения, поставленная этим набором данных, состоит в том, чтобы предсказать метку каждой пары, которая может быть одним из следующих: противоречие, следствие или нейтральный. Классификация была обеспечивается их классификационной конкретной целевой функцией, где u и v - предложения в паре.

Для полноты картины мы объединили базовую архитектуру и целевую функцию, что создаст обзор модели SBERT, показанный ниже.

Связанных с работой

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

InterSent

Conneau et al. создал двунаправленный LSTM с максимальным объединением выходных данных для генерации вложений предложений. Эта модель была обучена с нуля на наборах данных MG-NLI и SNLI, что подчеркивает первое отличие от SBERT. Поскольку BERT лежит в основе SBERT, большая часть его понимания языка происходит из задачи предварительного обучения языкового моделирования. SBERT использовал наборы данных MG-NLI и SNLI для точной настройки, что должно позволить ему лучше понимать язык.

Модель LSTM смогла получить тестовую оценку 84,5 по набору данных SNLI, опередив на тот момент лучшего конкурента с 1,1 баллом.

Универсальный кодировщик предложений

Использование архитектуры Transformer позволило Daniel Cer et al. для обучения модели встраивания предложений путем усреднения вложений слов, созданных их преобразователем. Они также экспериментировали с сетью глубокого усреднения (DAN). Эта модель изначально усредняла вложения на уровне слов и биграмм, которые затем передавались через глубокую нейронную сеть с прямой связью (DNN). Одним из преимуществ этого подхода является то, что вычислительная сложность постоянна с длиной последовательности, что не относится к трансформатору. Обе эти модели были обучены в многозадачной среде, где для включения различных выходных форматов специфическая для задачи DNN использовалась для встраивания предложения.

Оценка

Производительность SBERT оценивалась и сравнивалась с его конкурентами по двум основным задачам: сходство семантического текста и SentEval, для которых существует несколько подзадач. Я выделю наиболее интересные для меня выводы и отсылаю вас к исходной статье, если вы хотите узнать больше.

Семантическое текстовое сходство

Задачи семантического текстового сходства (STS) представляют собой проблему регрессии, цель которой состоит в том, чтобы предсказать степень семантического родства между двумя предложениями, которые помечены от 0 до 5. Большинство связанных работ изучают сложную функцию для этого парного сопоставления, которое приводит к к комбинаторному взрыву, о котором говорилось ранее. SBERT вместо этого используется в качестве кодировщика предложений, для которого сходство измеряется с использованием корреляции Спирмена между косинусоидальным подобием вложений предложений и золотыми метками.

Авторы отмечают свой выбор метрики сходства и утверждают, что корреляция Пирсона (измерение линейного родства) менее подходит для STS по сравнению с корреляцией Спирмена. Последний определяет, насколько хорошо корреляция двух переменных может быть описана монотонной функцией.

Reimers et al. сравнили свою модель в неконтролируемой среде, где данные STS не использовались во время предварительного обучения (помните, они использовали только GM-NLI и SNLI для точной настройки своей уже предварительно обученной архитектуры BERT). Вот их выводы:

Здесь интересно то, что усреднение вложений слов из BERT или использование токена CLS работает хуже, чем использование вложений GloVe. Глобальные вложения - это простые контекстно-зависимые вложения, созданные путем конкатенации предварительно обученного фиксированного вложения для каждого слова с одним, сгенерированным двунаправленным LSTM. Вложения GloVe, без сомнения, уступают BERT в задачах на уровне токенов, но, судя по тому, что было найдено выше, не подходят для измерения сходства. Стоит упомянуть, что популярный BERT как услуга генерирует вложения предложений одним из двух способов, которые, судя по приведенным выше результатам, могут быть неоптимальными, по крайней мере, при постановке задач STS.

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

Обнадеживает тот факт, что эти результаты были достигнуты в неконтролируемой среде. Это может означать, что аналогичные результаты достижимы на других наборах данных, возможно, даже на том, который вы считаете наиболее ценным и / или интересным.

Ближайшим конкурентом, который фактически превосходит SBERT по набору данных SICK-R, является ранее описанный универсальный кодировщик предложений (USE). Авторы предполагают, что причина этого заключается в том, что USE был предварительно обучен на наборах данных новостей, что аналогично тому, что было в SICK-R. SBERT, с другой стороны, который использовал Wikipedia и BooksCorpus во время предварительного обучения и данные NLI для точной настройки, теряет знания о предметной области, которые могли бы объяснить разницу в производительности.

Примечание. SBERT также тестируется с использованием других задач STS; Сходство аспектов аргумента и различие разделов Википедии. Я считаю их менее актуальными, поэтому предоставлю вам возможность узнать о них больше, если они покажутся вам интересными.

SentEval

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

Авторы обнаружили, что SBERT-large достигает наивысшего среднего значения по всем задачам, в то время как меньшая SBERT-база отстает менее чем на три десятых. Это отличный результат, если учесть пример использования, чувствительный ко времени, поскольку меньшая модель будет использоваться намного быстрее.

Также стоит отметить, что разница между SBERT и двумя вариантами BERT (avg и CLS) здесь намного меньше, чем в предыдущей оценке. Это означает, что вложения, созданные BERT, могут использоваться в качестве входных данных для логистического классификатора, где каждое измерение может обрабатываться отдельно, но не для функции косинусного сходства, где верно обратное. Это довольно обнадеживает, поскольку BERT должен создавать богатые встраивания токенов и интуитивно объясняет огромный разрыв в производительности, обнаруженный в предыдущих задачах.

Вычислительная эффективность

Теперь мы наблюдали за производительностью SBERT в двух разных сценариях, что побуждает использовать его в различных других средах. Одним из примеров такого сценария, упомянутого ранее, является семантический поиск, который помимо точности вычислений также требует вычислительной эффективности для того, чтобы быть жизнеспособным в приложении реального времени.

Авторы показывают, что SBERT сопоставим и даже конкурентоспособен, когда дело доходит до скорости (измеряется количеством предложений, которые он может вставлять в секунду). Однако это верно только для SBERT-base (параметры 110M), но не должно рассматриваться как нарушение условий сделки. Если вернуться к таблицам, то можно убедиться, что предельный выигрыш (разница примерно в 1 балл при рассмотрении средних значений), вероятно, не стоит дополнительных вычислительных сложностей.

Заключение

SentenceBERT вводит объединение встраиваемых токенов, сгенерированных BERT, для создания встраиваемых предложений фиксированного размера. Когда эта сеть настраивается на данных логического вывода на естественном языке, становится очевидным, что она способна кодировать семантику предложений. Они могут использоваться для неконтролируемых задач (например, семантическое текстовое сходство) или задач классификации, где они позволяют достичь самых современных результатов.

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