Назад
903

Как обучить текстовый эмбеддер на домен

903

Введение

По данным ВЦИОМ, 43% коммерческих компаний из 19 отраслей экономики используют решения ИИ в своих продуктах. Каждая из этих отраслей может включать в себя не один домен, область знаний со своей спецификой и типом данных. При этом большинство популярных современных трансформенных моделей в open-source обучены на открытых датасетах, неспецифичных к области применения моделей, например, в медицине, финтехе или legal-сфере (там обнаруживается высокая чувствительность к данным), или e-commerce (где каждая модель как золотой Грааль, которым никто делиться не станет). Будем называть все эти специфичные области знаний доменами. В каждом из них легко столкнуться с такой ситуацией, когда открытая модель не даёт достаточного для внедрения качества из коробки, поэтому требуются подходы к доменной адаптации — обучению модели под специфичную задачу бизнеса.

Под текстовым эмбеддером будем понимать модель, принимающую на вход текст и отдающую на выходе вещественный вектор фиксированной размерности. Такое широкое определение позволяет сразу же рассматривать как привычные BERT-подобные кодировщики с pooling-слоем, так и GPT-подобные модели с векторизацией текста посредством генерации единственного токена или вновь ставшие популярными словари векторов, нашедшие новую жизнь как дистиллят произвольной модели из описанных ранее. У моделей также под капотом есть словарь, будем включать его в сущность модели.

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

Что делать для доменной адаптации?

Доменная адаптация — это введение некоторых эвристик и inductive bias в данные, процесс обучения и использование готовой модели.

Рисунок 1. Общий пайплайн доменной адаптации модели

Давайте последовательно разберём шаги, которые стоит предпринять для доменной адаптации текстовых эмбеддеров.

  • Формулировка задачи ML. Половина дела в решении любой задачи — правильная её формулировка. Определитесь, какую конечную задачу машинного обучения вы хотите решить. От этого будет зависеть, какие в вашем случае шаги стоит предпринять для улучшения качества модели.
  • Выбор базовой модели. Второй шаг — определиться, с какими моделями вы будете экспериментировать. Моделей в open-source крайне много, следует сразу сузить их до нескольких единиц. Например, вы работаете исключительно с текстами на русском языке — любые англоязычные модели просто не заведутся на ваших данных. Большинство задач ML покрыты бенчмарками и лидербордами, которые зададут направление поиска. Пример этого — MTEB. Из вашей формулировки задачи следует и множество выбранных моделей.
  • Сбор данных. Для конечной решаемой задачи в большинстве случаев это будет разметка текстов по некоторой бизнес-логике, например, спам ли электронное письмо, фрод ли комментарий под товаром. Сюда относится и степень релевантности документа к запросу или классификация юридических случаев. Но в самой структуре текстов также может содержаться много информации о домене, например, каждая карточка товара на маркетплейсе имеет множество текстовых атрибутов различной природы: общее описание, тип, цвет и т.д. Будем дополнительно иметь в виду, что у нас есть некоторый индекс документов, произвольных сущностей, образующих наш домен.
  • Предобучение. Текстовые эмбеддеры — языковые модели, которые умеют предсказывать токен по контексту за счёт обучения на задачу MLM (masked language modeling). Но распределение ваших данных может отличаться от распределения в датасетах обучения базовой модели: ваши данные могут иметь определённую структуру, как у карточки товара, поэтому хорошей идеей будет обучить модель на задачу MLM, опционально обогатив словарь дополнительными токенами. Вторая идея — использование специфичной задачи языкового моделирования, например, RetroMAE. Наконец, основным подходом для улучшения качества эмбеддингов под задачу является применение metric learning, в частности contrastive learning, SOTA-подход в области. Inductive bias похож на эвристику кластеризации: сблизить похожие документы домена и отдалить различные.
Рисунок 2. Качественный результат применения контрастивного обучения на caption-парах в модели CLIP
  • Дообучение. В целом, ради него мы и собирались, но останавливаться подробно не будем, так как он наиболее конвенциональный и наименее интересный в последовательности. Хотя этот шаг также позволяет заточить текстовый эмбеддер под задачу. Обычно конечная задача решается за счёт навешивания на эмбеддер линейной головы.

RetroMAE

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

Рисунок 3. Схематическое описание RetroMAE. (А) Привычный MLM, кодировщик формирует sentence-эмбеддинг h. (B) Более зашумлённый MLM, h добавляется в контекст, используются позиционные эмбеддинги. (C) Декодировщик восстанавливает входную последовательность с cross-вниманием на сэмплированные токены исходной последовательности, в которые всегда включается h и всегда исключается восстанавливаемый токен

