Aprendizado de Máquina (Machine Learning)


Mas afinal, o que é aprendizado de máquina? 

Imagine que gostaríamos de fazer um programa que detecte se uma foto contém ou não um carro. Para isso, precisamos resolver algumas questões:
  • Como poderíamos fazer tal distinção programaticamente? 
  • No universo dos carros, como programar todas as possíveis variações de cores, modelos, ângulos, escalas, formatos, e assim por diante?
  • Mesmo que isso fosse viável, como identificar fotos que nunca foram apresentas ao sistema?
Para resolver esse problema, não seria melhor se o programa simplesmente tivesse a capacidade de reconhecer os padrões de um carro? É justamente nesse ponto que o Aprendizado de Máquina entra em cena, pois essa área de Inteligência Artificial é uma evolução do estudo de reconhecimento de padrões.

Há várias definições para esse termo, mas com base no livro "The Hundred-Page Machine Learning", utilizaremos uma relativamente simples: 
  • Aprendizado de máquina é o processo de resolução de problemas práticos, através da coleta de dados, e utilização destes para construção de modelos estatísticos por meio de algoritmos; 
  • Os principais tipos de aprendizado de máquina são: aprendizado supervisionado, aprendizado semi-supervisionado, aprendizado não supervisionado e aprendizado por reforço. 
Ao contrário da perspectiva programática, o aprendizado de máquina busca chegar a solução de problemas através de exemplos, daí que se deriva a noção de aprendizado.


Conjunto de dados

Como mencionado acima, a coleta de dados é uma das etapas iniciais no processo de aprendizado de máquina, sendo assim, compreender os termos abaixo nos ajuda a entender o processo: 
  • Dataset: é o conjunto de dados que será objeto de estudo;
  • Features: é o conjunto de uma ou mais variáveis independentes;
  • Label: é o resultado, ou variável dependente, pode ser um valor numérico, uma classe, ou estruturas mais complexas. Datasets com labels também são chamados de datasets anotados. 

A título de exemplo, imagine que queremos estimar o peso de uma pessoa com base na altura. Neste caso, a altura é uma variável independente (feature), e o peso é uma variável dependente (label). Note que poderíamos usar mais variáveis independentes, por exemplo, a quantidade de calorias consumidas por dia, o sexo, e assim por diante.

Logo abaixo temos um exemplo de um dataset do peso em função da altura.

Peso em função da altura

Aprendizado supervisionado (Supervised learning)

No aprendizado supervisionado, o dataset contém as features e as labels, ou seja, para cada registro das features já temos o resultado da combinação delas. Com base nos valores conhecidos, podemos criar modelos de aprendizado para estimar as labels de registros que não fazem parte do dataset.

Voltando ao nosso exemplo do peso em função da altura, podemos fazer uma regressão linear, e estimar que o peso de uma pessoa de 170 cm é 74 Kg. Note que este é um valor estimado, pois mesmo para valores já conhecidos, nosso modelo irá apresentar variações, pois o modelo é relativamente simples e precisaríamos de mais features para aprimorá-lo.

Regressão linear - Peso em função da altura


Aprendizado não supervisionado (Unsupervised learning)

Ao contrário do aprendizado supervisionado, no não supervisionado não sabemos o resultado da combinação das features, ou seja, o dataset não tem labels. Neste tipo de aprendizado, o objetivo é construir modelos que transformem o dataset, por exemplo: agrupando registros (clustering), identificando outliers, ou reduzindo as dimensões do dataset.

Aprendizado semi-supervisionado (Semi-supervised learning)

O aprendizado semi-supervisionado é um híbrido entre supervisionado e não supervisionado, já que o dataset contém registros com e sem labels. Conseguir dados devidamente anotados é mais difícil e custoso do que dados não anotados, e o aprendizado semi-supervisionado procura tirar proveito de ambos os casos para melhorar o desempenho dos modelos.

Entretanto, considerar que dados sem labels podem melhorar o modelo parece contra intuitivo, mas voltando ao nosso exemplo do peso em função da altura, imagine que temos muitas features sem label (registros de altura sem o peso correspondente). Usando técnicas de aprendizado não supervisionado, teríamos mais base para para identificar outliers.

Outra técnica comum é treinar o modelo com os dados anotados, depois estimar as labels dos dados não anotados, e por fim re-treinar o modelo com todo o dataset.


Aprendizado por reforço (Reinforcement learning)

Dos principais tipos de aprendizado de máquina esse é sem dúvidas o mais complexo, porém é muito poderoso. Ele consiste em usar o estado do ambiente como entrada do modelo, estimar uma ação que pode ou não mudar o estado do ambiente, e a cada ação, uma recompensa é calculada, o que permite verificar se o modelo está melhorando ou piorando, que é de onde vem a ideia de reforço. O objetivo é maximizar as recompensas.

Esse tipo de aprendizado é ideal para tarefas que envolvam passos sequenciais, por exemplo:
  • Aprender um jogo
  • Aprender a controlar um robô
  • Logística

Aprendizado por reforço


Conclusão

Aprendizado de Máquina é uma subarea da Inteligência Artificial com foco no reconhecimento de padrões, e suas aplicações hoje são diversas.


Não deixe de seguir nosso blog parar ver em primeira mão informações com base em análise de dados e reconhecimento de padrões.


Este artigo foi escrito com base no livro "The Hundred-Page Machine Learning".

Comentários