Сегодня вышла статья Scaling Law of Large Sequential Recommendation Models от WeChat, Tencent и Gaoling School of Artificial Intelligence. Я, заинтригованный, бросился её читать. И тут на пятой странице вижу следующий абзац:
We adopt the widely-used leave-oneout strategy, in which the last item is used as the test item, the item before the last item is used as the validation item, and the remaining items are used for training.
Т.е. авторы используют постановку next item prediction, в которой нужно глядя на историю пользователя предсказывать следующее взаимодействие. Причем для теста откладывается последнее взаимодействие из каждой пользовательской истории.
Почему это плохо:
1. Нет деления на трейн/тест по времени. Это буквально data leakage, не соответствующий сценарию реального применения модели в продакшне. В таком сетапе можно выбить высокие метрики не за счет обобщающей способности, а за счет меморизации. Трансдуктивные модели, которые используют обучаемые айдишники, могут в таком сетапе показывать очень высокие метрики, а потом в продакшне давать нулевой профит. Референсы для чтения: A Critical Study on Data Leakage in Recommender System Offline Evaluation и Take a Fresh Look at Recommender Systems from an Evaluation Standpoint от Nanyang Technological University.
2. Предсказание следующего айтема, даже если добавить тайм-сплит, не очень хорошая задача. Траектория взаимодействий пользователя очень сильно зависит от продакшна (logging policy). Более хорошие метрики с большой вероятностью получит та модель, которая будет лучше имитировать продакшн. Даже если в продакшне очень плохие рекомендации. Референс: Offline Evaluation for Reinforcement Learning-based Recommendation: A Critical Issue and Some Alternatives от Naver Labs Europe.
3. Предсказывать следующее событие в истории пользователя без лага — жадная задача, которая приводит к плохому разнообразию рекомендаций. Об этом писал Pinterest в статье TransAct: Transformer-based Realtime User Action Model for Recommendation at Pinterest. Лучше эмулировать хотя бы небольшую задержку доставки данных. Pinterest, например, при обучении случайным образом выкидывает сколько-то последних событий пользователя за последний день, чтобы модель не скатывалась в эдакий "локальный оптимум" однообразных рекомендаций, похожих на недавнюю историю.
4. Обычно в таком сетапе для оценки качества сэмплируют небольшое количество случайных негативов (сотню). В качестве метрик репортится nDCG и HitRatio для позитива против негативов. Такая метрика не очень устойчива, от сэмплирования к сэмплированию все меняется. И непонятно что оценивает, т.к. реальный сценарий использования модели будет другой. Либо модель предполагается как верхняя стадия рекомендаций, ранжирование, и тогда эта сотня кандидатов будет вовсе не случайная, а из кандидатогенератора. Либо модель используется как кандидатогенератор / одностадийная рекомендательная система, тогда в качестве негативов надо использовать весь каталог айтемов. Референс: On Sampled Metrics for Item Recommendation от Google Research.
Довольно много статей репортят такие метрики. Иногда на это можно закрыть глаза, если предлагаемый в статье inductive bias должен увеличивать скорее генерализацию, а не меморизацию. Но в статье про скейлинг моделей это довольно сомнительно, т.к. при росте модели может очень сильно буститься меморизация.
Я часто использую термины трансдуктивность / индуктивность. Индуктивность предполагает, что модель умеет работать на новых объектах, не встречавшихся в обучении. Например, языковые модели и рекомендательные модели, представляющие айтемы через текст, индуктивны. А модели, использующие для айтемов обучаемые айдишники, e.g. SASRec, трансдуктивны. Почитать про это можно в Situating Recommender Systems in Practice:Towards Inductive Learning and Incremental Updates от Microsoft.
Меморизация — это больше про способность запоминать корреляции в обучающих данных. Генерализация, т.е. обобщающая способность, больше про транзитивность, умение выводить новые знания. См. Wide & Deep Learning for Recommender Systems от Google.
We adopt the widely-used leave-oneout strategy, in which the last item is used as the test item, the item before the last item is used as the validation item, and the remaining items are used for training.
Т.е. авторы используют постановку next item prediction, в которой нужно глядя на историю пользователя предсказывать следующее взаимодействие. Причем для теста откладывается последнее взаимодействие из каждой пользовательской истории.
Почему это плохо:
1. Нет деления на трейн/тест по времени. Это буквально data leakage, не соответствующий сценарию реального применения модели в продакшне. В таком сетапе можно выбить высокие метрики не за счет обобщающей способности, а за счет меморизации. Трансдуктивные модели, которые используют обучаемые айдишники, могут в таком сетапе показывать очень высокие метрики, а потом в продакшне давать нулевой профит. Референсы для чтения: A Critical Study on Data Leakage in Recommender System Offline Evaluation и Take a Fresh Look at Recommender Systems from an Evaluation Standpoint от Nanyang Technological University.
2. Предсказание следующего айтема, даже если добавить тайм-сплит, не очень хорошая задача. Траектория взаимодействий пользователя очень сильно зависит от продакшна (logging policy). Более хорошие метрики с большой вероятностью получит та модель, которая будет лучше имитировать продакшн. Даже если в продакшне очень плохие рекомендации. Референс: Offline Evaluation for Reinforcement Learning-based Recommendation: A Critical Issue and Some Alternatives от Naver Labs Europe.
3. Предсказывать следующее событие в истории пользователя без лага — жадная задача, которая приводит к плохому разнообразию рекомендаций. Об этом писал Pinterest в статье TransAct: Transformer-based Realtime User Action Model for Recommendation at Pinterest. Лучше эмулировать хотя бы небольшую задержку доставки данных. Pinterest, например, при обучении случайным образом выкидывает сколько-то последних событий пользователя за последний день, чтобы модель не скатывалась в эдакий "локальный оптимум" однообразных рекомендаций, похожих на недавнюю историю.
4. Обычно в таком сетапе для оценки качества сэмплируют небольшое количество случайных негативов (сотню). В качестве метрик репортится nDCG и HitRatio для позитива против негативов. Такая метрика не очень устойчива, от сэмплирования к сэмплированию все меняется. И непонятно что оценивает, т.к. реальный сценарий использования модели будет другой. Либо модель предполагается как верхняя стадия рекомендаций, ранжирование, и тогда эта сотня кандидатов будет вовсе не случайная, а из кандидатогенератора. Либо модель используется как кандидатогенератор / одностадийная рекомендательная система, тогда в качестве негативов надо использовать весь каталог айтемов. Референс: On Sampled Metrics for Item Recommendation от Google Research.
Довольно много статей репортят такие метрики. Иногда на это можно закрыть глаза, если предлагаемый в статье inductive bias должен увеличивать скорее генерализацию, а не меморизацию. Но в статье про скейлинг моделей это довольно сомнительно, т.к. при росте модели может очень сильно буститься меморизация.
Я часто использую термины трансдуктивность / индуктивность. Индуктивность предполагает, что модель умеет работать на новых объектах, не встречавшихся в обучении. Например, языковые модели и рекомендательные модели, представляющие айтемы через текст, индуктивны. А модели, использующие для айтемов обучаемые айдишники, e.g. SASRec, трансдуктивны. Почитать про это можно в Situating Recommender Systems in Practice:Towards Inductive Learning and Incremental Updates от Microsoft.
Меморизация — это больше про способность запоминать корреляции в обучающих данных. Генерализация, т.е. обобщающая способность, больше про транзитивность, умение выводить новые знания. См. Wide & Deep Learning for Recommender Systems от Google.