Information Retriever – Telegram
Information Retriever
3.44K subscribers
254 photos
1 video
8 files
127 links
Download Telegram
Хабростатья про масштабирование рексистем и Аргуса.

Написали большую статью по мотивам недавнего выступления на Датафесте. Я постарался добавить побольше новых подробностей, интересной внутренней кухни и всего такого :)

Если вы инженер и хотите сделать в своей рексистеме что-то похожее — это лучший источник информации про Аргуса. Если пользователь (например, Яндекс Музыки / Маркета / Лавки / Алисы), то это возможность получше понять, что стоит за сформированными для вас рекомендациями.

Статья — https://habr.com/ru/companies/yandex/articles/919058/.
44🔥24👍7👏2
Practical ML Conf 2025.

Я, как и в прошлом году, буду на Practical ML Conf в программном комитете помогать готовить для вас доклады по RecSys :)

Это самая большая конференция по прикладному машинному обучению от Яндекса. В этом году она пройдёт 27 сентября. На конференции будет 6 треков: CV, NLP, Speech, RecSys, MLOps, Data Science. Ещё не поздно подать заявку на выступление (дедлайн через пару дней, 23 июня) — ссылочка.
🔥27👍8
IR семинар.

Уже почти три года я организую в Яндексе семинар по рексистемам (там также разбираются статьи про поиск и рекламу, поэтому он называется "IR семинар"), чуть-чуть упоминал историю его возникновения в посте с итогами года на канале.

Составил облако слов из названий статей, которые мы разобрали за это время (всего был 131 доклад).
28👍3👏2
4 место RecSys Challenge 2025.

Только что закончилось соревнование RecSys Challenge 2025. Если верить лидерборду, наша команда заняла 4-е место. А на втором — ребята из RecSys команды AI лабы Сбербанка (@AleXXL1986), с чем их и поздравляем!

В соревновании нужно было сделать универсальный эмбеддинг пользователя, поверх которого организаторы обучали свою MLP'шку на шесть разных задач (больше деталей в другом посте). Мы сделали конкат нескольких векторов:
* обучили Argus-подобный трансформер над историей пользователя
* обучили графовую нейросеть TwHIN
* вручную скрафтили набор пользовательских фичей
* сделали нейросеть над фичами (PLE от Yandex Research + DCN-v2).

Данных в соревновании было не очень много, поэтому наши нейросетевые подходы давали профит поскольку-постольку))

Отдельно хочется упомянуть нашу любимую рулетку под названием "задача hidden2" :)

Держите мой персональный топ названий команд:
1. cosine-clowns
2. Teletubbies
3. meowTeam
4. recommanders
5. recsysadmin
6. Mission Impossible
7. happysquirrels
8. embednbreakfast
9. Pinocchio
10. NoNameLarrys
45🔥23👏9
Andrew Zhai (один из авторов PinnerFormer, TransAct, MultiBiSage и визуального бэкбона пинов) проработал в Пинтересте 9 лет, дошел до Distinguished Engineer, а затем ушел делать свой стартап. Больше двух лет стартап был в стелсе — и вот, час назад, появился этот пост =)
👀31👍11🥴4🔥21
Подтверждаю, мы у себя тоже попробовали. В некоторых сценариях работает лучше, чем наши обычные архитектуры. "На масштабе 100М объектов" — это, наверно, про нас :)
1
Forwarded from айти канал
📦 Python пакет для TabM

Небольшая новость для тех, кто следит за DL для табличных данных. Мы тут выпустили Python пакет для TabM — нашей tabular DL архитектуры, о которой я рассказывал раньше.

С момента анонса TabM прошел проверку практикой, и если в одном предложении, то TabM значительно усилил нишу практичных бейзлайнов в табличном DL. То есть взять TabM и получить хорошие результаты люди смогли в самых разных контекстах: и на Kaggle, и на масштабе 100M объектов, и в академических исследованиях.

