A IA não aprendeu nada. Ela otimizou uma função. E essa diferença muda tudo.

É uma cena que qualquer professor de computação já viveu em alguma versão.

Um aluno apresenta o trabalho final. Treinou um modelo de classificação, os resultados ficaram bons, e ele está visivelmente satisfeito. Na hora de explicar o que aconteceu, ele diz, com naturalidade, uma frase que parece inocente:

O modelo aprendeu a distinguir as classes.

Eu deixei passar. Naquele momento, pareceu apenas uma forma de falar — informal, aceitável, tecnicamente próxima o suficiente. O modelo havia melhorado sua performance ao longo das épocas de treinamento. “Aprendeu” parecia uma descrição razoável disso.

Mas a frase ficou me incomodando depois.

Porque existe uma diferença real entre o que o aluno quis dizer e o que o modelo realmente fez. E essa diferença — pequena na superfície, enorme nas implicações — é o que determina se você vai saber onde o modelo falha ou vai ser pego de surpresa quando ele falhar.


O que a palavra “aprendizado” está fazendo aqui

Quando dizemos que uma criança aprendeu a distinguir cães de gatos, estamos dizendo algo rico: ela formou uma representação mental da categoria, consegue generalizar para animais que nunca viu, entende que um filhote de golden retriever e um vira-lata idoso pertencem à mesma categoria apesar das diferenças superficiais, e provavelmente consegue explicar, com alguma imprecisão, o que torna um animal um cão.

Quando dizemos que um modelo de Machine Learning “aprendeu” a distinguir cães de gatos, estamos dizendo algo muito mais preciso e muito mais limitado: os parâmetros internos do modelo foram ajustados, por um processo de otimização matemática, de forma que o erro de classificação sobre um conjunto de exemplos rotulados foi minimizado.

Isso é tudo.

Não há representação. Não há generalização no sentido cognitivo. Não há compreensão do que torna um animal um cão. Há pesos numéricos em matrizes que, quando você passa uma imagem nova por eles, produzem uma saída que na maioria das vezes corresponde ao rótulo correto — desde que a imagem nova seja suficientemente parecida com as que o modelo viu durante o treinamento.

A palavra “aprendizado” é uma metáfora. Uma metáfora poderosa, útil para comunicar de forma rápida o que acontece, e adotada pelos próprios fundadores do campo com plena consciência do que estavam fazendo. O problema não é a metáfora em si. O problema é quando ela começa a ser tomada ao pé da letra — e aí as consequências são concretas.


O que realmente acontece quando um modelo “aprende”

Vamos desmontar o processo sem jargão desnecessário.

Você tem um conjunto de dados — pares de entrada e saída correta. Uma coleção de e-mails rotulados como spam ou não-spam. Uma série de imagens rotuladas como cão ou gato. Um histórico de transações rotuladas como fraude ou legítima.

Você tem um modelo — uma função matemática com muitos parâmetros ajustáveis. No caso de uma rede neural, esses parâmetros são os pesos das conexões entre os neurônios artificiais. Inicialmente, esses pesos são aleatórios. O modelo ainda não faz nada útil.

Você tem uma função de perda — uma medida matemática de o quanto as saídas do modelo diferem das saídas corretas. Quando o modelo classifica um e-mail legítimo como spam, a função de perda aumenta. Quando acerta, diminui.

O treinamento é o processo de ajustar os parâmetros do modelo para minimizar essa função de perda sobre o conjunto de dados de treinamento. Isso é feito por um algoritmo chamado gradiente descendente: a cada passo, o algoritmo calcula em qual direção ajustar cada parâmetro para que a perda diminua um pouco. Repita isso muitas vezes, sobre muitos exemplos, e os parâmetros convergem para valores que produzem erros menores.

Quando esse processo termina, dizemos que o modelo “aprendeu”.

Mas o que aconteceu, tecnicamente, foi: uma função matemática teve seus parâmetros ajustados para minimizar uma métrica específica sobre um conjunto específico de dados. Nada mais. Nada menos.


Por que isso não é pedantismo

Aqui está onde a diferença entre a metáfora e o mecanismo começa a importar de verdade.

Se um modelo realmente aprendesse — no sentido cognitivo — você esperaria que ele generalizasse de forma robusta para situações novas, que reconhecesse quando está fora do seu domínio de competência, que mantivesse consistência lógica entre suas respostas.

Mas um modelo que otimizou uma função sobre dados históricos não tem nenhuma dessas propriedades garantidas. Ele generaliza bem para exemplos parecidos com o que viu. Ele falha de formas às vezes bizarras em exemplos ligeiramente diferentes. Ele não sabe que está fora do seu domínio — não há sinal interno de incerteza que emerge automaticamente quando a entrada é incomum. E ele pode ser completamente inconsistente: classificar dois exemplos quase idênticos de formas opostas dependendo de variações mínimas na entrada.

Esses não são bugs que serão corrigidos numa versão futura. São consequências diretas do que o processo de treinamento é. Você otimizou para minimizar o erro médio sobre um conjunto de dados. Casos fora dessa distribuição, casos extremos, casos onde a métrica que você otimizou diverge do que você realmente queria — esses são exatamente os lugares onde o modelo vai falhar, de formas que você não consegue antecipar sem entender o mecanismo.

Um exemplo que uso em aula: imagine um modelo treinado para detectar pneumonia em radiografias de tórax. Os resultados no conjunto de teste são excelentes — acurácia alta, médicos impressionados. Mas quando o modelo é colocado em produção em outro hospital, a performance cai drasticamente. O que aconteceu?

Investigação posterior revela que as radiografias do hospital de treinamento tinham uma característica técnica específica — um artefato de equipamento — que aparecia com mais frequência nas imagens de pacientes com pneumonia, porque esses pacientes eram examinados com maior urgência em equipamentos específicos. O modelo aprendeu a detectar esse artefato, não a pneumonia. Ele otimizou a função de perda sobre os dados disponíveis. Fez exatamente o que foi pedido. E era completamente inútil fora do contexto original.

Isso tem um nome: spurious correlation — correlação espúria. O modelo encontrou um padrão nos dados que previa o rótulo corretamente durante o treinamento mas não tinha relação causal com o que você queria detectar. Um sistema que realmente entendesse pneumonia não faria isso. Um sistema que otimizou uma função sobre dados históricos faz isso o tempo todo — e você só descobre quando já está em produção.


O que muda quando você entende isso

Quando você abandona a metáfora do aprendizado e abraça o mecanismo da otimização, algumas perguntas mudam de lugar.

Em vez de perguntar o modelo aprendeu bem? — que convida a olhar para a acurácia no conjunto de teste e parar por aí — você passa a perguntar: o modelo otimizou o quê, sobre quais dados, e isso corresponde ao que eu realmente preciso que ele faça no mundo real?

Em vez de confiar que um modelo com boa performance vai generalizar, você passa a perguntar: quão diferente é o ambiente de produção do ambiente de treinamento? Onde essa distribuição pode divergir?

Em vez de tratar um erro do modelo como surpresa, você passa a esperar que ele ocorra em padrões específicos — e a procurar esses padrões antes que causem dano.

Isso não é ceticismo paralisante. É o oposto: é o que permite usar modelos de forma responsável, sabendo onde confiar e onde verificar.


Voltando à apresentação do meu aluno.

O modelo dele havia otimizado uma função de perda sobre um conjunto de dados rotulados. Os resultados eram bons. O trabalho estava correto.

O que eu deveria ter dito — e que estou dizendo agora, com mais clareza do que tinha naquele momento — é que “aprendeu” e “otimizou” não são a mesma coisa. E que saber a diferença não vai tornar o modelo melhor. Vai tornar o engenheiro mais capaz de perceber quando o modelo está errado.

Que é, afinal, a habilidade que mais vai importar quando esse aluno estiver construindo sistemas que afetam pessoas reais.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *