Цель любого алгоритма поиска может варьироваться в зависимости от используемой платформы. В то время как некоторые платформы нацелены на увеличение вовлеченности веб-сайта (например, количество кликов и время, затраченное на поиск новостных статей), другие стремятся максимизировать конверсию (например, покупку товаров или услуг, которые ищут), а в случае двусторонних торговых площадок нам часто нужно оптимизировать результаты поиска для обеих сторон рынка, то есть для продавцов и покупателей. Двусторонние торговые площадки стали жизнеспособной бизнес-моделью во многих реальных приложениях. Примеры отраслей включают в себя жилье (Airbnb), райдшеринг (Uber, Lyft), интернет-магазины (Etsy) и т. д. Возможно, обнаружение контента и ранжирование в поиске для этих Типы торговых площадок должны удовлетворять как спрос, так и предложение в экосистеме, чтобы расти и процветать.

Давайте обсудим проблемы или случаи, которые следует включить в решения

  1. Необходимость оптимизации в соответствии с предпочтениями хоста и гостя
  2. В таких случаях, как Airbnb, пользователь редко потребляет один и тот же товар дважды, и одно объявление может принять только одного гостя на определенный набор дат.
  3. Служить краткосрочным и долгосрочным интересам пользователя.
  4. Адаптация обучения для совместного поиска.
  5. Эффективное использование сеансов конверсии.

Поскольку пользователи обычно выполняют многократный поиск перед покупкой или бронированием, мы можем использовать эти внутрисеансовые сигналы, т. е. клики, контакты и т. д., для персонализации в реальном времени, где цель состоит в том, чтобы показать пользователю больше элементов, похожих на те, которые мы Думаю, им понравилось, так как смотрели сеанс поиска.

Чтобы иметь возможность вычислить сходство между элементами, с которыми взаимодействовал пользователь, и элементами, которые необходимо ранжировать, в основном используются вложения элементов, которые представляют собой низкоразмерные векторные представления, полученные в ходе сеансов поиска. Мы используем это сходство для создания функций персонализации для нашей модели ранжирования в поиске и для включения рекомендаций по похожим товарам.

Обычно рекомендация происходит в два этапа:

  1. Поиск кандидатов. Он создан, чтобы сузить область поиска до нескольких сотен элементов. Мы жертвуем точностью ради эффективности, чтобы быстро сузить пространство поиска. Вы можете считать это быстрым, но грубым, когда нужны артефакты, такие как встраивание поездов и приблизительный индекс ближайших соседей.
  2. Рейтинг: более медленный, но более точный шаг для оценки и ранжирования лучших кандидатов. Поскольку мы обрабатываем меньше элементов (т. е. сотни вместо миллионов), артефакты, необходимые здесь, — это модель на основе обученного ранжирования.

Возвращаясь к особенностям этого блога, мы будем заниматься встраиванием поездов для предметов и тем, как мы можем изменить потери и спроектировать пространство для встраивания, чтобы справиться с перечисленными выше проблемами или случаями.

Пункт- Вложения

Определить сеанс: непрерывная последовательность из M идентификаторов элементов, на которые нажал пользователь. Новый сеанс запускается всякий раз, когда между двумя последовательными кликами пользователя существует промежуток времени более t минут. t обычно составляет 30 минут или час.

Предположим, что нам дан набор S из s сеансов кликов, полученных от N пользователей, где каждый сеанс s = (I1,I2,I3….IM) ∈ S , I представляет Item и i ∈(1,2,….M )

Мы можем разбить набор сеансов кликов S на

1) Сеансы покупки, т. е. сеансы кликов, которые заканчиваются покупкой пользователем товара.

2) Исследовательские сеансы, т. е. сеансы кликов, которые не заканчиваются покупкой, т. е. пользователи просто просматривали.

Учитывая этот набор данных, цель состоит в том, чтобы изучить d-мерное вещественное представление v ∈ R ^ d каждого уникального элемента Ii , так что подобный элемент находится рядом в пространстве вложения.

