TGViewer
Б/У ml Б/У ml @ml_bu · 696 subscribers
Post #3 672
Как pinterest с popularity bias боролся в поиске
Моя самая любая компания про рекомендательные системы - Pinterest. Примерно 2 раза в год они публикуют статью, в которых с большим количеством деталей рассказывают об экспериментах и подходах - структура и подход статей вдохновляют вести эксперименты в таком же стиле. Обязательно к прочтению!

Подход OmniSearchSage
Примерно полгода назад вышла статья - OmniSearchSage. В статье рассматривается поисковый движок Pinterest.

Выглядит он примерно так:
1) Берем положительные пары запросы-пины
2) Получаем первичный вектор пина с помощью графовой нейронки и к этому вектору конкатим доп текстовые фичи (заголовок, описание, параметры) с помощью мешка эмбедингов - получаем новый вектор пина.
3) Текстовый запрос прогоняем через непредобученный BERT и [CLS] токен учим на близость к новому вектору пина, обновляя веса всей модели. В качестве loss берут softmax (pic 1). Обучать сырой BERT сразу на свою задачу - очень смело


Такую же операцию проделываем с товарами в pinterest, отличие только в том, что для получения первичного вектора товара используем другую архитектуру - ItemSage .

Bias Popularity
Это одна из самых частых проблема в задачах поиска и рекомендательных системах. Суть в том, что на некоторые айтемы чаще, чем на другие кликают в поисковых выдачах, что в тренировочном датасете увеличивает частоту таких пар query-item. Нейронкам будет выгоднее в топ выдачи к запросу ставить не более подходящий item, а более популярный, за место того, чтобы находить более сложные зависимости в данных и показывать нетривиальные примеры. Если такую модель выкатить в прод, то пользователи будут видеть не релевантные для их запроса айтемы. Например, если на запрос iphone пользователи чаще откликаются на картинки с Iphone 15, то это не означает, что к этому запросу нужно показывать только эту модель телефона.

Как с этим бороться?
LogQ
Одна из техник это LogQ (pic 2). В чем суть? Давайте в softmax лосса добавим учтем Q(yi | xi) . За что ответственен этот параметр? Это вероятность, что для данного запроса (xi) пользователь совершит клик на данный item (yi) . Какой физический смысл? После преобразования формулы (вынос из под экспоненты Q) получим множитель перед формулой 1/Q . Когда пара query-item встречаются часто, то вклад в градиента , пропорциональный 1/Q, будет меньше по сравнению в менее частыми примерами.

Фильтрация данных
Еще они использовали менее элегантный подход - решили отфильтровать число уникальных пар query-item в датасете до 50 для пиннов и до 200 для товаров. Подробно выбор этих чисел они не обосновали, но я думаю, что это сделали, чтобы при том же размере датасета модель увидила более разнообразные пары.

Результат

Отдельно они не написали, какой вклад вносит смена Loss функции, поэтому приложу только картинку "до" и "после". (pic 3) Сами авторы говорят, что "важно" не наказывать модельку лишний раз, но нет явного сравнения "на сколько важно".

Вопросы, которые остались
Очень зашел LogQ - выглядит понятным и обоснованным - также его не сложно внедрить. В своих задачах часто наблюдал popularity bias - хочется посмотреть примеры выдач с LogQ и без него.

Но мне не нравятся методики, связанные в "ручной" обработкой данных - их природа чаще инженерная и не объясняет в какой ситуации и на каких данных стоит использовать. Фильтрация датасета относится именно к таким - интереснее понять, а можно ли в модели учесть сигнал, который побуждает нас отфильтровать данные? Может если добавить в модель достаточно источников данных, то она под капотом отфильтрует то, что нужно? Эти вопросы остались нерешенными
arXiv.org OmniSearchSage: Multi-Task Multi-Entity Embeddings for Pinterest Search In this paper, we present OmniSearchSage, a versatile and scalable system for understanding search queries, pins, and products for Pinterest search. We jointly learn a unified query embedding...
  • ❤ 1
More from @ml_bu
  1. Sep 24, 2026Лента Постов в АВИТО 🚀 Data Scientist (Recommendation Systems) в Авито Middle / Senior /…
  2. Sep 24, 2026Выходит так, что команда расширяется и появляются новые ставки.
  3. Sep 4, 2026Заходите на авито в рекомендации на главной. Сегодня раскатил генеративную модельку - AviR…
  4. Aug 19, 2026Post #82
  5. Aug 19, 202629 лайков - не ожидал :) Расскажу еще пару инсайдов. Этот пр не очень большой по объему но…
  6. Aug 19, 2026Я в телевизоре Не секрет, что последние полгода занимаюсь задачами связанными с семантикам…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →