Introdução ao Aprendizado de Máquina

Ricardo Araujo
9 min readOct 1, 2020

Aprendizado de Máquina é uma área da Computação que estuda e desenvolve sistemas computacionais capazes de aprender. Este termo, assim como inteligência em inteligência artificial, é bastante abrangente a ponto de ser pouco útil. De forma mais específica, sistemas baseados em aprendizado de máquina são aqueles que são capazes de melhorar seu desempenho em alguma tarefa por meio da execução desta. Ou seja, são sistemas que aprendem com a experiência.

A natureza e origem desta experiência pode variar enormemente, dando origem a diferentes tipos de aprendizado. Ultimamente, porém, experiência são informações providas pelo ato de executar a tarefa e estas informações são dados. Não por acaso, a área de Aprendizado de Máquina, apesar de existir com este nome (ou o termo em inglês, Machine Learning) desde pelo menos 1959, tem recebido nos últimos anos grande atenção com o crescimento da quantidade de dados gerada e armazenada. Este é o preceito por trás dos sistemas baseados em aprendizado de máquina: utilizamos dados para treinar algoritmos que aprendem a executar certas tarefas. De certa forma, é uma forma de engenharia reversa automática — a partir dos resultados de um processo (dados), inferimos o processo que deu origem a estes resultados.

Um aparte: a tradução correta do termo em inglês, Machine Learning, deveria ser Aprendizado ou Aprendizagem de Máquina? Aprendizado é o resultado de um processo de aprendizagem e, de acordo, o que estudamos são exatamente processos que levam ao aprendizado de máquinas. Assim, o termo mais correto seria Aprendizagem. No entanto, uma busca no Google retorna mais de 4 milhões de resultados para “Aprendizado de Máquina”, contra apenas pouco mais de 200 mil para “Aprendizagem de Máquina”. Logo‍🤷‍♂️.

Outro aparte: emojis aparentemente podem ser mostrados em itálico.

A área de Aprendizado de Máquina, e a sub-área denominada Aprendizado Profundo em particular, é a principal responsável pelo renovado interesse em Inteligência Artificial (IA) e, com alguma frequência, os dois termos são usados de forma intercambiável em veículos não-especializados. Porém, IA é mais abrangente, envolvendo outros aspectos da inteligência que vão além do aprendizado.

Como a IA em geral, o grande interesse na área é devido a possibilidade de automatizar diversas tarefas que de outra forma seriam custosas demais ou impossíveis de serem realizadas, em particular em situações onde a programação direta e explícita de um computador não é suficiente.

Considere a tarefa de reconhecer uma pessoa específica em fotos. Humanos são muito bons nesta tarefa, mas ela ocorre em um nível subconsciente — sabemos solucionar o problema, mas não sabemos exatamente como nós a solucionamos. Isto torna muito difícil programar um computador para realizar a mesma tarefa. No entanto, podemos mostrar a um algoritmo de aprendizado de máquina múltiplas fotos de pessoas, indicando em quais a pessoa de interesse está presente, e deixamos o algoritmo aprender a reconhecer a pessoa a partir das fotos.

A enorme quantidade atual (e futura) de dados digitalmente acessíveis tornam técnicas de aprendizado de máquina muito atrativas, potencialmente transformando a maneira com que abordamos certos problemas e possibilitando aplicações que antes nem imaginávamos. Um exemplo deste último caso é o GPT-3, um sistema treinado sobre milhões de documentos textuais e que promete, por exemplo, criar interfaces e sistemas apenas descrevendo-os em linguagem natural.

Aprendizado de Máquina tem sido aplicado a uma grande quantidade de tarefas, como sistemas de recomendação (e.g. Netflix, Spotify), detecção de fraudes em operações bancárias, reconhecimento facial a partir de imagens ou vídeos, diagnóstico de doenças a partir de imagens, transcrição de fala, mineração de dados, síntese de texto e voz, e até carros auto-dirigíveis. Aprendizado de Máquina tem se tornado elemento central para a estratégia de grandes empresas como Google, Amazon, Microsoft e Apple.

Podemos dividir as metodologias de aprendizado de máquina em diferentes tipos de acordo com características dos dados, características dos algoritmos ou o objetivo da aplicação. Aqui, iremos definir e explorar, ainda que superficialmente, os principais tipos, para depois nos aprofundarmos nos de interesse.

Aprendizado Supervisionado

