Устаревание контента в рекомендациях: возраст почти ни при чём
Вчерашняя новость может быть опровергнута, старый гайд остаётся полезным годами, а свежий айтем не нужен конкретному пользователю. Правило «старше N дней значит удалить» здесь слишком грубое, поскольку устаревание (staleness) — это не возраст, а вероятность, что айтем сохраняет достаточную полезность для пользователя и контекста.
Свежесть не равна полезности
Свежесть говорит, когда айтем был опубликован, новизна — насколько он незнаком пользователю, а релевантность — насколько отвечает запросу. Исторический документ может быть идеальным ответом на вопрос «что было известно о событии в 2019 году», а свежий айтем может быть знаком пользователю, который уже видел его в ленте.
Устаревать может и сама система, когда эмбеддинги и профиль пользователя перестают отражать реальность.
Почему TTL ломается
Жёсткий порог по дате предполагает, что полезность всех айтемов монотонно падает с возрастом и с одинаковой скоростью. В реальности же срочная новость устаревает за минуты, журналистское расследование живёт месяцами, а сезонный материал снова оживает через год.
Два механизма
В статье Decomposing Staleness in Recommender Systems устаревание разделено на два независимых механизма:
🟣Supersession (замещение) — айтем устарел, потому что появился более новый, который меняет статус той же темы. Сообщение «Елизавета II находится под медицинским наблюдением» устаревает в момент объявления о смерти. Это направленная связь между парой айтемов, поэтому возраст тут — недостаточный сигнал.
🟣Decay (затухание) — полезность падает сама по себе, без замены. Прогноз погоды, расписание, короткая акция. Это похоже на постановку задачи анализа выживаемости: предсказать вероятность, что айтем сохранит полезность на горизонте.
Архитектура
Supersession-модель — это классификатор, который получает связанные айтемы и решает, отменяется ли старый айтем новым. Разметку генерирует большая языковая модель, затем её знания дистиллируются в компактную.
Decay-модель предсказывает по содержимому айтема, какая доля интереса к нему уже исчерпана, и убирает его из набора кандидатов при потере значительной доли.
Оба фильтра срабатывают перед ранжированием, ответы кешируются заранее, поэтому ранкер перестаёт считать заведомо устаревших кандидатов, что экономит вычисления.
В онлайн-эксперименте бейзлайн с TTL почти не изменил долю устаревших показов, а пара обученных фильтров снизила эту долю примерно на 7%. За два года эксплуатации жалобы на устаревший контент упали почти наполовину.
Границы подхода
Оба фильтра работают на уровне айтема и не учитывают сигнал пользователя. Часть оставшихся жалоб относится к контенту, который человек уже видел, поскольку модель затухания (decay) пропускает длинный хвост медленно устаревающих айтемов.
Такой отдельный слой нужен далеко не всегда. Например, в RAG актуальность должна учитываться внутри отбора кандидатов. На корпусе NVD CVE свежий релевантный документ попадал в топ-50 лишь в одном запросе из пяти. Позднее ранжирование не вернёт айтем, потерянный на этапе отбора.
В Re3 адаптивное объединение семантической и временной оценок обошло жёсткие бейзлайны без использования бинарного фильтра. Одновременное попадание в контекст устаревших и актуальных документов снижает качество ответов даже при наличии правильного.
TTL остаётся дешёвым резервным механизмом для холодного старта и аварийного контроля. Задача зрелой системы в другом: предсказывать продолжение полезности, отличать замещение от затухания, а высокоуверенные проверки ставить до дорогого персонализированного ранжирования.
#aivkhub #recsys
Post #599
792

- 🔥 5
- ❤ 4
- 👍 4
- 👏 1