Information Retriever
3.74K subscribers
270 photos
1 video
8 files
141 links
Download Telegram
Погружение в академию.

Прошло уже примерно полгода с тех пор, как я сменил деятельность на ресерч. Что могу рассказать:
* хорошенько отдохнул; но недостаточно, надо ещё :)
* взял себе девять студентов под научное руководство и слегка чувствую себя тимлидом =)
* готовил вместе с ребятами следующую итерацию рексис курса для ШАДа и первую итерацию рексис курса в Вышке; оба начинаются в первой половине февраля, поэтому ждите в ближайшее время посты с лекциями/семинарами
* доделал camera-ready статью про Аргуса, скоро выложу на arxiv
* готовлю новую статью, которую надеюсь успеть подать на второй цикл KDD'26 в формате research full paper

В моём понимании, если хочешь сделать крутую ресерч команду — нужно довольно активно участвовать в образовательной системе; иметь доступ к самым талантливым и замотивированным ребятам и активно этим доступом пользоваться. Я пока никакой своей команды осознанно не делаю — это противоречит первой аксиоме про отдых; но, конечно, есть подозрение, что научная группа постепенно появится сама собой :)

По мере погружения в академию, обрастаю новыми знакомствами. И как раз хотел бы порекомендовать вам канал Алексея Наумова и Валерии Власовой, коллег из ВШЭ, которые гораздо дольше меня занимаются ресерчем и рассказывают много интересного про академию, конференции, Вышку и университеты в целом. Алексей когда-то принимал у моей группы экзамен по математическим основам теории вероятностей на кафедре матстата ВМК :) Старая добрая теорема Радона-Никодима... ))

Примеры постов с канала Алексея и Валерии, которые мне показались интересными:
* Что такое research proposal и как его писать
* Студенческие годы в МГУ
* Про поиск научных проблем для исследований
* Как развивалась университетская система
* Стоит ли получать PhD

Если вам интересен ресерч, образование, математика — рекомендую подписаться.
27🔥8👍5🤝3👎2🤡1
Deep RecSys Course.

Вчера прошло первое занятие нашего Deep RecSys курса в Вышке!

Материалы выкладываются на гитхаб, а видеозаписи занятий — на ютуб, как и обещал :)

Собственно, рассказывал доработанную (в)водную лекцию, слайды которой уже выкладывал на канале. Информационная перегрузка, тяжёлые хвосты, технофеодализм, коллаборативная фильтрация, матричная факторизация, bitter lesson, scaling hypothesis — вот это всё :)

А на семинаре Артём Матвеев показывал различные метрики и обработку данных на Ямбде.

P.S: уже даже до ютуба моё блогерское дело дошло, жесть... ))
3🔥95🥰3621❤‍🔥5
Получается, автор HSTU знает про Аргуса. Даже раньше Алибабы в списке упомянул :)
42🔥26😁3
Deep RecSys Course II.

1. На лекции поговорили про ML дизайн рекомендательных систем и немного про мой опыт работы в R&D. В своё время я придумывал формат последней итерации собеседования по рекомендательным системам в Яндексе, и при подготовке лекции мне этот опыт очень пригодился. В общем, думаю, что получился неплохой начальный материал для подготовки к ML дизайн рексис собеседованию в бигтех. Пользуйтесь :)

2. На семинаре Владимир Байкалов @ducks_recs рассказывал про классические алгоритмы рекомендаций, с которыми можно сравнивать нейросети. И показывал для этих алгоритмов результаты на датасете Yambda. Заодно обсудили ошибки подсчета метрик в Ямбде — например, при подсчете Recall@K часто забывают, что нужно делить не на количество позитивов, а на min{количество позитивов, K}. Я такое видел и в метриках соревнований, и в статьях. А чтобы узнать багу при подсчете nDCG — смотрите семинар :)

Записи занятия уже на ютубе — и лекция, и семинар. В этот раз принёс свой микрофон, поэтому на лекции звук чуть получше. Материалы — на Github (пока только лекция, но семинар тоже скоро выложим).

И ещё поделюсь отдельно парой ссылок с лекции:

1. Много полезной информации про дизайн рексистем есть на канале Миши @WazowskiRecommends. В лекции не раз ссылаюсь — на посты про счётчики, эмбеддинги, Mixigen

2. У Саввы Степурина есть два хороших наглядных доклада про ML дизайн рексистем — рассказ про стек Яндекс Музыки и про рекомендации незнакомого

3. На RecSys 2020 был туториал про feature engineering от Nvidia

