Назад к подготовке

Как подавать разнотипные признаки в трансформер для RecSys

Есть числовые, категориальные и поведенческие признаки пользователя и товара. Как превратить их во вход трансформера?

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Категории кодируются embedding table, числовые признаки нормализуются и проецируются через MLP, тип признака тоже можно дать отдельным embedding. Для пользователя действия идут последовательностью, для товара атрибуты можно подать как set/sequence tokens и агрегировать pooling/CLS.

Полный разбор

Разнотипные признаки нужно привести к общей размерности. Категориальный признак получает embedding по id значения и, часто, embedding типа признака. Числовой признак нормализуется и проходит через маленький MLP или linear projection; вместе с ним можно подавать embedding имени признака. Так модель понимает не только значение, но и что это за поле.

Для товара набор атрибутов можно рассматривать как множество токенов: категория, бренд, цена, текстовые/image embeddings, статистики. Transformer или attention-блок агрегирует их в item embedding через CLS token, pooling или attention pooling. Для пользователя естественнее последовательность действий: item embedding, тип события, timestamp/позиция, давность, контекст.

После получения user и item embeddings есть два частых пути: dot product в общем пространстве для retrieval или MLP/cross network для реранжирования. Важно заранее решить, какие признаки доступны online, а какие можно считать только offline.

Теория

Transformer не требует только текстовых токенов; токеном может быть любой признак, если его корректно спроецировать в embedding space.

Типичные ошибки

  • Смешивать сырые числовые и категориальные признаки без нормализации и type embeddings.
  • Забывать, что item id огромного каталога плохо масштабируется как обычный словарь.
  • Не различать item representation для retrieval и feature-rich reranking.