Персонализация с несколькими слотами (предварительная версия)

Важно!

Начиная с 20 сентября 2023 г. вы не сможете создавать новые ресурсы Персонализатора. Служба Персонализатора отменяется 1 октября 2026 года.

Персонализация с несколькими ячейками (предварительная версия) позволяет вам настраивать таргетинг на содержимое в веб-макетах, каруселях и списках, где вашим пользователям отображается более одного действия (например, продукт или часть содержимого). С помощью многослотовых API-интерфейсов Персонализатора вы можете заставить модели ИИ в Персонализатора узнавать, какие пользовательские контексты и продукты управляют определенным поведением, учитывая их размещение в вашем пользовательском интерфейсе. Например, Персонализатор может узнать, что определенные продукты или контент привлекают больше кликов в виде боковой панели или нижнего колонтитула, чем в качестве основного выделения на странице.

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

Важно!

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

Когда следует использовать многослотовую персонализацию

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

  • Макеты веб-сайтов для домашних страниц: Многие плитки и области страниц предназначены для выделения содержимого в полях, баннерах и боковых панелях разных форм и размеров. Персонализация с использованием нескольких слотов позволит узнать, как характеристики этого макета влияют на выбор и действия клиентов.
  • Карусели: Карусели с динамически изменяющимся содержанием нуждаются в нескольких элементах для циклического цикла. Персонализация с использованием нескольких слотов позволяет узнать, как последовательность и даже продолжительность отображения влияют на клики и взаимодействие.
  • Связанные продукты/содержимое и встроенные ссылки: Как правило, пользователей привлекают путем встраивания или перемежения ссылок на дополнительный контент и продукты в баннерах, боковых панелях, виньетках и нижних колонтитулах. Персонализация с использованием нескольких слотов может помочь вам разместить ваши ссылки там, где они, скорее всего, будут более востребованы.
  • Результаты или списки поискаЖ Если у вас есть функция поиска в приложении, где вы предоставляете результаты в виде списков или плиток, вы можете использовать многослотовую персонализацию, чтобы выбрать, какие элементы выделять вверху с учетом большего количества метаданных, чем традиционные средства ранжирования.
  • Динамические каналы и плейлисты: Персонализация с использованием нескольких слотов может помочь определить короткую последовательность для списка видео или песен, которые будут воспроизводиться следующими в динамическом канале.

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

Как использовать многослотовую персонализацию

  1. Включение персонализации с несколькими слотами
  2. Создание объекта JSON для запроса ранжирования
  3. Вызов API определения позиций и базовых действий по ранжированию
  4. Вызов вознаграждений API

Включение персонализации с несколькими слотами

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

Если вы решили преобразовать цикл в многослотовую персонализацию, вы должны один раз выполнить следующие шаги для данного цикла Персонализатора:

Обновление экземпляра Персонализатора до многослотового

Примечание.

Многослотовая персонализация (предварительная версия) влияет на другие функциональные возможности службы "Персонализатор". Это изменение невозможно отменить. Прежде чем включить многослотовую персонализацию, ознакомьтесь с разделом Многослотовая персонализация (предварительная версия).

  1. Отключите автоматическую оптимизацию: на портале Azure в ресурсе Персонализатора в разделе Управление ресурсами на странице Параметры модели и обучения отключите автоматическую оптимизацию и сохраните.

Примечание.

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

  1. Обновите персонализатор на много слотов в портал Azure в ресурсе Персонализатора в разделе "Управление ресурсами" на странице параметров модели и обучения выберите "Экспорт параметров обучения". Поле arguments в загруженном файле json начинается с --cb_explore_adf. Измените это значение на --ccb_explore_adf и сохраните файл. CB (контекстуальные бандиты) и CCB (условные контекстуальные бандиты) — это алгоритмы, используемые Персонализатором для однослотовой и многослотовой персонализации соответственно. ADF (функции, зависящие от действий) означает, что действия выражаются или определяются с помощью функций.

Learning settings before change

Learning settings after change

