Entenda definitivamente o que é Machine Learning!

16 de Janeiro de 2019 | 3 meses atrás | Tempo de leitura: 14 minutos

Por Thiago Freitas, desenvolvedor full stack na 3MW

Machine Learning é o aprendizado de máquinas por meio da matemática para localizar padrões e probabilidades. Vejamos:

Primeiramente, o objetivo deste artigo não é apresentar códigos fontes ou exemplos diretamente na programação sobre Machine Learning. Aqui você, seja programador ou não, vai entender o que realmente é. Como o computador aprende? Ele realmente aprende? Venha conferir de uma forma super legal!

Metodologia da transmissão do conhecimento

Gosto sempre que iniciar qualquer artigo, palestra ou outras formas de transmitir o conhecimento com uma reflexão, uma história pessoal.

Quando adolescente, fiquei extremamente interessado em programação. Estava super ansioso, queria entrar de cabeça nesse maravilho mundo da linguagem das máquinas. Havia um termo relativamente popular: “Poliglota computacional”. Decidi dedicar quase que todo o meu tempo livre para aprender a programar. Então encomendei um livro “Aprenda a programar com Java”. Nossa! Java, a linguagem daquele momento! Que ansiedade para ler o livro, chegava da escola: “Mãe! Mãe! Meu livro chegou?”. Essa cena se repetiu por vários dias, ate que, nossa! Chegou! O tão aguardado livro. Naquele dia nem mesmo almoçar tive vontade, eu queria ler o livro e praticar, aprender, dedicar. O primeiro capítulo era lógica de programação, nossa! Que coisa incrível! O segundo capítulo, praticar lógica de programação! Uau! Eu estava aprendendo mesmo! Pensava comigo mesmo: “devo ser um gênio da computação, pois, isso é tão fácil de aprender”, mau sabia o que viria pela frente. Capitulo três, programação. Foi aí que tive o famoso “banho de água fria”. O autor estava ensinando a criar um programa para controlar uma moto-serra.

Poxa! Uma moto-serra? Eu não conseguia entender a ideia do programa x a prática real. Somente tinha visto moto-serra em filme de terror ou em video cassetadas do Faustão.

Tive minha primeira frustração na programação. Acredito que o autor foi infeliz na escolha do exemplo, algo muito longe da realidade de muitas pessoas.

Por que isso? Sempre que repasso conhecimento, lembro exatamente dessa situação. Me faz pensar em usar exemplos práticos, perto da realidade da maioria das pessoas.

Afinal, o que é Machine Learning?

Existem duas coisas básicas que você primeiro precisa saber:

  1. Significado: Machine Learning em tradução livre: “Aprendizado de Máquina”
  2. É uma das muitas áreas da IA (Inteligência Artificial)

Certo, com isso em mente, vamos começar pelo básico, a teoria básica em um linguajar popular. Machine Learning é a capacidade de computadores analisarem dados, identificarem um padrão e tomar decisões.

Bom, se eu te falar que Machine Learning esta muito mais presente no seu dia a dia do que você imagina?

Se você já entrou no Google fotos ou em uma foto do Facebook, você já percebeu que eles contornam os rostos das pessoas nas fotografias e, em muitos casos até mesmo te dizem de quem é aquele rosto. Isso é Machine Learning, ou seja, o computador aprende o que é um rosto e, com o tempo até mesmo a quem pertence.

Já usou Waze ou o Google Maps para encontrar a melhor rota para seu destino? Eles usam Machine Learning para analisarem os dados e sugerir a melhor rota. Não é um ser humano que esta sugerindo a rota, e nem mesmo uma pré-definição das rotas. O “software” analisa os dados de tráfego, rotas, prazo e outros fatores e “aprende” a sugerir melhores trajetos. Ainda neste tema, vamos usar um exemplo simples. Todos os dias, ao sair de casa para o trabalho, você usa o Waze para verificar qual a melhor rota. Porém mesmo com as rotas sugeridas do Waze, você sabe que existe uma rota no seu bairro, que corta uma boa parte do caminho, e você sempre usa esse trajeto pessoal até o ponto onde você realmente usará a sugestão do Waze. Um belo dia, ao abrir o Waze, ele te sugere uma rota já iniciando no seu trajeto pessoal. O Waze aprendeu seu trajeto favorito para sair do bairro, colocando-o automaticamente nas sugestões de rotas. Isso é Machine Learning. Através dos dados coletados, o Waze aprendeu a sugerir melhores trajetos para você.

Você provavelmente já passou por essa situação: entrou em um site, viu um anúncio qualquer, digamos que um tênis, e seu e-mail, sites, Facebook, celular, enfim, em muitos lugares começaram a sugerir aquele produto ou similar. Você começou a ser perseguido por anúncios segundo seu perfil. O computador identificou padrões do seu interesse e então começou a sugerir os produtos baseados no aprendizado do seu perfil.

Podemos ir para projetos, digamos, mais ousados:

Estes são alguns dos exemplos de Machine Learning. Ao pesquisar você encontrará centenas de projetos que utilizam de alguma forma o Machine Learning, e acredite, em breve, milhões.

Experiencia não realizada com Machine Learning

Outro caso interesse para o entendimento de Machine Learning é um exemplo onde ela não foi aplicada.

Na década de 90, um varejo norte-americano contratou uma consultoria para analisar padrões de seus clientes. Dentre as análises, uma das identificadas foi que a maior parte das pessoas começam suas compras dos corredores da direita para a esquerda. Como eles identificaram esse padrão? Assistiram muitas horas de gravação de video, para então identificarem esse padrão.

Hoje em dia, essa busca por padrões certamente seria feito por Machine Learning.

Polemicas em Machine Learning

Para falar sobre isso, iremos ver um caso curioso. Uma empresa norte-americana usou Machine Learning para identificar quais são as possíveis compradoras com alta probabilidade de estarem grávidas. O percentual de assertividade do Machine Learning foi tamanho, que a empresa fez campanhas para vendas de produtos a essas mulheres, porém, um pai descobriu que sua filha adolescente estava grávida por um anúncio enviado ao endereço da família, algo do tipo: “Parabéns pela sua gravidez, esperamos o melhor para você! Segue nossa sugestão de produtos…”

Existe um debate sobre Machine Learning, ética e privacidade. Isso é assunto para outro artigo. Você pode conferir a matéria que usei como exemplo nos links abaixo.

Este primeiro trata o assunto como Machine Learning, ou seja, como isso ajudou a empresa a identificar o padrão e aumentar o faturamento (produtos direcionados), apenas cita o caso inusitado.

essa matéria trata o caso do ponto de vista da privacidade.

Como o computador aprende? Como isso funciona?

Para entendermos, na prática, como funciona em uma linguagem popular, devemos primeiro entrar no maravilho mundo da matemática.

Para um computador, tudo é matemática. Lembro-me de ouvir em uma palestra de um ex-funcionário da NASA que segundo ele a matemática é a linguagem universal. Com a matemática, podemos explicar como o homem chegou até aqui, aprender mais sobre o universo, o fundo do oceano e além.

Você deve estar pensando que fui muito longe não é? Você vai perceber que não. Machine Learning é pura matemática. Vamos aprender como o computador através da matemática interage e “compreende” o mundo real.

Normalmente, ensinamos aos computadores o que eles devem fazer usando a matemática. Quando criamos um programa, estamos passando instruções matemáticas para o “software”, para que execute alguma ação.

Em Machine Learning é o oposto. O computador usa a matemática para “compreender” o mundo real. Através da matemática um computador pode identificar o que é um carro, uma placa, uma pessoa, um rosto, uma emoção, etc.

Vamos usar um exemplo de Machine Learning. Com este exemplo prático você compreenderá como o computador usa a matemática para aprender. Não se preocupe, não será uma moto-serra. Usarei um exemplo do nosso dia a dia.

Vamos lá?

Machine Learning para analisar emoções humanas em um texto

Vamos usar o seguinte exemplo. Quero que o computador leia um texto e me diga se quando a pessoa digitou, estava triste ou feliz. Em resumo, vamos passar para o computador um texto qualquer, ou melhor, uma frase, e usando Machine Learning, queremos que nos diga se a pessoa estava triste ou feliz.

Esse exemplo será perfeito para você começar a entender como funciona Machine Learning. Pois, você pode pensar: “o que tem a ver texto com matemática? É como você querer somar laranja com moto-serra.”

Lembre-se, é possível expressar tudo com matemática, e é isso que vamos fazer aqui.

Se tratando de Machine Learning, existem milhões de formas de resolver um mesmo problema, essa é uma delas.

O nosso objetivo, mais uma vez, é dizer se a pessoa estava triste ou feliz quando digitou aquela frase.

Transformando isso em matemática, temos 2 grupos, o grupo das emoções felizes e o das emoções tristes.

 

Agora vamos escrever as seguintes frases:

Comprei um carro e estou muito feliz!

Serei PAI, que alegria!

Não fui tão bom quanto pensei que seria na prova, fiquei chateado…

Meu voo foi cancelado e eu perdi o casamento. Que tristeza!

As duas primeiras frases são de alegria, as duas ultimas de tristeza.

O que faremos será atribuir um valor numérico para cada palavra. Algumas palavras serão classificas no grupo das emoções felizes, outras no das tristes.

Pegando nossa primeira frase de modelo:

Comprei um carro e estou muito feliz!

Vou atribuir valores para cada palavra.

Comprei = 0
um = 0
carro = 0
e = 0
estou = 0
muito = 0
feliz = 50

