Escrito por Rafael Kehl,
6 minutos de leitura
Machine Learning: a tecnologia que está impulsionando a inovação
Conheça os conceitos básicos de machine learning, a área que trouxe agilidade e qualidade para as tecnologias que você usa no seu dia a dia.
Se algum aplicativo que você usa for responsável pela interpretação, reconhecimento ou, até mesmo, ranqueamento de alguma coisa, pode apostar que ele usa machine learning em alguma parte do processo. Um exemplo que você certamente já usou é o Google, que possui um algoritmo complexo que vai interpretar sua pesquisa e trazer os resultados mais relevantes para você. Para quem tem algum produto da Apple, o Face ID usa um conjunto de sensores da parte frontal do aparelho para criar um mapa tridimensional do seu rosto e, em seguida, validar a sua identidade usando um algoritmo de machine learning. Isso tudo acontece em uma fração de segundo e possui um alto grau de precisão, que só é possível de ser alcançado através de algoritmos de machine learning!
Mas, afinal, o que é Machine Learning?
Existem muitas maneiras de definir o que é machine learning, mas eu gosto da definição que originou este termo, dada por Arthur Samuel, em 1959:
“Machine learning é a área de estudo que dá aos computadores a habilidade de aprender sem serem explicitamente programados.”
Apesar de parecer um pouco óbvia, essa definição deixa claro duas coisas: machine learning é um campo de estudo, e portanto está sempre evoluindo, e os computadores não são explicitamente programados para resolver aquela tarefa, ou seja, esses algoritmos são mais gerais e podem nos ajudar a resolver problemas similares àqueles para os quais eles foram originalmente pensados.
Um bom exemplo para entender melhor isso tudo, é o algoritmo que o próprio Arthur Samuel desenvolveu para jogar Damas. Ele acreditava que ensinando computadores a jogar iria nos ajudar a desenvolver estratégias para resolver problemas maiores e mais gerais, e escolheu o jogo de Damas para começar. Através de uma função que dava uma pontuação para cada movimento no tabuleiro, ele calculava qual movimento iria maximizar sua pontuação. Cada resultado era então armazenado para aumentar cada vez mais a capacidade de previsão e avaliação do algoritmo. Apesar de, inicialmente, o algoritmo não ser muito bom no jogo, Arthur o modificou para que ele aprimorasse a função de pontuação e, assim, aprendesse com o resultado de cada jogo. Com o tempo, o algoritmo ficou tão bom no jogo que conseguia vencer o próprio Arthur!
No final, Arthur estava certo, ao ensinar o computador a jogar Damas ele desenvolveu um método que evoluiu, junto com outros métodos, para o que hoje conhecemos como algoritmos de aprendizado por reforço, que são usados para resolver os mais variados problemas de planejamento e otimização, como planejamento de gastos ou custos, rotas de entrega e minimização de riscos, isso tudo sem deixar de ser muito bom em jogar!
E esse foi só o começo do que hoje é um robusto conjunto de ferramentas capaz de fazer tudo um pouco. Para melhor organizar esses algoritmos eles são geralmente separados em três grandes categorias: aprendizado por reforço, aprendizado supervisionado e aprendizado não-supervisionado. Cada categoria é boa em resolver um tipo de problema e, por isso, é importante conhecer bem todas elas para conseguir aplicar o machine learning de maneira efetiva.
Aprendizado supervisionado
Um algoritmo de aprendizado supervisionado é treinado com um ou mais exemplos, que são conjuntos de dados juntamente com o resultado desejado para cada dado desses conjuntos. Esses algoritmos têm como objetivo criar um modelo matemático que vai mapear cada nova entrada a um resultado aproximado, baseado no conjunto de treino que ele recebeu.
Os algoritmos mais comuns de aprendizado supervisionado são os de regressão e classificação. Algoritmos de regressão buscam encontrar uma relação entre duas ou mais variáveis usando uma função matemática, e são treinados, geralmente, com dados históricos. A forma mais simples de regressão é a regressão linear, que tenta encaixar uma reta em um conjunto de pontos da melhor maneira possível. Um exemplo seria um algoritmo que recebe o tamanho, número de quartos e número de banheiros de uma casa e responde com um valor de venda aproximado para ela.
Já os algoritmos de classificação, como diz o nome, buscam classificar um novo dado de acordo com o treinamento que ele recebeu. Ao contrário da regressão, o algoritmo busca uma função matemática que separe da melhor forma possível as diferentes classes que ele recebeu como exemplo. Novamente, o classificador mais simples é o linear, que separa as classes usando retas. Um exemplo de classificador seria um algoritmo que foi treinado com fotos de gatos e, ao receber uma nova foto, diria se aquela foto é, ou não, de um gato.
Aprendizado não-supervisionado
Um algoritmo de aprendizado não-supervisionado é treinado somente com um conjunto de dados, sem os resultados esperados, e tem como objetivo identificar características ou estruturas nesse conjunto. Esses algoritmos são, em geral, usados para agrupar dados similares, o que chamamos de clustering, para facilitar a análise dos dados ou permitir um tratamento diferenciado para cada grupo. O mais simples dos métodos de aprendizado não-supervisionado é o k-means, ou k-médias, que agrupa os pontos por proximidade.
Ele recebe como input os dados e a posição inicial de k pontos, que serão nossas médias. Cada dado do nosso conjunto é, então, agrupado com o ponto mais próximo. Por fim, a posição média, ou central, desse cluster recém formado é calculada e o ponto que define esse conjunto é movido para essa posição. Os clusteres são recalculados e o processo se repete até que não haja mais mudança, quando dizemos que o método convergiu.
Esses algoritmos são bem mais complexos que os supervisionados, e possuem aplicações importantíssimas para problemas onde o volume de dados é muito grande, onde seria muito custoso ou, até mesmo, impossível dizer o resultado esperado para o nosso conjunto de treino. Um exemplo seria para campanhas de marketing, onde o algoritmo agrupa e caracteriza os usuários para que eles recebam anúncios mais relevantes.
Aprendizado por reforço
Como vimos anteriormente, algoritmos de aprendizado por reforço são usados para resolver problemas de planejamento e otimização, e eles são bons nisso porque foram feitos para maximizar suas recompensas ao longo do tempo através da interação com o ambiente que ele está inserido. No caso do algoritmo de Damas de Arthur Samuel, a recompensa era dada através da função de pontuação criada por Arthur e o ambiente é o jogo de Damas.
Esse tipo de método busca treinar o computador para agir da mesma maneira que um agente inteligente iria se colocado nesse mesmo ambiente, e por isso eles são tão gerais e tão úteis. Basicamente, em qualquer processo no qual exista alguma tomada de decisão com uma recompensa associada, esse tipo de algoritmo terá alguma aplicação, em especial na teoria de jogos, estatística e teoria de controle. Os exemplos mais famosos dessas aplicações geralmente envolvem jogos complicados onde o computador venceu os melhores do mundo, como no xadrez, go e no Dota 2. Neste último exemplo, o algoritmo não só venceu o time campeão mundial, mas os bots tiveram que trabalhar em equipe para conseguir esse feito, como notou Bill Gates em seu Twitter!
#AI bots just beat humans at the video game Dota 2. That’s a big deal, because their victory required teamwork and collaboration – a huge milestone in advancing artificial intelligence. https://t.co/UqIUhh9xFc
— Bill Gates (@BillGates) June 26, 2018
Bill Gates comenta que o trabalho em equipe da OpenAI foi um grande passo para a Inteligência Artificial.
Bom, agora que sabemos o que é e pra que usamos o machine learning, é hora de colocarmos em prática essa tecnologia! Mas isso vai ficar pra próxima, enquanto isso, vocês podem dar uma olhada no curso gratuito de Machine Learning ministrado Andrew Ng, de onde tirei inspiração para parte desse post.
Fiquem ligados aqui no blog, em breve eu estarei de volta pra nós implementarmos nossa primeira aplicação de machine learning. Até mais!