[Resolvido] Dúvidas no aprimoramento da IA

Na janela de Inteligência Artificial na aba Aprimoramento temos a frase do usuário, a intenção sugerida pelo provedor de IA, a confiabilidade, as entidades e também as opções de concordar e discordar da sugestão. A primeira pergunta é: o que acontece, de forma geral, quando concordamos com a sugestão? O que é enviado para o provedor de IA?

Quando discordamos da sugestão de intenção, devemos escolher então uma outra intenção da nossa lista que melhor se enquadra nessa frase. Essa frase do usuário aparece então na aba de Aprovação, em que podemos aprovar ou rejeitar. Quando aprovamos, a frase é adicionada como exemplo na intenção escolhida no aprimoramento. Caso isso seja feito muitas vezes, a intenção fica com muitas frases de exemplo e isso faz com que aquela barra que mede a qualidade da intenção fique vermelha, indicando que a média de exemplos deveria ser menor. Quais seriam as melhores práticas para lidar com essa situação? Excluir e reformular exemplos? Não usar essa função de aprovação? Queria entender melhor esse cenário para que a taxa de acerto do bot seja maior.

Acesse: learn.take.net

O curso não responde exatamente as minhas dúvidas, as dúvidas inclusive são uma continuidade do que é dito na parte de NPL do curso. Agradeço pela ajuda ainda assim!

Na parte da aprovação eu só queria entender melhor o que acontece (de forma bem geral mesmo). A segunda dúvida é a que eu considero mais importante, entendi pelo curso que o ideal é no mínimo ter 10 frases de exemplo por intenção e tentar manter uma quantidade parecida de exemplos em todas as intenções. Mas por exemplo uma intenção como “Saudação” em que tenha exemplos como "olá, “oi” e “bom dia” não tem muitas opções do que pode ser colocado, 10 é quase o máximo. Agora uma intenção mais complexa e que pode ser expressada de muitas maneiras como a intenção de resolver um problema de cobrança indevida no boleto, que possui diversas formas de ser falada com diversos pontos específicos exige mais do que 10 exemplos para ser eficaz. E ainda assim, com o tempo, por causa do aprimoramento (ao rejeitar e depois aprovar na outra aba), mais e mais exemplos serão inseridos na intenção, deixando as coisas bem desequilibradas. Por isso pergunto sobre as melhores práticas em relação a isso.

Olá Ricardo! Vamos por partes então.

  1. Sobre a aprovação: Atualmente, quando o operador da tela de aprimoramento, concorda com uma interação classificada pelo provedor, o BLiP apenas armazena essa classificação. Ou seja, nada ocorre com seu modelo ou com sua base de intenções e entidades. O BLiP armazena essa informação para usar na aba de Análise de Modelo durante a criação da matriz de confusão.
  2. Sobre o número ideal de exemplos: Aqui temos várias colocações. A primeira, é que é um numero ideal, ou seja: “é bom que vc tente atingi-lo, mas estar fora dele não significa que seu modelo irá falhar”. O processo de modelagem é empirico, exige treino, esforço e bastante test & validate. Outra colocação é sobre uma intenção chamada “Saudação”. Como especialista em IA, eu sugiro fortemente que não modele uma intenção com o objetivo de detectar essas SmallTalks. Atualmente o BLiP ainda não se integra diretamente com esse tipo de solução, mas o DialogFlow tem uma API para isso e recomendo que você dê uma olhada nela. Outro ponto é sobre a intenção complexa: Nada te impede de quebrar uma intenção complexa em várias intenções mais simples, mesmo que todas elas gerem o mesmo efeito no fluxo do seu chatbot. Esta é, inclusive, uma boa prática pensando em modelagem de bases de conhecimento.
  3. Sobre o desbalanceamento eventual: Sim, de fato ele pode acontecer, mas ele só será um problema se seu modelo ficar ruim (ou seja, parar de entender o que é mais importante para você e/ou entender aquilo que não poderia estar entendendo). O time da plataforma trabalha constantemente pra aprimorar a experiência de uso de nossas soluções e já estamos redesenhando essa tela torná-la mais intuitiva e mais eficaz. Nesse sentido, minha sugestão é remodelar a base sempre que você se encontrar em um cenário de desbalanceamento que comece a impactar negativamente a experiência do seu usuário: remova exemplos de intenções que sejam muito similares, divida intenções grandes em intenções menores, considere usar bots especialistas são algumas dicas do que pode ser feito.

Espero ter ajudado!

Oi @ArthurIperoyg!

Obrigado pela resposta, me ajudou bastante a entender algumas coisas. Dividir as intenções complexas em outras mais simples eu já estava fazendo, ficou mais fácil de controlar as coisas. Olhei a API de SmalTalks e achei bem interessante, mas não consegui entender a diferença de ter uma intenção própria com esse tipo de conteúdo ou de utilizar a API do DialogFlow. Atualmente eu uso essa intenção em apenas um caso, pois a primeira mensagem do bot é uma saudação seguida de uma pergunta sobre o nome da pessoa, então muitas vezes a pessoa responde algo como “Bom dia” ou “Olá” primeiro, então identifico isso para perguntar novamente o nome e salvar numa variável.

Muito obrigado mais uma vez!

Oi Ricardo!

Novamente, demorei pra voltar aqui, mas segue minha resposta:

Quando você usa uma API externa ou um modelo de IA separado do seu próprio modelo, vc ganha em eficácia! Claro que isso depende muito dos provedores, mas de forma geral, vale a regra:
Quanto mais específicas são as intenções e quanto menos confusão possa existir entre elas, melhor o seu modelo se comporta.

Pense no seguinte exemplo:
Temos uma intenção para Abertura de Conta e outra intenção para Saudação
Agora, o usuário envia as seguintes frases (em momentos distintos, para facilitar a análise):

  • “Oi Bom dia”
  • “Quero abrir uma conta”
  • “bom dia, gostaria de abrir uma conta”

Veja que, os 2 primeiros exemplos são triviais, mas o terceiro não é. Quer dizer, para você, que está lendo, é bem trivial, mas para seu modelo de IA, ambas as intenções são válidas. Agora, se vc análisa como um pipeline: 1) faz parte do meu modelo de IA; 2) faz parte das smalltalks
fica bem mais fácil de tratar!

De novo, não existe 100% certo ou errado e nada disso tá escrito em pedra. To falando mais baseado em minha experiência.

1 Curtida

Oi @ArthurIperoyg

Ah sim, agora consigo enxergar melhor como funcionaria essa API. Essa análise em pipelines (ou camadas) faz bastante sentido e resolveria esse tipo de problema. Esse seu exemplo de Abertura de Conta e Saudação descreve bem a situação também. Como eu disse antes, não uso essa intenção Saudação no “Fluxo principal” mas sim em casos pontuais, como por exemplo impedir o usuário de de salvar “Bom dia” como o seu nome. E não uso justamente pelo motivo que você citou. Foi algo que não cheguei a testar mas intuitivamente percebi que poderia ocorrer essa confusão. Identificar apenas o “Bom dia” e não outra coisa mais relevante na frase seria uma situação em que poderia frustrar bastante o usuário.

Muito obrigado mais umas vez pela resposta e pela atenção. Me ajudou bastante a validar esse pensamento que eu já possuía mas não tinha tanta certeza sobre.

Abraços!