На той же вкладке портала в разделе Импортировать настройки обучения найдите недавно измененный файл json и загрузите его. Это обновит ваш экземпляр Персонализатора до "Многослотового" Персонализатора, который теперь будет поддерживать многослотовые вызовы ранжирования и вознаграждений.

Создайте объект JSON для запроса ранга

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

Вы объявляете слоты, доступные для назначения действий в каждом запросе вызова ранжирования, в объекте слотов:

  • Массив слотов: необходимо объявить массив слотов. Слоты упорядочены: имеет значение положение каждого слота в массиве. Мы настоятельно рекомендуем упорядочивать определения слотов в зависимости от того, сколько вознаграждений/кликов/конверсий каждый слот имеет тенденцию получать, начиная с того, которое получает больше всего. Например, вы бы поместили большой блок «герой» на домашней странице для веб-сайта как слот 1, а не маленький нижний колонтитул. При прочих равных условиях, Персонализатор будет назначать действия с большими шансами на получение вознаграждения раньше в последовательности.
  • Идентификатор слота: каждому слоту необходимо присвоить slotId - строку, уникальную для всех остальных слотов в данном вызове ранжирования.
  • Функции слота: необходимо предоставить дополнительные метаданные, которые описывают и дополнительно отличают его от других слотов. Это так называемые функции. При определении функций слота вам необходимо следовать тем же рекомендациям, которые рекомендованы для функций контекста и действий (см. Функции для контекста и действий). Типичные функции слота помогают определить размер, положение или визуальные характеристики элемента пользовательского интерфейса. Например, position: "top-left", size: "big", animated: "no", sidebar: "true" или sequence: "1".
  • Базовые действия: необходимо указать идентификатор базового действия для каждого слота. То есть идентификатор действия, который был бы показан в этом слоте, если бы Персонализатор не существовал. Это необходимо для обучения Персонализатора в режиме обучения и для получения значимого числа при выполнении автономных оценок.
  • Достаточно действий: убедитесь, что вы вызываете ренжирование с большим количеством действий, чем слотов, чтобы Персонализатор мог назначить хотя бы одно действие каждому слоту. Персонализатор не будет повторять рекомендации действий по слотам: ответ ранга назначит каждое действие максимум одному слоту.

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

Ниже приведен пример объекта slots с некоторыми примерами функций. Хотя большая часть объекта slots будет стабильной (поскольку пользовательские интерфейсы обычно меняются медленно), большая часть его не будет часто меняться: но вы должны убедиться, что назначили соответствующие идентификаторы baselineAction для каждого вызова ранжирования.

"slots": [ 
    { 
      "id": "BigHighlight", 
      "features": [ 
            { 
              "size": "Large", 
              "position": "Left-Middle" 
            }
        ],
        "baselineAction": "BlackBoot_4656" 
    }, 

    { 
      "id": "Sidebar1", 
      "features": [ 
            { 
              "size": "Small", 
              "position": "Right-Top" 
            } 
        ],
        "baselineAction": "TrekkingShoe_1122"  
    }  
  ]

Используйте ответ API по запросу ранжирования

Многослотовый ответ по запросу ранжирования из вышеприведенного запроса может выглядеть следующим образом:

{ 
  "slots": [ 
        { 
          "id": "BigHighlight", 
          "rewardActionId": "WhiteSneaker_8181" 
        }, 
        { 
          "id": "SideBar1", 
          "rewardActionId": "BlackBoot_4656" 
        } 
    ], 
  "eventId": "123456D0-BFEE-4598-8196-C57383D38E10" 
} 

Воспользуйтесь rewardActionId для каждого слота и для правильной визуализации пользовательского интерфейса.

Вызов API вознаграждения

Персонализатор учится выбирать действия, которые позволят получить максимальное вознаграждение. Ваше приложение будет наблюдать за поведением пользователя и вычислять «балл вознаграждения» для Персонализатора на основе наблюдаемой реакции. Например, если пользователь щелкнул действие в "slotId": "SideBar1",, вы отправите «1» в Персонализатор, чтобы обеспечить положительное подкрепление выбранному действию.

API вознаграждения указывает идентификатор события для вознаграждения в URL-адресе:

