Use o modo Aprendiz para treinar o Personalizador sem afetar o aplicativo existente

Importante

A partir de 20 de setembro de 2023, você não poderá criar novos recursos do Personalizador. O serviço Personalizador está sendo desativado no dia 1º de outubro de 2026.

Ao implantar um novo recurso do Personalizador, ele é inicializado com um modelo não treinado ou em branco. Ou seja, ele não aprendeu com nenhum dado e, portanto, não terá um bom desempenho na prática. Isso é conhecido como o problema de "início frio" e é resolvido ao longo do tempo treinando o modelo com dados reais do ambiente de produção. O modo Aprendiz é um comportamento de aprendizado que ajuda a atenuar o problema de "início frio" e permite que você ganhe confiança no modelo antes de tomar decisões na produção, tudo isso sem exigir nenhuma alteração de código.

O que é o modo Aprendiz?

Semelhante a como um aprendiz pode aprender um ofício observando um especialista, o modo Aprendiz permite que o Personalizador aprenda observando as decisões tomadas pela lógica atual do aplicativo. O modelo do Personalizador treina imitando a mesma saída de decisão que o aplicativo. Com cada chamada à API de Classificação, o Personalizador pode aprender sem afetar a lógica e os resultados existentes. As métricas, disponíveis no portal do Azure e na API, ajudam você a entender o desempenho conforme o modelo aprende. Especificamente, quão bem o Personalizador está correspondendo à sua lógica existente (também conhecida como a política de linha de base).

Depois que o Personalizador for capaz de corresponder razoavelmente à lógica existente de 60 a 80% do tempo, você poderá alterar o comportamento do modo Aprendiz para o modo Online. Nesse momento, o Personalizador retorna as melhores ações na API de Classificação conforme determinado pelo modelo subjacente e pode aprender a tomar decisões melhores do que sua política de linha de base.

Por que usar o modo Aprendiz?

O modo Aprendiz fornece uma maneira de seu modelo imitar sua lógica de decisão existente antes de tomar decisões online usadas pelo aplicativo. Isso ajuda a atenuar o problema de inicialização a frio mencionado acima e fornece mais confiança no serviço personalizador e a garantia de que os dados enviados ao Personalizador são valiosos para treinar o modelo. Isso é feito sem arriscar ou afetar o tráfego online e as experiências do cliente.

Os dois principais motivos para usar o modo Aprendiz são:

  • Mitigando Inícios Frios: o modo Aprendiz ajuda a reduzir o custo de um treinamento de um modelo “novo” em produção aprendendo sem a necessidade de tomar decisões desinformadas. O modelo aprende a imitar sua lógica de aplicativo existente.
  • Validando recursos de ação e contexto: os recursos de contexto e ação podem ser inadequados, imprecisos ou sub-idealmente projetados. Se houver poucos recursos, muitos, incorretos, barulhentos ou malformados, o Personalizador terá dificuldade em treinar um modelo de bom desempenho. Conduzir a avaliação de recurso no modo Aprendiz permite que você descubra o quão eficazes são os recursos no treinamento do Personalizador e pode identificar áreas para melhorar a qualidade do recurso.

Quando você deve usar o modo Aprendiz?

Use o modo Aprendiz para treinar o Personalizador a fim de aprimorar a eficácia dele nos seguintes cenários sem afetar a experiência dos usuários:

  • Você está implementando o Personalizador em um novo cenário.
  • Você fez grandes alterações nos recursos de Contexto ou Ação.

No entanto, o modo Aprendiz não é uma forma eficaz de medir o impacto que o Personalizador pode ter na melhoria da recompensa média ou métricas de negócios. Ele só pode avaliar o quão bem o serviço está aprendendo sua lógica existente, considerando os dados atuais que você está fornecendo. Para medir a eficácia do Personalizador na escolha da melhor ação possível para cada chamada de classificação, o Personalizador deve estar no modo online ou você pode usar Avaliações offline durante um período em que o Personalizador estava no modo online.

Quem deve usar o modo Aprendiz?

O modo Aprendiz é útil para desenvolvedores, cientistas de dados e tomadores de decisões empresariais:

  • Os Desenvolvedores podem usar o modo Aprendiz para garantir que as APIs de Classificação e Recompensa sejam implementadas corretamente no aplicativo e que os recursos que estão sendo enviados ao Personalizador estejam livres de erros e equívocos comuns (como incluir carimbos de data/hora ou identificadores de usuário exclusivos). Saiba mais sobre como criar bons recursos de Contexto e Ação.

  • Os cientistas de dados podem usar o modo Aprendiz para validar se os recursos são eficazes no treinamento dos modelos do Personalizador. Ou seja, os recursos contêm informações úteis que permitem ao Personalizador aprender a lógica de decisão existente.

  • Os Tomadores de decisões empresariais podem usar o modo Aprendiz para avaliar o potencial de aprimoramento de resultados do Personalizador (ou seja, recompensas) em comparação com a lógica de negócios existente. Especificamente, se o Personalizador pode ou não aprender com os dados fornecidos antes de entrar no modo Online. Isso permite que eles tomem uma decisão informada sobre como afetar a experiência do usuário, na qual a receita real e a satisfação do usuário estão em jogo.

Comparação de comportamentos – Modo Aprendiz e modo Online

Aprender quando o modo Aprendiz difere do modo Online das maneiras a seguir.

Área Modo Aprendiz Modoonline
Impacto na experiência do usuário A experiência dos usuários e as métricas de negócios não serão alteradas. O Personalizador é treinado observando as ações padrão ou a lógica atual do aplicativo sem afetá-las. A experiência de seus usuários pode mudar, conforme a decisão é tomada pelo Personalizador e não por sua ação de linha de base.
Velocidade de aprendizagem O Personalizador aprenderá mais lentamente modo Aprendiz em comparação com o modo Online. O modo Aprendiz só pode aprender observando as recompensas obtidas por sua ação padrão sem exploração, o que limita o quanto o Personalizador pode aprender. Aprende mais rápido porque pode explorar a melhor ação do modelo atual e explorar outras ações para obter resultados potencialmente melhores.
"Teto" de eficiência de aprendizagem O Personalizador só pode aproximar e nunca exceder o desempenho da lógica atual do aplicativo (a recompensa média total obtida pela ação de linha de base). É improvável que o Personalizador alcance 100% de correspondência com a lógica do aplicativo atual e é recomendável que, depois que 60% a 80% de correspondência for obtida, o Personalizador seja alternado para o modo Online. O Personalizador deve exceder o desempenho da lógica do aplicativo de linha de base. Se o desempenho do Personalizador parar ao longo do tempo, você poderá realizar avaliação offline e avaliação de recursos para buscar melhorias adicionais.
Valor de retorno da API de Classificação para rewardActionId A rewardActionId sempre será a ID da ação padrão. Ou seja, a ação que você envia como a primeira ação no JSON da solicitação de API de Classificação. Em outras palavras, a API de Classificação não faz nada que seja visível para o seu aplicativo durante o modo Aprendiz. A RewardActionId será uma das IDs fornecidas na chamada à API de Classificação, conforme determinado pelo modelo Personalizador.
Avaliações O Personalizador mantém uma comparação dos totais de recompensa recebidos por sua lógica de aplicativo atual e os totais de recompensa que o Personalizador obteria se estivesse no modo Online nesse momento. Essa comparação está disponível para exibição na folha Monitor do recurso do Personalizador no portal do Azure. Avalie a eficácia do Personalizador executando as Avaliações offline, que permitem comparar o Personalizador de recompensas total obtido com as recompensas em potencial da linha de base do aplicativo.

Observe que é improvável que o Personalizador obtenha uma correspondência de desempenho de 100% com a lógica de linha de base do aplicativo e nunca a excederá. A correspondência de desempenho de 60% a 80% deve ser suficiente para mudar o Personalizador para o modo Online, em que o Personalizador pode aprender melhores decisões e exceder o desempenho da lógica de linha de base do aplicativo.

Limitações do modo Aprendiz

O Modo Aprendiz treina o modelo Personalizador tentando imitar a lógica de linha de base do aplicativo, usando os recursos de Contexto e Ação presentes nas chamadas de Classificação. Os fatores a seguir afetarão a capacidade do modo Aprendiz de aprender.

Cenários em que o modo Aprendiz pode não ser apropriado:

Conteúdo escolhido de maneira editorial:

Em alguns cenários, como notícias ou entretenimento, o item de linha de base pode ser atribuído manualmente por uma equipe editorial. Isso significa que as pessoas estão usando o conhecimento sobre o mundo mais amplo e a compreensão do que pode ser um conteúdo atraente para escolher artigos específicos ou mídia em um pool, sinalizando-os como artigos "preferenciais" ou de "destaque". Porque esses editores não são um algoritmo, e os fatores considerados pelos editores podem ser subjetivos e possivelmente não relacionados aos recursos de Contexto ou Ação. Nesse caso, o modo Aprendiz pode ter dificuldade em prever a ação de linha de base. Nessas situações, você pode:

  • Personalizador de Teste no Modo Online: considere colocar o Personalizador no Modo Online por tempo ou em um teste A/B se você tiver a infraestrutura e, em seguida, executar uma Avaliação Offline para avaliar a diferença entre a lógica de linha de base do aplicativo e o Personalizador.
  • Adicionar considerações e recomendações editoriais como recursos: pergunte aos seus editores quais fatores influenciam as escolhas deles e veja se você pode adicioná-los como recursos no contexto e na ação. Por exemplo, os editores em uma empresa de mídia podem realçar o conteúdo quando uma determinada celebridade está sempre no noticiário: esse conhecimento pode ser adicionado como um recurso de Contexto.

Fatores que aprimoram e aceleram o modo Aprendiz

Se o modo aprendiz estiver aprendendo e atingindo um desempenho correspondente acima de zero, porém, o desempenho está melhorando lentamente (não chegando a 60% a 80% de recompensas correspondentes em duas semanas), é possível que haja poucos dados sendo enviados ao Personalizador. As seguintes etapas podem ajudar a facilitar o aprendizado mais rápido:

  1. Adicionar recursos diferenciais: você pode fazer uma inspeção visual das ações em uma chamada de Classificação e os respectivos recursos. A ação de linha de base tem recursos que são diferentes de outras ações? Se eles tiverem a mesma aparência, adicione mais recursos que aumentarão a diversidade dos valores de recurso.
  2. Reduzir ações por evento: o Personalizador usará a configuração de “% de chamadas de classificação a serem usadas para exploração” para descobrir preferências e tendências. Quando uma chamada de Classificação tem mais ações, a chance de qualquer Ação em particular ser escolhida para exploração torna-se menor. Reduzir o número de ações enviadas em cada chamada de Classificação para um número menor (menos de 10) pode ser um ajuste temporário que pode indicar se o Modo Aprendiz tem ou não dados suficientes para aprender.

Como usar o modo Aprendiz para treinar com os dados históricos

Se você tiver uma quantidade significativa de dados históricos que gostaria de usar para treinar o Personalizador, poderá usar o modo Aprendiz para reproduzir os dados por meio do Personalizador.

Configure o Personalizador no modo Aprendiz e crie um script que chama a Classificação com os recursos de ações e de contexto dos dados históricos. Chame a API de Recompensa com base nos seus cálculos dos registros nesses dados. Talvez seja necessário aproximadamente 50.000 eventos históricos para ver o Personalizador atingir uma correspondência de 60% a 80% com a lógica de linha de base do aplicativo. Você pode conseguir resultados satisfatórios com menos ou mais eventos.

Ao treinar dados históricos, é recomendável que os dados enviados [recursos para contexto e ações, o layout no JSON usado para solicitações de Classificação e o cálculo de recompensa nesse conjunto de dados de treinamento] corresponda aos dados [recursos e cálculo de recompensa] disponíveis no aplicativo existente.

Os dados offline e históricos tendem a ser mais incompletos e mais barulhentos e podem diferir no formato do cenário em produção (ou online). Embora o treinamento a partir de dados históricos seja possível, os resultados podem ser inconclusivos e não são necessariamente um bom indicador de como o Personalizador aprenderá no modo Online, especialmente se os recursos variarem entre os dados históricos e o cenário atual.

Como usar o modo Aprendiz versus testes A/B

Só é útil fazer testes A/B de tratamentos do Personalizador depois que ele é validado e está aprendendo no modo Online, já que no modo Aprendiz, apenas a ação de linha de base é usada e a lógica existente é aprendida. Isso significa essencialmente que o Personalizador está retornando a ação do braço de "controle" do teste A/B, portanto, um teste A/B no modo Aprendiz não tem valor.

Quando você tem um caso de uso que utiliza o Personalizador e o aprendizado online, experimentos A/B podem permitir criar coortes controladas e fazer comparações de resultados que podem ser mais complexos do que os sinais usados para recompensas. Um exemplo de pergunta que um teste A/B poderia responder é: "Em um site de varejo, o Personalizador otimiza um layout e faz com que mais usuários faça check-out anteriormente, mas isso reduz a receita total por transação?"

Próximas etapas