TGViewer
Канал Доброго Вани | Data Science и Продуктики Канал Доброго Вани | Data Science и Продуктики @pleshakovsky · 1.7K subscribers
Post #983 2.12K
🚀 Друзья, вашему вниманию наш совместный пост с админом канала РИСЕРЧОШНАЯ — Даней. Кто не знает, Даня работает DLE в WB Tech и уже несколько лет занимается рекомендациями, а на его канале есть много полезной информации о RecSys.

Так о чем же сегодня пойдет речь? Сегодня мы разберем одну из самых культовых статей в RecSys — PinRec!

🔵 PinRec — генеративный ретривер (первая ступень рекомендательного пайплайна) от Pinterest. Они всегда выпускают отличные статьи где и про прод расскажут, и науку проверят.

В последнее время большинство генеративных моделей это навороченные two-tower архитектуры с causal masking. Кстати, подробнее про two-tower был большой пост, для лучшего понимания этого поста рекомендую ознакомиться!

Так вот в Pinterest вместо привычного two-tower взяли GPT-2 декодер, который по истории взаимодействий генерирует не вероятности конкретных ID, а эмбеддинги в едином латентном пространстве. Далее при помощи этих эмбеддингов мы извлекаем ближайшие айтемы из заранее построенного HNSW-индекса (или другого инструмента приближенного поиска).

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

Все входные данные (пины (=айтемы) и поисковые запросы) представлены не дискретными ID-токенами, а реальными эмбеддингами в общем пространстве. Для этого запросы кодируются уже готовыми OmniSearchSage-векторами, а пины — комбинацией графовых PinSage-эмбеддингов и обучаемой hash-ID таблицей. Далее эмбеддинги проходят небольшие per-type MLP (для каждого типа действий — свой MLP) и нормализуются. Модель обучается стандартным sampled softmax, с logQ-коррекцией для борьбы с популярными негативами.

🔵 Забавный факт, что в pinterest отказались от semantic ID (о нем будет отдельный пост). Потому что это приводит к семантическому коллапсу: похожие пины теряют различимость, “слипаясь” в схожие направления в пространстве.

Авторы используют уже известный для многих трюк — Сount-Min Sketch, который приближает распределение к реальному. Представим, что у нас есть Клики пользователей, Заказы и другие действия в отношении миллионов айтемов. Хранить точные счётчики слишком дорого по памяти, а Count-Min Sketch позволяет считать частоты быстро и компактно, жертвуя точностью.

Ещё один важный трюк — outcome-conditioned генерация (генерация, условленная на целевое действие пользователя). Вместо сложного RL-обучения, они просто подают дополнительный эмбеддинг (например, “клик” или “репин” (сохранение пина)) на позднем связывании в голову декодера. Так генерация становится контролируемой, позволяя задать заранее соотношение целевых действий на инференсе.

Последний важный приём — windowed multi-token генерация. Авторы осознали, что в реальном сценарии пользователю не важен точный порядок действий внутри небольшого окна. Поэтому цель модели — предсказать не ровно следующий айтем, а любой из нескольких будущих. Более того, за один шаг декодирования генерируется сразу несколько эмбеддингов кандидатов, что одновременно сильно ускоряет генерацию и повышает разнообразие.

🔵 По результатам авторов, предложенные решения заметно превосходят SASRec, TIGER и PinnerFormer по recall@10 на всех основных поверхностях Pinterest. Сама модель внедрена как один из кандидатогенераторов.

Outcome-conditioning позволяет управлять типом целевых действий, улучшая recall нужных действий до 6%.

Windowed multi-token генерация снижает латентность (время задержки от запроса до получения результата) в 10 раз и даёт на 16% выше recall с одновременным повышением уникальности выдачи.

Было интересно? Тогда поддержите этот пост реакций и подпиской на РИСЕРЧОШНУЮ, мы с Даней старались 🙏
  • 🔥 8
  • 👍 5
  • ❤ 2
More from @pleshakovsky
  1. Jul 24, 2026Стал синьором 😎
  2. May 18, 2026🇵🇪Перу. Наска. День 4: Пустыня, акведуки, Чаучила После перерыва на горную болезнь и пер…
  3. May 2, 2026🇵🇪Перу. Паракас. День 3: Исла Бальестас, Уакачина 🏝️ Вечером второго дня переехав южнее…
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 →