https://{endpoint}/personalizer/v1.0/events/{eventId}/reward

Например, награда за событие выше с идентификатором: 123456D0-BFEE-4598-8196-C57383D38E10/reward будет отправлена на https://{endpoint}/personalizer/v1.0/events/123456D0-BFEE-4598-8196-C57383D38E10/reward/reward:

{ 
  "reward": [ 
    { 
      "slotId": "BigHighlight", 
      "value": 0.2 
    }, 
    { 
      "slotId": "SideBar1", 
     "value": 1.0 
    }, 
  ] 
} 

Вам не нужно предоставлять все оценки вознаграждений всего за один вызов API вознаграждения. Вы можете вызывать Reward API несколько раз, каждый с соответствующим eventId и slotIds. Если для слота в событии не получено вознаграждение, Персонализатор неявным образом назначит вознаграждение по умолчанию, настроенное для цикла (обычно 0).

Различия между однослотовой и многослотовой персонализацией

Существуют различия в том, как вы используете API ранжирования и вознаграждения с индивидуальной и многослотовой персонализацией:

Description Однослотовая персонализация Многослотовая персонализация
Элементы запроса вызова API ранжирования Вы отправляете объект контекста и список действий Вы отправляете контекст, список действий и упорядоченный список слотов
Запрос на ранжирование с указанием базового уровня Персонализатор примет первое действие в списке действий в качестве базового действия (элемент, который ваше приложение выбрало бы, если бы Персонализатор не существовал). Вам необходимо указать базовый ActionID, который использовался бы в каждом слоте.
Ответ на вызов API ранжирования Ваше приложение выделяет действие, указанное в поле rewardActionId Ответ включает в себя другой rewardActionId для каждого слота, указанного в запросе. Ваше приложение будет показывать эти действия rewardActionId в каждом слоте.
Вызов API вознаграждения Вы вызываете API вознаграждения с оценкой вознаграждения, которая рассчитывается на основе того, как пользователи взаимодействовали с rewardActionId для этого конкретного eventId. Например, если пользователь нажал на идентификатор, вы отправите вознаграждение в размере 1. Вы указываете вознаграждение для каждого слота, учитывая, насколько хорошо действие с rewardActionId вызвало желаемое поведение пользователя. Это может быть отправлено одним или несколькими вызовами Reward API с одним и тем же eventId.

Влияние включения нескольких слотов для цикла Персонализатора

Кроме того, при включении нескольких слотов необходимо учитывать следующее:

Description Однослотовая персонализация Многослотовая персонализация
Неактивные события и активация При вызове API активации Персонализатор активирует событие, ожидая оценки вознаграждения или назначая настроенное вознаграждение по умолчанию, если время ожидания вознаграждения превышено. Персонализатор активирует и ожидает вознаграждения за все слоты, указанные в eventId
Режим обучения API ранжирования Персонализатора всегда возвращает базовое действие и обучает внутренние модели, имитируя базовое действие. API ранжирования Персонализатора возвращает базовое действие для каждого слота, указанного в поле baselineAction. Персонализатор обучит внутренние модели имитации первых
Скорость обучения Обучается только на одном выделенном действии Может обучаться на взаимодействиях с любым слотом. Как правило, это означает большее количество действий пользователя, которые могут принести вознаграждение, что приведет к более быстрому обучению Персонализатора.
Офлайн-оценки Сравнивает производительность Персонализатора с базовыми и оптимизированными настройками обучения, в зависимости от того, какое действие было бы выбрано для них. (Ограничение предварительного просмотра) Оценивает производительность только первого слота в массиве. Для более точной оценки мы рекомендуем убедиться, что слот с наибольшим количеством наград является первым в вашем массиве.
Автоматическая оптимизация (предварительная версия) Ваш цикл Персонализатора может периодически выполнять автономные оценки в фоновом режиме и оптимизировать параметры обучения без вмешательства администратора (Ограничение предварительного просмотра) Автоматическая оптимизация отключена для циклов Персонализатора, в которых включены многослотовые API.

Следующие шаги