O Aprendizado Supervisionado é possivelmente o tipo mais comum atualmente. Nele, o algoritmo de treinamento tem disponível informação sobre se cada decisão do modelo é ou não correta. Esta informação, por vezes chamada sinal supervisório, é utilizada para ajustar o modelo se este cometer erros. O objetivo de um sistema de aprendizado supervisionado é identificar padrões em dados rotulados que permitam a inferência de rótulos em novos dados.

Vamos inspecionar como nós realizamos esta tarefa. Abaixo temos exemplos rotulados de dois tipos de Pokémon, tipo Água e tipo Luta (o rótulo se encontra embaixo de cada imagem). Observe-os com atenção seguindo a sequência dada, você vai ser testado sobre os conhecimentos obtidos.

Gotta catch'em all

Sua tarefa agora é rotular os Pokémon abaixo — isto é, dizer o tipo de cada um.

Alguém é pago para só pensar em novos Pokémons 🤯

Provavelmente você não teve muita dificuldade na tarefa. Os dois da esquerda são Luta e os dois da direita são Água. Enquanto você passava pelos exemplos rotulados (os exemplos de treinamento), seu cérebro procurava por padrões que distinguem as duas classes, formulando hipóteses e as testando sobre os dados — talvez você tenha inicialmente formulado a hipótese de que todos Pokémon de água são azuis, até chegar em um que não era, tornando necessário reformular a hipótese. Talvez alguns não tenham se encaixado perfeitamente na hipótese (afinal, Pokémons podem ser de mais de um tipo e eu não tenho a menor ideia se é o caso aqui) mas, ainda assim, no final foi possível classificar novos exemplos com sucesso.

O que você fez foi construir um conceito do que define cada tipo de Pokémon a partir dos exemplos rotulados. Os rótulos ajudaram tanto a definir o conceito como a validá-lo, dando a confiança necessária para classificar sem dificuldades os novos exemplos. De forma mais formal, você construiu um modelo de tipos de Pokémon, uma representação que captura características que são significativas dos exemplos de treinamento, e aplicou este modelo nos novos exemplos. A principal função de um modelo é generalizar os exemplos vistos para exemplos não vistos.

O oposto de um modelo neste contexto é algo como um banco de dados. Se você simplesmente memorizasse todos os Pokémons rotulados, você seria capaz de rotular novamente aqueles que foram memorizados mas não novos exemplos sem rótulos.

O diagrama abaixo resume o processo de aprendizado supervisionado.

Diagrama de alto nível contendo o treinamento supervisionado e aplicação (inferência) de um modelo preditivo

Os rótulos podem se originar de múltiplas fontes. Na forma mais comum, eles são dados por algum especialista — por exemplo, um sistema de diagnóstico por Raio-X poderia ser treinado em diagnósticos passados feitos por técnicos em radiografia ou médicos. Podem ainda advir de alguma técnica sofisticada que fornece o rótulo correto, mas para a qual se deseja uma alternativa baseada em aprendizado de máquina — por exemplo, no lugar de testes RT-PCR caros para COVID-19 pode-se pensar em utilizar exames laboratoriais comuns, utilizando como rótulo o resultado dos testes RT-PCR.

Mais recentemente tem sido explorada a chamada auto-supervisão (self-supervised learning), onde os rótulos são derivados diretamente dos dados. Um exemplo de aprendizado auto-supervisionado é a criação de modelos para síntese de textos: o modelo é treinado para prever a próxima palavra em um texto e, portanto, o rótulo é trivialmente definido como sendo a próxima palavra em uma sequência.

Aprendizado Não-supervisionado

No Aprendizado Não-supervisionado, os exemplos disponíveis não possuem rótulos. O objetivo continua sendo encontrar padrões nos dados, porém este padrão não é utilizado para criar um mapeamento para rótulos dados mas sim encontrar representações alternativas para os dados que ajudem a compreender estes padrões.

Abaixo temos diversos Pokémons, sem rótulos de qualquer tipo. Você nota algum padrão?

Você não imaginava que aprenderia tanto sobre Pokémon ao começar a ler este texto

Talvez você tenha concluído que existem dois tipos de Pokémon representados nestes exemplos, ao notar que alguns parecem ser baseados em fogo, enquanto outros lembram plantas. Ou que alguns parecem felizes, enquanto outros parecem raivosos. Ou algum outro padrão. De qualquer forma, ao procurar por padrões nestes exemplos seu cérebro engajou-se na tarefa de encontrar similaridades e dissemelhanças entre os exemplos. Esta tarefa é denominada agrupamento ou clusterização.

