Yambda-5B — A Large-Scale Multi-modal Dataset for Ranking and Retrieval.
Ребята опубликовали
гигантский музыкальный датасет с прослушиваниями Яндекс Музыки, охватывающий 11 месяцев активности 10 миллионов пользователей. В нём аж 4.8 миллиарда user-item взаимодействий! Я сам не участвовал, но два человека из нашей R&D команды тоже поконтрибьютили.
Это все ещё где-то в 60 раз меньше, чем данные, на которых обучался
Аргус. Но, тем не менее, гораздо больше, чем стандартные датасеты, которые часто используют в статьях (сотни тысяч или десятки миллионов взаимодействий). Сделали три разные по размеру версии датасета; и видно, что SASRec начинает выигрывать у других алгоритмов только на датасете “среднего” размера с 500 млн взаимодействий, а на 50 млн проигрывает ItemKNN’у. При обучении нейросеток важно использовать много данных :)
Для деления на трейн/тест используется
разделение по времени (time split
) вместо leave-one-out
. Почему это хорошо, наверное, уже
можно не объяснять. Получилось даже так, что на задаче предсказания лайков выигрывает топ популярного, учитывающий затухание по времени. Напомнило
статью, в которой затюненный топ популярного выигрывает у других моделей.
Про бейзлайны — SASRec не тюнился, а для остальных алгоритмов гиперпараметры подбирались на валидации по последнему дню трейна. В идеале, валидацию нужно зафиксировать и явно отделить от трейна, чтобы результаты тюнинга моделей можно было сравнивать между разными статьями. Ещё из статьи не совсем понятно, сколько раз запускались обучения отдельных моделей — было ли усреднение результатов запусков с разными сидами. Возможно на датасете такого размера это не так важно.
Важный момент — в качестве целевой задачи для оценки качества решили сделать
предсказание лайков / прослушиваний за следующий день. Такая постановка немного похожа на
PinnerFormer. Это задача
генерации кандидатов, не ранжирования. Причём не привычный исследователям next item prediction, когда мы глядя на историю предсказываем следующее взаимодействие, а именно предсказание каких-то будущих положительных взаимодействий в окне размера один день. Для SASRec’а эмбеддинг пользователя фиксируется на последний момент трейна, и из него делается предсказание сразу всех лайков за следующий день.
По-хорошему, при такой оценке качества SASRec и остальные модели нужно обучать по-другому, решая именно задачу предсказания будущего лайка в окне в один день, а не задачу предсказания следующего лайка. Как это (плюс-минус) делают в Пиннерформере. Возможно тогда отрыв от более эвристических алгоритмов будет еще больше. Мы такие модельки часто обучаем в качестве оффлайновых генераторов кандидатов, пересчитывающих эмбеддинги пользователей раз в день.
Кроме вышесказанного, было бы круто в будущем добавить следующие штуки:
* расширить валидацию и тест до недели
* добавить оценку качества ранжирования (не NDCG для задачи ретривала, а именно для задачи impression-aware ранжирования)
* добавить более стандартную next item prediction постановку
* сделать отдельный срез оценки качества для новых пользователей (возможно какой-то общий эвал, при котором учитываются и новые пользователи тоже), потому что они тоже важны
А ещё ребята написали про датасет
пост на Хабре и выложили
препринт статьи на архиве.