TGViewer
Интересное что-то Интересное что-то @youknowds · 625 subscribers
Post #11736 80

Forwarded from Канал Доброго Вани | Data Science и Продуктики

Продолжаем говорить про 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 для рекомендаций — это абсолютная классика

Изображение взято из статьи на Хабре
More from @youknowds
  1. Sep 24, 2026https://www.youtube.com/watch?v=ZpL3QsO5A9U Спокойное, неторопливое и глубокое видео для т…
  2. Sep 24, 2026#interview #career
  3. Sep 23, 2026Halo: почти год моей работы в White Circle теперь в опенсорсе Почти год я веду в White Cir…
  4. Sep 23, 2026#llm #gpu
  5. Sep 23, 2026Постоянная рубрика: "блекпилл недели (и как с ним быть)" После предыдущего болезненного оп…
  6. Sep 23, 2026#agents #code
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →