Conceitos em Machine Learning

A ciência de dados (“data science” em inglês) é uma área interdisciplinar voltada para o estudo e a análise de dados, com o objetivo de extrair conhecimento para possíveis tomadas de decisão. De maneira similar, exite a mineração de dados (“data mining”), mas que o objetivo está mais na automação de tarefas e infraestrutura de organização e acesso dos dados, geralmente em grandes quantidades, além de descobrir propriedades até então desconhecidas deles – algumas vezes, os profissionais dessa área são chamados de engenheiros/arquitetos de dados.

Com a crescente quantidade e diversidade de dados coletados em muitas áreas (graças a um mundo cada vez mais “informatizado”), uma possibilidade é fazer uso dessa informação como ponto de partida para elaborar novos conhecimentos. Nesse ponto que entra o machine learning, que é uma das áreas da inteligência artificial.

Inteligência Artificial

O aprendizado permite fazer novas predições a partir de experiências obtidas – ou seja, através da interação com seu meio. O cérebro do ser humano costuma avaliar situações de modo a minimizar riscos. Esse comportamento serve de analogia para as máquinas, que funcionariam de modo mais matemático e estatístico que o cérebro humano. Elas avaliam dados históricos para inferir uma lei geral (chamada de modelo matemático e formada por equações, com variáveis e coeficientes), com fins de prever novos valores.

A Inteligência artificial (AI, do inglês “artificial intelligence”) é o estudo e projeto de sistemas que percebem seu ambiente e tomam atitudes que maximizam suas chances de sucesso. Ela busca métodos ou dispositivos computacionais que possuam ou multipliquem a capacidade racional do ser humano de resolver problemas, pensar ou, de forma ampla, ser inteligente.

Segundo a hipótese da singularidade tecnológica, a “reação desenfreada” de um agente inteligente atualizável com capacidade de auto-aperfeiçoamento (como um computador que executa inteligência artificial baseada em software) geraria cada vez mais rapidamente, indivíduos dotados de uma super inteligência poderosa que, qualitativamente, ultrapassaria toda a inteligência humana.

Para os computadores possuírem consciência (conhecimento de sua própria existência), acredita-se que deveriam formá-la por si mesmos a partir de suas interações com o meio, e não serem programadas para isso. As máquinas teriam reações heurísticas (que são processos cognitivos empregados em decisões não racionais) em vez da lógica racional.

Uma das formas para se diferenciar se essa singularidade foi ultrapassada é através do Teste de Turing. Ele serve para verificar a capacidade de uma máquina exibir comportamento inteligente equivalente (ou indistinguível) a um ser humano. O artigo da Wikipedia sobre Teste de Turing fala bastante sobre o assunto.

Existe a inteligência artificial fraca, na qual o objetivo é executar muito bem uma única função, e a forte, que combina um conjunto de tarefas executadas por um ser humano. O raciocínio de uma inteligência artificial pode ser realizado de dois modos: o indutivo, que extrai regras e padrões de grandes conjuntos de dados, e o dedutivo, que deduz comportamentos específicos a partir de proposições gerais.

Machine learning

O “machine learning” (ou aprendizado de máquina/automática/computacional) é o campo de estudo que dá aos computadores a habilidade de aprender sem serem explicitamente programados. Um algoritmo tradicional de programação recebe instruções lógica explícitas. Já no machine learning, o algoritmo de treinamento é condicionado para uma tarefa específica a partir de um (ou mais) conjunto(s) de dados.

Basicamente, a ideia principal é que ocorra um ganho de informação quando se vai de um estado A para um estado B. Quanto maior o ganho de informação, menor a entropia. Entropia é um termo geralmente associado ao que se denomina por “desordem”, o que em estatística muitas vezes é calculado pela incerteza. É assim que o algoritmo define qual o melhor caminho para continuar seguindo.

Em aprendizagem supervisionada, é dado um conjunto de amostras rotuladas de alguma forma útil em diferentes características. Então, alguma dessas três amplas categorias de tarefas podem ser utilizadas, conforme a natureza do “sinal” e “feedback” de aprendizado:

  • Aprendizagem supervisionada: exemplos de inputs e outputs desejados são apresentados ao computador por um “professor” e o objetivo é aprender uma regra geral que mapeia os inputs aos outputs (a regressão matemática é um exemplo, mas com output contínuo)
  • Aprendizagem não supervisionada: nenhum tipo de etiqueta dos dados é apresentado ao algoritmo de aprendizado, deixando-o sozinho para encontrar estrutura em seus inputs – são feitos agrupamentos automáticos de dados segundo seu grau de semelhança; a análise de cluster (“clustering”, ou agrupamento) é um exemplo desse tipo de aprendizado
  • Aprendizagem por reforço: o programa interage com um ambiente dinâmico no qual ele deve desempenhar um determinado objetivo (dirigir um veículo ou aprender um novo jogo já jogando, por exemplo), sem um “professor” lhe dizer explicitamente se ele chega perto de seu objetivo ou não

