Winner Recsys 2024: тук-тук и LLM в реки 💦
Не так давно прошла главная конференция по рекомендательным системам, в которой лучшей статьей года объявили
Towards Empathetic Conversational Recommender Systems (ECR). А это статья с использованием
LLM для задачи рекомендательных систем или поиска.
Почему это удивило?Когда
LLM только начинали входить в моду, то решили попробовать для задачи ранжирования и поиска. Первые статьи выглядели в стиле “А давайте подадим историю пользователя в LLM и попросим генерировать подходящее объявление из данного контекста?”. Ограничения такого подхода очевидны - 1) огромное количество айтемов может не поместить в контекст 2) тревиальные рекомендации, за счет незнания данных в нашей платформы. Решение этих проблем было прдложено напрмиер в
UniCRS - модель как акинатор пробует отыскать подходящий айтем, задавая вопросы. Отличие в том - что ни пользователь, ни модель не знают , что хочет сам юзер с самого начала, а осознают, что нужно во время диалога.
ECR как раз идейная наследница данного подхода
В чем суть и почему это так круто?У
ECR есть 2 основных модуля - 1) отвечает за предсказание айтема для пользователя 2) пояснение к рекомендации: почему именно этот этот айтем интересен пользователю. Модель использовали на датасете с фильмами - диалоги пользователей и других CR. В качестве таргета 1 и 0 - если модель нашла и не нашла подходящий для пользователя фильм.
Модуль 1: эмпатичная рек системаНа основе того, какие чувства (нравится, восторг, отвращение и тд) проявляет пользователь к сущностям (актеры, жанры и тд) в диалоге модуль пытается предсказать подходящий фильм. В нем также используется информация о глобальном отношении пользователей к фильму и сущностям - в модель подают отзывы о фильмах.
Очень советую перед чтением абзаца ниже внимательно следить за схемой модели.
Архитектурно это выглядит так: есть диалог пользователя, из которого достаем сущности (
local entities) , также достаем эмоции пользователя(user
emotions) . Собранные “чувства” тонизируем и складываем в 1 вектор - вектор чувств пользователя . Конкатим вектор чувств и вектора сущностей - понижаем размерность с помощью
W матрицы - получаем вектора сущностей с учетом эмоций(
Emotional Aware entity representation). Также достаем глобальные сущности из отзывов на основе соовстречаемости в отзывах к фильму (
global entities). Вектора локальных сущностей (
local emotion-aware entities) складываем в список вместе с глобальными сущностями (
global emotion-aware entities representation), добавляем промт для нашей задачи (
task-specific tokens), сюда же диалог пользователя с моделью и рекомендательный респонс к прошлому фильму (как он формируется в 2) модуле). Подаем это все в
LLM модель и просим предсказать фильм.
Модуль 2: эмпатичный поэтВ когда мы предсказали фильм для рекомендации пользователю, то нужно привлечь его внимание к тем сущностям, которые могут его заинтересовать в этом фильме - например, что Бред Пит (сущность: актер) очень круто сыграл в этом фильме и тд. Этот модуль тоже принимает на вход сущности фильма, токены с описанием задачи и сам фильм, но учим мы его генерировать отзыв к фильму. Отзывы берем только те, что 10/10, поэтому в них много “хвалебных” и эмоциональных описаний. В проде используем модельку для генерации текста
РезультатыМодель побила все модели на этом датасете (даже
UniCRS). Ее сравнивали с большим-большими генеративками (
ChatGPT-3,ChatGPT-3.5 и тд ) - с ними она тоже справилась.