Пакет делает чуть более доступным как сам TabM, так и эффективное ансамблирование, и предлагает такое:
- PyTorch реализация TabM
- PyTorch слои и функции для построения своих эффективных ансамблей.
- Jupyter/Colab пример с обучением TabM.

💻 pip install tabm

Ссылки:
- Пакет
- Colab пример
- Статья
19👍10👏1
Ну что ж :)

Я и сам своего рода учёный =)
🔥222👏21😁5👍3
What’s the best next step?

Чуть больше месяца назад Илья Суцкевер получил honorary degree в своем родном университете Торонто, и видеозапись его выступления почти сразу выложили на YouTube (ссылка). Для меня это видео уже стало классикой — несколько раз переслушивал. Особенно запал в душу следующий отрывок:

I will offer one bit of useful state of mind, which, if one adopts it, makes everything much easier — which is: to accept reality as it is, and to try not to regret the past, and try to improve the situation.

And the reason I say it is because it’s so hard to adopt it. So easy to think: oh, like some bad past decision, or bad stroke of luck, something happened, something’s unfair — and it’s so easy to spend so much time thinking like this, while it’s just so much better and more productive to say: okay, things are the way they are. What’s the best next step?

And I find that whenever I do this myself, everything works out so much better. But it’s hard. It’s hard. It’s a constant struggle with one’s emotion.

And that’s why I mention it to you. Perhaps some of you will adopt it yourself.

This is a reminder to adopt this mindset as best as one can — and also a reminder for myself.

Constant struggle.


А еще три недели назад вышло интервью Джеффри Хинтона, тоже хорошее (ссылка). Например, там он рассказывает, как пришёл работать в Google в 65 лет, чтобы заработать пару миллионов долларов :) И как ушел почти ровно через десять лет прямо перед конференцией в MIT, чтобы иметь возможность свободно рассказывать про риски AI.
41🔥5👍2
Sampled Softmax for Large-Scale Retrieval.

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

У таких моделей должна быть способность глобального сравнения — возможность для пользователя сравнивать между собой «скоры» всевозможных айтемов из каталога. Ранжирующие лоссы, на которые учатся верхние стадии, для обучения нам не подходят — при таком обучении у модели нет цели научиться ранжировать для пользователя все айтемы, ей важно научиться ранжировать только то, что обычно попадает к нему в выдачу. Если YouTube обычно показывает испанцам видео на испанском, а итальянцам на итальянском, то модели не нужно уметь сравнивать видео на испанском с видео на итальянском, и она может «наложить» (англ. folding) векторы айтемов из этих двух групп друг на друга в векторном пространстве.

А вот что нам подходит — это softmax-лосс. Можно сформулировать задачу рекомендации в виде экстремальной классификации, в которой каждому айтему соответствует свой класс (экстремальной — потому что много классов). Если пользователь лайкнул трек, то что это был за трек? Считаем для каждого трека некоторый скор (читай «логит»), затем превращаем скоры в вероятностное распределение, применив softmax. Учим модель максимизировать правдоподобие правильного класса — минимизируем кросс-энтропийную функцию потерь. При таком обучении в саму модель заложено, что мы должны уметь делать глобальное ранжирование между всеми айтемами в каталоге.

У такого лосса есть одна «большая» проблема — чем больше каталог, тем сложнее посчитать сам softmax. В знаменателе есть сумма экспонент от логитов по всему каталогу. Нам в целом не нужно считать сам лосс, важен только градиент, но в градиенте эта сумма тоже присутствует. Чтобы это побороть, можно использовать сэмплирование негативов — вместо суммы скоров по всему каталогу считать её по небольшому сэмплированному подмножеству. Популярные стратегии сэмплирования — равномерное (выбираем айтемы из каталога абсолютно случайно) и униграммное (пропорционально популярности айтема). Частный случай униграммного — in-batch сэмплирование: при обучении нейросетей мы набираем «батчи» из положительных пар (пользователь, айтем), и можно для каждого пользователя из батча использовать в качестве негативов чужие позитивы из этого же батча.

