Sentence-BERT
Sentence-BERT (SBERT) — это модификация архитектуры трансформера BERT (Bidirectional Encoder Representations from Transformers), предназначенная для получения семантически значимых векторных представлений (эмбеддингов) предложений и текстовых фрагментов. В отличие от оригинального BERT, который не оптимизирован для прямого вычисления семантической близости между парами текстов, Sentence-BERT использует сиамскую или триплетную сетевую структуру, что позволяет эффективно решать задачи кластеризации, поиска семантически похожих текстов и классификации.
История и предпосылки
До появления Sentence-BERT основным подходом к получению эмбеддингов предложений было использование моделей типа BERT путём усреднения выходных векторов всех токенов (mean pooling) или взятия вектора специального токена [CLS]. Однако такой подход давал неудовлетворительные результаты для задач семантического сходства: корреляция между полученными таким образом эмбеддингами и человеческими оценками сходства была низкой. Для сравнения двух предложений в BERT приходилось подавать их на вход как одну пару (cross-encoder), что было вычислительно затратно — для каждой пары требовался отдельный проход через сеть.
Метод, предложенный в 2019 году исследователями из компании UKP Lab (Технический университет Дармштадта) в статье «Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks», решил эту проблему. Авторы (Нилс Раймерс, Илья Гуревич) адаптировали BERT для работы в сиамской архитектуре, где два (или три) экземпляра модели с общими весами обрабатывают разные предложения, а затем их эмбеддинги сравниваются с помощью косинусной близости или евклидова расстояния.
Архитектура и принцип работы
Сиамская сеть
Sentence-BERT использует сиамскую сетевую структуру. Это означает, что два (или более) экземпляра BERT имеют полностью идентичные веса и совместно обучаются. На вход подаются два предложения A и B. Каждое из них проходит через BERT, после чего к выходным векторам применяется операция усреднения (mean pooling) по всем токенам. Полученные эмбеддинги u и v (для предложений A и B соответственно) затем используются для вычисления целевой функции.
Функции потерь и обучение
Sentence-BERT обучается на наборах данных, содержащих пары (или тройки) предложений с оценками сходства. Используются три основные стратегии:
- Классификация (Classification Objective): Эмбеддинги u и v конкатенируются вместе с поэлементной разностью |u-v| и подаются в полносвязный слой с функцией активации softmax для классификации на N классов (например, «похожи», «не похожи»). Функция потерь — кросс-энтропия.
- Регрессия (Regression Objective): Выходом является косинусная близость между u и v. Функция потерь — среднеквадратичная ошибка (MSE) между предсказанной близостью и истинной оценкой (например, от 0 до 5).
- Триплетная функция потерь (Triplet Objective): Используется три предложения: якорное (anchor), положительное (positive — семантически близкое к якорному) и отрицательное (negative — семантически далёкое). Цель — минимизировать расстояние между эмбеддингами якоря и положительного примера, одновременно максимизируя расстояние до отрицательного, с учётом некоторого зазора (margin).
Отличие от кросс-энкодеров
Основное преимущество Sentence-BERT (би-энкодер) перед кросс-энкодерами (например, обычным BERT для классификации пар) — скорость. Для кросс-энкодера, чтобы найти наиболее похожее предложение из 10 000, нужно выполнить 10 000 прямых проходов. Для Sentence-BERT достаточно один раз закодировать все 10 000 предложений в эмбеддинги (один проход на каждое), а затем вычислить косинусное сходство между ними — операция, выполняемая за миллисекунды. Однако кросс-энкодеры обычно показывают более высокую точность на задачах, где важна тонкая семантическая нюансировка.
Применение
Sentence-BERT широко применяется в задачах обработки естественного языка (NLP), требующих быстрого сравнения большого количества текстов:
- Семантический поиск: Поиск документов или фрагментов текста по смыслу, а не по ключевым словам. Пользовательский запрос кодируется в эмбеддинг, после чего находятся ближайшие к нему эмбеддинги из базы данных.
- Кластеризация текстов: Группировка новостей, отзывов, научных статей по тематике без предварительной разметки.
- Классификация текстов: Использование эмбеддингов в качестве признаков для классификатора (например, логистическая регрессия, SVM).
- Поиск парафраз: Определение, являются ли два предложения перефразированием друг друга.
- Системы вопросно-ответного поиска: Сопоставление вопросов пользователя с заранее заготовленными ответами.
- Рекомендательные системы: Поиск похожих товаров, статей или пользователей на основе текстовых описаний.
Предобученные модели
На платформе Hugging Face доступно множество предобученных моделей Sentence-BERT, обученных на различных наборах данных. Наиболее популярные из них:
all-MiniLM-L6-v2: Компактная модель на основе MiniLM, обеспечивающая хороший баланс между скоростью и качеством. Размер эмбеддинга — 384.all-mpnet-base-v2: Модель на основе MPNet, показывающая более высокое качество, но требующая больше вычислительных ресурсов. Размер эмбеддинга — 768.multi-qa-mpnet-base-dot-v1: Оптимизирована для задач поиска (question-answering), использует скалярное произведение (dot product) для сравнения.paraphrase-multilingual-MiniLM-L12-v2: Мультиязычная модель, поддерживающая более 50 языков, включая русский. Позволяет сравнивать предложения на разных языках.
Критика и ограничения
- Чувствительность к длине текста: Sentence-BERT, как и BERT, имеет ограничение на длину входной последовательности (обычно 512 токенов). Для более длинных текстов требуется обрезка или разбиение на части.
- Сложность с идиомами и метафорами: Модель может неадекватно обрабатывать переносные значения, идиомы и сарказм, так как обучается на поверхностном сходстве.
- Зависимость от обучающих данных: Качество эмбеддингов сильно зависит от того, на каких данных обучалась модель. Для специфических доменов (медицина, юриспруденция) может потребоваться дообучение (fine-tuning).
- Отсутствие понимания причинно-следственных связей: Sentence-BERT фиксирует семантическую близость, но не моделирует логические отношения между предложениями (например, «A вызвало B»).
Источники
- Reimers, N., & Gurevych, I. (2019). Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks. Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing.
- Документация библиотеки
sentence-transformers(GitHub, Hugging Face). - Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Proceedings of NAACL-HLT 2019.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →