Канал Доброго Вани | Data Science и Продуктики
1.71K subscribers
555 photos
26 videos
8 files
126 links
Самый добрый канал про DataScience, ML, техпред, хакатоны и про много чего еще 🥰

Реклама -> @Pleshakovski
Выступить на вашей площадке с докладом -> @Pleshakovski
Сотрудничество и любые другие вопросы -> @Pleshakovski
Download Telegram
Традиционный QA с админом объявляется открытым в 2026!

Любые ваши вопросы (желательно содержательные), идеи по рубрикам, обратная связь по каналу — и вообще всё, что вы хотите мне сказать.

Постараюсь ответить на всё в комментариях под этим постом. Давайте общаться!

Присылайте сюда 👉 t.me/questianonbot?start=1397630247c
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍2
Продолжаем говорить про Next Item Prediction — сегодня про SASRec

В прошлом посте мы поставили задачу Next Item Prediction (NIP). Теперь давайте разбирать первый «классический» подход, который обычно открывает эту тему — SASRec (Self-Attentive Sequential Recommendation).

Как всегда, держим в голове маркетплейс и нашу матрицу U × D, где у каждого пользователя есть последовательность из последних D действий.

💡 Идея SASRec в двух словах

SASRec — это Transformer-only модель, которая использует self-attention, чтобы понять, какие прошлые действия пользователя важны для предсказания следующего айтема. Ключевая мысль простая: не все предыдущие покупки одинаково полезны. Купил чехол для iPhone год назад — сомнительно, что это важно сейчас. Купил айфон вчера — совсем другое дело.

🧱 Из чего состоит SASRec

Разберём по шагам.

1️⃣ Embedding-слой

Каждый айтем Item_i кодируется в эмбеддинг размерности H, раскладывающийся на

Item Embedding
Positional Embedding (очень важно!)

Почему позиция важна? Потому что последовательности:

iPhone → Чехол и Чехол → iPhone — это вообще разные истории.

На выходе получаем тензор размера: U × D × H

2️⃣ Masked Self-Attention

SASRec использует causal masking, то есть при предсказании айтема на позиции t модель не видит будущие позиции t+1, t+2, ... Иначе был бы читинг. Self-attention отвечает на вопрос, на какие прошлые айтемы стоит обратить внимание, чтобы угадать следующий?

Формально — обычный Transformer Encoder:
• Multi-Head Attention
• Residual connections
• LayerNorm

Без энкодер-декодер истории, всё строго sequential.

3️⃣ Предсказание Next Item

Для каждой позиции t модель пытается предсказать айтем t+1.

На практике чаще всего:

• берем последнюю позицию
• сравниваем её эмбеддинг со всеми M айтемами
• считаем softmax или sampled softmax
• обучаемся максимизировать вероятность правильного следующего айтема.

🧊 Что с холодными пользователями?

SASRec спокойно работает с паддингами:

• паддинги маскируются
• attention их просто игнорирует

Но важно понимать: SASRec — это purely sequential модель. Что это значит?

Если у пользователя 0 или 1 действие, сигнал слабый.
Для совсем холодного старта чаще приходится:
• добавлять популярные айтемы
• комбинировать с non-personalized логикой

👍 Почему SASRec так популярен

Простая и понятная архитектура
Отлично ловит long-range зависимости (по крайней мере, так было в 2018 🤷‍♂️)
Хорошо масштабируется на большое число айтемов

Не зря его до сих пор используют как точку отсчета почти во всех статьях про NIP.

👀 Ограничения, о которых важно помнить

Нет bidirectional-контекста (в отличие от BERT4Rec)
Не использует user features
Плохо решает cold start без костылей
Использует только позтивные действия в истории пользователя (в то время, как негативные действия могут быть полезны для понимания контекста, что отображено в статьях про Аргус). Так например, для онлайн-кинотеатра мы будем использовать только историю просмотра, хотя могли бы учитывать и те фильмы, от просмотра которых юзер отказался.

Но как первый серьезный Transformer для рекомендаций — это абсолютная классика

Изображение взято из статьи на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
4😁4🔥1🤯1
Слово дня: LogКукарекция
😁113💅3
📕 Недавно ко мне пришел подписчик с вопросом: "А как мне вкатиться в ДС?". Одна из вещей, которые я рекомендую новичкам, — это участие в контестах, кейсах, хакатонах, митапах и конференциях. На предложенный вариант подписчик спросил: "А где искать актуальные соревы? Где можно найти перечень ближайших событий?"

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

🧑‍💻 Первый канал @iteventsrus . Это незаменимый источник вебинаров, конференций - и вообще всех интересных событий в нашей области. Периодически заглядываю сюда в поиске интересных митапов.

🤑 Второй — @hackathonsrus. Незаменимая база хакатонов, контестов и соревнований (в том числе по ML/DS/AI). Было время, когда ни один мой день не обходился без скроллинга сорев в этом канале.

Вобщем, рекомендую всем, кто ищет интересные события в области ИТ!
Please open Telegram to view this post
VIEW IN TELEGRAM
11🗿4🔥3👍2👎1🤬1
👀 n8n

Да-да, вы не ослышалсь. Я теперь вайбкодер. Вчера впервые в жизни затестил n8n, раньше никогда не притрагивался даже, только видел постоянно в постах у Алерона и на Ютупе.

КАПИИЦ ТЫ ДРЕВНИЙ N8N УЖЕ БАЯН - предвижу я ваши мысли. Знаете что? Капец эти агенты умные стали. Ну реально, за один час собирается тг-бот со 100500 ии-агентами. Я вчера бахнул простенького бота без памяти с парсером сайта погоды, но это заняло полчаса и 0 строчек кода всего.

Я помню, было время, когда году так в 2022 я ковырял тг-бота с рекомендациями фильмов с кинопоиска (ну и с парсером, соответственно). Уйму времени угрохал. А сколько времени ушло на прототипы для моих проектов?...

При всём при этом у меня 0 сомнений в том, что лишь малая доля фаундеров использует ИИ для своих прототипов. И я понимаю, что n8n 2.0 вышел пару месяцев назад, но у меня складывается ощущение, что эти чертилы в своих способностях растут как на дрожжях.

Вобщем, если у вас найдется минутка на выходных, затестите сами. Это очень прикольный опыт. Может быть, даже закрою пару своих рутинных задачек с этой штукой. Давайте еще опрос сделаю по n8n, очень интересно посмотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
9💅6👍2
🤨 Что-то давненько я ничего про собесы не писал.

Как там вообще дела, работяги? Собеситесь? Ставьте сразу кита 🐳, кто уже сменил место работы в 2026)

Решил сегодня в очередной раз пару слов на вентилятор накинуть про собеседования, а точнее про основные этапы, которые ждут интересанта на подступах к Бигкеку.

🔵Алгоритмическая секция
Все говорят, что этот этап позволяет в режиме реального времени оценить уровень кодинга кандидата, но мне лично непонятно, как выучивание 20-30 базовых функций может отражать скилл. Тем не менее, это по-прежнему качественный отсеиваитель джунов на миддловские позиции. Кстати, все типовые задачи на алгоритмы можно найти тут. Сохраняем и не теряем.

🔵МЛ+код
На этом этапе предстоит пораскинуть мозгами и вспомнить, как писать foo(a, b): return a+b. А если серьезно, то, обычно, кандидату предстоит порассуждать о каких-то базовых мл-алгоритмах (линрег, деревья, бустинги, нейронки и тп), порешать задачки из теорвера, написать что-то вроде градиентного спуска, решающего пня, итеративного решения уравнения и поотвечать на вопросики об МЛе... А для подготовки к этой секции я завел рубрику #вопросы_с_собесов, читаем!

🔵МЛСД - ML System Design
А вот этот кабан уже для искушенных мидлов и синьоров (джуны, слушайте и запоминайте). На этой секции вам предложат какой-нибудь кейс (например, реализация ленты Продукты для вас в интернет-магазине Гошан). Что хочет услышать собеседующий? Да практически всё: какие данные, какой бейзлайн, какой пайплайн, какие оффлайн и онлайн метрики, какой дизайн АБ, что по времени и ресурсам... Здесь-то и раскрывается глубина вашего погружения в индустрию.

🔵Финал
На этом этапе вы и собеседующие зачастую должны продать себя друг другу. Покажите ваш интерес к компании и задачам, задайте правильные вопросы, уточните условия. Ключевое: в ваших навыках уже заинтересованы, раз вас пригласили на финал.

Давайте завезем сердец и я разберу какой-нибудь МЛСД-кейс из RecSys 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
35🐳15🔥5🕊1
Вчера первый раз в жизни решал кейс 🥰

Второй семестр в ЦУ пока что радует
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18💅4🤯2
🚀 Друзья, вашему вниманию наш совместный пост с админом канала РИСЕРЧОШНАЯ — Даней. Кто не знает, Даня работает DLE в WB Tech и уже несколько лет занимается рекомендациями, а на его канале есть много полезной информации о RecSys.

Так о чем же сегодня пойдет речь? Сегодня мы разберем одну из самых культовых статей в RecSys — PinRec!

🔵 PinRec — генеративный ретривер (первая ступень рекомендательного пайплайна) от Pinterest. Они всегда выпускают отличные статьи где и про прод расскажут, и науку проверят.

В последнее время большинство генеративных моделей это навороченные two-tower архитектуры с causal masking. Кстати, подробнее про two-tower был большой пост, для лучшего понимания этого поста рекомендую ознакомиться!

Так вот в Pinterest вместо привычного two-tower взяли GPT-2 декодер, который по истории взаимодействий генерирует не вероятности конкретных ID, а эмбеддинги в едином латентном пространстве. Далее при помощи этих эмбеддингов мы извлекаем ближайшие айтемы из заранее построенного HNSW-индекса (или другого инструмента приближенного поиска).

Классический подход с генерацией ID требует огромного softmax, что дорого и шумно. Тут же модель генерирует эмбеддинги напрямую, избегая лишнего слоя вероятностей и значительно ускоряя инференс.

Все входные данные (пины (=айтемы) и поисковые запросы) представлены не дискретными ID-токенами, а реальными эмбеддингами в общем пространстве. Для этого запросы кодируются уже готовыми OmniSearchSage-векторами, а пины — комбинацией графовых PinSage-эмбеддингов и обучаемой hash-ID таблицей. Далее эмбеддинги проходят небольшие per-type MLP (для каждого типа действий — свой MLP) и нормализуются. Модель обучается стандартным sampled softmax, с logQ-коррекцией для борьбы с популярными негативами.

🔵 Забавный факт, что в pinterest отказались от semantic ID (о нем будет отдельный пост). Потому что это приводит к семантическому коллапсу: похожие пины теряют различимость, “слипаясь” в схожие направления в пространстве.

Авторы используют уже известный для многих трюк — Сount-Min Sketch, который приближает распределение к реальному. Представим, что у нас есть Клики пользователей, Заказы и другие действия в отношении миллионов айтемов. Хранить точные счётчики слишком дорого по памяти, а Count-Min Sketch позволяет считать частоты быстро и компактно, жертвуя точностью.

Ещё один важный трюк — outcome-conditioned генерация (генерация, условленная на целевое действие пользователя). Вместо сложного RL-обучения, они просто подают дополнительный эмбеддинг (например, “клик” или “репин” (сохранение пина)) на позднем связывании в голову декодера. Так генерация становится контролируемой, позволяя задать заранее соотношение целевых действий на инференсе.

Последний важный приём — windowed multi-token генерация. Авторы осознали, что в реальном сценарии пользователю не важен точный порядок действий внутри небольшого окна. Поэтому цель модели — предсказать не ровно следующий айтем, а любой из нескольких будущих. Более того, за один шаг декодирования генерируется сразу несколько эмбеддингов кандидатов, что одновременно сильно ускоряет генерацию и повышает разнообразие.

🔵 По результатам авторов, предложенные решения заметно превосходят SASRec, TIGER и PinnerFormer по recall@10 на всех основных поверхностях Pinterest. Сама модель внедрена как один из кандидатогенераторов.

Outcome-conditioning позволяет управлять типом целевых действий, улучшая recall нужных действий до 6%.

Windowed multi-token генерация снижает латентность (время задержки от запроса до получения результата) в 10 раз и даёт на 16% выше recall с одновременным повышением уникальности выдачи.

Было интересно? Тогда поддержите этот пост реакций и подпиской на РИСЕРЧОШНУЮ, мы с Даней старались 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍52
Вы, наверное, задаетесь вопросом, куда пропал админ?

Решил немного переключиться на контент. Вместе с AI4Dev записали лекцию-введение в Рекомендательные системы с QA. Рассказал про:

🔵 Типы задач в RecSys с примерами
🔵 Метрики оффлайна и онлайна
🔵 Алгоритм построения пайплайна рекомендательной системы
🔵 Будущее RecSYS
🔵 QA

Ролик уже доступен на Ютубе и ВК. Приятного просмотра!

Кому лень смотреть, может заглянуть в презенташку. Она весьма насыщенная и понятная без питча (файлик в следующем посте).

А я пошел готовить пост про рекомендации музыки по результатам опроса. Совсем мало изучал RecSys в музыке, но буду исправляться 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥105👍1
😎 Друзья, сегодня буду на этой конфе https://dev.go.yandex/events/day-night

Кто еще идет? Пишите, найдемся. На ML дебаты сходим ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥3🐳1😇1
🥲 Как обычно, сложно начинать писать после долгого перерыва, но повод есть и достаточно веский.

Еду в новый трип! И, пока я пишу посты по первым дням, предлагаю новой аудитории почитать серию постов про Японию и ЮАР

На пути в эту страну у меня будет 3 остановки: в Стамбуле (2 дня), Колумбии и Панаме.

🇹🇷 Кстати, в Турцию я полноценно никогда не летал, сейчас стараюсь больше посвящать себя путешествиям по России и дальнему зарубежью.

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

☀️ Подсказка: это Латина

#Путешествия
16🔥5💅3👎1🐳1