Внедрение технологий в рейтинг листингов Airbnb

машинное обучение искусственный интеллект

Рекомендации по похожим объявлениям и персонализированный поиск в режиме реального времени с использованием вложения

Эта статья была впервые опубликована 13 мая 2018 г. (Оригинальная ссылка), который в основном знакомит с практикой технологии вложения машинного обучения в поисковый рейтинг Airbnb и персонализированных рекомендаций в режиме реального времени. Airbnb Два специалиста по машинному обучению из Airbnb получилиЛучшая работа на треке KDD ADS 2018 г.(Бумажная ссылка), эта статья является кратким изложением сути этой статьи.
автор:Mihajlo Grbovic, старший специалист по машинному обучению в Airbnb
Переводчик: Ланг Янг, технический директор, Airbnb

Платформа Airbnb содержит миллионы различных объявлений, и пользователи могут просматривать страницы результатов поиска, чтобы найти то, что им нужно.сложные модели машинного обученияИспользуйте сотни сигналов для ранжирования списков в результатах поиска. Когда пользователи просматривают объявление, у них есть два способа продолжить поиск: вернуться на страницу результатов поиска или просмотреть «похожие объявления» на странице сведений о листинге (где будут рекомендованы объявления, похожие на текущее объявление). мы 99% бронирований приходят из поисковых рейтингов и рекомендаций похожих объявлений.

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

вложенный фон

Представление слов в виде многомерных разреженных векторов — классический подход к языковому моделированию. Однако во многих приложениях обработки естественного языка (NLP) этот подход был заменен новыми моделями, основанными на нейронных сетях, которые вкладывают слова и представляют слова в низкоразмерных измерениях. Новая модель предполагает, что слова, которые часто встречаются вместе, также имеют больше статистических зависимостей, и напрямую учитывает порядок слов и их совпадение для обучения сети. С разработкой более легко масштабируемого представления слов, непрерывных наборов слов и моделей Skip-gram, после обучения на больших текстовых данных было показано, что вложенные модели хорошо работают в различных задачах языковой обработки с максимальной производительностью.

Совсем недавно концепция вложенности была расширена от представления слов до других приложений, выходящих за рамки НЛП. Исследователи в области веб-поиска, электронной коммерции и двусторонних торговых площадок поняли, что так же, как вложение слов можно обучать, рассматривая последовательность слов в предложении как контекст, мы также можем обучать вложения, обрабатывая последовательности действий пользователя. , Установите пользовательские операции, такие как обучение пользователейЭлементы, на которые нажали и купилиилиПросмотренные объявления и клики по ним. Такое вложение использовалось в различных рекомендательных системах в Интернете.

Вложение листингов

Наш набор данных состоит из сеансов кликов N пользователей, где каждый сеансs =(L_{1},...,L_{n})∈ SОпределяется как непрерывная последовательность из n идентификаторов листинга, на которые нажимает пользователь; при этом, пока интервал времени между двумя последовательными кликами пользователя превышает 30 минут, мы считаем это новым сеансом. Основываясь на этом наборе данных, наша цель — изучить 32-мерное представление с действительным знаком.v(L_{i})∈R³чтобы включить все списки на платформе и сделать аналогичные списки смежными во вложенном пространстве.

Размерность вложенности списка установлена ​​наd = 32, такой параметр уравновешивает производительность в автономном режиме (обсуждается в следующем разделе) с пространством, необходимым для хранения векторов в памяти сервера онлайн-поиска, что позволяет лучше вычислять сходство в реальном времени.

Существует несколько различных вложенных методов обучения, здесь мы сосредоточимся на одном, называемом отрицательной выборкой (Negative Sampling) Технологии. Сначала он инициализирует вложенность как случайный вектор, затем считывает все сеансы поиска через скользящее окно и проходит стохастический градиентный спуск. градиентный спуск), чтобы обновить их. На каждом этапе мы будемЦентральные спискиобновить вектор и нажать его наПоложительно связанные спискиВектор (других списков, которые пользователь щелкает до и после щелчка по центральному списку, длина скользящего окна равнаm = 5) и произвольно выбирать списки изОтрицательно связанные спискиОтталкивайте (потому что велика вероятность того, что эти списки не связаны с центральным списком).

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

  • Использовать последний забронированный объект в качестве глобального контекста: для этой оптимизации мы используем пользовательский сеанс, который заканчивается тем, что пользователь бронирует объявление (отмечено фиолетовым на изображении выше).На каждом этапе этой оптимизации мы не только прогнозируем соседние объявления, на которые нажали, но также прогнозируем окончательное бронирование. Объявления. По мере перемещения окна некоторые объявления входят в окно и покидают его, в то время как забронированные объявления всегда сохраняются в нем как глобальный контекст (пунктирная линия на рисунке) и используются для обновления центрального вектора объявлений.
  • Адаптировать к случаю агрегированного поиска: пользователи сайтов онлайн-бронирования путешествий обычно выполняют поиск только в пределах своего пункта назначения. Таким образом, для данного основного списка списки с положительной корреляцией в основном включают списки из одного и того же пункта назначения, в то время как списки с отрицательной корреляцией в основном включают списки из разных пунктов назначения, потому что они случайным образом выбираются из всего списка выбранных списков. Мы обнаружили, что этот дисбаланс может привести к субоптимальному сходству внутри пункта назначения. Чтобы решить эту проблему, мы добавили случайный набор отрицательных примеров, выбранных из пунктов назначения из центральных списков.Dmn.

С учетом всех вышеперечисленных факторов конечная цель оптимизации может быть выражена как