Ou seja, eu defini que todas as palavras têm um valor numérico de “0”, com exceção da palavra “feliz” cujo valor numérico é 50.

Agora vamos classificar a palavra “feliz” no grupo das emoções felizes:

 

 

Certo, se somarmos todas as palavras, e isso é possível já que todas tem um valor numérico, vamos obter o seguinte resultado:

Comprei(0) + um(0) + carro(0) + e(0) + estou(0) + muito(0) + feliz(50) + !

A soma disso é 50.

Temos:

Total de pontuação de palavras no grupo das emoções felizes = 50
Total de pontuação de palavras no grupo das emoções tristes = 0

Lembra que a palavra “feliz” pertence ao grupo de emoções felizes? Então temos uma pontuação maior no grupo de emoções felizes do que no outro, logo essa é a uma frase com emoções felizes.

Para ficar claro, vamos pegar outra frase:

Não fui tão bom quanto pensei que seria na prova, fiquei chateado…

A regra é a mesma, vamos atribuir um valor numero para todas as palavras.

Não = 0
fui = 0
tão = 0
bom = 0
quanto = 0
pensei = 0
que = 0
seria = 0
na = 0
prova = 0
, = 0
fiquei = 0
chateado = 50
... = 0 

Só que desta vez quero classificar a palavra “chateado” no grupo das emoções tristes.

 

Vamos somar:

Não(0) + fui(0) + tão(0) + bom(0) + quanto(0) + pensei(0) + 
que(0) + seria(0) + na(0) + prova(0)+ , + fiquei(0) + chateado(50) + …(0)

o total é 50, e temos o resultado:

Total de pontuação de palavras no grupo das emoções felizes = 0
Total de pontuação de palavras no grupo das emoções tristes = 50

Chegamos a conclusão que é uma frase com emoções tristes.

Pronto, assim sabemos diferenciar frases felizes das tristes. Até aqui super simples né? Pois, bem, isso não é Machine Learning! Nós apenas fizemos uma equação matemática simples que consiste em classificar dados, somar e achar qual grupo teve mais pontuação. Isso não é nem de longe um aprendizado de máquina. Iniciei esse paragrafo dizendo: “assim sabemos diferenciar frases felizes das tristes”.

Nós, humanos, com essa matemática simples, sabemos diferenciar. Temos agora que ensinar o computador, e acredite, ele fará muito mais do que você esta imaginando.

O próximo passo é realmente o Machine Learning. Vamos treinar o computador. Vamos passar ao software varias frases já com a classificação, ou seja, a resposta correta. Algo como:

 

Repare que cada frase já tem a resposta correta. Ou seja, o computador sabe qual é a resposta de cada frase, ele esta treinando, esta aprendendo. É bom você passar uma quantidade maior de dados para ele analisar e aprender, passei somente estas. Em um projeto real, seriam repassadas uma grande quantidade de frases e inclusive uma maior classificação de palavras em ambos os grupos. O que está acontecendo, na verdade, é que o computador esta analisando as frases X, as respostas e localizando padrões.

Depois disto, vamos testar o aprendizado de nosso programa. Vamos passar para ele frases diferentes das quais ele recebeu anteriormente, porém não passaremos as respostas, já que nosso objetivo nesse momento é analisar o quanto o treinamento do computador foi efetivo. Em outras palavras, com os dados do treinamento, quantas frases de teste ele acertou.

Este é um ponto muito importante em Machine Learning, após o treinamento do “software” com base nos dados, precisamos medir qual o percentual de acerto do computador nas frases que passamos para ele testar. Quanto maior o percentual de acerto, melhor nosso Machine Learning. Se o percentual for baixo, você deve aprimorar o ensinamento ao computador. Não iremos abordar isso agora, lembre-se, o artigo é para você entender o que é e como funcionado Machine Learning, não como programar.

O que o computador faz, de maneira assustadora (rsrsrs), sem que ninguém passe esses parâmetros para ele, é localizar padrões, vamos pegar essa frase de modelo:

Comprei um carro e estou muito feliz!

Ele “aprende” que a palavra “muito” seguido de “feliz” aumenta a probabilidade de ser uma emoção feliz, e vai além, ele começa a aprender que a palavra “comprei” é muito mais associada a frases felizes que em tristes. Ninguém disse isso ao computador, ele está aprendendo, localizando padrões, que na maioria das vezes, nós mesmo não percebemos e talvez nem perceberíamos! Com a aprendizagem, ele dará números automaticamente as demais palavras, começará a classificar palavras nos grupos que criamos, sem a intervenção humana. Fantástico e assustador!

Isso é Machine Learning!

Com a leitura deste artigo você tem uma compreensão maior sobre Machine Learning, agora você entende mais sobre esse assunto.

Muito obrigado,

Abraços, Thiago Freitas.