Почему же всё-таки недостаточно простого равномерного сэмплирования? Здесь поможет следующая интуиция: «полный» softmax-лосс неявно занимается майнингом негативов — у айтемов из каталога, которым модель даёт высокий скор, большой вклад в градиент. Это отличительное свойство softmax-а — например, у BPR-лосса, если модель сильно ошибается в каком-то айтеме, его вклад в градиент всё равно сильно ограничен. Поэтому, если мы хотим аппроксимировать softmax-лосс, нам важно сэмплировать как можно больше «сложных, информативных» негативов, в которых модель ошибается и у которых был бы большой вклад в градиент. А равномерное сэмплирование, особенно при больших каталогах, будет давать простые негативы. Добиться хорошего качества с равномерными негативами всё равно можно, но понадобится гораздо большее количество негативов, чем при использовании альтернативных, более «сложных» источников негативов.

А вот при униграммном сэмплировании мы получаем популярные айтемы, которые чуть ли не по определению имеют высокий средний скор у пользователей и поэтому представляют из себя более «сложные» негативы. Но и здесь не без проблем :) Что же идёт не так — я расскажу в следующем посте.

P.S.: это я вас так готовлю к посту про статью, которую у нас приняли на RecSys :) А ещё это небольшое переосмысление прошлого поста на ту же тему. Что-то похожее я рассказываю в рамках лекции про нейросетевой кандген в ШАД.
👍23🔥85🙏1
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 точки зрения качества в этих двух сетапах заметно различается.

Остальные подробности — читайте в статье!
🔥5013😁1
Genrec.pdf
1.6 MB
Turbo ML Conf 2025.

Сегодня выступал на Turbo ML Conf 2025 с докладом про генеративные рексистемы. По сути, это был сиквел к докладу про Аргуса. Рассказывал про свое видение и про наши эксперименты. Cделал отсылку к РЛ :)

Как всегда, было приятно поделиться с коммьюнити мыслями и идеями.

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

Трансляции не было, запись организаторы выложат позже. Презентацию прикладываю. Я в этот раз чуть поленился с презентацией и советую по возможности посмотреть запись рассказа (когда она появится), там гораздо больше информации.

P.S: а еще пост на линкедине про нашу logQ статью постепенно набирает обороты. Хочется, чтобы как можно больше людей увидели саму статью, поддержите отечественного производителя отечественную науку лайком! :)
🔥43👍74🙏1👌1
Scaling Recommender Transformers to One Billion Parameters.

Залили на arXiv pre-print статьи про Аргуса!

Как уже можно понять, статью на RecSys (full paper, research track) не приняли. На ребаттле удалось подтянуть оценки до borderline (weak reject, weak reject, accept), но этого не хватило.

Краткий tldr от ревьюверов: на industry track сгодилось бы, а для research track нужна воспроизводимость, понятные академические бейзлайны и оффлайн-метрики и т.д. Цитаты:
R1: This could be a strong industry paper, but for research track it lack comparison with established baselines using standard metrics

Metareviewer: I agree with R1 -- this work as-is fits better for the industry track (at Recsys or another venue)


Подавать статью не на industry track RecSys’а было осознанным решением, так как там дают всего три странички, и этого было бы катастрофически недостаточно для рассказа про Аргуса. Но опыта не хватило, чтобы понять, что на research track статью, скорее всего, не примут (хотя, с учетом borderline, шансы были). В ретроспективе я бы скорее все-таки подал её на industry track, ужав до трех страниц, а на arXiv выложил текущую расширенную версию.

