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

Семантический поиск - это вариант использования BERT, когда предварительно обученные векторы слов могут использоваться как есть, без какой-либо тонкой настройки. Здесь семантический поиск в узком смысле означает:

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

Образец витрины

Найдите место в иллюстрированных примерах.

В первом примере вводится «morden music composers» (современный вариант написан с ошибкой как morden). Почти половина из 20 лучших результатов 4, 5, 9, 10, 11,17,19, 20 (8/20) не имеют общих слов с входными данными, но семантически связаны с запросом (кроме 10, который является только слабо относящиеся - досуг). Поиск выполняется по скалярному произведению векторного представления входных данных с использованием BERT (в данном случае «morden music composers») и 70 000 векторных представлений BERT предложений из набора тестовых данных. Затем результаты сортируются по косинусному расстоянию.

Запрос 1: «morden music composers» - 40% семантически связанных результатов (с разной степенью сходства) не содержат слов, общих с вводом. Термины «__label__x» представляют собой теги, помеченные человеком (14 категорий), и отображаются ниже, чтобы показать, что результаты семантически связаны - результаты из одних и тех же категорий категорий меток. Эти ярлыки не были введены в модель. Он представлен ниже только в иллюстративных целях.

Запрос 2: «вымершие виды на азиатском континенте» - результаты в основном относятся к видам, обитающим в Азии. Около половины не имеют общих слов с входным запросом

Вопрос 3: «Страны, в которых популярен крикет» - ответ косвенный, но его можно вывести. Результат 15 выделен, чтобы показать один случай, когда нет слов, общих с вводом.

Запрос 4: «вымершие животные»

Вопрос 5: «связаны ли динозавры с птицами?» Первый результат косвенно отвечает на этот вопрос. Это один из полезных аспектов этого поиска. Получаем функционал, аналогичный Q&A, без явной тонкой настройки. Эта форма поиска дополняет традиционный поиск и больше представляет собой исследование интересующих условий поиска. Результаты представляют собой смесь ложных и истинных положительных результатов.

Запрос 6: «Назовите несколько рек в Китае»

Запрос 7: «реки Северной Америки»

Запрос 8: «книги-бестселлеры»

Запрос 9: "связаны ли динозавры с видами птиц". Вариант запроса 5. Первые результаты считаются косвенными ответами на запрос.

Запрос 10: «Когда произошли люди». Результаты этого запроса, кажется, улавливают смысл «когда» больше, чем связанный запрос 11, «откуда произошли люди».

Запрос 11: «ночные животные». Большинство самых популярных результатов, похоже, не связаны с запросом (хотя есть релевантные результаты за пределами топ-5 - не показаны). Эта форма поиска дополняет традиционный поиск и больше представляет собой исследование интересующих условий поиска. Результаты представляют собой смесь ложных и истинных положительных результатов.

Запрос 12: «Научно-популярные книги». Результаты содержат как функциональную, так и научную литературу вместе и по отдельности. Это союз «художественной литературы и научной литературы».

Запрос 13: «птицы рептилии амфибии». Как и в случае с запросом 13, результатом является объединение этих трех терминов.

Запрос 14. В чем смысл жизни

Запрос 15: какова цель жизни. Результаты довольно близки к запросу 15. Оба вопроса дают ответы.

Как ни странно, такие примеры, как вышеприведенные, похоже, указывают на то, что

  • Предварительно обученные вложения BERT могут быть полезным кандидатом для семантического поиска с некоторыми хорошими свойствами, такими как
  • Ввод произвольной формы. Однако результаты лучше, когда запрос краткий (меньше ложных срабатываний).
  • Ввод в произвольной форме без учета падежей из словарного запаса, в том числе из-за орфографических ошибок. Однако результаты кажутся лучше без орфографических ошибок.
  • Редкое моделирование поведения в стиле вопросов и ответов (вопросы, на которые есть ответы), хотя,
  • как видно из приведенных выше примеров, сохранение небольшого размера запроса (несколько слов) и краткости дает более релевантные ответы (уменьшает количество очень слабо связанных ответов, включая ложные срабатывания)
  • результаты представляют собой объединение концепций входного запроса. Не обязательно, что именно соответствует вводу.

Как создаются эти векторы?

  • Было использовано 70 000 предложений тестовых данных категоризации fasttext, а векторы для слов (подслова в случаях таких слов, как заключение) в каждом предложении были использованы для генерации вектора предложения путем суммирования векторов слов и деления на количество слов в предложении. При суммировании исключаются токены CLS и SEP. Суммирование производится по всем жетонам, составляющим слово, включая части слова, на которые может быть разбито слово. Данные, используемые для этого теста, взяты из набора данных fasttext для контролируемого обучения для классификации предложения по 14 категориям. С помощью BERT мы напрямую используем предложения для генерации векторов, а затем используем метки в качестве меры BERT, возвращающей семантически связанные результаты. Метки не используются при генерации вектора предложений. Например, быстрое сканирование приведенных выше результатов покажет, что в лучших результатах в значительной степени преобладает один тип этикеток. Даже если есть смесь, эти результаты будут семантически похожи на поиск ввода.
  • Первые 32 слова в предложении используются для создания векторов для этого теста. Чем больше это значение, тем лучше результаты, но больше времени требуется для создания векторов. Этот счетчик представляет собой максимальное количество слов в последовательности после токенизации в подслова. Таким образом, такое слово, как тюремное заключение, превратилось бы в три подслова - «inca, ## rce, ## ration».
  • Эти векторы были сгенерированы с использованием bert-as-service, при этом CLS и SEP не использовались для генерации предложений. Мы могли бы использовать extract_features.py из BERT для их генерации - генерация занимает больше времени, так как она однопоточная.
  • Использование «CLS и SEP» не только добавляет больше шума, но и приводит к совершенно другим результатам - поэтому они пропускаются. Например, запрос, имеющий тон вопроса, вернет ответы, которые также являются вопросами, в отличие от ответов, которые больше похожи на ответы.
  • Другие варианты, которые следует учитывать при генерации вектора предложений вместо усреднения, - это max и т. Д.
  • Все векторы, использованные в этом тесте, использовали слой -2 (предпоследний слой - слой ниже самого верхнего). Другие варианты, которые следует учитывать, - это комбинация слоев.

