1.8Kпросмотров
98.3%от подписчиков
20 января 2026 г.
📷 ФотоScore: 1.9K
Продолжаем говорить про 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 для рекомендаций — это абсолютная классика Изображение взято из статьи на Хабре
1.8K
просмотров
3155
символов
Да
эмодзи
Да
медиа

Другие посты @pleshakovsky

Все посты канала →
Продолжаем говорить про Next Item Prediction — сегодня про S — @pleshakovsky | PostSniper