Миссия рекомендательных систем - угадывать потребности человека. Примитивные модели не способны уловить скрытые паттерны поведения пользователя. Однако эту задачу способно решить моделирование последовательности рекомендаций (Sequential Recommendation). Особенного успеха в последнее время в моделировании последовательностей добились Transformer-подобные архитектуры. Ниже представлен краткий обзор на важные в области статьи, частично покрывающие тематику Recsys+Transformers.
SASRec: Self-Attentive Sequential Recommendation
https://arxiv.org/pdf/1808.09781
Авторы статьи позиционируют свое решение как некий trade-off между примитивными моделями (Markov Chains) и моделями, позволяющими улавливать long-term зависимости (RNN). MC не способно моделировать сложные зависимости, т.к. для предсказания используют только информацию из 1ого или нескольких предыдущих item-ов, в то время как RNN принимает во внимание всю историческую последовательность рекомендаций, в которой много шума. Transformer-модели при анализе последовательностей способны обрабатывать длинный контекст, однако свои предсказания, в основном, они делают, опираясь на информацию небольшого количества item-ов.
Задача рекомендаций формализована и подогнана под сеттинг Transformers путем замены токенов текста на item-ы.
![Процесс обучения SASRec Процесс обучения SASRec](https://habrastorage.org/getpro/habr/upload_files/56d/e98/79d/56de9879da46276b28779c0dcf089516.png)
В плане архитектуры - все стандартно: MultiHeadAttention, Position-wise Feed-Forward Network, Layer Normalization, Residual Connection, Dropout, Positional Encoding.
Для получения итоговой меры релевантности item-а к последовательности, в слое предсказания скрытое состояние финального слоя трансформера скалярно умножается на вектор эмбеддинга item-а. Из особенностей - было принято решение использовать общую матрицу эмбеддингов item-ов (shared embedding matrix) как и вход модели, так и на слое предсказания. Прежние модели страдали от того, что не могли улавливать ассиметричные отношения между item-ами, однако SASRec не подвержен этому.
Как обучать эту модель? Каждая исходная последовательность item-ов в итоге бьется на подпоследовательности, для которых Лосс считается как сумма Лосса для положительного примера (реальный последний item) и Лосса для одного случайно выбранного отрицательного примера.
![Формула Лосса модели Формула Лосса модели](https://habrastorage.org/getpro/habr/upload_files/8bc/924/92c/8bc92492c76413b3b802011289bc3dca.png)
В статье показано, что в разреженных датасетах модель склонна опираться на несколько предыдущих item-ов, в то время как в не разреженных датасетах происходит адаптация под учет долгосрочных зависимостей.
Метрики считались с помощью техники leave-one-out. Для каждого юзера последний и предпоследний item добавляется в eval и test сеты, соответственно, а остальное - в train. Также была применена техника negative sampling: для каждого верного взаимодействия выбиралось, в соответствии с популярностью, 100 item-ов. Т.о. метрика оценивала отранжированный список из 100 заведомо ложных взаимодействий и 1им верным.
SASRec обогнал все предыдущие SOTA модели по HR, NDCG на датасетах (Amazon Beauty, Steam, MovieLens-1M).
BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
https://arxiv.org/pdf/1904.06690
Рисерчеры из Alibaba в 2019 году впервые подружили BERT-ы и Recsys, представив архитектуру BERT4Rec. Вообще, идея логично проистекает из SASRec - если модели с однонаправленным контекстом (unidirectional models) отлично справились с бенчмарками Recsys, почему бы не поставить эксперимент над моделями с двунаправленными контекстом (bidirectional models).
Таким образом можно:
Обусловить item-ы контекстом справа, получив их лучшее представление, и заодно значительно увеличить обучающую выборку (комбинаторный взрыв количества перестановок маскированных item-ов и немаскированных).
Смягчить предположение о жесткой упорядоченности item-ов в последовательности, которая соблюдается не всегда.
Обучали модель на задаче MLM (Masked Language Modelling) или Cloze task, маскируя определенную долю случайных item-ов в последовательности. Во время теста достаточно подать на вход последовательность item-ов с [mask] в самом конце, подсказывая таким образом модели, какое поведение мы от нее ожидаем.
![Архитектура BERT4Rec Архитектура BERT4Rec](https://habrastorage.org/getpro/habr/upload_files/06f/b19/c69/06fb19c699eaca08d9c133f928d33c7a.png)
BERT4Rec обогнал SASRec по всем метрикам (HR, NDCG, MRR) на всех датасетах (Amazon Beauty, Steam, MovieLens-1M, MovieLens-20M).
На этапе абляции эффект от отказа учета последовательности item-ов оказался гораздо сильнее, чем на SASRec (На датасетах MovieLens-1M и MovieLens-20M наблюдается деградация более чем на 50%, в то время как датасеты, содержащие короткие последовательности в метрике не сильно просели).
Позже вышла статья (https://arxiv.org/pdf/2207.07483), адресованная некоторым несостыковкам в оригинальной статье, которые нашли другие исследователи. Авторы нашли 40 публикаций, в рамках которых велось сравнение BERT4Rec и SASRec на различных метриках и датасетах - в 36% случаев побеждал SASRec, что подтверждает гипотезу о том, что BERT4Rec не всегда стабильно лучше SASRec, и, что воспроизводить результаты оригинальной статьи удается далеко не всем.
Сравнивались 4 различных реализаций BERT4Rec: original, RecBole, BERT4Rec-VAE, и предложенная авторами.
Несмотря на то, что существует мнение, что negative sampling для расчета метрик - не лучшая идея, основные метрики рассчитывались именно с ним - чтобы сделать исследования сравнимым с оригиналом.
Ключевые чекпоинты из статьи:
BERT4Rec показывает разные результаты для различных реализаций.
BERT4Rec действительно является лучшей архитектурой для моделирования последовательностей, однако требуется гораздо больше времени для обучения (в 30 раз больше!).
Другие BERT-подобные модели, используемые в BERT4Rec, способны значимо улучшить метрики.
gSASRec: Reducing Overconfidence in Sequential Recommendation Trained with Negative Sampling
https://arxiv.org/pdf/2308.07192
В этой статье описывается предположение, что основная причина того, что SASRec проигрывает BERT4Rec в метриках - это overconfidence (чрезмерная самоуверенность), появляющаяся благодаря negative sampling-у, в рамках которого положительные взаимодействия имеют большую пропорцию относительно негативных, что расходится с реальной жизнью. Т.о. модель учат различать хорошие item-ы от плохих, в то время как задача сортировки хороших item-ов в топе игнорируется. Причиной превосходства BERT4Rec является не двунаправленное внимание, а отказ от negative sampling, однако это делает невозможным применение этой модели во многих реальных задачах из-за сложности вычислений, т.к. Softmax, используемый BERT4Rec требует хранения для каждой последовательности N*S чисел, где S - кол-во item-ов в последовательности, N - кол-во item-ов в датасете. Также авторы предлагают новую модель, превзошедшую сам BERT4Rec - gSASRec, обученный на новой Лосс-функции - gBCE.
![Формула gBCE. Формула gBCE.](https://habrastorage.org/getpro/habr/upload_files/ee3/45d/d03/ee345dd0314d0304b9d1aa5937674ab8.png)
В целом, gBCE является обобщением BCE - в нем фигурирует β, контролирующая форму сигмоиды. В статье аналитически показывается, что BCE, при очень большом количестве item-ов в датасете приравнивает вероятности топовых item-ов почти к 1. Эксперименты показали, что при нужной комбинации гиперпараметров k (n_negatives) и t (калибровочный параметр, фактически определяющий β) SASRec достигает сравнимых показателей с BERT4Rec и даже обгоняет его на некоторых датасетах. Также замечено, что gBCE положительно влияет больше на SASRec, чем на BERT4Rec, поскольку перед первым при обучении ставится задача предсказания последующего item-а, что ближе по духу к Sequence Modelling, чем MLM. И финальный плюс gSASRec - он тренируется гораздо быстрее.
TRON: Scaling Session-Based Transformer Recommendations using Optimized Negative Sampling and Loss Functions
https://arxiv.org/pdf/2307.14906
Session-based рекомендательные системы предсказывают следующие item базируясь на сессии - последовательности item-ов, с которыми он взаимодействовал ранее. Выбирать негативные примеры можно несколькими способами:
Из равномерного распределения над всеми item-ами
Из распределения, полученного из частоты взаимодействия каждого item-а с каждыми user-ом
Комбинация из 1. и 2.
Сэмплировать негативные примеры можно по одному: на каждое позитивное взаимодействие (elementwise), на каждую сессию (sessionwise), на каждый батч (batchwise). Element-wise подход страдает тем, что содержит в себе особую вычислительную сложность, в то время как другие подходы более быстрые.
TRON применяет комбинацию из sessionwise и batchwise подходов, при этом использует top-k сэмплирование. При этом все это поверх SASRec c Sampled Softmax Loss.
Были проведены эксперименты над 2мя вариантами комбинаций техник семплирование: uniform+sessionwise, batchwise+sessionwise, в рамках которых было установлено, что при достаточно большом количестве негативных примеров TRON выигрывает все остальные модели, попавшие в сравнение в большинстве случаев.
odmin227
Побольше бы картинок объяснялок примеров, например почему софт макс, зачем негативное семплирование, как оно работает, что за елементвайс сессионвайс и тд