Как стать автором
Поиск
Написать публикацию
Обновить
78.16

Поисковые подсказки: подход «генератор-дискриминатор»

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров378

Всем привет! Меня зовут Федор Курушин, я занимаюсь машинным обучением в поиске Wildberries. Прямо сейчас я работаю над развитием сервиса персональных поисковых подсказок.

Недавно вместе с коллегой мы представляли нашу совместную работу Product Search Prompts: Generator-Discriminator Approach на конференции FICC 2025.

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

Проблема

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

Но поиск похожих запросов сложен: даже небольшие различия (как между macbook pro 16 2025 и macbook pro 14 2025, или стиральный порошок 9 кг и стиральный порошок 20 кг) делают их нерелевантными. Часто вместо догадок лучше просто расширить тему, предложив «стиральный порошок», чем пытаться додумать за пользователя, что ему надо.

Почему это происходит?

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

 Основные проблемы:

  • Разнообразие формулировок — один запрос может формулироваться по-разному.

  • Тонкая разница — даже один токен в запросе может сделать его нерелевантным.

  • Контекстная зависимость — «белый» может означать цвет, бренд или материал.

  • Опечатки, сленг, транслитерации — «самсунг» вместо «Samsung».

Решение

Эксперименты показали, что наиболее точно для нашей задачи будет работать система из двух компонентов:

1. Генератор — ищет в индексе наиболее похожие запросы.

2. Дискриминатор — оценивает качество предложенных вариантов.

Таким образом, мы решаем проблему традиционных моделей, которые могут только сказать что запрос «macbook pro 16 2025» и «macbook pro 14 2025» похожи на 0.9.

Архитектура решения

Рис. 1: Общая архитектура подхода генератор-дискриминатор
Рис. 1: Общая архитектура подхода генератор-дискриминатор

Генератор

По сути, генератор M_G — это модель векторизации текста. В своем сравнении мы использовали три модели:

  • E5 — современная модель для семантического поиска;

  • fastText — проверенная временем модель, быстрая и легкая для CPU инференса;

  • Q2QDENSLR — наша собственная модель.

     Рис. 2: Архитектура нашей модели Q2QDENSLR
     Рис. 2: Архитектура нашей модели Q2QDENSLR

На схеме 2 изображена стандартная архитектура Dual Encoder, LPQ и HPQ — это Low Performing Queries и High Performing Queries, соответственно. 

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

Пары запросов были найдены в пользовательских сессиях по условию LPQ — запрос, который не привел к покупке, HPQ — запрос, по которому была сделана покупка, при этом оба этих запроса были совершены пользователем последовательно.

Обученная таким образом модель Q2QDENSLR показала лучшие результаты (mAP@12 = 23% vs 20% у fastText и 17% у E5).

Обучение

Для обучения модели были собраны пары запросов: LPQ и HPQ. В качестве негативных примеров для каждой пары использовался in-batch negative sampling — на один позитивный пример приходилось 5 негативных.

Токенизатор был использован общий для обеих моделей (и для M_G и для M_D), алгоритм unigram, содержит 32 тысячи токенов и адаптирован под e-commerce. 

Особое внимание уделено брендам: такие названия, как «New Balance» или «Красный Октябрь» выделяются как отдельные токены, чтобы сохранить их смысл.

В качестве функции потерь использовалась Dual Margin Cosine Embedding Loss с двумя порогами: positive margin — 0.9, negative margin — 0.2.

Обучаем, пока не обучится.

Дискриминатор

Дискриминатор M_D — это основа нашей системы, которая и привносит основное отличие от стандартных поисков ближайших объектов по векторам. Если говорить простыми словами, то это модель, которая определяет степень отношения между исходным пользовательским запросом и запросами, которые были извлечены моделью M_G. В отличие от традиционных подходов, где все классы имеют равную релевантность, мы создали иерархическую систему дискриминации, которая может отличаться для разных бизнес задач.

Рис. 4: Многоуровневая архитектура дискриминатора
Рис. 4: Многоуровневая архитектура дискриминатора

Архитектура дискриминатора

Дискриминатор использует многоуровневую архитектуру с тремя параллельными энкодерами (рис. 4).

  1. Статические эмбеддинги (L_{vec}):

    • Преобразует каждый токен в вектор фиксированной размерности

    • Использует RNN для обработки последовательности

    • Вычисляет разность между скрытыми состояниями: h^{vec}_{LPQ} - h^{vec}_{HPQ}

  2. Суммирование токенов (L_{out}):

    • Простое суммирование эмбеддингов всех токенов

    • Конкатенация векторов: CONCAT(h^{sum}_{LPQ}, h^{sum}_{HPQ}) 

    • Позволяет модели учитывать общую семантику запроса

  3. Двунаправленные RNN (L_{bi}):

    • Использует выходные состояния RNN

    • Учитывает порядок слов в запросе

    • Вычисляет разность выходных векторов

