Неожиданно хороший способ построить эмбеддинг документа в рекомендациях
Около года назад я присоединился к новой команде инженеров, обучающей трансформеры для рекомендательных систем. Здесь я познакомился с интересной техникой обучения эмбеддингов документа.
До этого я всегда использовал обучаемые векторы для каждого документа. Трансформер смотрел на историческую последовательность этих эмбеддингов истории взаимодействия и составлял своё представление пользователя. В одном из предыдущих постов я писал о том, что трансформер - это модель с гораздо меньшим количеством параметров, чем таблица с эмбеддингами, но не сказал, куда эта таблица с эмбеддингами, собственно говоря, девается.
Представим себе интернет-магазин. Как представить товар в виде эмбеддинга?
Очень просто: берём токены, из которых строится название товара, и складываем эмбеддинги этих токенов. То есть, если в вашем токенизаторе есть токены "iP", "hone " и "10", мы складываем их 3 эмбеддинга и получаем эмбеддинг товара "iPhone 10".
С первого взгляда может показаться, что это глупость. При применении метода мешка слов / токенов теряется вся информация об изначальных позициях этих токенов, нет возможности учесть взаимодействия токенов при получении внутреннего представления документов.
Но цель такого подхода - это не получить внутреннее представление товара по названию. Идея в том, чтобы информацию о товаре расположить в эмбеддингах токенов. Не наоборот.
То есть это не iPhone 10 - сумма "iP", "hone " и "10", а "iP" - это усреднение всех товаров, у которых есть iP в названии. Мы всё ещё как бы обучаем векторы для всех документов, но с помощью такого рода регуляризации мы заставляем каждый параметр использоваться в большом числе товаров.
С тем же намерением мы могли бы делать по 1 эмбеддингу на каждые 100 случайных товаров, и использовать его вместо любого из 100 товаров. Но мешок токенов всё-таки лучше, т.к. какая-то информация в токенах всё же есть. И, кстати, сколько бы я ни пытался перейти обратно на обучаемые векторы у каждого документа, я ни разу не получал улучшения на валидации.
@knowledge_accumulator
Post #121
2.13K
- 👍 22
- 🤯 5