TGViewer
Персонализация неизбежна Персонализация неизбежна @recsys_for_all · 1.32K subscribers
Post #25 1.68K
+1 short paper на RecSys 2026!

Давно ничего не писал, но наконец-то появился хороший повод. Нашу с коллегами из Т-Банка статью приняли на ACM RecSys 2026, которая осенью пройдет в США. В этом году приняли только 27 из 152 short papers — около 18%. Поэтому пройти этот отбор особенно приятно!

Статья посвящена масштабированию линейных автоэнкодеров на каталоги больших размеров. Надеюсь, она станет достойным продолжением линии: EASE → SANSA → L³AE → наша модель. Больше подробностей о нашей модели пока раскрывать не буду, но немного расскажу, почему линейные автоэнкодеры вообще интересны.

Есть классический EASE — линейный автоэнкодер, который учит связи между айтемами по истории пользовательских взаимодействий. У модели есть аналитическое решение, а на практике она остается очень сильным бейзлайном, который сложно победить даже более сложными архитектурами.

При этом возникает естественная идея: использовать не только item ID, но и текстовую семантику айтемов. Например, получить для каждого айтема embedding с помощью языковой модели и обучать представления так, чтобы они отражали сходство пользовательских взаимодействий. Именно такую идею я впервые увидел в beeFormer в 2024 году — кажется, это была первая RecSys-модель на Hugging Face, которую я встретил. Результаты в статье выглядели очень впечатляюще:

Но затем для меня вскрылась серьезная проблема, которую я называю «проблемой 100 батонов» — видимо, потому что я долго работал в grocery-домене.

Представим, что в каталоге есть 100 товаров с разными item_id, но очень похожими названиями: «батон», «батон белый 200 г», «батон нарезной 500 г» и так далее. Для языковой модели эти товары будут очень близки, поэтому модель без полноценного item-ID-сигнала может почти не различать их.

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

Отсюда возникают две практические проблемы:

1. Страдают offline-метрики: модель не угадывает конкретный item_id, который оказался в тесте.
2. Рекомендации становятся однообразными: без дополнительной диверсификации пользователь действительно может увидеть условные 100 батонов подряд.

А вот item-ID-based EASE различает эти товары через их собственные паттерны взаимодействий и поэтому лучше учитывает разницу в популярности похожих айтемов, и "конкретном графе совстречаемости".

Однако это не означает, что LLM-эмбеддинги айтемов еще никуда не прикрутили. Интересный вариант предлагает L³AE: модель сохраняет отдельные item ID-based item-to-item-матрицу, но добавляет семантическое сходство айтемов как регуляризацию. То есть семантика не заменяет behavioral signal, а дополняет его. И сколько бы я ни думал над тем, как отказаться от item-ID, и не столкнуться с двумя проблемами выше - пока ничего не придумалось. В общем, скоро надеюсь поделиться свежими наработками на эту тему!
  • 🔥 39
  • ❤‍🔥 9
  • 👍 7
  • 🥰 1
  • 🤬 1
More from @recsys_for_all
  1. Aug 11, 20263 CIKM short papers + 2 RecSys demos 🎉 и немного новостей русскоязычного RecSys Последние…
  2. Jan 24, 2026Моё решение — 5/216 место на VK RecSys Challenge LSVD Мне было интересно снова поучаствова…
  3. Dec 30, 2025Итоги 2025 года. Ровно год назад я сделал 9 предположений о том, что произойдет в мире рек…
  4. Nov 17, 2025🎯 T-Meetup: RecSys — 27 ноября, 19:00, Санкт-Петербург Открыли регистрацию на наш митап п…
  5. Oct 6, 2025Про "рекомендательные системы" скидок, бонусов, тритментов и пр. Все посты до этого были п…
  6. Jul 20, 2025Про мой доклад на Turbo ML Conf 2025 Вчера выступил на конференции Т-Банка. Рассказал о то…
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 →