Если у вас есть встраивание элементов, вы можете генерировать рекомендации I2I, используя поиск.

Модель Skip-Gram широко используется для изучения вложений из-за ее характера для сбора информации о совпадениях. его цель состоит в том, чтобы предсказать элементы контекста по заданному центральному элементу.

Целью модели является изучение представлений элементов с использованием модели скип-граммы путем максимизации целевой функции L по всему набору S сеансов поиска, определяемому следующим образом.

Вероятность P(Ii+j|Ii) наблюдения за элементом Ii+j из контекстной окрестности элемента Ii, по которому щелкнули, определяется термином вероятности softmax, который определяется ниже.

Softmax становится узким местом для обучения, если размер V (размер уникальных элементов) велик. Чтобы преодолеть и уменьшить вычислительную сложность, в литературе предлагаются такие методы, как отрицательная выборка, контрастная оценка и иерархический softmax. Отрицательная выборка является наиболее широко используемым подходом, и мы будем обсуждать потери на ее основе. Я подробно расскажу обо всех вышеупомянутых подходах в отдельном блоге.

Давайте определим базовую потерю пропускаемых граммов, используя отрицательную выборку:

Мы генерируем набор Dp положительных пар (I,c) нажатых элементов I и их контекстов c (т. е. щелчков других элементов одним и тем же пользователем, которые произошли до и после щелчка на элементе I в пределах окна длиной m), и набор Dn отрицательных пар (I , c ) кликнутых списков и n случайно выбранных списков из всего словаря V. Тогда цель оптимизации становится

Изменение вашей потери, чтобы включить ваше решение ваших проблем

Теперь давайте поговорим конкретно о том, как модифицируются потери пропусков граммов, чтобы решить вышеупомянутые проблемы одну за другой.

  1. Эффективное использование сеансов конверсии:

Поскольку мы знаем, что существуют исследовательские сеансы и сеансы покупки, при обучении сети встраивания оба типа сеансов добавляют контекстную информацию, но чтобы выделить сеанс как покупку, добавляется ценная информация, его можно использовать для адаптации оптимизации таким образом, чтобы на каждом этапе мы предсказываем не только соседние выбранные элементы, но и в конечном итоге купленный элемент. Эта адаптация может быть достигнута путем добавления купленного предмета в качестве глобального контекста, так что он всегда будет предсказываться независимо от того, находится он в окне контекста или нет. Ниже приведены изменения в туалетах, которые вам необходимо выполнить во время тренировки на приобретенном сеансе для исследовательского сеанса, используется общая цель пропуска грамма.

2. Адаптация обучения для объединенного поиска:

Как правило, в некоторых приложениях, таких как путешествия или бронирование отелей, люди обычно выполняют поиск в некоторых близлежащих регионах (рядом с рынком), что может вызвать дисбаланс в корпусе положительных и отрицательных элементов, например, Dp будет состоять из элементов на рынке, в то время как Dn выбираются случайным образом, они состоят из элементов на разных рынках. . Таким образом, этот дисбаланс создает обычно низкий уровень сходства с рынком обучения. Чтобы решить эту проблему, мы предлагаем добавить набор случайных негативов Dmn, взятых с рынка центрального товара I. Модифицированные потери отображаются, как показано ниже:

3. Служить краткосрочным и долгосрочным интересам пользователя:

Использование сеансов кликов очень хорошо помогает находить сходство между товарами одного и того же рынка. Как таковые, они подходят для краткосрочной персонализации во время сеанса, когда цель состоит в том, чтобы показать пользователю элементы, похожие на те, которые он щелкнул во время имманентного сеанса поиска.

Однако в дополнение к персонализации во время сеанса на основе сигналов, которые только что произошли в рамках одного сеанса, было бы полезно персонализировать поиск на основе сигналов из долгосрочной истории пользователя. В то время как некоторые межрыночные сходства фиксируются во встраиваниях элементов, обученных с помощью кликов, более основным способом изучения таких межрыночных сходств будет обучение на сеансах, построенных на предметах, которые конкретный пользователь приобретал с течением времени.