Agrupar exemplos é uma forma de encontrar uma representação alternativa, algo em comum a certos exemplos, abstraindo características que não são relevantes. Uma aplicação deste tipo de aprendizado é agrupar clientes de alguma empresa a partir de dados sobre estes clientes: se há mais de um tipo de cliente, pode ser eficiente direcionar propagandas diferentes para cada tipo ou criar diferentes níveis de serviços ou produtos. O desafio é que não é simples determinar o número de grupos que se está procurando — no limite podemos dizer que cada Pokémon é diferente e único ou que todos são iguais pois são todos Pokémon, mas isso não ajuda muito.

Note que esta é exatamente a tarefa que biólogos realizam ao definir espécies, gêneros, filos e outros grupos de seres vivos. Também é a mesma tarefa realizada para criar a tabela periódica. Ao organizar os dados temos a possibilidade de observar padrões antes invisíveis.

Outra aplicação de aprendizado não-supervisionado é redução de dimensionalidade. Nesta aplicação, queremos não agrupar os exemplos mas reduzí-los às suas características fundamentais. A motivação para tanto é diversa, indo desde ajudar na visualização de dados (e.g. reduzir dados de 100 dimensões para 2, para permitir a representação em 2D) até ajudar no processo de aprendizado supervisionado ou agrupamentos (com frequência é mais fácil encontrar padrões quando há menos dimensões).

Por exemplo, vamos pegar os Pokémons da última figura e representar cada um por sua cor dominante (a cor RGB que mais aparece na sua representação) e ordernar (aproximadamente) pela cor resultante.

Colormons™

Esta representação nos ajuda a observar que há muitos Pokémons predominantemente verde-amarelo (Brazilmons®?), enquanto outros são vermelhos. Essencialmente reduzimos uma imagem com múltiplas dimensões (dimensão aqui significa o número de valores necessários para representar a informação, no caso posição e cor de pixels) para uma única dimensão (cor).

Aprendizado por Reforço

Em uma tarefa de aprendizado supervisionado, a cada decisão do algoritmo há um sinal supervisório que permite que o modelo se ajuste para reduzir o erro das decisões. No entanto, há diversas situações onde há um atraso no sinal supervisório, que só é provido após múltiplas decisões.

Um jogo de xadrez é um caso típico (você pode pensar nas peças como Pokémons, se sentir saudades dos exemplos anteriores): você só saberá o resultado do jogo após muitas dezenas de jogadas. Cada jogada contribui para o resultado final, mas não há um sinal supervisório evidente para cada movimento individual. Isto torna o problema mais difícil: como saber, ao final do jogo, quais jogadas contribuíram para o resultado? Assumir que todas jogadas foram iguais é contra-producente; se queremos melhorar nosso desempenho precisamos entender como se distribui o crédito do resultado final para saber que jogadas devemos fazer ou evitar no futuro.

De forma mais formal, em uma tarefa de aprendizado por reforço desejamos maximizar o retorno de uma sequência de ações que podem alterar o estado do ambiente sobre o qual as ações tem efeito. O retorno é uma informação externa, dada pelo ambiente. Como esta informação só é revelada após o modelo executar uma ação, é necessário uma série de tentativas-e-erros para aprender uma política — uma função que mapeia um estado a uma ação (por exemplo, mapeia o estado do tabuleiro a uma jogada específica). No início, o algoritmo não tem informação alguma e todas ações são igualmente boas; a medida que retornos são obtidos, pode-se ir aprendendo que jogadas funcionam ou não.

Diagrama básico de aprendizado por reforço. O modelo realiza ações, que retorna com o estado resultante da ação e um sinal de reforço.

Este tipo de aprendizado tem recebido muita atenção recentemente e obtido sucesso em uma variedade de tarefas, como jogar jogos de Atari apenas observando o jogo até Xadrez e Go. No vídeo abaixo, agentes aprendem a jogar esconde-esconde por meio de aprendizado por reforço.

Conceitualmente, aprendizado por reforço permite aprendizado com um mínimo de supervisão. Isto é muito útil em sistemas onde não temos, ou não queremos, ter que fornecer sinal supervisório para cada ação. Considere um aspirador-robô que desejamos treinar para limpar a casa. Se tomarmos o caminho de aprendizado supervisionado, não é claro o que seriam rótulos para cada movimento do robô. No entanto, com aprendizado por reforço, podemos deixá-lo limpar a casa toda e, ao final, apenas indicarmos o quão bem o trabalho foi feito (ou não). Se tivermos alguma tolerância para uma casa suja durante um longo tempo enquanto o robô aprende, este método é bem mais conveniente para o dono do robô.

--

--

Ricardo Araujo

Computer Science professor at UFPel. Machine Learning and Artificial Intelligence practitioner and researcher.