Встраивание — это метод преобразования дискретных переменных в непрерывные векторные представления.Первоначально он использовался в НЛП для встраивания слов.Цель состоит в том, чтобы отобразить слово, первоначально представленное одним горячим, в многомерное векторное пространство для формирования нового векторного представления. , и, таким образом, дают свойства, которые можно вычислить и сравнить. После этого также были созданы такие методы, как встраивание изображений и встраивание графов. Встраивание также используется для создания функций при проектировании функций.В этой статье рассказывается о том, как Airbnb использует технологию встраивания в своих сценариях рекомендаций.
1. Word2Vec
Говоря о встраивании Word, следует избегать классического Word2Vec.Word2Vec — это модель, которая изучает семантические знания без присмотра из большого объема текстового корпуса, который широко используется в обработке естественного языка (NLP). Он использует векторы слов для представления семантической информации слов путем изучения текста, то есть через пространство вложения семантически сходные слова находятся близко друг к другу в пространстве. Встраивание на самом деле является отображением, которое отображает слова из исходного пространства в новое многомерное пространство, то есть встраивание исходного пространства слов в новое пространство.
Если показать пример, то слова кошка и котенок семантически близки, тогда как собака и котенок не так похожи, а слова iphone и котенок еще более семантически различны. Изучение этого числового представления слов в словаре (то есть преобразование слов в векторы слов) позволяет нам векторизовать на основе таких числовых значений и делать некоторые интересные выводы. Например, если мы проделаем эту операцию над векторами слов котенок, кошка и собака: котенок - кошка + собака, результирующий вложенный вектор будет очень близок к вектору слов щенок.
Word2Vec делится на Skip-Gram (модель переходного слова) и CBOW (модель непрерывного набора слов), которые соответственно используют входное слово для прогнозирования контекста и используют контекст для прогнозирования входного слова. Его модельная структура очень похожа.
1.1 Skip-gram
В этой статье в основном резюмируется модель Skip-gram. В основном он разделен на две части: построение модели и получение встраивания через модель. По сути, skip-gram очень похож на идею автоэнкодера.Он также строит нейронную сеть и использует данные для обучения.После того, как модель подобрана, нам действительно нужен слой параметров или матрица весов в середине модель.
Обучающие данные модели skip-gram представляют собой естественные предложения, то есть типа «The quick brown fox jumps over the lazy dog."Предложения такие. Тренировочный процесс выглядит следующим образом:
- Сначала выберите входное слово, например "fox";
- После выбора входного слова должен быть определен параметр skip_window, указывающий количество слов, выбранных с одной стороны текущего входного слова. Предполагая 2, слово, полученное нашим окном, равно ['quick','brown','fox','jumps','over']. тогда весь размер нашего окна. Другой параметр num_skips указывает, сколько разных слов выбрано во всем окне в качестве нашего выходного слова, когдаskip_window=2,num_skips=2, полученные два набора (input word, output word) в виде обучающих данных ('fox','brown'),('fox','jumps').
- На основе этих данных нейронная сеть выводит распределение вероятностей, представляющее вероятность того, что каждое слово в нашем словаре является выходным словом.
Наша модель изучает статистику по количеству вхождений каждой пары слов. Тогда после завершения обучения при задании комбинации ввода-вывода, такой как («Франция», «Париж»), вероятность определенно будет выше, чем («Франция», «Токио»).
Что касается деталей обучения модели, то прежде всего слова в обучающих данных должны быть представлены одним горячим кодированием. Постройте словарный запас на основе артикля, а общее количество словарного запаса равно количеству измерений одного горячего. Однако, поскольку словарный запас всей статьи сам по себе очень велик, каждое слово представляет собой очень разреженный многомерный вектор после одного горячего кодирования. Затем мы будем передавать эти разреженные векторы в нейронную сеть, как показано ниже:
Скрытый слой не использует никаких функций активации, а выходной слой использует softmax для мультиклассификации. Мы используем парные словоформы с горячим кодированием (input word, output word) для обучения нейронной сети, а конечным результатом модели является распределение вероятностей.
Целевая функция Skip-gram:
потому что каждое словооба определяют соседние слова, основываясь на оценке максимального правдоподобия, ожидать условную вероятность всех выборокмаксимум. Представление softmax выходного слоя:
скрытый слой
Когда модель обучена, входные данные станут 300-мерным плотным вектором из 10 000-мерного разреженного вектора в скрытый слой, а затем отобразятся из 300-мерного плотного вектора в выходной слой, чтобы стать 10 000-мерным вектором. . В середине генерируются две матрицы весов, которые умножаются на входной вектор размерности 10000 и промежуточный вектор размерности 300. Нам нужно найти матрицу весов скрытого слоя. Как показано на рисунке ниже, мы наблюдаем за матрицей весов с двух точек зрения: левая сторона представляет матрицу весов, каждый столбец представляет собой вектор слов и вектор весов одного нейрона в скрытом слое, а каждая строка справа фактически представляет словесный вектор каждого слова. Другими словами, мы можем найти вложение слов, если получим матрицу весов.
Когда мы хотим получить одно горячее встраивание, нам нужно использовать одно горячее, чтобы умножить матрицу весов между входным слоем и скрытым слоем.. Однако из-за вычислительной сложности матричного умножения эффективность будет снижена. С другой точки зрения наблюдения за матрицей весов выше, вы можете использовать метод поиска для поиска матрицы весов.Согласно принципу векторного и матричного умножения, только ненулевые элементы в векторе могут генерировать входные данные для скрытого слоя, то есть вводсерединаПервыйбиты, весовая матрицасоответствующийСтрока является результатом встраивания, и этот метод поиска в таблице повышает эффективность встраивания.
2. Встраивание в Airbnb
В предыдущей статье упоминалось, что Embedding можно использовать в разработке функций, Airbnb, крупнейший в мире сайт краткосрочной аренды, опубликовал статью KDD 2018.Real-time Personalization using Embeddings for Search Ranking at AirbnbГенерал-лейтенант использует эту технику в двух сценариях на своей поисковой платформе:Аналогичная рекомендацияисортировка поиска, и успешно улучшили эффект рекомендации в исходных двух сценариях.
Основные сценарии использования Airbnb имеют следующие характеристики:
- Двусторонняя платформа краткосрочной аренды жилья (клиенты, арендодатели)
- Клиенты находят недвижимость с помощью поиска или рекомендаций системы (99% заказов поступают по этим двум сценариям).
- Клиент редко бронирует одно и то же объявление несколько раз.
- Листинг может быть арендован только одним клиентом за раз
- Существует серьезная нехватка данных
Индивидуальные рекомендации по ведению бизнеса также должны учитывать следующие ситуации:
- Персонализация в режиме реального времени для ранжирования в поиске, рекомендации по похожим спискам
- Учитывайте цели поиска, исходя из потребностей бизнеса
- Рейтинг кликов (CTR), время, потраченное на дом, увеличение количества конверсий при бронировании жилья и многое другое.
- В отличие от других продуктов, это не пользователь, который хочет иметь возможность бронировать недвижимость
- Для двустороннего рынка необходимо предоставлять услуги как покупателям (гостям), так и продавцам (хозяевам) на обоих концах рынка.
- Двусторонние рекомендации должны учитывать как резервирование пользователя, так и принятие хостом резервирования (Действия хоста: отклонение, принятие, отсутствие ответа).
- Для запроса (с указанием местоположения и времени в пути) оптимизируйте результаты поиска как для хозяина, так и для гостя:
- Перспектива клиента: вам нужно отсортировать по таким факторам, как местоположение, цена, тип, отзывы и т. д., чтобы получить списки, которые нравятся клиентам.
- Точка зрения арендодателя: вам нужно отфильтровать те списки, которые имеют плохие отзывы, домашних животных, время пребывания, количество людей и другие факторы, чтобы отклонить списки гостей, и понизить рейтинг этих списков.
- С помощью обучения ранжированию задача трансформируется в задачу попарной регрессии, причем заданный листинг принимается за положительную выборку, а отклоненный — за отрицательную.
Принимая во внимание описанную выше ситуацию, Airbnb использует технологию Embedding в своих сценариях рекомендаций для повышения качества рекомендаций, и два основных этапа ее реализации:
-
Используйте встраивание, чтобы изучить низкоразмерное представление списков и улучшить качество рекомендации похожих списков.
-
Используйте встраивание для моделирования долгосрочных предпочтений пользователей и повышения качества поисковых рекомендаций.
2.1 Встраивание списка для похожих рекомендаций
Встраивание листинга используется дляSimilar Listing Recommendation. Пользователь нажимает на дом для краткосрочной аренды на странице поиска, и после просмотра информации система порекомендует другие дома для краткосрочной аренды, похожие на выбранный дом внизу страницы. Однако, если вы будете следовать обычным рекомендациям, основанным на пользователях или продуктах, и использовать заказы в качестве данных, вы обнаружите, что данных на самом деле очень мало. Для решения этой проблемы предложен метод, предложенный в данной статье.in-session personalization. Он будет записывать списки, на которые вы недавно нажимали, и каждый список будет отображаться в соответствии с различными характеристиками дома.
Затем, в зависимости от того, нажали ли вы «Мне нравится» или поместили его в список желаний, сделали заказ, связались с арендодателем и т. д. по различным критериям, создайте серию сеансов кликов, каждый сеанс должен представлять собой непрерывную композицию из m объявлений, на которые нажал пользователь. Последовательность, если интервал между двумя кликами превышает 30 минут, считается сеансом, а затем последующие клики продолжают формировать следующий сеанс.
Как показано на рисунке выше, за каждым сеансом следует идентификатор записанного листинга, а затем каждый сеанс может формировать последовательность, которая вводится в модель Skip-Gram в word2vec, которую мы представили в первой главе, где каждый листинг эквивалентно слову. Целевая функция исходной модели Skip-gram с отрицательной выборкой выглядит следующим образом:
-
Представляет вектор встраивания этого листинга в текущий центр действий
-
Вектор внедрения, представляющий входной список за центром
-
представляет текущий входной вектор
-
Указывает, что текущий входной вектор является положительной выборкой.
-
Указывает, что текущий входной вектор является отрицательной выборкой.
2.1.1 Оптимизация 1: Забронированный листинг как глобальный контекст
В сценарии сеанса кликов мы используем забронированный список в качестве положительного образца и добавляем его в обучение модели в виде глобального контекста, то есть независимо от того, есть ли забронированный список вокруг текущего слова учебного центра, мы думаем, что забронированный листинг находится в его контексте, диапазон, целевая функция модифицируется следующим образом:
вУказывает последний забронированный список. И эта целевая функция выражает:Для текущего списка центров,, в качестве входных данных мы ожидаем листинг в его контексте, и окончательное забронированное объявление,Вероятность появления максимально высока, надеюсь, это не перечисление в контексте,Вероятность возникновения сведена к минимуму.
Обучение одиночной модели выглядит следующим образом:
2.1.2 Оптимизация 2: Адаптация обучения для группового поиска
Большинство пользователей Airbnb выполняют поиск в фиксированном месте, поэтому соответствующие отрицательные образцы также должны поступать из одного и того же места. Список, полученный с помощью отрицательной выборки, будет иметь много трудностей для выполнения этого условия, поэтому вторая оптимизация заключается в добавлении к целевой функции отрицательной выборки из того же местоположения.
вЭто отрицательный образец, взятый в том же месте. Обратите внимание, что толькоПеред , нет знака суммирования, потому что каждый шаг обучения имеет только один зарегистрированный листинг.
2.1.3 Проблема холодного запуска
Решение Airbnb для новой проблемы холодного старта очень простое: найдите 3 наиболее похожих объявления в радиусе 10 миль и усредните их вложения в объявления. В документе упоминается, что 98% новых проблем с холодным запуском могут быть решены с помощью этого простого метода.
2.1.4 Оценка эффекта
Эффект от встраивания листинга оценивается в автономном режиме.Стандарт оценки заключается в проверке того, насколько вероятно, что последнее объявление, рекомендованное пользователем по клику, в конечном итоге создаст резервирование. Соответствующие шаги следующие:
- Получите списки, на которые недавно кликнул пользователь, а также список кандидатов на списки, которые необходимо отсортировать, и списки, которые пользователь наконец забронировал.
- Вычислить косинусное сходство между списками, по которым кликнули, и списками-кандидатами в пространстве встраивания.
- Сортируйте списки кандидатов по сходству и наблюдайте за положением окончательных забронированных списков в рейтинге.
Тогда эффект следующий:
Горизонтальная ось на приведенном выше рисунке представляет количество кликов до окончательного резервирования для достижения заранее определенного списка, а вертикальная ось представляет средний рейтинг окончательного заранее определенного списка в рейтинге рекомендаций. Мы видим, что эффект от добавления отрицательной выборки к фиолетовой линии самый лучший, а ее средняя позиция в рейтинге самая высокая.
Кроме того, кластеризация также может использоваться для наблюдения за эффективностью встраивания.Как показано на рисунке ниже, видно, что агрегация похожих списков по-прежнему очевидна.
2.2 Встраивание типа, используемое в поисковой рекомендации
Встраивание листинга используется в аналогичных сценариях рекомендаций, но для долгосрочных рекомендаций по поиску и сценариев, которые не находятся в одном и том же месте. Например, предыдущая сессия пользователя искала дома в Чэнду, но до этого он также жил в Шанхае, Гуйяне и Пекине, и у него тоже были свои интересы и предпочтения. Но встраивание листинга здесь не применяется по следующим причинам:
- Набор обучающих данных небольшой
- Многие пользователи бронировали только один раз в прошлом, и эти данные нельзя использовать для обучения модели (проблема разреженности в высоких широтах).
- Необходимо дополнительно удалить те объявления, которые в общей сложности забронированы на платформе несколько раз (например, объявления, которые меньше 5-10 раз).
- Промежуток времени слишком длинный, возможно, предпочтения пользователя изменились.
Поэтому в этом вопросе Airbnb выделила детализацию проблемы жирным шрифтом и объединила пользователей и объявления в соответствии с правилами, чтобы сформировать user_type и listing_type. Затем в соответствии с user_type и listing_type объединяются в забронированную сессию для обучения. Правила агрегации также очень просты: сначала корзины делятся по значению атрибута листинга, а затем корзины объединяются, как показано на следующем рисунке:
Таким образом, данные, первоначально уточненные для одного пользователя, обновляются для пользователей того же типа, и данные становятся более плотными. Таким образом, даже для одного и того же списка или пользователя может измениться соответствующий тип (например, измениться поведение пользователя). Это также может очень хорошо решить проблему холодного запуска.Первые пять функций на уровне пользователя - это общие портретные функции, и новые пользователи могут быть сопоставлены непосредственно с помощью этих пяти функций.
целевая функция
User Type Embedding:
Listing Tyoe Embedding:
вПредставляет вектор параметров сопоставления для обработки входного списка.Указывает, что текущий входной вектор принадлежит отрицательным образцам в целевой области. Его форма входных данных (user_type, listing_type), здесь нужно сопоставить два вложения с одним и тем же пространством признаков. Так вот на том же образцезначение такое же.
2.2.1 Expllicit Negatives for Host Rejections
Здесь, поскольку необходимо учитывать поведение арендодателя при отказе, часть списка, которая была отклонена до user_id, добавляется к отрицательной выборке модели, и модели сообщается, что не рекомендуется рекомендовать этот тип списка пользователю. . Затем оптимизируйте приведенную выше целевую функцию:
User Type Embedding:
Listing Type Embedding:
Тренировочный процесс становится:
2.2.2 Персонализированный поиск в реальном времени на основе встраивания
После создания описанного выше внедрения необходимо использовать новые функции в модели ранжирования поиска. Всего в статье построено несколько новых функций:
Верхняя часть собирает исторические данные пользователя за последние две недели и обновляет их в режиме реального времени, что является краткосрочной функцией. Однако долгосрочная функция использует только один UserTypeListingTypeSim, преобразует текущий user_id в user_type, преобразует кандидат listing_id в listing_type и использует косинус для вычисления сходства.
Важность функции заключается в следующем:
Видно, что после добавления исходных функций важность вновь созданной функции внедрения по-прежнему очень высока.
Онлайн-эффект выглядит следующим образом:
Видно, что улучшение его основных показателей направленности DCU и NDCU значительно увеличилось.
2.3 Резюме статьи
Две технологии внедрения, предложенные Airbnb, рассматривают данные в сеансе поиска как аналогичную информацию о последовательности и изучают значение внедрения каждого идентификатора листинга с помощью метода, аналогичного word2vec (улучшенному). Среди них Listing Embeddings имеет наилучшую степень детализации.Он разделяет информацию о кликах пользователя по аренде (только просмотр в течение более 30 секунд является информацией о кликах на несколько сеансов, что подходит для краткосрочных сценариев персонализированной сортировки и рекомендаций в реальном времени). более грубая детализация (встраивание типов пользователей) и встраивание типов списков) для долгосрочного обучения по интересам, которое больше подходит для долгосрочных персонализированных сценариев. Учитывая характеристики двустороннего рынка, неконтролируемое обучение управляется добавлением сильных сигналов обратной связи «бронирование» и «отказ хозяина».
3. Резюме
Технология встраивания очень проста в использовании, поскольку она может преобразовывать разреженные векторы в плотные векторы, поэтому ее можно использовать для встраивания функций, и Airbnb является примером использования этой технологии в рекомендательных системах, успешно повышающей эффективность их рекомендаций. Следовательно, встраивание также можно рассматривать для создания новых функций в будущей разработке функций.
использованная литература
-
Real-time Personalization using Embeddings for Search Ranking at Airbnb