Персонализация с несколькими слотами (предварительная версия)
Внимание
Начиная с 20 сентября 2023 г. вы не сможете создавать новые ресурсы Персонализатора. Служба Персонализатора отменяется 1 октября 2026 года.
Персонализация с несколькими ячейками (предварительная версия) позволяет вам настраивать таргетинг на содержимое в веб-макетах, каруселях и списках, где вашим пользователям отображается более одного действия (например, продукт или часть содержимого). С помощью многослотовых API-интерфейсов Персонализатора вы можете заставить модели ИИ в Персонализатора узнавать, какие пользовательские контексты и продукты управляют определенным поведением, учитывая их размещение в вашем пользовательском интерфейсе. Например, Персонализатор может узнать, что определенные продукты или контент привлекают больше кликов в виде боковой панели или нижнего колонтитула, чем в качестве основного выделения на странице.
В данной статье вы узнаете, почему многослотовая персонализация улучшает результаты, как ее включить и когда использовать. В контексте данной статьи предполагается, что вы знакомы с API-интерфейсами Персонализатора, такими как Rank
и Reward
, и имеете общее представление о том, как вы используете их в своем приложении. Если вы не знакомы с Персонализатором и принципами его работы, прежде чем продолжить, просмотрите следующие разделы:
Внимание
Персонализация с несколькими слотами находится в общедоступном предварительном просмотре. Функции, подходы и процессы будут меняться в зависимости от отзывов пользователей. Включение предварительного просмотра нескольких слотов навсегда отключит другие функции Персонализатора в вашем цикле. Многослотовую персонализацию нельзя отключить, если она включена для цикла Персонализатора. Прочтите данный документ и подумайте о возможных последствиях, прежде чем настраивать цикл Персонализатор для многослотовой персонализации.
Когда следует использовать многослотовую персонализацию
При отображении продуктов и (или) содержимого пользователям может потребоваться отобразить несколько элементов клиентам. Например:
- Макеты веб-сайтов для домашних страниц: Многие плитки и области страниц предназначены для выделения содержимого в полях, баннерах и боковых панелях разных форм и размеров. Персонализация с использованием нескольких слотов позволит узнать, как характеристики этого макета влияют на выбор и действия клиентов.
- Карусели: Карусели с динамически изменяющимся содержанием нуждаются в нескольких элементах для циклического цикла. Персонализация с использованием нескольких слотов позволяет узнать, как последовательность и даже продолжительность отображения влияют на клики и взаимодействие.
- Связанные продукты/содержимое и встроенные ссылки: Как правило, пользователей привлекают путем встраивания или перемежения ссылок на дополнительный контент и продукты в баннерах, боковых панелях, виньетках и нижних колонтитулах. Персонализация с использованием нескольких слотов может помочь вам разместить ваши ссылки там, где они, скорее всего, будут более востребованы.
- Результаты или списки поискаЖ Если у вас есть функция поиска в приложении, где вы предоставляете результаты в виде списков или плиток, вы можете использовать многослотовую персонализацию, чтобы выбрать, какие элементы выделять вверху с учетом большего количества метаданных, чем традиционные средства ранжирования.
- Динамические каналы и плейлисты: Персонализация с использованием нескольких слотов может помочь определить короткую последовательность для списка видео или песен, которые будут воспроизводиться следующими в динамическом канале.
Персонализация с использованием нескольких слотов позволяет вам объявлять «слоты» в пользовательском интерфейсе, для которых необходимо выбирать действия. Это также позволяет вам предоставить дополнительную информацию о слотах, которую Персонализатор может использовать для улучшения размещения продукта. Например, это большая коробка или маленькая? Отображает ли она заголовок или только функцию? Она находится в нижнем колонтитуле или на боковой панели?
Как использовать многослотовую персонализацию
- Включение персонализации с несколькими слотами
- Создание объекта JSON для запроса ранжирования
- Вызов API определения позиций и базовых действий по ранжированию
- Вызов вознаграждений API
Включение персонализации с несколькими слотами
См. нижеприведенный раздел Различия между персонализацией с одним и несколькими слотами, чтобы понять и решить, полезна ли для вас персонализация с несколькими слотами. Персонализация с несколькими слотами является предварительной функцией: мы рекомендуем вам создать новый цикл Персонализатора, если вы хотите протестировать API персонализации с несколькими слотами, поскольку включение данного параметра необратимо и повлияет на запущенный цикл Персонализатора.
Если вы решили преобразовать цикл в многослотовую персонализацию, вы должны один раз выполнить следующие шаги для данного цикла Персонализатора:
Обновление экземпляра Персонализатора до многослотового
Примечание.
Многослотовая персонализация (предварительная версия) влияет на другие функциональные возможности службы "Персонализатор". Это изменение невозможно отменить. Прежде чем включить многослотовую персонализацию, ознакомьтесь с разделом Многослотовая персонализация (предварительная версия).
- Отключите автоматическую оптимизацию: на портале Azure в ресурсе Персонализатора в разделе Управление ресурсами на странице Параметры модели и обучения отключите автоматическую оптимизацию и сохраните.
Примечание.
Многослотовая персонализация не будет работать, пока вы не отключите автоматическую оптимизацию. Поддержка автоматической оптимизации для многослотовой персонализации будет добавлена в будущем.
- Обновите персонализатор на много слотов в портал Azure в ресурсе Персонализатора в разделе "Управление ресурсами" на странице параметров модели и обучения выберите "Экспорт параметров обучения". Поле arguments в загруженном файле json начинается с --cb_explore_adf. Измените это значение на --ccb_explore_adf и сохраните файл. CB (контекстуальные бандиты) и CCB (условные контекстуальные бандиты) — это алгоритмы, используемые Персонализатором для однослотовой и многослотовой персонализации соответственно. ADF (функции, зависящие от действий) означает, что действия выражаются или определяются с помощью функций.
На той же вкладке портала в разделе Импортировать настройки обучения найдите недавно измененный файл 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. |