это здесь

  • lвектор обновлений центральных списковv(l)
  • D_{p}это пара(l, c), представляющие (центральные списки, связанные списки) кортежи, чьи векторы будут сдвинуты ближе друг к другу во время оптимизации
  • D_{n}отрицательная пара(l, c), представляющие (центральные списки, случайные списки) кортежи, чьи векторы будут отталкиваться друг от друга во время оптимизации
  • l_{b}это окончательный забронированный листинг, рассматриваемый как глобальный контекст и перемещаемый к центральному вектору листинга
  • D_{mn}пара отрицательных примеров целевого измерения(l, mn), представляющий (центральные списки, случайный список из одного места назначения) кортежи, чьи векторы отталкиваются друг от друга

С помощью описанного выше оптимизатора мы получили качественные объявления, обучив вложение 4,5 миллионов активных объявлений на Airbnb, используя более 800 миллионов сеансов поисковых кликов.

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

Чему учит вложение?

Мы оцениваем характеристики списков, захваченных вложением, несколькими способами. Во-первых, чтобы оценить, включено ли географическое сходство, мы выполнили кластеризацию k-средних для гнезд, используемых для обучения. На приведенном ниже графике показаны 100 кластеров, созданных в Калифорнии, США, что подтверждает, что списки из похожих мест объединены в кластеры. Далее мы оценили среднее косинусное сходство между объявлениями разных типов (целые объявления, отдельные комнаты, общие комнаты) и ценовыми диапазонами и подтвердили косинусное сходство между объявлениями одного типа и ценового диапазона.Косинусное сходство намного выше, чем сходство между списками различных типов и цен. Таким образом, мы можем сделать вывод, что эти две функции листинга также хорошо включены в обученную вложенность.

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

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

автономная оценка

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

Один из способов оценить вложенность — проверить, насколько вероятно, что списки, которые они рекомендуют через недавние клики пользователя, в конечном итоге приведут к бронированию.

Более конкретно, предположим, что мы получили недавно просмотренные объявления и список кандидатов, который необходимо отсортировать, включая объявления, которые пользователь в конечном итоге забронировал; вычислив косинусное сходство между объявлениями, по которым щелкнули, и списками-кандидатами во вложенном пространстве, мы может ранжировать списки кандидатов и видеть, где в рейтинге находятся окончательные забронированные списки.

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

Мы сравнили несколько вложенных версий:

  1. d32 Общая подготовка, без каких-либо изменений исходного алгоритма вложения
  2. d32 использует глобальный в качестве пункта назначения для обучения, забронированный список как глобальный контекст
  3. d32 Глобальное обучение + обучение с отрицательным рынком, забронированный список используется в качестве глобального контекста, а случайная отрицательная выборка, выбранная путем выборки в месте назначения центрального списка, добавляется как отрицательное значение (см. приведенную выше формулу оптимизации цели)

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

Рекомендации по вложенным похожим объявлениям

На каждой странице сведений об объявлении Airbnb есть карусель «Похожие объявления», в которой рекомендуются объявления, похожие на текущее объявление и доступные для бронирования в тот же период времени.

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

После того, как у нас была вложенность, мы провели A/B-тестирование, сравнив существующие алгоритмы похожих списков с решениями на основе вложенности. В решении на основе вложенности похожие списки находятся поkпорожденный k-ближайшими соседями. Точнее, учитывая изученную вложенность списков, вычислив ее векторv(l)вектор со всеми объявлениями из одного пункта назначенияv(l_{j})Косинусное сходство между указанными листингами можно найтиlВсе аналогичные объекты, доступные для бронирования (если пользователь установил даты заезда и выезда, объект должен быть доступен для этого периода времени). завершитьk = 12Объявления с наибольшим сходством составляют список похожих объявлений.

A/B-тестирование показывает, что решения, основанные на вложении, делаютКликабельность похожих объявлений увеличилась на 21%., наконец-тоЧерез "Похожие объявления""Сгенерированные бронирования увеличились на 4,9%.

Персонализированный поиск в режиме реального времени на основе Nest

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

Для этого мы собираем и поддерживаем (на основе Kafka) два набора краткосрочных исторических событий в режиме реального времени для каждого пользователя:

  1. Hc: список идентификаторов, на которые пользователи нажимали за последние 2 недели.
  2. Hs: идентификаторы объявлений, которые пользователь пропустил за последние 2 недели (мы определяем пропущенные объявления как объявления с более высоким рейтингом, но пользователь пропустил это объявление и нажал на объявление с более низким рейтингом)

Далее, когда пользователь выполняет поиск, мы даем каждомуСписки кандидатовl_(i)Выполните 2 расчета сходства:

  • EmbClickSim: сходство вложенного пространства между списками кандидатов и списками, на которые нажал пользователь (отHc )


В частности, мы вычисляем изHcсходство между центроидами уровня назначения и выбрать максимальное сходство. Например, еслиHcВключите списки из Нью-Йорка и Лос-Анджелеса, тогда вложенные списки для каждого из этих двух пунктов назначения будут усреднены для формирования центроида уровня пункта назначения.

  • EmbSkipSim: сходство между списками-кандидатами и списками, пропущенными пользователем в пространстве вложенности (отHs)

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

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

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

Как видно из рисунка слева, чем большеEmbClickSimЗначения (похожие списки на списки, на которые пользователь недавно нажимал) приводят к более высокой оценке модели.

Как видно на рисунке справа, чем большеEmbSkipSimЗначения (похожие списки на списки, которые пользователь недавно пропустил, т.е. не понравившиеся списки) приведут к более низкой оценке модели.

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