Чем векторы предложений, созданные с использованием векторов слов / подслов BERT, отличаются от векторов предложений, составленных из векторов слов такой модели, как word2vec?

  • Ключевое отличие состоит в том, что векторы word2vec для слова одинаковы независимо от контекста. BERT-векторы - нет. Например,
  • Вектор для слова «cell» - это один вектор в word2vec после обучения его на корпусе. Вектор для слова «клетка» зависит от контекста предложения, в котором оно встречается. Хотя мы можем получить векторы слов для такого слова, как «ячейка», независимо от контекста, добавление контекстно-независимых векторов слов BERT приведет к получению вектора предложения, который отличается от сложения векторов слов, составляющих предложение.
  • Например, вектор предложения для «собака гнался за щенком», где мы складываем векторы для «преследуемый», «собака», «преследуемый», «тот», «щенок» в этом контексте предложения, не является одним и тем же вектором. как добавление векторов для отдельных слов «the», «dog», «chased», «the», «puppy» без какого-либо контекста.
  • С точки зрения семантического поиска
  • если в пространстве поиска есть отдельные слова, доступные для поиска, и если наш входной запрос представляет собой одно слово, word2vec в среднем работает лучше, чем BERT - у него есть разнообразный набор семантических соседей, не ограниченных типом объекта ввода поиска. BERT, с другой стороны, имеет тенденцию возвращать результаты, которые являются либо тем же типом объекта, что и входные, либо результатами, близкими с точки зрения расстояния редактирования. Таким образом, результаты BERT выглядят менее «семантическими», чем векторы word2vec для отдельных слов.
  • Если пространство поиска состоит из фраз и предложений, и если наш входной запрос представляет собой фразу или предложение, результаты BERT семантически ближе к вводу, чем предложения, составленные с использованием результатов word2vec.
  • Однако, независимо от того, являются ли они отдельными словами, фразами или предложениями, BERT имеет преимущество перед word2vec в том, что он возвращает результаты для любого ввода, учитывая его состав слов из подслов.
  • Хотя это сравнение кажется несправедливым, учитывая, что модель BERT учитывает последовательность слов, а word2vec - нет, это сравнение было сделано, чтобы показать, что word2vec, несмотря на его простоту, имеет преимущества в определенных случаях использования.

Свойства вектора BERT, наблюдаемые в наборе данных игрушки

Наблюдения ниже относятся к сконструированному словарю данных игрушек размером 357, состоящему из отдельных слов (кошка, собака и т. Д.), Фраз (кровяная клетка, тюремная камера) и предложений («собака гналась за щенком»)

  • Смысл вектора, представляющего слово, меняется в зависимости от контекста, в котором оно появляется. Например, слово «клетка» в предложении «он пошел в тюремную камеру с мобильным телефоном, чтобы извлечь образцы клеток крови у сокамерников», соседи по-разному используют слово «клетка», что отражает смысл. Например, верхние соседи к «он попал в камеру с…» - это такие слова / фразы, как «тюрьма», «заключение» и т. Д., Тогда как верхние соседи «он отправился в тюремную камеру с мобильным телефоном, чтобы извлечь образцы клеток крови заключенных» - это такие термины, как «клетка крови», «биологическая клетка» и т. д.
  • Сумма векторов, составляющих отдельные слова предложения, далека от вектора, составленного из слов, учитывающих порядок слов, особенно по мере увеличения длины предложения. Например, вектор для «собака гналась за щенком y» далек от вектора, составленного путем добавления отдельных векторов слов без контекста.
  • Интересно, что вектор предложения очень близок к вектору перевернутого предложения. Это не зависит от того, что слова в предложении состоят из подслов. Например, векторы предложений для «растения являются основными производителями продуктов питания в пищевой цепи» близки к «цепочка продуктов питания у производителей продуктов питания в первую очередь - это растения». В некотором смысле это неудивительно, учитывая симметрию внимания. Однако смысл слов в обратной строке разрушается, возможно, из-за асимметрии позиционного кодирования. Например, разные значения слова «камера» теряются, когда предложение «он пошел в тюремную камеру с мобильным телефоном, чтобы взять образцы клеток крови у заключенных» перевернуто «сокамерники» из проб клеточного экстракта крови в телефонную камеру с тюремной камерой, куда он отправился »

Первоначально опубликовано на ajitsmodelsevals.quora.com.