Information Retriever
3.53K subscribers
255 photos
1 video
8 files
129 links
Download Telegram
Наткнулся на местечковый сайт (https://book.sv), на котором можно вбить последние 64 прочитанные книги и получить рекомендации для следующего прочтения.

Создатель сайта распарсил Goodreads, обучил улучшенный SASRec, поднял инференс на NVIDIA Triton. Отличный пример рекомендательного pet project'а.

На сайте есть секция "How it works", в которой автор подробно расписал, как делал модель — даже метрики приложил. А ещё очень приятно было обнаружить там упоминание нас с Сашей Петровым (@Recsys_IR_Travel). Ради такого статьи и пишем :)
3🔥5515❤‍🔥6👍1
graph_recsys.pdf
6.3 MB
Лекция про графовые модели для рекомендательных систем.

Прочитал сегодня гостевую лекцию про графовые модели для рекомендательных систем в рамках курса по графам в машинном обучении в ШАД.

Читал такую же лекцию в прошлой итерации курса, но тогда у меня было существенно меньше времени для подготовки. В этот раз и презентацию сделал нормально, и структуру лекции больше продумал, и ещё вставил свежий кусочек про гетерогенную графовую модель TTGL от TikTok.
1👍20🔥144
Немного картинок для тех, кому лень открывать презентацию :)
1🔥226👍4👀1
Будьте осторожны! Если вам вдруг кто-то так написал, якобы от лица канала, — это не я, это мошенники.

Первый раз с таким столкнулся, видимо канал дошел до нужного уровня, чтобы его включили в мошеннические скрипты. В общем, будьте аккуратны, пожалуйста.
1😁57🤯12🫡9🤣3👀1
Новый подкаст с Суцкевером уже все видели, а я хочу подсветить еще два свежих подкаста:

* John Schulman (со-основатель OpenAI, автор TRPO / PPO, сейчас работает в thinking machines); про RL, ресерч, академию и индустрию — ссылка

* Новый подкаст с Demis Hassabis; по сути, подводит итоги года и хвастается успехами :) ссылка

Еще у Шульмана есть небольшой гайд про то, как заниматься ресерчем — “An Opinionated Guide to ML Research” (ссылка). Он 2020-го года, но актуальность не потерял — разве что, по словам самого Шульмана, стоило бы добавить секцию про использование LLM.

Из того, что тоже хотел осветить, но руки все не доходили — в Spotify продолжают пушить разговорные рекомендации. Буквально пару недель назад я рассказывал на лекции свое видение развития рексистем; что разговорные рекомендации — это способ уйти от манипуляций и дать пользователям больше контроля над алгоритмами. И, судя по постам менеджмента Spotify (см. скрин с Линкедина), позиция у них похожая. С технической точки зрения их подход, вероятно, довольно близок к PLUM (см. недавний блог пост).

А что касается меня — я сейчас активно занимаюсь ресерчем :) В этом году появились первые публикации, вернулся к преподаванию и сильно сменил фокус — с внедрений на науку и исследования. Год получился богатым на перемены.

С наступающим. Спасибо, что читаете!
🎄36🔥12❤‍🔥44🥰2👍1
В следующую субботу, 24-го числа, пройдет Data Ёлка 2025.

В прошлом году я выступал на дата ёлке с докладом "Нейросетевой мир победил"; рассказывал свое решение соревнования VK RecSys Challenge 2024.

А в этом году с докладом "Итоги года в Recsys" выступит Владимир Байкалов, который раньше работал в моей бывшей команде в Яндексе. Приходите послушать! Я сам тоже, возможно, загляну.

А еще Владимир недавно завёл тг-канал — @ducks_recs. Подписывайтесь :)
21🔥11
xAI выложили в опенсорс код своей новой рекомендательной системы (X / Твиттера).

https://github.com/xai-org/x-algorithm/

Код довольно простенький. Что можно сказать:
* используют jax
* постарались избавиться от эвристик и ручного feature engineering'а
* как и раньше, кандидаты набираются из двух источников — подписки и ML (раньше TwHIN, теперь двухбашенный трансформер)
* в качестве ранжирующей нейросети — тоже трансформер (раньше был MaskNet / DCN / etc)
* также выложили цельный многостадийный рекомендательный пайплайн — набор кандидатов, фильтрации, ранжирование, буст разнообразия авторов, постфильтрации
* есть только код инференса, про обучение инфы нет

Архитектура трансформера дефолтная (вижу роторные эмбеды, rmsnorm) и форкнута с Grok'а. Важно: предобученный Grok не используется, только код. И вообще, везде в тестах и конфигах указаны очень маленькие размеры трансформера (аля два слоя и hidden size 128). Длина используемой истории пользователя в конфигах — то ли 128, то ли 32 (в разных местах по-разному написано). Одинаковая архитектура трансформера используется и в ранжировании, и в кандгене.

Для кодирования сущностей (постов, авторов, пользовательских признаков) используют multi-hash lookup: делают что-то типа linear(concat(embedding(hash1), embedding(hash2))). В конфигах везде указаны num_hashes=2, то есть по два лукапа на сущность. Для разных признаков используются раздельные таблицы эмбеддингов (в unified подходе была бы одна общая); то есть для авторов, постов, пользователей — разные таблицы. Эмбеддинг события в истории пользователя формируется на основе поста, автора, рекомендательной поверхности и действия пользователя.

Еще как будто берут мультихэши от айдишника пользователя и подают в трансформер вместе с историей пользователя.

Башня кандидата в двухбашенном трансформере для кандгена очень простая — Linear(SiLU(Linear)).

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

Multi-action prediction: трансформер предсказывает вероятности сразу для кучи разных сигналов (like, reply, click, repost — полный список в репозитории). Для финального ранжирования, эти вероятности суммируются с весами в единый скор (но как подбираются веса — не пишут). Такую схему использовали и в прошлой ранжирующей нейросети, но только теперь эти вероятности приходят напрямую из трансформера.

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

Предполагаю, что какие-то подробности / детали все же не раскрываются (e.g. как рекомендуется холодный контент — для этого должны быть какие-то еще эмбеды кроме мультихэшей).

Из забавного — всю эту трансформерную поделку в xAI решили назвать "Феникс". Когда-то я в Яндексе инициировал похожий проект про упрощение ранжирования в единую нейросеть с трансформером, и тоже назвал её Фениксом. Вот так вот нейминги совпали :)
46🔥32👍16