Назад к подготовке
ВопросСредняяsequence-modelingТехническое собеседование · HeadHunter

Transformer в sequential RecSys

Как использовать transformer в рекомендациях и чем это отличается от RNN-подхода?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Transformer кодирует последовательность действий через self-attention и лучше видит дальние зависимости. В RecSys часто используют causal next-item модели вроде SASRec или masked-item модели вроде BERT4Rec.

Полный разбор

В sequential RecSys пользователь представлен последовательностью событий: просмотры, клики, покупки, отклики. Transformer строит embeddings событий и через self-attention позволяет каждому событию учитывать другие события в истории. Residual connections и layer normalization стабилизируют глубокую модель.

SASRec похож на autoregressive подход: по прошлым действиям предсказываем следующий item. BERT4Rec использует masked modeling: часть items маскируется, модель восстанавливает их по контексту. В обоих случаях item, category, time gap, action type и context могут быть признаками токена.

RNN обрабатывает последовательность последовательно и естественно держит hidden state, но хуже параллелится и сложнее ловит дальние зависимости. Transformer дороже по памяти на длинных последовательностях из-за attention, зато хорошо параллелится и гибко смешивает разные позиции истории.

Теория

Sequential RecSys с transformer обычно учит представление пользователя из истории действий, а не просто хранит статический user embedding.

Типичные ошибки

  • Не различать causal next-item и masked-item обучение.
  • Подавать слишком длинную историю без контроля latency и памяти.
  • Забывать про временные признаки и типы событий.