Я уже упоминал, что нашу (с Крейгом Макдональдом и Николой Тонеллотто) статью приняли на SIGIR — топовую конференцию по информационному поиску и рекомендациям (CORE A*).
📄 Теперь препринт доступен на arXiv:
https://arxiv.org/abs/2505.00560
📝 Статья: Efficient Recommendation with Millions of Items by Dynamic Pruning of Sub-Item Embeddings
Авторы: Aleksandr V. Petrov (University of Glasgow), Craig Macdonald (University of Glasgow), Nicola Tonellotto (University of Pisa)
Вот основные идеи статьи:
---
1️⃣ Большой каталог - большая проблема.
Современные рекомендательные модели, разрабатываемые в академии, обычно тестируются на небольших датасетах (несколько тысяч айтемов), но в реальных системах каталог может содержать миллионы айтемов.
2️⃣ Сложности при большом каталоге:
- Трудно обучать модели (дорогой софтмакс),
- Огромные эмбеддинг-матрицы,
- Медленный инференс.
В этой статье, мы сосредоточились именно на ускорении инференса.
3️⃣ Почему медленно?
Обычно, чтобы найти Top-K айтемов, нужно отскорить все айтемы для каждого пользователя; но это может быть очень долго в случае большого каталога. Поэтому важно придумать способ не считать скоры для всего каталога.
4️⃣ Что делают сейчас:
Применяются схемы типа Retrieve-then-Rerank (двухэтапные модели, kNN и т.д.), но они могут пропустить релевантные айтемы на этапе кандидатогенерации, то есть они небезопасны.
5️⃣ Что делаем мы:
Предлагаем безопасный метод, который гарантирует, что мы найдём Top-K айтемов с самыми высокими скорами.
6️⃣ На чём основан метод:
Мы используем RecJPQ — айтемы представлены через наборы sub-item ID, которыми могут делиться разные айтемы. Похоже на Google Semantic ID, но у нас они строятся из коллаборативной информации. C Semantic ID наш метод скорее всего тоже заведется.
7️⃣ Зачем это нужно:
Скор айтема — это сумма скоров его sub-items. Их меньше, чем самих айтемов → можно заранее посчитать скоры sub-items, а потом быстро собрать скоры айтемов.
---
8️⃣ Что интересного мы заметили:
Если sub-item имеет высокий скор, то и айтемы, в которые он входит, часто тоже хорошие. Поэтому мы сначала скорим такие айтемы.
9️⃣ Как это работает:
Скорим айтемы в порядке убывания "обещающего потенциала". Одновременно считаем, насколько хорошие айтемы ещё могут остаться. Если точно знаем, что оставшиеся не попадут в Top-K — останавливаемся.
🔟 В итоге:
Находим Top-K без kNN и без полного прохода по каталогу. Даже на миллионных каталогах — это занимает миллисекунды без использования GPU. Для сравнения, стандартный скоринг у моделей типа SASRec или BERT4Rec в тех же условиях занимает сотни миллисекунд.
📎 Подробнее: https://arxiv.org/abs/2505.00560
📄 Теперь препринт доступен на arXiv:
https://arxiv.org/abs/2505.00560
📝 Статья: Efficient Recommendation with Millions of Items by Dynamic Pruning of Sub-Item Embeddings
Авторы: Aleksandr V. Petrov (University of Glasgow), Craig Macdonald (University of Glasgow), Nicola Tonellotto (University of Pisa)
Вот основные идеи статьи:
---
1️⃣ Большой каталог - большая проблема.
Современные рекомендательные модели, разрабатываемые в академии, обычно тестируются на небольших датасетах (несколько тысяч айтемов), но в реальных системах каталог может содержать миллионы айтемов.
2️⃣ Сложности при большом каталоге:
- Трудно обучать модели (дорогой софтмакс),
- Огромные эмбеддинг-матрицы,
- Медленный инференс.
В этой статье, мы сосредоточились именно на ускорении инференса.
3️⃣ Почему медленно?
Обычно, чтобы найти Top-K айтемов, нужно отскорить все айтемы для каждого пользователя; но это может быть очень долго в случае большого каталога. Поэтому важно придумать способ не считать скоры для всего каталога.
4️⃣ Что делают сейчас:
Применяются схемы типа Retrieve-then-Rerank (двухэтапные модели, kNN и т.д.), но они могут пропустить релевантные айтемы на этапе кандидатогенерации, то есть они небезопасны.
5️⃣ Что делаем мы:
Предлагаем безопасный метод, который гарантирует, что мы найдём Top-K айтемов с самыми высокими скорами.
6️⃣ На чём основан метод:
Мы используем RecJPQ — айтемы представлены через наборы sub-item ID, которыми могут делиться разные айтемы. Похоже на Google Semantic ID, но у нас они строятся из коллаборативной информации. C Semantic ID наш метод скорее всего тоже заведется.
7️⃣ Зачем это нужно:
Скор айтема — это сумма скоров его sub-items. Их меньше, чем самих айтемов → можно заранее посчитать скоры sub-items, а потом быстро собрать скоры айтемов.
---
8️⃣ Что интересного мы заметили:
Если sub-item имеет высокий скор, то и айтемы, в которые он входит, часто тоже хорошие. Поэтому мы сначала скорим такие айтемы.
9️⃣ Как это работает:
Скорим айтемы в порядке убывания "обещающего потенциала". Одновременно считаем, насколько хорошие айтемы ещё могут остаться. Если точно знаем, что оставшиеся не попадут в Top-K — останавливаемся.
🔟 В итоге:
Находим Top-K без kNN и без полного прохода по каталогу. Даже на миллионных каталогах — это занимает миллисекунды без использования GPU. Для сравнения, стандартный скоринг у моделей типа SASRec или BERT4Rec в тех же условиях занимает сотни миллисекунд.
📎 Подробнее: https://arxiv.org/abs/2505.00560
arXiv.org
Efficient Recommendation with Millions of Items by Dynamic Pruning...
A large item catalogue is a major challenge for deploying modern sequential recommender models, since it makes the memory footprint of the model large and increases inference latency. One...
🔥23❤5👏2😭1
WSDM опубликовали Call For Papers: https://wsdm-conference.org/2026/index.php/call-for-papers/
WSDM это очень релевантная конференция для поиска и рекомендаций, из наших любимых моделей например Caser и TiSASRec были опубликован там. Из компаний там активно участвуют Google (в прошлом году был keynote от VP Research гугла, а в позапрошлом Head of Search), Miscrosoft, amazon и тд. При этом, почему-то среди русскоязычных рисерчеров WSDM сильно менее популярен чем тот же RecSys например. Так как многие из моих читателей отправляли статьи на Рексис, я рекомендую рассмотреть WSDM в качестве бэкап-плана; по датам как раз очень удобно - 1-2 месяца дорабать комменты от ревьюеров рексиса и послать на виздом.
WSDM это очень релевантная конференция для поиска и рекомендаций, из наших любимых моделей например Caser и TiSASRec были опубликован там. Из компаний там активно участвуют Google (в прошлом году был keynote от VP Research гугла, а в позапрошлом Head of Search), Miscrosoft, amazon и тд. При этом, почему-то среди русскоязычных рисерчеров WSDM сильно менее популярен чем тот же RecSys например. Так как многие из моих читателей отправляли статьи на Рексис, я рекомендую рассмотреть WSDM в качестве бэкап-плана; по датам как раз очень удобно - 1-2 месяца дорабать комменты от ревьюеров рексиса и послать на виздом.
ACM Conferences
Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding | Proceedings of the Eleventh ACM International…
🔥6👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Некоторые люди жалуются что их ревьюит LLM, а некоторые хакают систему :)
https://arxiv.org/html/2406.17241v3
https://arxiv.org/html/2406.17241v3
😁32👍11🔥3
Forwarded from Sasha Petrov
Если кто есть на SIGIR, буду рад выпить кофе, ну и заходите на мою презентацию завтра :-)
🔥6👍1
Немного статы с SIGIR. Рекомендательные системы тут самая популярная тема (и в целом количество статей по РекСису кажется на SIGIR сравнимо с количеством статьей на РекСис).
Чтобы максимизировать шансы надо жить в Голлландии. А вот русскоязычное коммьюнити тут представлено сильно меньше чем на РекСисе.
Бонус -- фоточка с keynote Стивена Робертсона, создателя BM25.
Чтобы максимизировать шансы надо жить в Голлландии. А вот русскоязычное коммьюнити тут представлено сильно меньше чем на РекСисе.
Бонус -- фоточка с keynote Стивена Робертсона, создателя BM25.
❤4
Forwarded from Information Retriever
arXiv.org
Correcting the LogQ Correction: Revisiting Sampled Softmax for...
Two-tower neural networks are a popular architecture for the retrieval stage in recommender systems. These models are typically trained with a softmax loss over the item catalog. However, in...
Correcting the LogQ Correction: Revisiting Sampled Softmax for Large-Scale Retrieval.
А вот и наша статья, принятая на RecSys 2025, добралась до arxiv’а! Что мы сделали: улучшили logQ-коррекцию.
Почему это важно: logQ-коррекция активно используется в индустрии для обучения нейросетевых двухбашенных retrieval моделей. Я за свою жизнь в Яндексе неоднократно участвовал в больших и успешных внедрениях нейросетевых кандидатогенераторов, которые не случились бы без logQ-коррекции.
Улучшение связано с тем, как в формуле logQ-коррекции используется положительный айтем (далее именуемый “позитив”). Он появляется в двух местах — и в числителе, и в знаменателе софтмакса. К числителю вопросов нет. А вот в знаменателе есть странности. Например, в исходной статье от Google к позитиву в знаменателе применяется logQ-поправка; а в следующей статье от тех же авторов — уже нет. То есть для сэмплированных негативов в знаменателе logQ-поправка есть, для позитива — нет. А вывод такой формулы нигде не приводится / не обосновывается.
Более того, само использование позитива в знаменателе выглядит сомнительно. Оригинальный вывод формулы, который Bengio проделал в начале нулевых для доисторических языковых моделей, гласит: для оценки знаменателя софтмакса можно насэмплировать айтемы из произвольного распределения Q (обычного называемого proposal distribution) и добавить к ним ту самую “logQ-поправку”. Распределение Q — это как раз и есть то распределение, из которого мы сэмплируем негативы; которое чаще всего является in-batch распределением.
И когда мы рассматриваем конкретный обучающий пример, то есть конкретную пару (user, positive item), и для нее считаем сэмплированный softmax-лосс с logQ-коррекцией, мы не сэмплируем позитив из распределения Q — он приходит к нам детерминированно, с вероятностью 1. А в формуле он используется для Монте-Карло оценки в предположении, что мы сэмплируем его из Q.
Долгое время мы, как и все, просто плыли по течению и использовали logQ-коррекцию в том виде, в каком все ее применяют. Но потом я взялся сделать ту самую лекцию про нейросетевую генерацию кандидатов для ШАДа, в которой в том числе хотел осветить logQ-коррекцию — строго, с математическим выводом. Хотелось также обосновать формулы, использующие позитив в знаменателе, с logQ-поправкой и без.
Когда я в рамках математических выкладок отделил позитив от Монте-Карло сэмплирования, получилась совершенно другая формула! В которой позитива не было в знаменателе софтмакса вообще, но при этом появилось взвешивание сэмплов. Чем меньше модель ошибается на сэмпле (то есть предсказывает большую вероятность позитива), тем меньше вес этого сэмпла.
Мы поставили эксперименты — сначала на своих внутренних больших датасетах, а затем на небольших академических. И подтвердили, что наша формула хорошо работает, причем работает лучше стандартной! На полноценный long paper на RecSys времени не хватило (когда появилось время на написание статьи, до дедлайна было меньше двух недель), поэтому подались на short paper. Статья получила хорошие отзывы и была принята на RecSys, чему мы несказанно рады :)
Ещё хочется немного подсветить остальную ценность статьи. До этого я не видел в академической литературе замеры на публичных датасетах для logQ-коррекции. Мы эти замеры сделали и показали, что популярная в индустрии logQ-коррекция хорошо работает и в академическом сетапе. Кроме того, мы, возможно, первыми на этих датасетах показали пользу от mixed negative sampling (таких замеров я тоже раньше не встречал, но здесь уже меньше уверен).
И последнее — мы сделали две валидации. Было понимание, что без leave-one-out схемы, как бы я ее ни недолюбливал, есть большая вероятность не пройти ревью :) Но делать только leave-one-out валидацию тоже не хотелось. Поэтому сделали также temporal split валидацию. Получилось, что ранжирование моделей c точки зрения качества в этих двух сетапах заметно различается.
Остальные подробности — читайте в статье!
А вот и наша статья, принятая на RecSys 2025, добралась до arxiv’а! Что мы сделали: улучшили logQ-коррекцию.
Почему это важно: logQ-коррекция активно используется в индустрии для обучения нейросетевых двухбашенных retrieval моделей. Я за свою жизнь в Яндексе неоднократно участвовал в больших и успешных внедрениях нейросетевых кандидатогенераторов, которые не случились бы без logQ-коррекции.
Улучшение связано с тем, как в формуле logQ-коррекции используется положительный айтем (далее именуемый “позитив”). Он появляется в двух местах — и в числителе, и в знаменателе софтмакса. К числителю вопросов нет. А вот в знаменателе есть странности. Например, в исходной статье от Google к позитиву в знаменателе применяется logQ-поправка; а в следующей статье от тех же авторов — уже нет. То есть для сэмплированных негативов в знаменателе logQ-поправка есть, для позитива — нет. А вывод такой формулы нигде не приводится / не обосновывается.
Более того, само использование позитива в знаменателе выглядит сомнительно. Оригинальный вывод формулы, который Bengio проделал в начале нулевых для доисторических языковых моделей, гласит: для оценки знаменателя софтмакса можно насэмплировать айтемы из произвольного распределения Q (обычного называемого proposal distribution) и добавить к ним ту самую “logQ-поправку”. Распределение Q — это как раз и есть то распределение, из которого мы сэмплируем негативы; которое чаще всего является in-batch распределением.
И когда мы рассматриваем конкретный обучающий пример, то есть конкретную пару (user, positive item), и для нее считаем сэмплированный softmax-лосс с logQ-коррекцией, мы не сэмплируем позитив из распределения Q — он приходит к нам детерминированно, с вероятностью 1. А в формуле он используется для Монте-Карло оценки в предположении, что мы сэмплируем его из Q.
Долгое время мы, как и все, просто плыли по течению и использовали logQ-коррекцию в том виде, в каком все ее применяют. Но потом я взялся сделать ту самую лекцию про нейросетевую генерацию кандидатов для ШАДа, в которой в том числе хотел осветить logQ-коррекцию — строго, с математическим выводом. Хотелось также обосновать формулы, использующие позитив в знаменателе, с logQ-поправкой и без.
Когда я в рамках математических выкладок отделил позитив от Монте-Карло сэмплирования, получилась совершенно другая формула! В которой позитива не было в знаменателе софтмакса вообще, но при этом появилось взвешивание сэмплов. Чем меньше модель ошибается на сэмпле (то есть предсказывает большую вероятность позитива), тем меньше вес этого сэмпла.
Мы поставили эксперименты — сначала на своих внутренних больших датасетах, а затем на небольших академических. И подтвердили, что наша формула хорошо работает, причем работает лучше стандартной! На полноценный long paper на RecSys времени не хватило (когда появилось время на написание статьи, до дедлайна было меньше двух недель), поэтому подались на short paper. Статья получила хорошие отзывы и была принята на RecSys, чему мы несказанно рады :)
Ещё хочется немного подсветить остальную ценность статьи. До этого я не видел в академической литературе замеры на публичных датасетах для logQ-коррекции. Мы эти замеры сделали и показали, что популярная в индустрии logQ-коррекция хорошо работает и в академическом сетапе. Кроме того, мы, возможно, первыми на этих датасетах показали пользу от mixed negative sampling (таких замеров я тоже раньше не встречал, но здесь уже меньше уверен).
И последнее — мы сделали две валидации. Было понимание, что без leave-one-out схемы, как бы я ее ни недолюбливал, есть большая вероятность не пройти ревью :) Но делать только leave-one-out валидацию тоже не хотелось. Поэтому сделали также temporal split валидацию. Получилось, что ранжирование моделей c точки зрения качества в этих двух сетапах заметно различается.
Остальные подробности — читайте в статье!
❤4👍1
Log-Q коррекция.
Когда мы писали расширенную версию статьи про gBCE и gSASRec, дотошный ревьюер нас спросил про возможность Sampled Softmax c Log-Q коррекцией. В итоге статья вышла вот с таким комментом, где мы говорим что Log-Q коррекция скорее всего тоже будет работать и мы оставляем этот вопрос на будущее исследование.
Сегодня на arxiv появилась статья от ребят из Яндекса, где они в целом выполнили это исследование и подтвердили наши предположения: Log-Q коррекция в целом хорошо работает. Рад, что наши методы использовались в качестве бейзлайнов, и в целом показали хорошие результаты.
Поздравляю Кирилла и остальных со-авторов со статей на РекСисе. Надеюсь обсудить детали которые не влезли в статью в живую на рексисе (надеюсь таки туда добраться).
Когда мы писали расширенную версию статьи про gBCE и gSASRec, дотошный ревьюер нас спросил про возможность Sampled Softmax c Log-Q коррекцией. В итоге статья вышла вот с таким комментом, где мы говорим что Log-Q коррекция скорее всего тоже будет работать и мы оставляем этот вопрос на будущее исследование.
Сегодня на arxiv появилась статья от ребят из Яндекса, где они в целом выполнили это исследование и подтвердили наши предположения: Log-Q коррекция в целом хорошо работает. Рад, что наши методы использовались в качестве бейзлайнов, и в целом показали хорошие результаты.
Поздравляю Кирилла и остальных со-авторов со статей на РекСисе. Надеюсь обсудить детали которые не влезли в статью в живую на рексисе (надеюсь таки туда добраться).
🔥17❤5
https://arxiv.org/html/2505.10212v1 best short paper на SIGIR ушел статейку которая показывает что многие современные LLM-ки были обучены на наших рекомендательных датасетах, и по-сути уже запомнили существенную часть. Будте осторожны, когда видите заявления в про LLM которые получают SOTA на стандартных рекомендательных датасетах; вполне возможно это data leakage.
В со-авторах мои друзья из Бари, рад за них!
В со-авторах мои друзья из Бари, рад за них!
👍23✍4😢2
RecJPQPRune_14_07.pptx
2.6 MB
Моя презентация с SIGIR 2025 по теме быстрого инфренса моделей с Sub-IDs. Тут мы использовали наши Sub-ID из RecJPQ, но в принципе можно адаптировать и для других Sub-ID методов (думаю что c аналогом гугловых SemanticID тоже можно завести).
Основная идея метода что (1) Sub-ID сильно меньше чем айтемов в каталоге и (2) нам только интересны айтемы в которых Sub-ID с большим скором.
Это позволяет применить методы динамического прунинга и извлечь Top-K айтемов точно, не прибегая к аппроксимациям типа методов ближайших соседей.
Ссылка на статью (Теперь не препринт!): https://dl.acm.org/doi/10.1145/3726302.3729963
Основная идея метода что (1) Sub-ID сильно меньше чем айтемов в каталоге и (2) нам только интересны айтемы в которых Sub-ID с большим скором.
Это позволяет применить методы динамического прунинга и извлечь Top-K айтемов точно, не прибегая к аппроксимациям типа методов ближайших соседей.
Ссылка на статью (Теперь не препринт!): https://dl.acm.org/doi/10.1145/3726302.3729963
🔥2👍1🙏1
Несколько фоточек на память ;-)
Вообще SIGIR мне понравился. Для меня это вторая A* конференция, после прошлогоднего IJCAI. Могу сказать что на SIGIR есть сильное ощущение сообщества которого не было на IJCAI. В отличие от IJCAI, на SIGIR было очень много знакомых мне людей, и очень много интересных сессий. IJCAI хоть формально и "более престижная" конференция, по факту мне понравилась сильно меньше. Там буквально была парочка интересующих меня сессий, а в основном люди рассказывали и показывали презентации на какие-то рандомные темы, которые практически никак не связаны с моей работой.
Вообще SIGIR мне понравился. Для меня это вторая A* конференция, после прошлогоднего IJCAI. Могу сказать что на SIGIR есть сильное ощущение сообщества которого не было на IJCAI. В отличие от IJCAI, на SIGIR было очень много знакомых мне людей, и очень много интересных сессий. IJCAI хоть формально и "более престижная" конференция, по факту мне понравилась сильно меньше. Там буквально была парочка интересующих меня сессий, а в основном люди рассказывали и показывали презентации на какие-то рандомные темы, которые практически никак не связаны с моей работой.
🔥9❤1