На этапе (А) привычно зашумляется ~15-30% токенов, по зашумлённой последовательности формируется вектор последовательности \(h_{\tilde{X}}\). На этапе (B) работает уже декодировщик, входная последовательность обогащается \(h_{\tilde{X}}\) и позиционными эмбеддингами \(P_i\) и зашумляется более агрессивно, на 50-70%, чтобы больше градиента протекало в кодировщик, но авторы отбрасывают этот этап из-за низкой утилизации данных: сигнал идёт только от маскированных токенов. Вместо него они рассматривают этап (С), в котором после прогона кодировщика они формируют новую входную последовательность \(H_1\) как сумму \(h_{\tilde{X}}\) и позиционных эмбеддингов и восстанавливают каждый токен последовательности. Вместо self-attention в декодировщике авторы используют masked cross-attention на \(H_2\), \(h_{\tilde{X}}\) и сумму векторов исходной последовательности и позиций, маска же формируется из сэмплирования из \(H_2\) с априорным добавлением \(h_{\tilde{X}}\) и удалением самого токена при его восстановлении. Итоговая функция ошибки — сумма MLM и суммарной кросс-энтропии по восстанавливаемым декодировщиком токенам.

Подход даёт существенный прирост по retrieval-метрикам и используется в SOTA-модели в Information Retrieval, BGE M3.

Контрастивное обучение

Постановка

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

Рисунок 4. На несгруппированных данных качество классификации будет низкое
Рисунок 5. А на сгруппированных — высокое

Тут на сцену и выходит контрастивное обучение. Пусть \(f(x)\in\mathbb{R}^n\) — ваш текстовый эмбеддер, \(D=\{(x_i,x_i^p,x_i^{n_1},\dots,x_i^{n_k})\}_i\) — такое множество текстов, что \(x_i\), называемый якорным документом, “похож” на \(x^p_i\) и не “похож” на \(\forall x_i^{n_j}\). Пресловутая “похожесть” формулируется из бизнес-требований и является основным фактором качества в контрастивном обучении. Введем также \(sim_f(x, z)\in\mathbb{R}\) — функция похожести двух документов, например, скалярное произведение, которое зачастую и рассматривают. Тогда функция ошибки, на которую мы хотим обучать нашу модель, выглядит так:

\( \mathcal{L}_N=-\mathbb{E}_D\left[\log\sigma_0\left(\frac{sim_f(x_i,x_i^p)}{\tau},\frac{sim_f(x_i,x_i^{n_1})}{\tau},\dots,\frac{sim_f(x_i,x_i^{n_k})}{\tau}\right)\right] \)

Здесь \(\sigma_0(\overline\cdot)\) — софтмакс-функция, у которой в числителе стоит первый член вектора, \(\tau\) — температура. Фактически на каждом шаге мы решаем задачу классификации на батче с кросс-энтропийной функцией ошибки. Такая функция ошибки называется InfoNCE (NCE от noise-contrastive estimation).

Как нам получить выборку \(D\)? Позитивы, пары \((x_i,x_i^p)\) можно взять из разметки для конечной задачи, например, пары спам-документов или статьи административного кодекса одной главы. А негативы? Например, их можно формировать из бизнес-требований или по имеющимся представлениям нашей модели, их называют hard-негативами. Способов тут много, но один из наиболее популярных — поиск в индексе, реализующем приближенный поиск ближайших соседей (ANN-индекс), то есть ближайших к якорному документу объектов, которые не являются позитивными к нему. Суть идеи: негативов сильно больше, чем позитивов, — априорно можем считать пару произвольных документов негативной, тогда ближайшая пара, являющаяся негативной, станет наиболее информативной для процесса обучения.

Температура \(\tau\) отвечает за сглаживание распределения на батче, её понижение приводит к более тонкой донастройке под доменные данные. А физический смысл в рамках градиентных методов схож с шагом обучения.

Почему это работает?

Цель обучения — выучить такие представления, для которых достигается максимум совместной информации между семантически похожими точками при её минимизации для непохожих. Сведение к минимуму InfoNCE способствует тому, что модель:

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

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

InfoNCE — это нижняя грань взаимной информации между входными данными \(x\) и их представлением \(f(x)\). Максимизация нижней границы эффективно увеличивает взаимную информацию, следовательно, улучшает представления.

Отметим также некоторые плюсы и минусы подхода:

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

Заключение

Инструментарий обучения текстового эмбеддера на домен богат на выбор. Если у вас есть возможность собрать разметку (в эпоху LLM хорошая разметка стала более доступная) и поднять дообучение на имеющихся текстовых данных, а также если вы хотите подрастить графики и заработать много денег — делайте доменную адаптацию 🙂

А про то, как всё это делать на примере конкретных бизнес-кейсов, мы расскажем в рамках курса LLM-Pro, будем рады там вас видеть.

LLM Pro

Продвинутый курс для тех, кто хочет научиться строить надёжные NLP-решения! Соберёте полноценные LLM-системы с учётом требований к качеству и нагрузке, разберёте сложные кейсы и дизайны NLP-решений

Старт — 22 мая

Телеграм-канал

DeepSchool

Короткие посты по теории ML/DL, полезные
библиотеки и фреймворки, вопросы с собеседований
и советы, которые помогут в работе

Открыть Телеграм

Увидели ошибку?

Напишите нам в Telegram!