O que é e como funciona Machine Learning?

Olá Web Developer!

Você provavelmente já deve ter ouvido o termo Machine Learning. Há momentos que parece algo muito fora da realidade, vindo de ficção científica. Porém, veremos aqui de forma bem simplificada o que é Machine Learning e como é possível as máquinas aprenderem.

O que é Machine Learning?

Machine Learning (também conhecido como Aprendizado de Máquina) é a aplicação da Inteligência Artificial de modo a permitir que máquinas possam aprender. Assim, podemos obter certos resultados sem precisar programar um sistema manualmente.

Onde podemos usar Machine Learning?

Qualquer sistema que precise tomar alguma decisão pode se beneficiar de Machine Learning, principalmente quando temos que tomar decisões baseadas em imensas quantidades de dados.

O exemplo mais comum são os carros autônomos. Outro exemplo bem conhecido é o catálogo de séries e filmes da Netflix, que te indica algo que provavelmente você gostará ao comparar o seu perfil com o de outros usuários parecidos.

Também podemos analisar movimentações bancárias para identificar fraudes, fazer previsões metereológicas, fazer uma análise do mercado financeiro, realizar diagnósticos médicos, etc.

Desenvolvedor Python Pleno
Formação: Desenvolvedor Python Pleno
Aprenda como trabalhar com banco de dados relacionais em aplicações Python utilizando a DB API e o MySQL.
CONHEÇA A FORMAÇÃO

Programação Comum vs Machine Learning

Se você desenvolve softwares sabe que ao programar nós precisamos de duas coisas: regras (o código que escreveremos) e dados (conjuntos de valores, normalmente fornecidos pelo usuário). Com esses dois itens, nosso programa nos entrega uma resposta.

Como exemplo, imagine que a gente queira criar um programa que indica se uma cor é clara ou escura. E então a gente precisa criar uma lógica para saber se uma cor é clara ou escura para finalmente escrevermos o código. Depois, nosso código irá receber as cores para então dar uma resposta, indicando se a cor é clara ou escura.

No Machine Learning nós mudamos um pouco o fluxo. Se quiséssemos que um programa nos diga se uma cor é clara ou escura, nós indicaríamos algumas cores (dados) e já indicaríamos se determinada cor é clara ou escura (respostas).

Com isso nós recebemos a regra, a qual a máquina irá usar para dizer se outras cores que ela ainda não conhece são claras ou escuras. Com isso teremos um programa que faz o que queremos sem a necessidade de termos nos preocupado em criar uma lógica e passar isso para o código com alguma linguagem de programação.

Isso pode parecer bobo, já que podemos descobrir se uma cor é clara ou escura com uma simples fórmula que é encontrada facilmente na Internet e pode ser escrita em poucas linhas de código.

function isDark(R, G, B){
    return (( R * 299 + G * 587 + B * 114) / 1000) <= 127;
}

Porém, imagine que ao invés disso você precise programar um sistema para controlar um carro pela cidade, obedecendo a sinalização, leis, evitando obstáculos, etc. Você consegue imaginar quantas linhas (e quantos IF’s) teria que escrever? Sem contar no tanto de possibilidades incomuns que podem acontecer, que obrigatoriamente necessitaria do carro poder saber tomar uma decisão que não esteja em sua programação.

Seria totalmente inviável escrever manualmente um código assim, sendo muito mais simples ensinar o sistema o que se deve fazer em cada ocasião e ele aprender com erros e acertos, até chegar ao ponto dele poder tomar suas próprias decisões em futuros eventos para o qual ele não foi programado.

Mas como as máquinas tomam decisões?

Existem vários tipos de algoritmos utilizados para o aprendizado de máquinas como Naïve Bayes, SVM, K-means, etc. Quando estudamos Machine Learning aprendemos os principais para poder escolher qual é o melhor para cada situação. Você não precisa necessariamente saber programar estes algoritmos, pois normalmente você utilizará bibliotecas que já possuem funções que os implementam.

Um dos que eu mais gosto de mostrar como exemplo é o KNN (k-Nearest Neighbors – K vizinhos mais próximos). Imagine que a gente pegue o código de algumas cores e joguemos em um plano cartesiano, simplesmente para podermos ter uma ideia visual do que acontece.
Vamos imaginar que obtemos o seguinte resultado:

Vamos dizer que os pontos vermelhos indicam as cores claras e os pontos azuis indicam as cores escuras. Nós mesmos indicamos quais são as cores claras e escuras ao computador. Isso se chama treinamento, etapa em que ensinamos a máquina. Portanto, é importante assegurar que a gente não tenha dados incorretos.

Após o treinamento, imagine que a máquina acabou de receber uma cor que nunca viu antes, que será indicada pelo ponto verde na imagem a seguir:

E agora, é uma cor clara ou escura? O KNN verifica quem são os vizinhos mais próximos. Podemos indicar quantos vizinhos queremos analisar.

Veja que se formos olhar os três pontos mais próximos do ponto verde, teremos 2 vermelhos e 1 azul. Então o computador classificaria esta nova cor como uma cor clara.

Conclusão

Machine Learning é basicamente possibilitar que sistemas possam aprender a tomar decisões a partir de certos algoritmos que fazem análise de dados, os quais devem estar bem formatados e organizados para evitar passar informações erradas ao computador na fase de treinamento.

Os lugares onde podemos aplicar Machine Learning são inúmeros, nos possibilitando desenvolver sistemas cada vez mais inteligentes para auxiliar nossas vidas.

Deixe seu comentário

Graduado em Análise e Desenvolvimento de Sistemas e Pós-graduado em Projetos e Desenvolvimento de Aplicações Web. Especializado em Front End e curte desenvolvimento de jogos. Estudante de Machine Learning.