Математическая модель

Loss-функции для каждого энкодера:

L_{vec} = FF(\tanh(h^{vec}_{LPQ} - h^{vec}_{HPQ}))

L_{out} = FF(CONCAT(h^{sum}_{LPQ}, h^{sum}_{HPQ}))

L_{bi} = FF(\tanh(h^{bi}_{LPQ} - h^{bi}_{HPQ}))

Комбинированная функция потерь:

L = \Sigma_{i=1}^{N_{outputs}} \exp(a_i) * L_i + \exp(b)

Где a_i и b — обучаемые параметры, которые автоматически подбираются в ходе тренировки модели.

Шесть стадий дискриминации

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

Тип отношения 

Исходный запрос

Подсказка

Перефразирование

стиральный порошок

порошок для стирки

Расширение

смартфон iPhone   

телефон   

Сужение

стиральный порошок

стиральный порошок 9 кг 

Изменение характеристик

красная сумка

сумка синего цвета

Сопутствующие запросы

зубная щетка

зубная паста

Нерелевантные запросы

зубная щетка

корм для животных

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

Рис. 5: Стадии дискриминации и их релевантность
Рис. 5: Стадии дискриминации и их релевантность

Для задачи генерации персональных поисковых подсказок, стадии дискриминации и их релевантность могут быть изменены следующим образом (от наиболее к наименее релевантным):

Cопутствующие → изменение характеристик → расширение → сужение → перефразирование → нерелевантные. 

В данном случае перефразирование выше по уровню релевантности, чем только самый последний класс, так как пользователю не имеет смысла рекомендовать то, что он уже только что смотрел/купил. 

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

Обучение

Использовали токенизатор, описанный ранее: 32k токенов, адаптированных для e-com, «New Balance» или «Красный Октябрь» — это единые токены. Данные собирались отдельно для каждого класса, оценка производилась на размеченной асессорами выборке. RNN модель имела 4 слоя GRU (без двунаправленности), размерность эмбеддингов: 64.

Время обучения ~8 часов на GPU. Размер модели ~50 MB (оптимизировано для продакшена).

Результаты

Процесс подготовки модели состоял из раздельного обучения и раздельной оценки моделей M_G и M_D и затем их совместной оценки. Как было сказано ранее, метрики моделиM_G mAP@12: 23%, 20% — fastText, 17% для E5.Оценка моделиM_Dна размеченной выборке проводилась во время обучения совместно с расчетом функции потерь (рисунок 6).

Рис. 6: F1-скор для стадий дискриминации и различных loss-функций
Рис. 6: F1-скор для стадий дискриминации и различных loss-функций

F1-score: превысил 90% для определения стадии дискриминации пары поисковых подсказок (оценка производилась на ассесорской разметке).

Далее была проведена совместная валидация двух моделейM_GиM_Dдля этой оценки была использована та же асессорская выборка запросов, но задачей было уже не только правильно определить класс отношения запросов, но и найти лучший подходящий запрос из индекса. Результаты сравнения приведены на рисунке 7. Для оценки были определены ранги «лучших запросов». 

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

Рис. 7: Сравнение плотности рангов для E5, fastText и Q2QDENSLR
Рис. 7: Сравнение плотности рангов для E5, fastText и Q2QDENSLR

Заключение

Таким образом, мы разработали подход «генератор-дискриминатор» для создания поисковых подсказок, который решает основную проблему традиционных методов поиска по сходству — неспособность учитывать тонкие различия между запросами.

Основные преимущества нашего подхода:

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

Точность: F1-score превышает 90% для определения типа отношений между запросами, что позволяет системе эффективно отфильтровывать нерелевантные предложения.

Масштабируемость: модель размером всего 50 MB работает в реальном времени, обрабатывая миллионы запросов с задержкой менее 50 ms.

Перспективы развития: обучение модели на задачу NSP (предсказания следующего поискового запроса), и персонализация подсказок с использованием эмбеддингов пользователей.


Статья основана на докладе, представленном на конференции FICC 2025. Полный текст научной работы доступен по ссылке. Телеграм-канал автора здесь.

Разборы, новости, экспертиза наши разработчиков и вакансии — в телеграм-канале, подписывайтесь!

Теги:
Хабы:
+3
Комментарии0

Публикации

Информация

Сайт
www.wildberries.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия