O que saber antes de começar a usar Inteligência Artificial

Notícias sobre sistemas e produtos que utilizam Inteligência Artificial chegam até nós todos os dias. Estamos em um momento da nossa história em que temos poder computacional para resolver boa parte dos nossos problemas, mas será que todos eles precisam de IA?
Lauri P. Laux Jr | 18 de março de 2021

Notícias sobre sistemas e produtos que utilizam Inteligência Artificial e suas siglas (AI ou IA) chegam nas nossas redes sociais, e-mails e podcasts todos os dias. Estamos em um momento da nossa história em que temos poder computacional para resolver boa parte dos nossos problemas mais graves, e essas soluções parecem envolver alguma forma de Aprendizagem de Máquina ou Inteligência Artificial. Mas, afinal, o que é isso tudo? E o mais importante: minha empresa, meu produto ou sistema precisa investir em Inteligência Artificial?

A resposta simples para essa pergunta é: provavelmente não. ‘Mas, como assim? Vou perder essa oportunidade?’ Bem, se você ainda não tem uma solução para o seu problema, mesmo que precária, talvez partir direto para uma solução de inteligência artificial não seja o melhor caminho. Vou te explicar porquê.

O que não é Inteligência Artificial?

Ao contrário do que se pensa, uma IA não é uma coisa mágica que vai solucionar todos os desafios de uma empresa. Uma IA consegue resolver um determinado problema com um conjunto de regras criadas por seres humanos e baseadas em dados. Ou seja, IA não é uma ferramenta, mas sim um conjunto de técnicas. IA também não é uma análise de dados, embora isso seja fundamental, junto com a estatística, durante a criação de um modelo.

Porque não usar IA desde o início em um projeto pode ser uma boa ideia

É tentador pensar que a inteligência artificial é uma coisa que você pluga no seu produto e ela magicamente resolve tudo. Realmente, hoje temos poder computacional para que a IA esteja presente até mesmo nos nossos dispositivos móveis. Mas essa disponibilidade não se aplica a todos os problemas, pelo menos não sem um grande esforço envolvido para adequar o que existe ao seu produto.

Utilizar IA não significa que de uma hora para outra seu produto vai ter novas funcionalidades, como entender um texto qualquer e preencher campos de um sistema. A primeira coisa que você precisa se perguntar é: eu consigo resolver o que eu preciso utilizando um passo a passo, um algoritmo, que me dá um resultado satisfatório, um resultado ‘bom pra começar’? É bem provável que iniciar o produto com esse passo a passo seja muito mais barato e muito mais eficiente que modelar um aprendizado de máquina para a sua necessidade. Já escrevemos aqui sobre deixar as coisas simples. Bem, o recado continua valendo.

E pode ser mais eficaz também. O uso de um passo a passo, de uma heurística ou de um algoritmo faz com que o resultado passe a ser determinístico. ‘Como assim?’, você me pergunta. Ora, determinístico significa que para uma entrada/dados no seu sistema a resposta sempre é a mesma. Isso deixará seu sistema ‘inteligente’, mas tecnicamente você não está usando IA ou aprendizado de máquina. Você está usando uma heurística, que pode trazer ótimos resultados dependendo da aplicação, já que ela permite entender bem o algoritmo e adequá-lo para casos especiais justamente por ser mais descomplicada.

Além disso, também é importante ter clareza de qual problema você está tentando resolver para que o melhor algoritmo de IA seja escolhido como solução. Isso te dará mais chances de sucesso e vai evitar uma enorme perda de tempo e recursos.

O que é Inteligência Artificial?

No nosso contexto (sistemas), quando falamos em Inteligência Artificial estamos, na verdade, falando de aprendizado de máquinas, que é quando o problema que você precisa resolver não pode ser solucionado com uma heurística ou por um passo a passo.

Uma IA é, geralmente, especializada em uma tarefa, como identificar fotos, reconhecer texto ou prever qual produto você vai comprar a partir do seu comportamento de compras anteriores. Em todos esses casos é possível chegar a uma resposta apenas utilizando alguma técnica de aprendizado de máquinas, seja para descobrir padrões ou para identificá-los. Nós, humanos, somos ótimos em identificar padrões principalmente de imagens, mas o computador não - pelo menos não da forma tradicional em que os programamos. Nisso, a IA vem para viabilizar que os computadores possam executar essa tarefa com uma capacidade de processamento de dados que não temos.

Outra característica de problemas resolvidos por uma Inteligência Artificial é que eles são, via de regra, não determinísticos. De novo: ‘Como assim?’ 🤔  Bem, os algoritmos de IA geralmente devolvem uma resposta com um grau de certeza como ‘essa figura tem 99,8% de chance de ser um carro’. Apesar de o grau de certeza ser muito alto ainda existe, matematicamente, uma boa chance de não ser um carro. Esse grau de certeza é suficiente? Bem, depende. Se nesse nosso exemplo o resultado fosse para um carro autônomo provavelmente não, pois se os 0,2% que faltam correspondem ao risco de bater, então ele é muito alto. Porém, para um sistema que faz contagem de carros em uma rodovia esse erro de 0,2% pode ser aceitável para o que o sistema se propõe.

É muito difícil entender ou modificar um código que utiliza IA para um caso específico ou especial. As estruturas internas que analisam os dados são bastante abstratas e modificá-las para atender um caso específico é bastante desafiador, além de bem pouco recomendado. Caso você não esteja de fato tentando criar um novo algoritmo, modificá-lo para se encaixar em determinado problema não parece uma boa saída. O mais provável é que talvez você não tenha encontrado a melhor técnica de IA para o seu problema.

A Inteligência Artificial se destaca muito bem em certos tipos de problemas pela forma com que esses algoritmos funcionam, um deles é a classificação. No nosso exemplo anterior é analisar uma foto e dizer se tem um carro nela, ou se aquilo é um caminhão. Isso é muito fácil para nós humanos, mas praticamente impossível para uma máquina sem a ajuda de algum algoritmo de aprendizado de máquinas.

Classificando as coisas

Assim como nós, as máquinas também precisam aprender e isso leva tempo. Nós, humanos, não somos completamente conscientes disso, pois aprendemos a classificar as coisas do mundo de forma natural, dividindo o ‘bom’ do ‘ruim’, os tipos de animais, as cores, etc. Uma das formas de aprendizado de máquina é a classificação, ou seja, dizer a qual conjunto uma coisa pertence.

Vamos tomar como exemplo uma criança pequena aprendendo o nome das cores. Seus pais mostram um cartão verde e verbalizam a palavra ‘verde’ para a criança entender. Fazem isso com as outras cores: amarelo, azul, preto, branco, etc. Quando a criança erra seus pais, pacientemente, a corrigem dizendo o nome da cor que a criança errou. Em resumo, leva tempo e uma boa quantidade de exemplos e correções até que a criança fale ‘verde’ para o cartão que seus pais carinhosamente seguram com um sorriso no rosto.

Sendo simplista o aprendizado de máquinas é igual. Em vez de cartões nós estruturamos os dados em um arquivo com a informação da cor. A informação pode ser dados de uma imagem, dados convencionados em formato texto, enfim. Para ajudar o computador a aprender, nós criamos dois conjuntos de aprendizado de cores: o primeiro conjunto é cheio de exemplos onde a cor está associada corretamente com o seu nome. O segundo conjunto tem apenas as cores, é o conjunto para testar se a máquina aprendeu, e a partir da resposta da máquina nós medimos quanto ela acertou, ou seja, se ela aprendeu de verdade.

Então, mostramos para a máquina o conjunto de treinamento várias e várias vezes, como se fosse para ela fixar o conteúdo, e depois fazemos uma prova sem consulta. Usamos o conjunto de testes para saber o quanto ele aprendeu. Se a máquina acertar poucas respostas podemos mostrar o conjunto de teste mais algumas vezes para ele fixar o conteúdo, ou melhorar o conjunto de treinamento com mais exemplos.

como-funciona-o-aprendizado-de-maquina.png

A ilustração acima utiliza um tipo de aprendizado de máquinas chamado redes neurais e nesse link você consegue visualizar como esse aprendizado acontece. Mas, no contexto deste post isso não é tão importante. O que quero frisar aqui é que um pré-requisito para que o aprendizado seja feito da forma correta é uma grande quantidade de exemplos certos e errados, nosso conjunto de treinamento precisa ser completo e abrangente.

Quantos exemplos são necessários para chamar um exemplo de completo? Não existe uma regra, cada caso é um caso, mas podemos assumir que cada um precisa de cerca de 1000 exemplos para que a classificação seja relevante e dê certo, isto é, para dizer com uma margem de erro aceitável qual é a cor de um cartão.

Inteligência Artificial e a importância dos dados

Nosso exemplo de classificação mostra que um sistema de Inteligência Artificial precisa de dados. Afinal, ele vai usar um algoritmo ou técnica de IA em um conjunto bem grande de dados sobre o problema que estamos tentando resolver. Portanto, não faz sentido iniciar um projeto que tenha como pré-requisito a IA, se não temos dados suficientes e de qualidade. Geralmente a fase de tratamento de dados consome a maior parte do esforço de um projeto de IA (cerca de 80%).

Isso mesmo! Antes de criar um modelo ou escolher o algoritmo/técnica de IA que iremos utilizar, boa parte do trabalho consiste em limpar e enriquecer dados. Explico:

Digamos que você tem um banco de dados de compras feitas no seu site. Ele é bem completo e traz todas as vendas que você fez nos últimos 5 anos. Por isso, você quer utilizá-lo para saber se um comprador é bom pagador e, dessa forma, oferecer uma promoção especial para ele.

De modo grosseiro, para que fosse possível criar um bom conjunto de treinamento, precisamos apenas das informações relevantes da compra e do histórico do cliente. Esses dados precisam ser simplificados. Muitos dos campos não têm relação com as compras, e informações de pagamento talvez precisem ser enriquecidas, ou seja, complementadas com dados de outra fonte como empresas de análise de crédito. E dependendo do algoritmo de IA escolhido pode ser preciso transformar dados em entradas 0 e 1, sempre se atentando às escalas de grandezas que se está tentando comparar. Assim, os exemplos para o aprendizado da máquina serão mais assertivos e vamos diminuir nossa margem de erro.

O que eu preciso para começar?

A inovação é um processo evolutivo. Uma forma de introduzir a Inteligência Artificial em um sistema é identificar uma funcionalidade que se beneficie e resolva um problema real. Lembre-se que você precisa ter uma boa quantidade de dados para que a IA consiga aprender e te devolver respostas ou previsões úteis.

Os provedores de nuvem tem serviços gerenciados focados em IA que podem agilizar, e muito, a implementação de algumas atividades, entre elas o reconhecimento de texto (OCR) e a classificação de coisas. Usar um serviço pronto para provar um conceito e alavancar a adoção de outras soluções é um bom caminho. Também já escrevemos aqui sobre over engineering, ou como deixar algo desnecessariamente complexo, esse aviso também vale para esse tipo de projeto. Comece pequeno e utilize se possível a nuvem para te ajudar. Só porque se chama Inteligência Artificial não significa que a sua implementação tenha que ser ‘na unha’ e grandiosa.

Uma equipe com um bom entendimento de quais soluções de IA existem e quais as mais indicadas para cada tipo de problema é muito importante. Existe muito material disponível online e o Google tem um Guidebook de People e AI que é um bom ponto de partida para o aprendizado.

A participação de um engenheiro de dados ou alguém com formação em Ciência de Dados também. O estudo de casos de uso que deram certo é imprescindível para ajudar a guiar esforços e estabelecer expectativas realistas com a tecnologia.

E paciência e perseverança. Boa parte das soluções que utilizam IA não chegam a produção e são canceladas antes. Ter uma ideia clara que a estrada que leva a adoção da IA para ajudar a resolver problemas pode ser um pouco mais longa que o imaginado até que os resultados começam a aparecer.

Este conteúdo foi co-criado por Lauri Paulo Laux Jr, software engineer manager e Danielle Modelli Corrêa, desenvolvedora de software, ambos do time de D&D da ateliware.

Lauri P. Laux Jr
CTO at ateliware | Trabalhei muitos anos com Java para big corps, mas agora Python mora no meu coração. No tempo livre narro RPG, gamer de jogos single player e cervejeiro artesanal.