У нейросетевых рекомендательных систем есть одна большая проблема — они плохо масштабируются, в то время как в NLP и CV скейлинг по размеру нейросетевых энкодеров очень хороший. Выделяют несколько причин этого явления: гигантский нестационарный словарь айтемов, гетерогенная природа признаков, а также очень большой объем данных.
В сегодняшней статье авторы предлагают переформулировать задачу рекомендации в генеративной постановке. Для начала, они представляют данные в виде последовательности событий. Вещественные фичи (счетчики и проч.) выкидываются, из взаимодействий с айтемами формируется единая последовательность, и затем в нее добавляются события изменения статической информации, такие как смена локации или изменение любого другого контекста.
Архитектура для генерации кандидатов выглядит довольно стандартно и похожа на SASRec или Pinnerformer: представляем пользователя в виде последовательности событий (item, action), и в тех местах, где следующим событием идет положительное взаимодействие с айтемом, предсказываем, что это за айтем.
А вот для ранжирования новизна достаточно серьезная: чтобы сделать модель target-aware (см. Deep Interest Network от Alibaba), понадобилось сделать более хитрую последовательность, в которой чередуются токены айтемов и действий: item_1, action_1, item_2, action_2, …. Из айтем-токенов предсказывается, какое с ними произойдет действие. Еще говорят, что на практике можно решать в этом месте любую многоголовую мультизадачу. Важно отметить, что авторы не учат единую модель сразу на генерацию кандидатов и ранжирование, а обучают две отдельные модели.
Другое нововведение — отказ от софтмакса и FFN в трансформере. Утверждается, что софтмакс плох для выучивания «интенсивности» чего-либо в истории пользователя. Те вещественные признаки, которые были выкинуты авторами, в основном её и касались. Например, сколько раз пользователь лайкал автора видеоролика, сколько раз скипал и т. д. Такие признаки очень важны для качества ранжирования. То, что отказ от софтмакса эту проблему решает, видно по результатам экспериментов — действительно есть значительное улучшение результатов ранжирования при такой модификации.
В итоге HSTU (Hierarchical Sequential Transduction Unit, так авторы окрестили свою архитектуру) показывает отличные результаты как на публичных, так и на внутренних датасетах. Еще и работает гораздо быстрее, чем прошлый DLRM подход за счет авторегрессивности и нового энкодера. Результаты в онлайне тоже очень хорошие — на billion-scale платформе short-form video (предполагаем, что это рилсы) получили +12.4% относительного прироста целевой метрики в A/B-тесте. Тем не менее, итоговая архитектура, которую авторы измеряют и внедряют, с точки зрения количества параметров не очень большая, где-то сотни миллионов. А вот по размеру датасета и длине истории скейлинг получился очень хороший.
@RecSysChannel
Разбор подготовил