Pense em como você aprendeu a estimar o preço de uma casa sem nem perceber. Ninguém te deu uma fórmula. Você viu algumas: esta grande e com jardim custava mais, aquela pequena e distante custava menos. Depois de olhar o suficiente, se te mostram uma casa nova, você solta um número aproximado. Você não raciocinou com regras; ajustou à força de exemplos. Isso, quase ao pé da letra, é o que uma máquina faz quando "aprende".
A expressão machine learning (aprendizado de máquina) soa a ficção científica, mas a ideia de fundo é modesta e teimosa: em vez de escrever as regras para o computador uma a uma, você dá exemplos e o deixa descobrir sozinho qual padrão os conecta. Você não programa a resposta. Você programa a maneira de aprendê-la.
01 · a viradaO que é machine learning: ensinar com exemplos, não com regras
Para entender o que é machine learning convém primeiro ver como era o software de antes. Durante décadas, programar significou escrever regras explícitas: se o e-mail contém a palavra "prêmio" e vem de um desconhecido, então marque como spam. O programador pensava todos os casos e os digitava. Funcionava, até que o mundo trazia um caso que ninguém previu.
O machine learning vira o problema do avesso. Em vez de dizer à máquina o que é spam, você mostra dez mil e-mails já classificados por humanos ("isto é spam, isto não é") e a deixa encontrar por conta própria o que os do monte ruim têm em comum. Ninguém escreveu a regra. A regra emergiu dos exemplos.
Você não ensina a resposta. Você ensina a encontrá-la a partir de exemplos.
Essa distinção foi a que Arthur Samuel intuiu em 1959, quando definiu o campo como o estudo que dá aos computadores "a capacidade de aprender sem serem explicitamente programados para isso" [1]. Seu programa jogava damas e melhorava partida após partida, não porque alguém lhe acrescentasse regras, mas porque ajustava o próprio critério conforme quais jogadas terminavam vencendo.
02 · os botõesComo aprende: ajustar milhares de botões até acertar
Aqui chega a parte que quase ninguém explica bem, e é a mais simples de imaginar. Dentro do modelo há muitíssimos números que podem se mover, como os botões de uma mesa de som gigante. Cada botão decide quanto pesa um detalhe: quanto importa o tamanho da casa, quanto o bairro, quanto os anos que ela tem. No começo todos estão em qualquer posição, postos ao acaso. O modelo, nesse estado, não sabe nada.
Então começa o ciclo. Você lhe passa um exemplo do qual conhece a resposta. O modelo faz sua previsão com os botões onde estiverem e quase sempre erra. Você mede quanto errou: essa distância entre o que disse e o que era correto se chama erro. E aqui está o truque: o erro indica em que direção mover cada botão para errar um pouco menos da próxima vez.
Você move um pouquinho cada botão nessa direção. Passa outro exemplo. Erra um pouco menos. E outro, e outro, milhares e milhares de vezes. Cada volta corrige o erro apenas um fio. Somadas, essas correções mínimas levam os botões de uma desordem inicial a uma combinação que acerta surpreendentemente bem. A esse processo de dar voltas ajustando se chama treinamento, e a cada botão, um parâmetro.
Com duas ou três casas, o modelo memoriza essas três e pronto: não aprendeu nada útil. Só quando vê muitos exemplos variados os botões se acomodam ao que se repete (o grande custa mais, o distante custa menos) e descartam o que foi casualidade. Aprender, para uma máquina, é separar o padrão do ruído. E isso exige volume.
03 · a provaQuando de fato aprendeu (e quando só memorizou)
Há uma armadilha que convém conhecer, porque explica por que às vezes esses sistemas falham feio. Um modelo pode ajustar seus botões tão sob medida aos exemplos que você mostrou que acaba memorizando-os em vez de entender o padrão. Vai de maravilha com o que já viu e desaba com qualquer caso novo. É como o estudante que decora as respostas da prova do ano passado e fica em branco quando mudam as perguntas. A isso se chama sobreajuste.
Aprender não é acertar no conhecido. É acertar no que nunca viu.
Por isso quem constrói esses modelos guarda sempre uma parte dos exemplos em segredo, sem usá-los durante o treinamento. Quando o modelo termina de ajustar seus botões, o confrontam com aquele monte que nunca viu. Se acerta ali, aprendeu de verdade. Se acerta só com o que já conhecia, memorizou. A diferença é tudo.
Com estas três ideias você já tem o esqueleto completo, sem uma única linha de código: aprende-se de exemplos em vez de regras, aprende-se ajustando muitíssimos botões para baixar o erro, e comprova-se com casos novos para não confundir aprender com memorizar. Todo o resto (redes neurais, deep learning, os modelos que hoje escrevem e desenham) são versões maiores e mais elaboradas desse mesmo pulsar.
Da próxima vez que você ler que um sistema "aprendeu" a reconhecer rostos ou a traduzir idiomas, já sabe o que há por baixo. Não houve um despertar nem uma faísca de consciência. Houve milhares de exemplos, um monte de botões e muitíssimas voltas corrigindo o erro até acertar. Modesto e teimoso, como dissemos no início. E surpreendentemente poderoso.
Fontes
- Samuel, A. L. (1959). Some Studies in Machine Learning Using the Game of Checkers. IBM Journal of Research and Development, 3(3), pp. 210-229. DOI: 10.1147/rd.33.0210.
- Mitchell, T. M. (1997). Machine Learning. McGraw-Hill. (Define aprender como melhorar em uma tarefa T, medida por P, com a experiência E.)
- Goodfellow, I., Bengio, Y. & Courville, A. (2016). Deep Learning, cap. 5: Machine Learning Basics. MIT Press. deeplearningbook.org.