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 и памяти.
- Забывать про временные признаки и типы событий.