В частности, предположим, что нам дан набор Sb сеансов бронирования, полученных от N пользователей, где каждый приобретенный сеанс s(pur) = (I1,I2,I3….IM) определяется как последовательность товаров, приобретенных пользователем. j заказал вовремя. Попытка изучить вложения для каждого идентификатора элемента с использованием этого типа данных будет сложной во многих отношениях:

  • Во-первых, данные о купленных сеансах S(pur) намного меньше, чем данные о сеансах кликов S, потому что бронирования являются менее частыми событиями.
  • Во-вторых, многие пользователи приобрели только один или очень мало товаров в прошлом, и мы не можем извлечь уроки из сеанса продолжительностью 1.
  • В-третьих, чтобы узнать осмысленное встраивание для любого объекта из контекстной информации, необходимо как минимум 5-10 вхождений этого объекта в данные, и на платформе есть много идентификаторов предметов, которые были куплены менее 5-10 раз.
  • Наконец, между двумя последовательными покупками пользователя могут пройти большие промежутки времени, и за это время предпочтения пользователя, такие как цена, могут измениться, например. в связи со сменой карьеры

Чтобы решить эти очень распространенные проблемы на рынке на практике, мы обычно изучаем встраивания на уровне типов элементов вместо идентификатора элемента. Поэтому, чтобы рекомендовать пользователям элементы этих категорий элементов, нам нужно поместить пользователя, а также встраивание типа элемента в одно и то же пространство и чтобы Чтобы разобраться с изменением поведения пользователя, мы можем аналогичным образом изучить встраивание типа пользователя вместо идентификатора пользователя.

На практике нам нужно создать механизм для сопоставления идентификатора пользователя — -› тип пользователя, а также идентификатор элемента — -› тип элемента. Это можно легко сделать с помощью >кластеризация на основе некоторых важных полей, таких как цены, расходы, детали покупки и помощь в знании предметной области. Когда у вас будет готово это сопоставление, вы преобразуете приобретенные сеансы в последовательности типов пользователей и типов элементов, а затем используете аналогичную цель для обучения модели пропусков граммов. Мы должны иметь в виду, что в этом случае мы встраиваем тип пользователя и тип элемента в одно и то же пространство для встраивания, поэтому нам нужно оформить нашу входную последовательность как кортеж (тип элемента, тип пользователя), а сетевой узел будет состоять из всех уникальных Тип элемента, а также тип пользователя.

Данные сеанса выглядят так

s(pur) = (utype1 Itype1,…,utypeM ItypeM) ∈ S(pur)

s(pur) — это отдельные сеансы, связанные с покупками. Теперь давайте посмотрим на функцию потерь для обновления типа пользователя и типа элемента.

4. Необходимо оптимизировать настройки хоста и гостя:

Явно в двустороннем рынке вам нужно генерировать рекомендации не только с точки зрения пользователей, но и хостов, поэтому, чтобы позаботиться об их поведении, мы можем проверить их явные негативы для отклонения пользователю в качестве обратной связи. Отказ хоста может использоваться во время обучения для кодирования сигнала предпочтения хоста в пространстве встраивания в дополнение к сигналу предпочтения пользователя. Чтобы сформулировать его более точно, в дополнение к наборам D(pur) и D(neg) мы генерируем набор D(rej) пар (ut,It) user_type или типа Item, которые участвовали в событии отклонения.

Ниже приведена формулировка потерь поверх модели с пропуском грамма:

Аналогичные обновления могут быть выполнены для типа элемента.

Вот как будет выглядеть сеть, включающая как тип пользователя, так и тип элемента:

Вывод:

Мы обсудили, как мы можем адаптировать нашу функцию потерь к поставленной задаче в отношении модели пропуска граммов с подходом отрицательной выборки, чтобы добиться более качественных и эффективных вложений для выполнения рекомендаций.

Спасибо