Планируем подавать ее на KDD'26 и, возможно, на MuRS'25 workshop на RecSys (вроде бы, подача статьи на workshop без proceedings не блокирует подачу на KDD'26).
47👍8🔥7
Приятные слайды про причины, по которым люди пользуются рекомендательными системами.

Из туториала RecSys’24 Tutorial: Conducting User Experiments in Recommender Systems.
7
https://youtu.be/KZeIEiBrT_w

Не могу не поделиться новым видео от Veritasium! Здесь есть всё: закон больших чисел, цепи Маркова, деление ядер урана, метод Монте-Карло, японский Билл Гейтс, Yahoo и Google, PageRank, n-граммные языковые модели, LLM…

Я стараюсь каждый день начинать с ресерча (чтения статей / книг / etc). Основным мотиватором для этого обычно является intellectual curiosity (и я гораздо быстрее и лучше вникаю, когда мне искренне интересно), и вот такие видео во мне это самое любопытство очень хорошо пробуждают :)
👍24🔥19
RecSys Substack.

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

Начинал я это делать еще внутри Яндекса, почти три года назад, в рамках IR семинара. В какой-то момент обнаружил, что уже есть рассылка с похожим дайджестом от инженера из бигтеха — Sumit Kumar’а. Мы с ним независимо продолжали делать эти рассылки (я — сначала для яндексоидов, потом для вас; а Sumit — для всех). Интересно было наблюдать, что они получались довольно разными. В итоге я писать дайджесты перестал, а Sumit вот все еще продолжает.

Статья про logQ попала в прошлый дайджест Sumit’а, а статья про Аргуса — в текущий, причем аж на первое место, что особенно приятно :) Забавно наблюдать, что на четвертом месте — статья с почти таким же названием от ByteDance.

А еще когда-то давно у меня уже была отчаянная попытка начать писать статьи про рекомендашки — тогда я описал наше первое внедрение трансформера в Маркет. На конференцию статья не прошла, а вот в Substack Sumit’а попала — и это было хорошим утешительным призом :) Статья была не очень хорошо написана (я тогда еще не умел писать статьи, особенно на английском), а вот доклад на Датафесте вышел очень даже неплохой. По ощущениям, именно с него началось мое влияние на рекомендательную индустрию вне Яндекса.

Sumit, кстати, на канал подписан и даже когда-то что-то комментировал. Если ты это читаешь — привет и спасибо :)

Если не успеваете листать архив и вам не хватает дайджестов — подписывайтесь на RecSys Substack Sumit’а. Ссылочка
24🔥12👍10
Интересно, что у Google в этом году нет ни одной статьи в research-треке, а вот в industry — целых девять (с аффилиацией Дипмайнда — три).

В прошлом году была одна research long, три research short (две с дипмайндом), и семь статей в industry-треке (пять — с дипмайндом).

У остальных компаний присутствие нормальное: Pinterest, Spotify, Amazon, Walmart, eBay, JD.com, Meituan, Alibaba, LinkedIn, Apple, Netflix, Deezer, ByteDance, Kuaishou — все здесь. И Yandex :) Из русских компаний еще есть Сбер

Ну а вообще, надо будет не на количество смотреть, а на качество. Лучше одна импактная статья, чем десять, которые забудут примерно сразу.
7
https://recsys.acm.org/recsys25/accepted-contributions/#content-tab-1-0-tab программу список статей на РекСис опубликовали.
Много всего интересного, и многие статьи уже доступны на arxiv.
5
Тут некий энтузиаст сматчил профили на Spotify с известными личностями, включая Суцкевера. Я зашел посмотреть на его плейлист — там Eminem, Muse, Metallica, много классики (Шопен, Бах, Вивальди), и, внезапно, “Полковнику никто не пишет” от Би-2 =)
1🔥28🥰3😁3
А у меня сегодня последний день в Яндексе!

Я вышел в Яндекс сразу после окончания магистратуры, в сентябре 2020-го. Сам я хотел заниматься NLP и про рекомендашки почти ничего не знал. Но каким-то абсолютно случайным образом оказался в гуще нейросетевой рекомендательной активности Яндекса — меня наняли в проект, целью которого было сделать первый трансформер над историей пользователя для персонализации в Яндексе :)

Так и получилось, что все эти пять лет я был сфокусирован на R&D для рекомендательных систем, с сильным уклоном в нейросети. Изучал яндексовые рекомендательные домены, выбивал профит с помощью нейросетей для кандгена/ранжирования, помогал доводить модели до внедрения, радовался зелёным A/B тестам :) Сначала как IC, потом как “играющий тренер”. Учился у большого количества очень талантливых людей — как быть хорошим инженером, разработчиком, ML-щиком, коллегой, руководителем и так далее.

Цель R&D — улучшать продукты с помощью технологий. Делать внедрения. Это очень инженерная работа с большим фокусом на программирование, работу с данными и инфраструктурой. Мне, например, всегда нравилось заниматься фреймворками и в целом программировать; много времени посвятил тому, чтобы в Яндексе появился хороший и удобный фреймворк для обучения рекомендательных нейросетей. Подробнее о том, чем занималась наша R&D команда в Яндексе, можно почитать в другом посте.

Параллельно с Яндексом я также поступил в аспирантуру, но успешно совмещать не получилось. Хотелось делать крутые научные работы, публиковаться на А/А* — для этого не хватало ни времени, ни навыков. Где-то через год после начала работы в Яндексе появились первые идеи, про что можно было бы написать статью в контексте работы, но руки до этого дошли только еще через два года. Первый блин вышел комом, а последующая попытка была еще через два года (то есть сейчас). Она была успешная, но аспирантура к тому моменту уже “кончилась” =)

Здесь отдельно хочется написать про мое отношение к ресерчу. Мне очень нравится совмещать реальный мир и какую-то математику, теорию. Люблю выцеплять новые знания, формировать интуицию. Участвовать в научном сообществе. Излагать свои мысли в виде текстов и докладов. Преподавать. Читать статьи. И философствовать :) Другими словами, мне нравится заниматься исследованиями, приобретать новые знания, увеличивать общие знания человечества и делиться ими с другими людьми. От успешной публикации статьи на RecSys получил больше радости, чем от любого даже самого зеленого A/B теста :)

А еще хочется немного отдохнуть от довольно быстрого темпа работы в индустрии. Позаниматься здоровьем, попутешествовать, посетить побольше конференций. Сейчас я почти каждый день хожу 10к шагов =) Поактивней заниматься каналом. Знали бы вы, сколько у меня всяких нереализованных идей =) А еще, возможно, кто-то ведет счет, сколько различных постов / видеороликов / подкастов я задолжал. Вообще, очень хочется себя попробовать в YouTube-формате — это что-то среднее между постами в телеграме и выступлениями на конференциях =)

Так вот! Я в ближайшее время выхожу в Академию. Куда конкретно — напишу, как только выйду :) Цель у меня — активно участвовать в международном научном сообществе, писать статьи. Постараться все-таки получить PhD. Мне кажется, можно принести много пользы академическому ресерчу рекомендашек — помочь сделать хорошие бенчмарки, перепридумать стандарты оценки качества моделей (как для ранжирования, так и для кандгена), подсветить фундаментальный академический ресерч, который наиболее полезен в реальном мире. Сконвертировать в статьи все накопившиеся идеи :)

А еще мне предстоит в той же самой академии расширить свои преподавательские практики и сделать целый семестровый рекомендательный курс. Мне будут помогать ребята из моей уже бывшей R&D команды. По результатам шадовского курса мы получили очень положительный фидбек, особенно про “современность” курса. Хочется расширить существующие лекции и добавить кучу новых. Уже собираю новый материал для этого :)

Такие дела! Чувствую себя так, будто еще раз из университета выпустился =)
9🔥23369😢43🫡15🍾8🤯6🤝2❤‍🔥1🙏1🤓1