4. У VK есть два хороших рассказа про item-to-item рекомендации — про внедрение item-to-item схемы от Дмитрия Шишова и про её улучшение от Андрея Зимовнова

P.S: уже преодолели отметку в 100 часов суммарного просмотра курса на ютубе!
👍36🔥2911❤‍🔥3🤝2
Deep RecSys Course III.

1. Двухбашенные нейросети. Это была одна из самых важных лекций курса — обсудили архитектуру, фолдинг, sampled softmax loss, contrastive learning, влияние температуры, косинуса как функции близости, различные источники негативов. Даже вывели LogQ коррекцию.

2. Рексистемы глазами исследователя. На 2-м занятии мы разбирали как видит рексистемы инженер, а здесь — как их видит исследователь. И какие ошибки при этом совершает :) При подготовке я во многом основывался на докладе про оффлайн-оценку качества с RecSys Summer School 2025 (см. пост); добавил парочку новых примеров и щепотку своего личного мнения. Обсуждали как формулировать цели, зачем нужны research questions, как выбирать датасеты, алгоритмы и метрики для экспериментов.

Как и всегда, записи на YouTube, а материалы — на Github.

P.S: суммарное время просмотра курса уже превысило 200 часов!
241🔥29👍4❤‍🔥2
Variable-Length Semantic IDs for Recommender Systems.

Задумывались ли вы когда-нибудь почему все семантические айдишники одинаковой длины? Нет? А я задумывался! И даже написал на эту тему статью :)

Недавно я наткнулся на область Emergent Communication (EC). Она никак напрямую не связана с рекомендательными системами — в ней исследуют как в рамках решения совместных задач агенты вырабатывают общий язык для коммуникаций. Самая популярная формулировка задачи — Lewis Game: один агент (sender) видит объект, описывает его (в случае языковой игры — символьно), другой агент (receiver) читает описание и пытается угадать, что это был за объект.

Внезапно, это очень похоже на моё собственное видение обучения семантических айдишников — я смотрю на этот процесс как на языковую игру. По Витгенштейну, язык — это что-то сильно зависящее от контекста; он формируется под конкретные ситуации и цели. И вот как раз языковая игра — это такой концепт, в котором смысл слов определяется исключительно самой игрой. И, на мой взгляд, cемантические айдишники — это ни что иное как попытка создать язык для описания айтемов. Процесс, через который мы это делаем — ровно та же языковая Lewis Game, в которой энкодер описывает айтемы, а декодер восстанавливает их по описанию.

И вот в области EC уже некоторое время (как минимум с 2017-го года) занимались похожей задачей, но в контексте всяких других объектов; например, картинок. Интересно, что методы и сам взгляд на задачу сильно отличались от recsys community — в EC на задачу смотрели как на MARL (multi-agent reinforcement learning), и для обучения моделей использовали REINFORCE. Были ранние попытки использовать гумбель-софтмакс релаксацию, и даже в какой-то момент (не так давно) заметили прямую аналогию с dVAE (discrete VAE) и решили попробовать максимизировать ELBO, но опять-таки использовали для этого REINFORCE =)

Один из плюсов такого взгляда на задачу (через язык) в том, что ученые в EC также задавались и вопросом эффективности возникающих языков. И вопросом их сходства с естественным языком; одна из конечных целей — научить агентов разговаривать, прямо как у нас в рекомендациях. И вот в естественном языке есть такая штука, как ZLA (Zipf's Law of Abbreviation) — для часто возникающих сущностей (объектов, ситуаций, etc) мы используем более короткие описания. Оказалось, что чтобы получить такой же эффект для emergent language, нужно всего лишь добавить штраф на длину передаваемого сообщения, то есть заставить агентов эту длину минимизировать.

А почему то же самое не должно быть верно для рекомендаций? Если мы описываем айтемы эффективно, то наверно у популярных айтемов, с которыми мы часто сталкиваемся, должны быть короткие описания. А у тяжелого хвоста и холодных айтемов — наоборот длинные. Это нам, во-первых, поможет сделать гораздо эффективней все модели, в которых используются семантические айдишники (за тот же бюджет в токенах можно уместить гораздо больше информации, а ещё сам generative retrieval ускорить). А во-вторых — для создания разговорных рексистем мы хотим совместить наш язык описания айтемов вместе с естественным языком, которым оперирует LLM (см. PLUM). И если естественный язык для всех сущностей использует описания переменной длины, то почему наш "язык айтемов" работает не также? Чтобы разговорные рексистемы заработали, нам нужно постараться максимально устранить этот vocabulary gap!

В общем, tldr статьи:
* для рекомендаций это все тоже прекрасно работает, и как раз в статье я это и проверил
* а ещё — предложил новый метод для обучения дискретных представлений переменной длины, доформулировав задачу и её решение в виде dVAE с G-S (что, на самом деле, в EC до конца не довели). Spoiler: работает гораздо лучше и стабильней, чем REINFORCE
* и еще показал, что такие "variable-length" семантические айдишники хорошо работают на downstream задачах типа sequential recommendation (относительно того же R-KMeans).

Если дочитали до конца и не уснули — спасибо! И в качестве награды вам две ссылочки, на саму статью и на код:

arXiv
| Github.
🔥6420👍12
😎

P.S: про RecSys Substack уже писал вот здесь :)
🔥242
Deep RecSys Course IV.

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