Na verdade, é escolhida uma amostra dos dados e calculado o erro entre o valor obtido pela função calculada e os dados observados: se o erro estiver maior que um limite pré-estabelecido, a função deve ser refeita e o valor recalculado; caso contrário, o procedimento é finalizado. Esses passos são realizados várias vezes (o que é chamado de iteração), de modo a refinar o resultado para que ele seja cada vez melhor. Em cada passo, é atualiza a tabela de pesos, relacionados a cada etapa.

Por isso, é separado inicialmente uma amostra (geralmente 70% dos dados), para depois o algoritmo tentar prever os dados que não foram usados e que correspondem aos 30% restantes. Os dados previstos e a mostra de 30% são comparados pelo programador, simulando uma ação futura de trabalhar com novos dados.

Quando o modelo estatístico se ajusta em demasiado ao conjunto de dados/amostra, isso é chamado overfiting. Nesse caso, ele apresenta alta precisão quando testado com seu conjunto de dados, porém tal modelo não é uma boa representação da realidade (novos dados) – pode-se dizer que o modelo decora padrões em vez de aprender. O contrário é chamado de underfiting: o modelo é muito simples em relação aos dados que está tentando modelar e acaba subestimando a realidade.

Existem algumas finalidades do machine learning, como reconhecimento binário (se alguma coisa é ou não é), detecção de anomalias (fraudes em sistemas), previsão de valores, classificar amostras, etc. É comum usar técnicas de machine learning se o volume de dados utilizados é muito grande (muitas vezes da ordem de terabytes de dados).

Big Data é uma forma de armazenar, acessar e manipular um grande volume de dados, estejam estruturados (como em um banco de dados) ou não (como em e-mails). Uma boa parte de projetos de Machine Learning não usa Big Data, mas o inverso costuma ser verdadeiro.

A Rede Neural Artificial (RNA) é um tipo de machine learning, que também pode ser entendida como uma analogia ao cérebro humano. Ela é formada por nós chamados de neurônios, com uma função de entrada (função soma) e uma função de saída (função de transferência) cada. Eles são associados em uma ou duas camadas, onde cada uma tem um propósito. Por exemplo a identificação de imagens, a primeira camada reconhece contornos, a segunda identifica cor, etc.

O “deep learning” é uma rede neural que tem mais de 2 camadas. Nem sempre aumentar o número de camadas faz um resultado ficar melhor. Tem algoritmos que não dá pra ver o que acontece exatamente (só entende-se a lógica).

No cérebro, a sinapse é que contém o conhecimento, enquanto que o neurônio só avalia, e isso é análogo às RNAs. A própria rede aprende as característica que devem ser consideradas. Veja mais informações no post Redes Neurais Artificiais.

As árvores de decisão (“random forest“) são um método de aprendizado para classificação, regressão e outras tarefas que operam construindo uma multiplicidade de árvores de decisão no momento do treinamento e gerando a classe (se estiver trabalhando com classificação) ou predição de média. Ele cria perguntas que tenham sim ou não como resposta e o algoritmo deve descobrir as perguntas que melhor separam os resultados – como no jogo cara a cara, que um jogador pergunta ao outro se tem óculos, se tem cabelo loiro, e outras perguntas para eliminar resultados.

O Q-learning (“Q” de qualidade) é uma técnica usada em machine learning que atua como um reforço do aprendizado. Esse aprendizado por reforço envolve um agente, um conjunto de estados S e um conjunto de ações por estado A. Executando uma ação a (que pertence ao conjunto A), o agente muda de estado para estado. Executar uma ação em um estado específico fornece ao agente uma recompensa (pontuação numérica). O objetivo do agente é maximizar sua recompensa total (futura). Isso é feito aprendendo qual ação é ideal para cada estado. A ação ideal para cada estado é a ação que tem a maior recompensa a longo prazo. Essa recompensa é uma soma ponderada dos valores esperados das recompensas de todas as etapas futuras, a partir do estado atual.