← Blog

Como a IA lê um número 7

Uma criança reconhece o 7 torto no caderno. Uma rede reconhece uma tabela de números. A distância entre as duas frases é o que este texto desfaz: o 7 vira pixels, os pixels entram numa função, a função devolve dez notas — uma por dígito — e a maior nota ganha. Ninguém “lê”. Alguém calcula.

O volume 4 da AI One conta essa história do perceptron ao PyTorch. Aqui cabe o miolo, em uma imagem só: o sete.

O sete que a máquina recebe

Uma imagem pequena, 28 por 28, como no MNIST. São 784 números entre 0 e 1. O traço do sete são os altos; o fundo, os baixos. Se você achatar essa grade, tem um vetor. Esse vetor é o x da função. Sem romance.

A rede mais simples multiplica esse vetor por uma matriz de pesos e soma um viés. O resultado passa por uma não-linearidade — um “se for negativo, corta” já muda o ofício. Empilhar duas ou três dessas camadas é o que se chama, neste tamanho, de rede neural.

flowchart LR
  img["Pixels do 7"] --> v["Vetor 784"]
  v --> c1["Camada 1"]
  c1 --> c2["Camada 2"]
  c2 --> s["10 notas"]
  s --> y["Classe: 7"]
  y --> p["Perda"]
  p --> b["Volta: gradiente"]
  b --> c1
  b --> c2
  classDef ouro fill:#FBF5E4,stroke:#C9A227,color:#0B1F18,stroke-width:1.4px
  classDef verde fill:#F3FAF7,stroke:#1E7A57,color:#0B1F18,stroke-width:1.4px
  classDef fim fill:#0F3328,stroke:#0F3328,color:#FBFAF6,stroke-width:1.4px
  class img,y ouro
  class v,c1,c2,s verde
  class p,b fim

Na primeira época os pesos são quase ruído. A nota do 3 pode ganhar a do 7. A perda mede o constrangimento. Backpropagation — a volta em linguagem humana — pergunta quanto cada peso contribuiu para esse constrangimento e empurra um pouco na direção oposta.

Depois de muitas idas e voltas, a nota do 7 tende a ganhar quando o traço parece um sete. “Tende” é a palavra honesta. Um sete com a barra atravessada demais vira um 1. Um 1 com chapéu vira um 7. A rede não possui o conceito de sete. Possui um mapa numérico que, neste conjunto, costuma acertar.

O que está sendo aprendido

Pesos. Não a ideia de “linha horizontal na cabeça do palito”. Às vezes um peso grande coincide com um pedaço do traço; interpretamos isso como detector. A interpretação é nossa. O programa só tem o número.

Por isso redes neurais: o que está sendo aprendido recusa a palavra entender. Ler um 7, neste ofício, é: dado este vetor, a função devolve esta classe, com esta perda, depois desta quantidade de voltas.

Assista o caminho

O mesmo desenho — pixel, camada, classe, volta — é o que gravamos no canal da Pensar Bem no YouTube. Vale pausar no vetor. Vale recusar a narração que diz que a máquina “viu”. Se o vídeo ainda não estiver no ar quando você ler isto, o diagrama acima e o volume 4 cobrem o mesmo chão.

No Instagram @pensar_bem_ o sete reaparece em um quadro: a grade, o palito, a nota vencedora.

Por que este exemplo importa

Porque é pequeno o bastante para caber na cabeça e honesto o bastante para não esconder a conta. Quem entende o sete entende o início de qualquer classificador de imagem. A convolução — o próximo volume — só muda a forma da função, para respeitar o espaço. A perda, a volta e a recusa de “entender” continuam iguais.

A AI One volume 4 faz o caminho completo: perceptron, camada, softmax, backpropagation, o primeiro script em PyTorch, cada derivada conferida. O sete é a porta. O livro é a casa.

Leia também: Convolução e a folha de café doente · Backpropagation em linguagem humana.

#Redes neurais#Deep learning#IA#Matemática

Thiago Nogueira

Autor de A Caixa Mágica e das séries Programming One e AI One na Editora Pensar Bem.

Capa de AI One

AI One · Volume 4

Do perceptron ao PyTorch, uma derivada de cada vez.