* Обучаемые эмбеддинги, плюсы и минусы
* Контентное кодирование и inductive bias
* Unsupervised representation learning как альтернатива для выучивания векторных представлений
* Методы кодирования пользователей

Также немного поговорили про методы нейросетевого кандгена, которые выходят за рамки двухбашенных моделей — multi-interest модели, mixture of logits, generative retrieval.

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

2. На семинаре Артём Матвеев рассказывал про практические аспекты обучения нейросетевых моделей для рекомендаций — какими инструментами для обучения мы пользуемся, на какие принципы опираемся и какой код пишем.

Артём, кстати, для семинара написал целый небольшой фреймворк для обучения нейросетей, который переиспользует многие наши лучшие практики, к которым мы пришли когда делали последнюю итерацию внутреннего яндексового фреймворка. На гитхабе код тоже есть.

Github | YouTube

P.S: суммарное время просмотра курса на ютубе — уже 400 часов. Это можно было бы один раз почти весь One Piece посмотреть :)
🔥4010👍5❤‍🔥1😁1
Deep RecSys Course V.

Новое занятие курса уже на ютубе (а слайды — на github). Начали тему нейросетевого ранжирования:

1. На лекции обсудили, когда и почему стоит использовать нейросети для ранжирования (вместо градиентного бустинга). Затем поговорили про формирование входного вектора для нейросети — как работать с категориальными и вещественными признаками, а также с выходами других моделей.

2. На семинаре Артём Матвеев разобрал статью Unified Embedding: Battle-Tested Feature Representations for Web-Scale ML Systems и сказал пару слов про On Embeddings for Numerical Features in Tabular Deep Learning.

P.S: ещё выступал вчера на коллоквиуме ФКН по теме своей последней статьи, когда появится запись — напишу.
🔥37👍5❤‍🔥42
Deep RecSys Course VI.

Канал временно превратился в инструмент анонса выхода новых занятий курса на ютубе, но я надеюсь вас это не смущает :)

Вышло шестое занятие, на котором мы продолжили тему нейросетевого ранжирования.

На лекции поговорили про:
1. Моделирование взаимодействия признаков — от линейных моделей и факторизационных машин до DCN-v2 и новомодных трансформерных моделей
2. Что используем в качестве глубоких слоев (ResNet / DenseNet)
3. Про multi-task modeling — одновременное обучение на разные типы сигнала и специальные архитектуры типа MMoE (multi-gate MoE). А ещё немного затронули entire space multi-task modeling
4. И чуть-чуть поговорили про position bias в ранжировании и как с ним бороться, а также про knowledge distillation

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

На семинаре Артём Матвеев разобрал статью про DCN-v2.

YouTube | Github.
47🔥26❤‍🔥8
Deep RecSys Course VII.

Преодолели экватор курса!

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

К счастью сейчас будет небольшой перерыв на пару недель, после следующей лекции. Планирую посетить Японию :)

Вышло седьмое занятие про трансформеры и анализ истории пользователя. Успели покрыть:
1. Ранжирование (DIN, BST, TransAct, OneTrans, MixFormer)
2. Кандген/representation learning (SASRec, BERT4Rec, PinnerFormer)
3. И еще был небольшой recap механизма внимания и трансформеров в начале лекции

В лекции должна была быть и четвертая часть, в которой я рассказываю про свои похождения в Яндексе — различные трансформерные модели и архитектуры, которыми мы занимались с командой. Но её не успели, осталось на следующий раз.

На семинаре Владимир Байкалов разбирал статьи про моделирование пользователей в Пинтересте — PinnerFormer и TransAct (да-да, там есть и более свежие статьи, но они скорее относятся к поздним лекциям курса; в учебных целях было полезно разобрать именно эти модели).

YouTube | Github.
39🔥10❤‍🔥2