Como a máquina aprende

Compartilhar

Você já viu a mágica acontecer: o aplicativo do banco lê o número escrito à mão no formulário, o celular transcreve o que você fala, o compu...

Você já viu a mágica acontecer: o aplicativo do banco lê o número escrito à mão no formulário, o celular transcreve o que você fala, o computador reconhece um algarismo rabiscado às pressas. Por trás disso não há mágica nenhuma — há um neurônio de papel inventado em 1943, uma regra de correção de erro publicada em 1958 que cabe em cinco linhas de código, um muro lógico que travou a área por quase duas décadas e uma ideia de 1986 que faz o erro andar para trás dentro da rede. Neste terceiro post da série sobre inteligência artificial, abrimos o anel do aprendizado de máquina por dentro: você vai treinar um perceptron ao vivo, aqui na tela, ver com os próprios olhos por que ele aprende o "ou" e fracassa no "ou exclusivo", entender a retropropagação sem susto e acompanhar, passo a passo, como uma grade de pixels vira o algarismo 3. Com seções que se abrem para quem quiser a matemática — em três níveis de profundidade — e três tutoriais em Python prontos para colar no Google Colab.
Laboratório de aprendizagem de máquina: painel de fotocélulas lendo um algarismo 3 manuscrito, rede neural em camadas acesa ao centro, lousa escrita aprendizagem de máquina e a coruja-buraqueira mascote de capelo girando um botão marcado peso

Em julho de 1958, o New York Times anunciou ao mundo que a Marinha norte-americana havia apresentado o embrião de um computador capaz de aprender sozinho. O aparelho ainda nem existia direito — era um programa rodando num computador de válvulas — mas a manchete já prometia máquinas que andariam, falariam, veriam, escreveriam e teriam consciência da própria existência (PROFESSOR'S…, 2019). O responsável pela demonstração era um psicólogo de Cornell chamado Frank Rosenblatt, e sua invenção tinha um nome que atravessaria quase setenta anos: perceptron.

"NOVO DISPOSITIVO DA MARINHA APRENDE FAZENDO: psicólogo apresenta o embrião de um computador projetado para ler e ficar mais sábio."

Manchete do New York Times, julho de 1958, na tradução do autor (PROFESSOR'S…, 2019)

A imprensa exagerou — como exagera até hoje. Mas havia algo de novo e verdadeiro naquela demonstração: pela primeira vez, uma máquina ajustava sozinha os próprios parâmetros a partir de exemplos, sem que ninguém escrevesse a regra. Este post é a autópsia carinhosa dessa ideia. Vamos do neurônio mais simples que existe até a retropropagação — o algoritmo que sustenta praticamente toda a inteligência artificial moderna — e terminar reconhecendo algarismos numa grade de pixels. Nenhum pré-requisito além de saber que uma reta pode separar dois grupos de pontos num plano.

Sinapse 01

O neurônio de papel: três entradas, três pesos, uma decisão

Comparação entre um neurônio biológico, com dendritos, corpo celular e axônio, e um neurônio artificial com entradas x1, x2 e x3, pesos w1, w2 e w3, somatório, viés, função de ativação em degrau que dispara se a soma for maior ou igual a zero, e saída y

O neurônio artificial é uma caricatura deliberada do biológico: soma sinais de entrada e dispara se o total passar de um limiar. Ilustração do autor (2026)

Em 1943, o neurofisiologista Warren McCulloch e o lógico Walter Pitts propuseram uma simplificação radical do neurônio: uma unidade que recebe sinais, soma tudo e dispara se a soma ultrapassar um limiar. Com essas unidades, mostraram eles, era possível construir qualquer expressão da lógica proposicional (McCULLOCH; PITTS, 1943). O modelo era rígido: não tinha pesos ajustáveis, não aprendia nada. Seis anos depois, o psicólogo Donald Hebb propôs o ingrediente que faltava — a conexão entre dois neurônios que se ativam juntos repetidamente tende a se fortalecer (HEBB, 1949). Faltava só alguém juntar as duas metades.

Rosenblatt juntou. O perceptron é um neurônio de McCulloch e Pitts em que cada conexão tem um peso ajustável, e existe um procedimento automático para ajustá-lo (ROSENBLATT, 1958). Traduzindo para o português de todo dia, ele faz três coisas:

1
Multiplica. Cada entrada x é multiplicada pelo peso w daquela conexão. Peso alto significa "presta muita atenção nisso"; peso negativo significa "isso é indício do contrário".
2
Soma. Todos os produtos são somados, mais um número solto chamado viés (bias), que funciona como a exigência pessoal do neurônio — o quanto de evidência ele pede antes de se convencer.
3
Decide. Se a soma for maior ou igual a zero, o neurônio dispara e responde 1; se for negativa, responde 0. Esse "se passar, dispara" é a função de ativação.

É isso. Um perceptron é uma soma ponderada seguida de um "sim ou não". A parte interessante não está na conta — está em de onde vêm os pesos. E é aqui que entra a palavra aprendizado: em vez de o programador escolher os pesos, a máquina os descobre a partir de exemplos com gabarito. Na definição clássica de Tom Mitchell, um programa aprende com a experiência se seu desempenho numa tarefa melhora à medida que a experiência se acumula (MITCHELL, 1997).

Matemática · nível 1 A conta exata que o neurônio faz

Para n entradas, a soma ponderada é:

z = w1·x1 + w2·x2 + … + wn·xn + b

Em notação vetorial, com w = (w1, …, wn) e x = (x1, …, xn):

z = w · x + b

A saída aplica a função degrau:

ŷ = 1, se z ≥ 0
ŷ = 0, se z < 0

O que isso quer dizer geometricamente. A equação w·x + b = 0 descreve uma reta (em duas dimensões), um plano (em três) ou um hiperplano (em muitas). O vetor w aponta perpendicularmente a essa fronteira, na direção do lado "sim"; o viés b desloca a fronteira em relação à origem (a distância entre as duas vale |b|/‖w‖). Treinar um perceptron é, literalmente, girar e deslocar uma reta até que ela separe os exemplos certos dos errados.

Exemplo numérico. Ao final do treinamento do "ou" no tutorial em Python (Código · nível 1), os pesos ficam em w1 = 0,5, w2 = 0,5 e b = −0,5. A fronteira é 0,5·x1 + 0,5·x2 − 0,5 = 0, ou seja, x1 + x2 = 1. Traduzindo: "responda sim quando a soma das entradas chegar a 1". É exatamente a definição do "ou" — e ninguém escreveu essa regra: ela foi encontrada.

Sinapse 02

Errar, medir, corrigir: a regra de aprendizado em cinco linhas

Plano cartesiano com uma reta mal posicionada deixando um ponto do lado errado, marcado como erro, e uma seta mostrando a reta girando para a posição correta sob o rótulo correção dos pesos

Cada exemplo errado empurra a reta um pouquinho. A soma dos empurrões é o aprendizado. Ilustração do autor (2026)

O procedimento de Rosenblatt é de uma simplicidade quase constrangedora. Para cada exemplo do conjunto de treinamento, faça o seguinte: mostre a entrada ao perceptron, compare a resposta dele com o gabarito e, se houver diferença, empurre cada peso na direção que teria produzido a resposta certa. O tamanho do empurrão é controlado por um número pequeno chamado taxa de aprendizado.

novo peso = peso antigo + taxa × erro × entrada

Note a elegância: se o erro for zero, nada muda — exemplos que a rede já acerta não mexem em nada. Se o perceptron respondeu 0 quando devia responder 1, o erro é +1 e todos os pesos ligados a entradas ativas aumentam, deixando o neurônio mais propenso a disparar naquele caso. Se respondeu 1 quando devia responder 0, o erro é −1 e os pesos diminuem. A entrada que não estava ativa não recebe correção nenhuma: quem não participou do erro não paga por ele. Uma passagem completa por todos os exemplos chama-se época.

Em 1960, Bernard Widrow e Marcian Hoff publicaram uma variação que trocava o degrau por uma saída contínua e minimizava o erro quadrático — a chamada regra delta, base do Adaline (WIDROW; HOFF, 1960). Guarde essa mudança de "acertou/errou" para "errou por quanto": ela é a ponte que nos levará, mais adiante, à retropropagação.

Matemática · nível 2 Por que o empurrão sempre vai na direção certa

A regra de atualização, escrita formalmente, é:

wi ← wi + η · (y − ŷ) · xi
b ← b + η · (y − ŷ)

em que y é o gabarito, ŷ é a resposta do perceptron e η (eta) é a taxa de aprendizado, um número positivo pequeno.

A garantia. Suponha que o perceptron errou respondendo 0 quando devia responder 1 — ou seja, z = w·x + b era negativo e precisava ser positivo. O erro vale +1, então os novos parâmetros são w' = w + ηx e b' = b + η. Recalculando a soma para o mesmo exemplo:

z' = (w + ηxx + b + η = z + η·(‖x‖² + 1)

Como η > 0 e ‖x‖² + 1 é sempre positivo, z' é necessariamente maior que z: a correção move a soma na direção certa, sempre. O mesmo vale, com sinal trocado, para o erro de −1.

O teorema da convergência. Se existir alguma reta capaz de separar perfeitamente as duas classes — isto é, se o problema for linearmente separável —, o procedimento encontra uma solução em um número finito de passos. A garantia vale qualquer que seja o ponto de partida e qualquer que seja a taxa de aprendizado (o número de passos, esse sim, depende dos dois e da folga entre as classes). A demonstração aparece em Principles of neurodynamics (ROSENBLATT, 1962) e, de forma independente, no limite clássico de Novikoff, do mesmo ano. É uma garantia forte e rara em aprendizado de máquina. O problema, como veremos, está na condição: se existir.

A pegadinha. Quando o problema não é linearmente separável, o algoritmo não avisa: ele simplesmente nunca para. Dentro de cada época os pesos se mexem — corrigem um exemplo e estragam outro —, mas as correções acabam se anulando e, no fim da volta, tudo volta ao ponto de partida. É um ciclo fechado, não uma aproximação lenta: você vai ver isso acontecer no "Experimente" do tutorial de código nível 1.

Sinapse 03

Laboratório: treine um perceptron aqui, agora

Quadro 1 — Tabelas-verdade das portas lógicas E, OU e OU EXCLUSIVO

x1x2E (ambos)OU (pelo menos um)OU EXCLUSIVO (um só)
00000
01011
10011
11110

Fonte: elaborado pelo autor.Nota: o "ou" da lógica é inclusivo — basta que uma das condições seja verdadeira. O "ou exclusivo" corresponde ao "ou isto, ou aquilo, mas não os dois" da linguagem coloquial.

Chega de teoria. Abaixo está um perceptron de verdade, rodando no seu navegador, com os quatro exemplos das portas lógicas. Escolha a operação, clique em treinar e observe a reta se mexendo: cada época empurra os pesos, e a área colorida mostra a região em que o neurônio responde 1. Comece pelo OU. Depois, quando estiver convencido, clique em OU EXCLUSIVO e veja o que acontece.

Época0

Erros

x1x2alvosaída
000
101
011
111

w1 = 0,90 · w2 = −0,70 · viés = 0,20

Escolha uma porta lógica e clique em treinar.

Repare no que aconteceu. No OU e no E, a reta encontra rapidamente uma posição que separa os pontos claros dos escuros, os erros vão a zero e o treinamento para sozinho — exatamente como o teorema da convergência promete. No OU EXCLUSIVO, a reta gira, oscila, tenta de todos os ângulos e nunca chega lá. Não é falta de paciência nem de máquina: é impossível, e a impossibilidade tem demonstração.

Sinapse 04

O muro de 1969: quando uma reta não basta

Dois planos cartesianos lado a lado: à esquerda a porta OU, com uma reta verde separando o ponto zero-zero dos três pontos de saída 1; à direita a porta OU EXCLUSIVO, com as classes cruzadas na diagonal e várias retas tracejadas vermelhas falhando

À esquerda, uma reta resolve. À direita, as classes se cruzam na diagonal e nenhuma reta dá conta. Ilustração do autor (2026)

Desenhe os quatro casos do "ou exclusivo" num plano: (0,0) e (1,1) respondem 0; (0,1) e (1,0) respondem 1. As duas classes ficam em diagonais cruzadas, como as casas pretas e brancas de um tabuleiro. Não existe reta no plano que ponha as duas diagonais em lados opostos — é uma questão de geometria, não de esforço computacional.

Em 1969, Marvin Minsky e Seymour Papert publicaram Perceptrons, um livro que demonstrava com rigor matemático os limites do perceptron de camada única, usando justamente o problema da paridade, do qual o "ou exclusivo" é o caso mínimo (MINSKY; PAPERT, 1969). O efeito foi devastador: o financiamento à área secou e as redes neurais entraram numa hibernação de mais de uma década. Rosenblatt não viu o degelo — morreu em 1971, num acidente de barco, no dia em que completava 43 anos (PROFESSOR'S…, 2019).

Ilustração metafórica de um muro de tijolos com a inscrição XOR e a placa ou exclusivo, uma máquina perceptron parada e coberta de neve diante dele, calendário marcando 1969 e a coruja mascote iluminando uma escada encostada no muro

O inverno das redes neurais: o muro existia mesmo — mas havia uma escada encostada nele. Ilustração do autor (2026)

Matemática · nível 3 A demonstração de que o "ou exclusivo" é impossível

Suponha, por absurdo, que existam pesos w1, w2 e viés b que resolvam o "ou exclusivo" com a regra "responda 1 quando w1x1 + w2x2 + b ≥ 0". Os quatro exemplos impõem quatro condições:

(0,0) → 0  ⟹  b < 0   (i)
(1,0) → 1  ⟹  w1 + b ≥ 0   (ii)
(0,1) → 1  ⟹  w2 + b ≥ 0   (iii)
(1,1) → 0  ⟹  w1 + w2 + b < 0   (iv)

Somando (ii) e (iii):

w1 + w2 + 2b ≥ 0  ⟹  w1 + w2 ≥ −2b

Mas (iv) diz que w1 + w2 < −b. Juntando as duas:

−2b ≤ w1 + w2 < −b  ⟹  −2b < −b  ⟹  b > 0

O que contradiz frontalmente a condição (i), que exigia b < 0. Logo, não existem pesos que resolvam o problema. O perceptron de camada única não fracassa no "ou exclusivo" por ser mal treinado: ele fracassa por ser uma reta diante de um problema que não é retilíneo.

Generalizando. O mesmo argumento vale para qualquer conjunto de pontos cujas classes não possam ser separadas por um hiperplano. E, no mundo real, quase nada é linearmente separável: reconhecer um rosto, um algarismo ou um sentimento em uma frase são todos problemas curvos.

Sinapse 05

A escada: uma camada escondida muda o problema de lugar

À esquerda, rede neural com as entradas x1 e x2, os neurônios escondidos h1 e h2 e a saída y; à direita, plano cartesiano em que as retas de h1 e h2, paralelas, recortam uma faixa verde que contém exatamente os dois pontos de saída 1

Com dois neurônios intermediários, o problema é reescrito em coordenadas novas — e volta a caber numa reta. Ilustração do autor (2026)

A saída do muro é quase óbvia depois que alguém a mostra: se uma reta não basta, use duas. Coloque entre a entrada e a saída uma camada escondida — neurônios que não falam diretamente com o mundo, apenas com os vizinhos. Cada um deles traça a sua própria reta e o neurônio de saída combina os resultados.

No caso do "ou exclusivo", bastam dois neurônios escondidos: um que detecta "pelo menos um está ligado" (o velho OU) e outro que detecta "os dois estão ligados" (o E). O neurônio de saída, então, só precisa responder uma pergunta simples — "o primeiro disse sim e o segundo disse não?" —, e essa pergunta já é separável por uma reta. O problema não ficou mais fácil: ele foi reescrito em coordenadas novas, inventadas pela própria rede. É essa solução que vamos montar peça por peça, com os pesos na mesa, na próxima seção.

Essa não é uma esperteza de um caso particular. Em 1989, George Cybenko provou que uma rede com uma única camada escondida, com neurônios suficientes e uma ativação em forma de "S", consegue aproximar, com a precisão que se queira, qualquer função contínua definida num pedaço limitado e fechado do espaço (CYBENKO, 1989); no mesmo ano, Kurt Hornik e colegas generalizaram o resultado para uma classe ampla de ativações (HORNIK; STINCHCOMBE; WHITE, 1989). É o chamado teorema da aproximação universal. Ele diz que a rede pode representar quase tudo — mas, atenção, não diz como encontrar os pesos certos. Essa é a próxima pergunta, e a mais difícil de todas.

Sinapse 06

Três perceptrons, um circuito: o "ou exclusivo" resolvido na mão

Antes de treinar qualquer coisa, vale montar a solução com a chave de fenda — porque, quando os pesos são escolhidos por nós, dá para ver exatamente por que funciona. Precisamos de três perceptrons, cada um deles idêntico ao da Sinapse 01: soma ponderada, viés e função degrau. Nenhuma mágica nova; só fiação.

Circuito de três perceptrons resolvendo o ou exclusivo: entradas x1 e x2 ligadas com peso mais um a P1, que faz o OU com viés menos zero vírgula cinco, e a P2, que faz o E com viés menos um vírgula cinco; P1 liga a P3 com peso mais um e P2 liga a P3 com peso menos dois, viés menos zero vírgula cinco, produzindo a saída y

Os três perceptrons e os pesos exatos que resolvem o "ou exclusivo". Ilustração do autor (2026)

P1
O detector de "pelo menos um". Pesos +1 e +1, viés −0,5. Ele dispara quando x1 + x2 ≥ 0,5 — ou seja, sempre que houver ao menos uma entrada ligada. É o velho OU, que o perceptron sozinho já sabia aprender.
P2
O detector de "os dois". Pesos +1 e +1, viés −1,5. Só dispara quando x1 + x2 ≥ 1,5, o que exige as duas entradas ligadas. É o E — também linearmente separável, também fácil.
P3
O combinador. Recebe h1 (a resposta do P1) com peso +1 e h2 (a resposta do P2) com peso −2, viés −0,5. Dispara quando h1 − 2h2 ≥ 0,5 — isto é, quando o P1 disse sim e o P2 disse não.

O peso negativo é a peça-chave. Quando as duas entradas estão ligadas, o P1 dispara (contribuindo +1) mas o P2 também (contribuindo −2), e o −2 anula com folga a contribuição positiva. Traduzindo o circuito para o português: responda sim quando pelo menos uma entrada estiver ligada, exceto se as duas estiverem. Que é, palavra por palavra, a definição do "ou exclusivo".

Quadro 2 — Cálculo do circuito de três perceptrons para cada entrada do "ou exclusivo"

x1x2P1: x1+x2−0,5h1P2: x1+x2−1,5h2P3: h1−2h2−0,5yAlvo
00−0,5 < 00−1,5 < 00−0,5 < 000 ✓
01+0,5 ≥ 01−0,5 < 00+0,5 ≥ 011 ✓
10+0,5 ≥ 01−0,5 < 00+0,5 ≥ 011 ✓
11+1,5 ≥ 01+0,5 ≥ 01−1,5 < 000 ✓

Fonte: elaborado pelo autor.Nota: cada perceptron aplica a função degrau — dispara (1) quando a soma é maior ou igual a zero e permanece em repouso (0) caso contrário. Os quatro casos foram conferidos por execução do código apresentado adiante.

O gráfico que explica por que agora dá certo

Aqui está a pergunta que interessa: se nenhuma reta resolve o "ou exclusivo", e cada um desses três perceptrons continua sendo apenas uma reta, como o conjunto consegue? A resposta não está em nenhum dos três — está no mapa em que o terceiro trabalha. O P3 não enxerga x1 e x2; ele enxerga h1 e h2. E, nesse novo par de coordenadas, os pontos ocupam posições completamente diferentes.

O truque inteiro em uma imagem: dois casos que estavam em cantos opostos passam a ocupar a mesma posição, e o problema vira separável. Esquema do autor (2026)

Olhe o painel da direita com calma. Os quatro casos entraram, mas só três posições distintas saíram: (0,1) e (1,0) produzem exatamente o mesmo par (h1, h2) = (1, 0), porque em ambos há uma entrada ligada (P1 dispara) e não há duas (P2 fica quieto). Do ponto de vista do P3, esses dois casos viraram o mesmo caso — e nada mais natural, já que ambos devem receber a mesma resposta.

Foi exatamente a diagonal cruzada que sumiu. No plano original, os dois pontos de alvo 1 estavam em cantos opostos, com os dois pontos de alvo 0 na outra diagonal: qualquer reta que abraçasse um ponto verde deixava o outro de fora. No plano da camada escondida, o par de alvo 1 se fundiu numa posição só, e os dois pontos de alvo 0 ficaram nas extremidades — uma configuração que uma reta separa com sobra. A camada escondida não resolveu o problema: ela mudou o mapa até que o problema coubesse na única ferramenta que o perceptron tem, que é a reta.

Vale registrar o que isso custa e o que isso rende. Custa uma camada a mais — e, com ela, o problema de descobrir os pesos dessa camada, que a regra de Rosenblatt não sabe resolver (é o que veremos a seguir). Rende a capacidade de dobrar o espaço quantas vezes forem necessárias: com mais neurônios escondidos, a rede recorta o plano em mais regiões; com mais camadas, recorta o espaço já recortado. O teorema da aproximação universal é a versão formal dessa intuição (CYBENKO, 1989).

Sinapse 07

Retropropagação: o erro que anda para trás

Esquema de uma rede neural com uma faixa verde de setas para a direita rotulada passo para frente e uma faixa laranja de setas para a esquerda rotulada passo para trás, com o erro calculado pela diferença entre palpite e resposta certa

Duas viagens por época: a informação vai, o erro volta. Ilustração do autor (2026)

Com uma camada escondida, a regra de Rosenblatt trava. Ela sabe corrigir um neurônio quando conhece o gabarito da resposta dele — mas qual é o gabarito de um neurônio do meio? Ninguém sabe qual deveria ser a saída "certa" de h1. Esse é o problema da atribuição de crédito: quando a rede erra, de quem é a culpa?

A resposta veio em duas etapas. Paul Werbos descreveu o método na sua tese de doutorado em Harvard, em 1974, e o mundo praticamente não notou (WERBOS, 1974). Doze anos depois, David Rumelhart, Geoffrey Hinton e Ronald Williams publicaram na Nature um artigo de quatro páginas que fez a área inteira acordar (RUMELHART; HINTON; WILLIAMS, 1986). A ideia se chama retropropagação do erro (backpropagation) e funciona em duas viagens:

Passo para frente. A entrada atravessa a rede camada por camada até virar um palpite. Compara-se o palpite com o gabarito e mede-se o tamanho do erro — não mais "acertou ou errou", mas "errou por quanto".
Passo para trás. O erro volta pelo mesmo caminho, e cada conexão recebe a parcela de responsabilidade proporcional à sua contribuição para o resultado. Quem empurrou mais forte na direção errada leva a maior correção.

A ferramenta matemática que faz essa repartição de culpa é a regra da cadeia do cálculo — a mesma que você viu em Cálculo I para derivar funções compostas. E o objetivo é sempre o mesmo: encontrar, para cada peso, a direção que mais reduz o erro, e dar um passinho nessa direção. É a descida do gradiente, que vale a pena imaginar assim: você está numa encosta, no meio de uma neblina, e só consegue sentir a inclinação do chão sob os pés; a estratégia é dar um passo para o lado que desce mais e repetir milhões de vezes.

Duas consequências práticas dessa metáfora explicam quase todo o folclore do treinamento de redes. Primeira: se os passos forem grandes demais, você atravessa o vale e sobe do outro lado — por isso taxas de aprendizado altas fazem o erro explodir. Segunda: a neblina não deixa ver o mapa inteiro, então é perfeitamente possível parar numa depressão rasa achando que é o fundo do vale — o famoso mínimo local. Você vai encontrar um desses ao vivo no tutorial de nível 2, e a saída é banal: reinicie com outros pesos e tente de novo. Mas metáfora boa é metáfora que se aposenta: na próxima seção, a encosta deixa de ser figura de linguagem — você vai construí-la a partir de um modelo de verdade e pilotar a descida com as próprias mãos.

Matemática · nível 4 A retropropagação em quatro equações

Notação. Para a camada l, seja W(l) a matriz de pesos, b(l) o vetor de vieses, a(l) o vetor de ativações e σ a função de ativação. O passo para frente é:

z(l) = W(l) a(l−1) + b(l)
a(l) = σ(z(l))

Com a perda quadrática E = ½‖a(L)y‖², define-se o erro local da camada como δ(l) = ∂E/∂z(l). As quatro equações são:

(1) δ(L) = (a(L)y) ⊙ σ′(z(L))
(2) δ(l) = (W(l+1)⊤ δ(l+1)) ⊙ σ′(z(l))
(3) ∂E/∂W(l) = δ(l) (a(l−1))
(4) ∂E/∂b(l) = δ(l)

O símbolo ⊙ indica multiplicação elemento a elemento. A equação (2) é o coração do método: o erro de uma camada é o erro da camada seguinte, empurrado de volta pela transposta da matriz de pesos — daí o nome retropropagação. A atualização final é a descida do gradiente:

W(l)W(l) − η · ∂E/∂W(l)

Derivadas úteis. Para a sigmoide σ(z) = 1/(1 + e−z), vale a identidade conveniente σ′(z) = σ(z)·(1 − σ(z)) — por isso o código guarda a ativação e reaproveita. Para a ReLU, σ(z) = max(0, z), a derivada é 1 quando z > 0 e 0 caso contrário (em z = 0 ela não existe, e adota-se 0 por convenção — é o que o código faz com (Z1 > 0)). O que viabilizou as redes profundas não foi tanto o barateamento da conta, e sim o fato de essa derivada não saturar: na sigmoide, ela vale no máximo 0,25 e encolhe a cada camada, até o gradiente sumir (GOODFELLOW; BENGIO; COURVILLE, 2016).

O atalho da classificação. Quando a última camada usa softmax e a perda é a entropia cruzada, toda a expressão (1) colapsa em δ(L) = a(L)y. É por isso que, no tutorial de nível 3, a retropropagação começa com uma subtração e nada mais.

Sinapse 08

De onde vem a montanha: a descida do gradiente vista de perto

A metáfora da encosta na neblina esconde uma pergunta que costuma travar todo mundo: de onde veio essa montanha? Ninguém a desenhou. Ela não faz parte do problema — não existe montanha nenhuma dentro das imagens de algarismos. A paisagem nasce do casamento entre o modelo que você escolheu e os dados que você tem: ela é o gráfico do erro em função dos pesos. Mude o modelo, e a montanha muda de forma; mude os dados, e ela muda de novo. Vamos construir uma, do zero, pequena o bastante para caber num gráfico.

Tome o menor problema honesto possível: três medições, (0; 0,4), (1; 1,0) e (2; 2,2), e a tarefa de passar uma reta por elas. O caminho do modelo até a montanha tem sempre os mesmos quatro passos — e vale a pena vê-los de uma vez, porque são exatamente os mesmos numa rede de bilhões de parâmetros:

1
Escolha o modelo. O nosso terá um único botão: ŷ = w·x, uma reta pela origem. O w é o nosso "peso" — a única coisa que podemos girar.
2
Escreva o erro que esse modelo comete nesses dados. Para cada medição, a diferença entre o previsto e o real, ao quadrado; depois, a média: E(w) = ⅓[(w·0 − 0,4)² + (w·1 − 1,0)² + (w·2 − 2,2)²]. Repare: x e y são números conhecidos — a única variável que sobrou nessa expressão é w. E(w) é uma função comum, dessas de Cálculo I. O gráfico dela é a "montanha" (aqui, um vale só).
3
Derive. dE/dw = ⅔·(5w − 5,4). A derivada diz a inclinação do vale em qualquer ponto: positiva, o chão sobe para a direita; negativa, sobe para a esquerda; zero, fundo do vale.
4
Desça. w ← w − η·dE/dw. O sinal de menos anda contra a subida; a taxa η decide o tamanho do passo. Repetir até a derivada ficar perto de zero. Isso é toda a descida do gradiente.

Agora pilote você. O painel da esquerda mostra o problema (os três pontos e a reta atual); o da direita mostra a montanha (o erro em função de w) com a bolinha na posição atual. São duas fotografias do mesmo instante: quando a bolinha desce um degrau no vale, a reta se ajusta aos pontos — obrigatoriamente, porque uma coisa é a outra. Use "+1 passo" para ver cada movimento em câmera lenta ou "▶ descer" para a reprodução automática (o botão 4× acelera quando a novidade passar).

paisagem passo η ritmo

O problema: reta ŷ = w·x nos 3 pontos

A montanha: erro E em função de w

Escolha o passo e clique em descer — ou avance um passo de cada vez.

Três experiências valem a pena antes de seguir. Primeira: com o passo 0,05, a bolinha rasteja — chega, mas a paciência custa. Segunda: com 0,65, ela atravessa o vale, sobe do outro lado mais alto do que estava e vai embora do gráfico: é o erro explodindo, o mesmo desastre que uma taxa de aprendizado grande demais causa numa rede de verdade. Terceira: mude a paisagem para dois vales — essa curva não sai do nosso modelo de reta (que só produz vales únicos, de parábola); é o tipo de relevo que uma rede com camadas escondidas produz, como a do XOR. Reinicie algumas vezes: dependendo do ponto de partida, a bolinha desce para o vale raso da direita e para ali, satisfeita, sem jamais saber que havia um vale mais fundo à esquerda. Você acabou de ver um mínimo local — o mesmo que o tutorial de código nível 2 encontra com a semente 42.

Duas alavancas: o mapa vira mapa de calor

Agora solte o segundo botão do modelo: ŷ = w·x + b. Com dois parâmetros, o erro E(w, b) é uma função de duas variáveis — uma superfície, uma tigela de verdade em três dimensões. Para caber na tela, olhamos a tigela de cima: no mapa abaixo, cada pixel é uma combinação (w, b), e a cor diz a altura do erro naquele ponto — escuro é alto, claro é fundo de vale. Clique em qualquer lugar do mapa para largar a bolinha ali, e mande descer.

passo η ritmo

O problema: reta ŷ = w·x + b

A montanha vista de cima: E(w, b)

escuro = erro alto · claro = fundo · × = mínimo · clique para largar a bolinha

Clique no mapa para escolher o ponto de partida — ou use reiniciar para sortear um.

Observe a trajetória com atenção: ela não vai reta ao fundo. O vale de E(w, b) é alongado — íngreme numa direção, quase plano na outra —, e por isso a bolinha quica em zigue-zague entre as paredes antes de rastejar pelo fundo. Esse desenho, que parece defeito, é um retrato honesto do treinamento real: boa parte da engenharia moderna de otimização (momento, Adam e afins) existe para amaciar exatamente esse zigue-zague (GOODFELLOW; BENGIO; COURVILLE, 2016).

E quando os botões são bilhões?

Quatro painéis em sequência: com um parâmetro o erro é uma curva; com dois, uma superfície em forma de tigela; com três, um cubo com ponto de interrogação indicando que já não cabe num gráfico; com bilhões, apenas a fórmula w recebe w menos eta vezes gradiente de E sobre um fundo abstrato

A escada de dimensões: o desenho acaba em dois parâmetros; a regra, nunca. Ilustração do autor (2026)

Aqui termina o que os olhos alcançam — e é importante dizer isso com todas as letras. Com um parâmetro, o erro é uma curva; com dois, uma superfície que ainda cabe num mapa de calor; com três, precisaríamos de um gráfico em quatro dimensões, e nenhuma tela o desenha. A rede de dígitos do tutorial nível 3 tem 2 410 parâmetros: sua "montanha" mora num espaço de 2 410 dimensões. O GPT-3 tem 175 bilhões (BROWN et al., 2020). Ninguém nunca viu essas paisagens, nem verá.

Mas — e este é o pulo — a matemática não precisa enxergar: em qualquer número de dimensões, o gradiente continua apontando a subida mais íngreme, e o sinal de menos continua descendo. A conta w ← w − η·∇E que você acabou de executar com uma bolinha num gráfico é, símbolo por símbolo, a mesma executada bilhões de vezes no treinamento de um modelo de linguagem. A geometria vira álgebra e segue funcionando onde a intuição visual já desistiu. E a retropropagação, da seção anterior, ganha aqui seu lugar exato na história: ela não é a descida — ela é o jeito barato de calcular, de uma vez, os bilhões de derivadas parciais que a descida consome a cada passo.

Sinapse 09

Da grade de pixels ao algarismo

Fluxo em três etapas: grade de 28 por 28 pixels com o algarismo 3 manuscrito, coluna com 784 números entre 0 e 1 e rede neural com dez saídas, uma por algarismo, em que a barra do algarismo 3 é a mais longa e recebe a etiqueta maior escore

Para a rede, uma imagem não é uma imagem: é uma lista de 784 números entre 0 e 1. Ilustração do autor (2026)

Agora o exemplo que interessa de verdade. A máquina de Rosenblatt já enxergava: o Mark I Perceptron, projetado no Cornell Aeronautical Laboratory no fim dos anos 1950 com dinheiro da Marinha e da Força Aérea, tinha uma "retina" de fotocélulas ligada por fios a unidades de associação cujos pesos eram literalmente potenciômetros girados por pequenos motores elétricos. A máquina está hoje no acervo do Smithsonian (NATIONAL MUSEUM OF AMERICAN HISTORY, [s. d.]). Os "pixels" daquela retina eram fotocélulas de verdade, dispostas numa grade de 20 por 20 — quatrocentos pontos de luz.

A ideia continua idêntica sessenta e oito anos depois. Pegue uma imagem de 28 × 28 pixels em tons de cinza — o formato do conjunto MNIST, a base de algarismos manuscritos que virou o "arroz com feijão" da área, com 60 mil imagens de treino e 10 mil de teste (LeCUN et al., 1998). Empilhe as linhas uma após a outra e você terá uma lista de 784 números, cada um entre 0 (preto) e 1 (branco). Essa lista é a entrada da rede.

Na saída, dez neurônios — um para cada algarismo. Cada um produz um escore para a sua pergunta: "quanto isso se parece com um 0?", "quanto se parece com um 1?", e assim por diante. A resposta final é o maior escore. Nas redes modernas, esses dez números passam ainda por uma função chamada softmax, que os transforma em dez probabilidades que somam 1 — ou seja, os escores não são independentes: eles competem entre si. Durante o treinamento, o gabarito é escrito no mesmo formato: o algarismo 3 vira a lista (0, 0, 0, 1, 0, 0, 0, 0, 0, 0), técnica que se chama codificação um-de-none-hot, em inglês.

E o que, afinal, a rede aprende?

Dez mapas de calor em duas fileiras de cinco, cada um mostrando de forma borrada a silhueta de um algarismo de 0 a 9, representando os pesos aprendidos por cada neurônio de saída

Os pesos de cada saída, desenhados de volta na grade de pixels: moldes fantasmagóricos aprendidos, não programados. Ilustração do autor (2026)

Aqui está a parte bonita — e ela aparece na sua forma mais nítida no caso mais simples de todos, o classificador de uma camada só, com os dez neurônios ligados diretamente aos pixels. Se você pegar os 784 pesos do neurônio responsável pelo algarismo 3 e os desenhar de volta numa grade 28 × 28, verá um fantasma de um 3 — regiões de peso alto onde o traço costuma passar e regiões de peso negativo onde ele nunca passa. O neurônio aprendeu um molde: uma máscara que soma pontos quando a tinta cai onde deveria e desconta pontos quando cai onde não deveria. Ninguém programou como é um 3; a rede destilou isso de milhares de exemplos rabiscados por pessoas diferentes.

Assim que entra uma camada escondida, esse retrato deixa de ser legível: o neurônio de saída do "3" não olha mais para os 784 pixels, e sim para as 32 ou 128 respostas da camada anterior — não há como desenhá-lo numa grade 28 × 28. Em compensação, o mesmo raciocínio passa a se repetir em andares: a primeira camada aprende pedaços de traço e cantos, a segunda combina esses pedaços em laços e hastes, a terceira em algarismos inteiros. É essa hierarquia de representações aprendidas que define o deep learning (LeCUN; BENGIO; HINTON, 2015).

Quanto isso funciona, em números

Em 1989, Yann LeCun e colegas treinaram uma rede com retropropagação para ler códigos postais manuscritos de envelopes reais dos Correios norte-americanos — a primeira aplicação industrial de peso do método (LeCUN et al., 1989). Uma década depois, o artigo que apresentou a LeNet-5 comparou dezenas de abordagens no mesmo conjunto de teste, e os resultados contam a história inteira da área numa coluna só.

Tabela 1 — Taxa de erro no conjunto de teste do MNIST, por método — 1998

MétodoTipoErro (%)
Classificador linear1 camada, sem camada escondida12,0
Vizinhos mais próximos (distância euclidiana)Sem treinamento de pesos5,0
Rede de 2 camadas, 300 unidades escondidasRetropropagação4,7
Rede de 3 camadas, 300+100 unidades escondidasRetropropagação3,05
LeNet-1Rede convolucional1,7
LeNet-5Rede convolucional0,95
LeNet-4 com reforço (boosting)Conjunto de redes convolucionais0,7

Fonte: elaborado pelo autor com base em LeCun et al. (1998).Nota: conjunto de teste com 10 mil imagens de 28 × 28 pixels; o classificador linear da primeira linha foi ajustado por mínimos quadrados, e não pela regra do perceptron, mas seus 12,0% dão a ordem de grandeza do que uma única camada alcança nesta tarefa.

O tamanho do salto, em barras

Fonte: elaborado pelo autor com base em LeCun et al. (1998).Nota: comprimento das barras proporcional ao maior valor da série (12,0%); rótulos numéricos trazem a taxa de erro real.

Leia a tabela de trás para frente e você terá o roteiro deste post: sair de 12% de erro (uma reta só) para menos de 1% (camadas escondidas mais uma arquitetura que respeita a geometria da imagem) foi obra de trinta anos de trabalho. Em 2012, a mesma receita, com muito mais dados e placas de vídeo, venceu o desafio ImageNet e inaugurou a era atual da IA (KRIZHEVSKY; SUTSKEVER; HINTON, 2012). Em 2019, a ACM concedeu o Prêmio Turing de 2018 a Yoshua Bengio, Geoffrey Hinton e Yann LeCun exatamente por isso (ACM, 2019).

Sinapse 10

Decorar não é aprender: treino, teste e a prova surpresa

Gráfico com duas curvas: erro no treino descendo continuamente e erro no teste descendo, atingindo um ponto ideal e voltando a subir na região marcada como decoreba

A partir de certo ponto, continuar treinando piora o desempenho no que importa. Ilustração do autor (2026)

Qualquer professor reconhece o fenômeno: o aluno que decorou as questões da lista tira dez na lista e cinco na prova. Redes neurais fazem exatamente isso, e o nome técnico é sobreajuste (overfitting). Uma rede com parâmetros suficientes consegue memorizar o conjunto de treino inteiro, incluindo os rabiscos tortos e os erros de rotulagem — e, ao memorizar, deixa de generalizar.

Por isso o protocolo é inegociável: separe os dados em treino (o material de estudo) e teste (a prova surpresa, que o modelo nunca viu). O desempenho que vale é o do teste. No tutorial de nível 3, você verá a rede chegar a 100% de acerto no treino e estacionar em torno de 98% no teste — a diferença entre os dois números é, na prática, a decoreba medida em porcentagem (GOODFELLOW; BENGIO; COURVILLE, 2016).

E há um limite mais fundo, que nenhuma arquitetura resolve: a rede só pode aprender aquilo que está nos exemplos, incluindo os vícios de quem os produziu. Se o gabarito for enviesado, o modelo aprende o viés com a mesma diligência com que aprenderia o acerto — assunto do próximo post desta série. (Cuidado com a palavra, que aparece com dois sentidos neste texto: o "viés" do neurônio, lá da Sinapse 01, é um número que desloca a fronteira; o viés dos dados é outra coisa, e bem mais cara de consertar.) (RUSSELL; NORVIG, 2022).

Sinapse 11

Marcos: de 1943 a 2019 em uma página

Quadro 3 — Marcos da história das redes neurais artificiais — 1943-2019

AnoAutoriaContribuição
1943McCulloch e PittsNeurônio lógico de limiar; qualquer função proposicional pode ser montada com essas unidades
1949HebbAprendizagem por reforço das conexões coativadas; base biológica do peso ajustável
1958RosenblattPerceptron e sua regra de correção de erro; teorema da convergência
1960Widrow e HoffAdaline e regra delta; troca do "acertou/errou" pelo erro contínuo
1969Minsky e PapertDemonstração dos limites do perceptron de camada única; começo do inverno
1974WerbosRetropropagação descrita em tese de doutorado, sem repercussão imediata
1986Rumelhart, Hinton e WilliamsRetropropagação publicada na Nature; redes com camadas escondidas viram prática
1989Cybenko; Hornik, Stinchcombe e WhiteTeorema da aproximação universal
1989LeCun e colegasLeitura automática de códigos postais manuscritos; primeira aplicação industrial
1998LeCun, Bottou, Bengio e HaffnerLeNet-5 e a consolidação do MNIST como referência
2012Krizhevsky, Sutskever e HintonAlexNet vence o ImageNet; começa a era do deep learning
2019ACMPrêmio Turing de 2018 a Bengio, Hinton e LeCun

Fonte: elaborado pelo autor com base em McCulloch e Pitts (1943), Hebb (1949), Rosenblatt (1958), Widrow e Hoff (1960), Minsky e Papert (1969), Werbos (1974), Rumelhart, Hinton e Williams (1986), Cybenko (1989), Hornik, Stinchcombe e White (1989), LeCun et al. (1989; 1998), Krizhevsky, Sutskever e Hinton (2012) e ACM (2019).Nota: o ano indicado é o da publicação de referência; várias ideias circularam antes disso em formas parciais ou independentes.

Sinapse 12

Mão na massa: três tutoriais prontos para o Google Colab

As três seções abaixo formam uma escada. Cada bloco de código é um programa completo: abra o Google Colab, crie um caderno novo, cole o código numa célula e aperte executar. Nada precisa ser instalado — as bibliotecas usadas já vêm no ambiente. Todos os programas foram executados e as saídas mostradas são reais e completas (a única exceção é o bônus em Keras, que depende de baixar o MNIST).

Código · nível 1 Um perceptron do zero, em Python puro, aprendendo o "ou"

Sem bibliotecas, sem mágica: trinta linhas com o mesmo algoritmo do laboratório interativo da Sinapse 03 — aqui com os pesos começando em zero, taxa 0,5 e os exemplos em outra ordem, então os números do caminho não batem com os de lá; o destino, sim.

# ------------------------------------------------------------
# Perceptron do zero: aprendendo a porta logica OU
# ------------------------------------------------------------

dados = [((0, 0), 0), ((0, 1), 1), ((1, 0), 1), ((1, 1), 1)]

pesos = [0.0, 0.0]   # w1, w2
vies  = 0.0          # b (bias)
taxa  = 0.5          # eta: tamanho do passo de correcao

def saida(x):
    soma = pesos[0] * x[0] + pesos[1] * x[1] + vies
    return 1 if soma >= 0 else 0        # funcao degrau

for epoca in range(1, 11):
    erros = 0
    for x, alvo in dados:
        y = saida(x)
        erro = alvo - y                 # -1, 0 ou +1
        if erro != 0:
            erros += 1
            pesos[0] += taxa * erro * x[0]
            pesos[1] += taxa * erro * x[1]
            vies     += taxa * erro
    print("epoca %2d | erros: %d | w1=%.2f w2=%.2f b=%.2f"
          % (epoca, erros, pesos[0], pesos[1], vies))
    if erros == 0:
        print("Convergiu! O perceptron aprendeu o OU.")
        break

print("\nTeste final:")
for x, alvo in dados:
    print("  %s -> %d (esperado %d)" % (str(x), saida(x), alvo))

Saída obtida

epoca  1 | erros: 2 | w1=0.00 w2=0.50 b=0.00
epoca  2 | erros: 2 | w1=0.50 w2=0.50 b=0.00
epoca  3 | erros: 1 | w1=0.50 w2=0.50 b=-0.50
epoca  4 | erros: 0 | w1=0.50 w2=0.50 b=-0.50
Convergiu! O perceptron aprendeu o OU.

Teste final:
  (0, 0) -> 0 (esperado 0)
  (0, 1) -> 1 (esperado 1)
  (1, 0) -> 1 (esperado 1)
  (1, 1) -> 1 (esperado 1)

Experimente. Na lista dados, troque o último par — ((1, 1), 1) — por ((1, 1), 0): você acabou de transformar o "ou" em "ou exclusivo". Aumente o laço para range(1, 1001) e troque a linha do print por if epoca % 100 == 0 or erros == 0: antes dela (sem esse filtro, o Colab cospe mil linhas iguais e parece travado). O que você vai ver:

epoca 100 | erros: 4 | w1=-0.50 w2=0.00 b=0.00
epoca 200 | erros: 4 | w1=-0.50 w2=0.00 b=0.00
   ... ate a epoca 1000, sempre igual ...

Repare no detalhe: os pesos não ficam balançando, eles congelam. As quatro correções de uma época se anulam entre si e tudo volta ao ponto de partida — um ciclo fechado. O perceptron não está "quase lá": está preso, e ficaria preso por um milhão de épocas.

Código · nível 2 Uma rede 2-2-1 resolvendo o "ou exclusivo", com retropropagação escrita à mão

Antes de treinar, monte na mão. Este primeiro programa não aprende nada: ele apenas executa os três perceptrons da Sinapse 06 com os pesos que escolhemos. Serve para você ver o circuito funcionando e conferir, número a número, o Quadro 2.

# ------------------------------------------------------------
# Os tres perceptrons do OU EXCLUSIVO, com pesos escolhidos a mao
# ------------------------------------------------------------

def degrau(z):
    return 1 if z >= 0 else 0

def perceptron(x1, x2, w1, w2, b):
    return degrau(w1 * x1 + w2 * x2 + b)

alvos = {(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 0}

print("x1 x2 | h1(OU) h2(E) | y  alvo")
for x1 in (0, 1):
    for x2 in (0, 1):
        h1 = perceptron(x1, x2,  1,  1, -0.5)   # P1: pelo menos um
        h2 = perceptron(x1, x2,  1,  1, -1.5)   # P2: os dois
        y  = perceptron(h1, h2,  1, -2, -0.5)   # P3: h1 e nao h2
        ok = "ok" if y == alvos[(x1, x2)] else "ERRO"
        print(" %d  %d |   %d      %d   | %d   %d  %s"
              % (x1, x2, h1, h2, y, alvos[(x1, x2)], ok))

Saída obtida

x1 x2 | h1(OU) h2(E) | y  alvo
 0  0 |   0      0   | 0   0  ok
 0  1 |   1      0   | 1   1  ok
 1  0 |   1      0   | 1   1  ok
 1  1 |   1      1   | 0   0  ok

Olhe a coluna do meio: as linhas de (0, 1) e (1, 0) produzem o mesmo par h1=1, h2=0. É a fusão dos dois pontos que o gráfico da Sinapse 06 mostra — visível aqui em texto puro.

Experimente. Troque o peso -2 do P3 por -1 e rode de novo: a linha (1, 1) passa a responder 1, e o circuito vira um OU comum. Aquele -2 é literalmente a diferença entre o "ou" e o "ou exclusivo".

Agora deixe a rede descobrir sozinha. O programa a seguir não recebe peso nenhum de presente: parte de números aleatórios e chega a uma solução pela retropropagação. Nenhuma biblioteca de aprendizado profundo calcula os gradientes por você aqui — o passo para trás está escrito à mão.

import numpy as np

np.random.seed(1)   # troque a semente e veja: as vezes a rede cai num minimo local

# 1) Dados do OU EXCLUSIVO -----------------------------------
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=float)
Y = np.array([[0], [1], [1], [0]], dtype=float)

# 2) Arquitetura 2 -> 2 -> 1 ---------------------------------
# O nivel 1 fazia, para UM exemplo por vez:  soma = w1*x1 + w2*x2 + b
# Aqui fazemos os 4 exemplos e os 2 neuronios de uma vez so:
#   X  tem forma 4x2  (4 exemplos, 2 entradas)
#   W1 tem forma 2x2  (2 entradas -> 2 neuronios escondidos)
#   X @ W1 tem forma 4x2: linha i, coluna j = soma do exemplo i no neuronio j
#   + b1 (1x2) soma o mesmo vies nas 4 linhas -- isso se chama broadcasting
W1 = np.random.randn(2, 2) * 0.8   # pesos entrada -> escondida
b1 = np.zeros((1, 2))
W2 = np.random.randn(2, 1) * 0.8   # pesos escondida -> saida
b2 = np.zeros((1, 1))

# Trocamos o degrau pela sigmoide porque o degrau e plano em toda parte:
# sua derivada e zero, e sem derivada nao ha para onde descer.
def sigmoide(z):
    return 1.0 / (1.0 + np.exp(-z))

taxa = 1.0   # alta de proposito: sao so 4 exemplos, e a sigmoide ja amortece o passo

for epoca in range(1, 20001):
    # ---- passo para frente -------------------------------
    Z1 = X @ W1 + b1
    A1 = sigmoide(Z1)
    Z2 = A1 @ W2 + b2
    A2 = sigmoide(Z2)               # previsao da rede

    # ---- erro --------------------------------------------
    perda = np.mean((A2 - Y) ** 2)

    # ---- passo para tras (retropropagacao) ---------------
    dA2 = 2 * (A2 - Y) / len(X)
    dZ2 = dA2 * A2 * (1 - A2)       # derivada da sigmoide
    dW2 = A1.T @ dZ2
    db2 = dZ2.sum(axis=0, keepdims=True)

    dA1 = dZ2 @ W2.T
    dZ1 = dA1 * A1 * (1 - A1)
    dW1 = X.T @ dZ1
    db1 = dZ1.sum(axis=0, keepdims=True)

    # ---- descida do gradiente ----------------------------
    W2 -= taxa * dW2; b2 -= taxa * db2
    W1 -= taxa * dW1; b1 -= taxa * db1

    if epoca % 4000 == 0:
        print("epoca %5d | perda = %.5f" % (epoca, perda))

# recalcula tudo com os pesos finais, ja atualizados
A1 = sigmoide(X @ W1 + b1)
A2 = sigmoide(A1 @ W2 + b2)

print("\nPrevisoes finais:")
for x, p, alvo in zip(X, A2.ravel(), Y.ravel()):
    print("  %s -> %.3f  (arredondado: %d | esperado: %d)"
          % (x, p, round(p), alvo))

print("\nO que cada neuronio escondido aprendeu (h1, h2):")
for x, h in zip(X, np.round(A1, 2)):
    print("  %s -> %s" % (x, h))

Saída obtida

epoca  4000 | perda = 0.00095
epoca  8000 | perda = 0.00039
epoca 12000 | perda = 0.00024
epoca 16000 | perda = 0.00017
epoca 20000 | perda = 0.00014

Previsoes finais:
  [0. 0.] -> 0.011  (arredondado: 0 | esperado: 0)
  [0. 1.] -> 0.989  (arredondado: 1 | esperado: 1)
  [1. 0.] -> 0.989  (arredondado: 1 | esperado: 1)
  [1. 1.] -> 0.014  (arredondado: 0 | esperado: 0)

O que cada neuronio escondido aprendeu (h1, h2):
  [0. 0.] -> [1.   0.94]
  [0. 1.] -> [0.92 0.02]
  [1. 0.] -> [0.92 0.02]
  [1. 1.] -> [0.07 0.  ]

Leia as quatro últimas linhas devagar: é a prova de tudo o que este post afirma. As entradas (0,1) e (1,0) produzem o mesmo par escondido, (0,92 · 0,02). A rede fundiu os dois casos — exatamente o colapso de pontos do esquema da Sinapse 06 —, e a partir daí sobraram três posições que uma reta separa. Ninguém programou isso: caiu do gradiente.

E repare que ela não reinventou o nosso circuito: o h1 aprendido vale 1,00 em (0,0) e 0,07 em (1,1), ou seja, é quase o oposto do OU que escolhemos à mão. A rede achou outro par de retas que serve igualmente bem. A solução da Sinapse 06 é uma entre infinitas — o que importa é que todas elas separam os dois pontos de alvo 0 daquele ponto fundido de alvo 1.

Experimente. Troque np.random.seed(1) por np.random.seed(42) e rode de novo: a perda estaciona perto de 0,125 e duas das quatro respostas ficam em cima do muro, em 0,5. Não há bug nenhum — é um mínimo local, exatamente aquela depressão rasa no meio da neblina. Testei as trinta primeiras sementes: quatro delas caem nessa armadilha, ou seja, mais ou menos uma em cada sete. Nas outras, o vale certo aparece. Esse é, em miniatura, um dos dramas cotidianos de quem treina redes: às vezes a saída é só reiniciar.

Código · nível 3 Reconhecendo algarismos manuscritos numa matriz de pixels

Uma rede 64 → 32 → 10, escrita do zero, construída sobre 1 797 imagens de algarismos manuscritos em grades de 8 × 8 — das quais 1 437 vão para o treino e 360 ficam guardadas para o teste (é o conjunto digits, que já vem com o scikit-learn e roda em segundos). Aqui aparecem, juntos, todos os ingredientes do post: matriz de pixels achatada em vetor, camada escondida, ReLU, softmax, retropropagação, minilotes e — o mais importante — a separação entre treino e teste.

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split

np.random.seed(7)

# 1) Dados: 1797 imagens 8x8 de digitos manuscritos ----------
digitos = load_digits()
X = digitos.data / 16.0      # 64 pixels achatados numa lista, escala 0-1
y = digitos.target           # rotulo de 0 a 9
Y = np.eye(10)[y]            # um-de-n: 3 -> [0,0,0,1,0,0,0,0,0,0]

# stratify=y: mesma proporcao de cada algarismo no treino e no teste
X_tr, X_te, Y_tr, Y_te, y_tr, y_te = train_test_split(
    X, Y, y, test_size=0.2, random_state=7, stratify=y)

print("treino:", X_tr.shape, "| teste:", X_te.shape)

# 2) Rede 64 -> 32 -> 10 -------------------------------------
def inicia(n_ent, n_sai):
    # escala de He: mantem o sinal estavel ao atravessar a ReLU
    return np.random.randn(n_ent, n_sai) * np.sqrt(2.0 / n_ent)

W1, b1 = inicia(64, 32), np.zeros((1, 32))
W2, b2 = inicia(32, 10), np.zeros((1, 10))

def relu(z):
    return np.maximum(0, z)

def softmax(z):       # dez escores -> dez probabilidades que somam 1
    z = z - z.max(axis=1, keepdims=True)
    e = np.exp(z)
    return e / e.sum(axis=1, keepdims=True)

def prever(entrada):  # o passo para frente inteiro, em uma linha
    return softmax(relu(entrada @ W1 + b1) @ W2 + b2)

taxa, lote, epocas = 0.5, 32, 60

for epoca in range(1, epocas + 1):
    ordem = np.random.permutation(len(X_tr))
    # minilote: em vez de olhar as 1437 imagens de uma vez,
    # corrigimos os pesos a cada 32 exemplos
    for i in range(0, len(ordem), lote):
        idx = ordem[i:i + lote]
        xb, yb = X_tr[idx], Y_tr[idx]

        # ---- para frente ---------------------------------
        Z1 = xb @ W1 + b1
        A1 = relu(Z1)
        A2 = softmax(A1 @ W2 + b2)

        # ---- para tras (retropropagacao) -----------------
        dZ2 = (A2 - yb) / len(xb)        # gradiente da entropia cruzada
        dW2 = A1.T @ dZ2
        db2 = dZ2.sum(axis=0, keepdims=True)

        dA1 = dZ2 @ W2.T
        dZ1 = dA1 * (Z1 > 0)             # derivada da ReLU
        dW1 = xb.T @ dZ1
        db1 = dZ1.sum(axis=0, keepdims=True)

        W2 -= taxa * dW2; b2 -= taxa * db2
        W1 -= taxa * dW1; b1 -= taxa * db1

    if epoca % 15 == 0:
        P = prever(X_tr)
        perda = -np.mean(np.log(P[np.arange(len(y_tr)), y_tr] + 1e-9))
        ac_tr = (P.argmax(axis=1) == y_tr).mean()
        ac_te = (prever(X_te).argmax(axis=1) == y_te).mean()
        print("epoca %2d | perda %.4f | acerto treino %.3f | acerto teste %.3f"
              % (epoca, perda, ac_tr, ac_te))

# 3) Onde a rede erra ----------------------------------------
pred = prever(X_te).argmax(axis=1)
indices_errados = np.where(pred != y_te)[0]
print("\nerrou %d de %d imagens de teste" % (len(indices_errados), len(y_te)))
for i in indices_errados:
    print("  imagem %4d: era %d, a rede disse %d" % (i, y_te[i], pred[i]))

Saída obtida

treino: (1437, 64) | teste: (360, 64)
epoca 15 | perda 0.0598 | acerto treino 0.980 | acerto teste 0.964
epoca 30 | perda 0.0147 | acerto treino 0.998 | acerto teste 0.983
epoca 45 | perda 0.0073 | acerto treino 1.000 | acerto teste 0.983
epoca 60 | perda 0.0041 | acerto treino 1.000 | acerto teste 0.983

errou 6 de 360 imagens de teste
  imagem    6: era 9, a rede disse 5
  imagem   22: era 5, a rede disse 9
  imagem   27: era 3, a rede disse 5
  imagem  199: era 6, a rede disse 1
  imagem  212: era 5, a rede disse 4
  imagem  326: era 8, a rede disse 5

Leia com atenção a linha da época 60. Acerto de 100% no treino e 98,3% no teste: a rede memorizou o material de estudo por completo e ainda assim erra 6 provas de 360. Aquela distância de 1,7 ponto entre os dois números é o sobreajuste que discutimos. E vários dos erros são pares que confundem gente também — 9 com 5, 3 com 5, 8 com 5 —, embora nem todos (6 com 1 é mais difícil de justificar).

Experimente 1 — deixe a decoreba gritar. Troque test_size=0.2 por test_size=0.8 (a rede passa a estudar com só 359 imagens) e epocas para 200. O que sai:

treino: (359, 64) | teste: (1438, 64)
epoca 200 | perda 0.0015 | acerto treino 1.000 | acerto teste 0.935

errou 93 de 1438 imagens de teste

A distância entre treino e teste salta de 1,7 para 6,5 pontos, e a perda de treino continua caindo enquanto o acerto de teste não sai do lugar. É a decoreba visível em números: a rede segue melhorando no que já viu e parou de aprender qualquer coisa útil sobre o resto do mundo.

Experimente 2 — olhe a imagem que a rede errou. Três linhas no fim do programa, e a base de dados deixa de ser abstrata:

import matplotlib.pyplot as plt
i = indices_errados[0]
plt.imshow(X_te[i].reshape(8, 8), cmap="gray_r")
plt.title("era %d, a rede disse %d" % (y_te[i], pred[i])); plt.show()

O índice impresso (imagem 6, por exemplo) é a posição dentro do conjunto de teste, não dentro da base inteira. E um aviso de reprodutibilidade: os índices exatos podem variar conforme a versão do scikit-learn, que sorteia a divisão treino/teste; os números de acerto, não.

Bônus: as mesmas ideias em dez linhas, com o MNIST completo. Depois de escrever a retropropagação à mão, veja o que uma biblioteca faz por você — e note que a estrutura é rigorosamente a mesma: achatar a imagem, camada escondida com ReLU, dez saídas com softmax.

import tensorflow as tf

(x_tr, y_tr), (x_te, y_te) = tf.keras.datasets.mnist.load_data()
x_tr, x_te = x_tr / 255.0, x_te / 255.0     # 28x28 pixels, escala 0-1

modelo = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(28, 28)),
    tf.keras.layers.Flatten(),               # 28x28 vira 784 numeros
    tf.keras.layers.Dense(128, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax"),
])

modelo.compile(optimizer="adam",
               loss="sparse_categorical_crossentropy",
               metrics=["accuracy"])

modelo.fit(x_tr, y_tr, epochs=5, validation_split=0.1)

perda, acerto = modelo.evaluate(x_te, y_te, verbose=0)
print("acerto no conjunto de teste: %.4f" % acerto)

Cinco épocas, menos de um minuto no Colab depois do download do MNIST, e você chega perto de 98% de acerto em 10 mil imagens que a rede nunca viu — sem ter escrito uma única regra sobre o que é um algarismo. Não se assuste se o import tensorflow despejar avisos vermelhos sobre CUDA e oneDNN: são recados sobre placa de vídeo, não erros.

Sinapse 13

Perguntas para o seu contexto

O vocabulário deste post é o mesmo que sustenta as ferramentas que você usa. Marque o que já consegue explicar para um colega — cada item cobre um conceito do texto.

0 de 7

Vale ainda a transposição para a sala de aula. A regra de Rosenblatt é, no fundo, uma teoria do feedback: correção só ensina quando chega ligada ao caso concreto que a produziu e proporcional ao tamanho do erro — nota sem comentário é erro sem gradiente. E o sobreajuste tem tradução direta na avaliação: uma lista de exercícios que vira gabarito decorado mede memória, não aprendizagem. Já a lição da camada escondida é a mais bonita de todas: quando um problema parece impossível, às vezes o que falta não é mais esforço, e sim uma representação melhor do problema.

O tema também já é estatística oficial brasileira: segundo o IBGE, 41,9% das empresas industriais com 100 ou mais pessoas ocupadas usavam inteligência artificial em 2024, contra 16,9% em 2022 (IBGE, 2025). Boa parte do que está por trás desses sistemas é, com poucas variações, o que você acabou de ver aqui.

Convergência

Uma reta, um muro e uma escada

A história que contamos aqui tem uma estrutura quase teatral. Ato um: alguém percebe que uma máquina pode ajustar sozinha os próprios números e a imprensa promete consciência artificial para a semana seguinte. Ato dois: uma demonstração matemática de três linhas mostra que o modelo é uma reta diante de um mundo curvo, e o entusiasmo vira gelo por quase duas décadas. Ato três: descobre-se que bastava empilhar camadas e deixar o erro voltar por elas — e que a matemática necessária já estava pronta desde o século XVII, na regra da cadeia.

Vale reter que o perceptron não estava errado; estava incompleto. E que a solução não veio de uma teoria mais sofisticada, mas de uma mudança de perspectiva: em vez de encontrar a fronteira certa no espaço original, deixe a máquina inventar um espaço em que a fronteira certa seja simples. É essa ideia — não a metáfora do cérebro — que atravessa toda a inteligência artificial contemporânea, dos leitores de cheque aos modelos de linguagem.

No próximo post da série, viramos a lente para o outro lado da equação: se a rede só aprende o que está nos exemplos, quem escolhe os exemplos decide o que a máquina vai pensar. Falaremos de dados, viés, avaliação e do que acontece quando o gabarito está torto. Até lá, fica a pergunta: na sua área, qual é o "ou exclusivo" — aquele problema que parece impossível apenas porque ninguém ainda trocou as coordenadas em que ele é descrito?

Nota do autor: a manchete do New York Times de 1958 é citada aqui na tradução do autor, a partir da reprodução feita pelo Cornell Chronicle (2019), e não do original consultado diretamente. O bordão "neurônios que disparam juntos se conectam" é uma paráfrase popular posterior, não uma frase literal de Hebb (1949) — o texto original fala em fortalecimento da eficiência de uma célula que participa repetidamente da ativação de outra. A configuração da "retina" do Mark I em 20 × 20 fotocélulas é o dado consolidado na literatura técnica sobre a máquina; o registro do Smithsonian descreve as unidades sensoriais, associativas e de resposta sem informar a contagem. Sobre a data da máquina: o registro do Smithsonian a associa a 1958, mas a demonstração daquele ano foi uma simulação em computador de válvulas, e o equipamento físico só ficou operacional por volta de 1960 — daí o "fim dos anos 1950" no texto. Sobre a paternidade da retropropagação: Werbos (1974) é a referência mais antiga habitualmente citada em textos de aprendizado de máquina, mas o método foi redescoberto de forma independente diversas vezes, e a difusão efetiva veio com Rumelhart, Hinton e Williams (1986) — adotamos aqui essa dupla atribuição. O teorema da convergência do perceptron é frequentemente atribuído ao artigo de 1958; a demonstração, porém, está em Rosenblatt (1962) e no limite de Novikoff, do mesmo ano — por isso a citação nesse ponto é a de 1962. A responsabilidade de Minsky e Papert (1969) pelo "inverno" das redes neurais é objeto de disputa historiográfica: o livro demonstra limites reais do modelo de camada única e conjectura, sem provar, que a extensão a múltiplas camadas seria estéril; o corte de financiamento teve outras causas concorrentes. Os valores da Tabela 1 são os publicados por LeCun et al. (1998) para o conjunto de teste do MNIST e não representam o estado da arte atual, hoje bem abaixo de 0,5%. Os programas em Python foram executados pelo autor e as saídas reproduzidas são reais e completas, sem cortes; o exemplo em Keras, por depender de download do MNIST, é apresentado sem saída. O laboratório da descida do gradiente usa, por clareza, um modelo linear com erro quadrático — a única paisagem que uma tela desenha por inteiro; a curva de "dois vales" é sintética, construída para exibir um mínimo local, e não deriva do modelo de reta (cuja paisagem é sempre uma parábola). A contagem de 2 410 parâmetros da rede do nível 3 soma 64×32 + 32 + 32×10 + 10. O circuito de três perceptrons da Sinapse 06 é a solução didática clássica do problema, não a única: como o próprio tutorial de nível 2 mostra, a rede treinada chega a outro par de retas igualmente válido. As ilustrações são esquemas didáticos gerados pelo autor, não reproduções de figuras dos artigos originais; o esquema de dois planos da Sinapse 06 foi desenhado em SVG, com coordenadas calculadas, e não gerado por imagem.

Referências

  1. ACM — ASSOCIATION FOR COMPUTING MACHINERY. Fathers of the deep learning revolution receive ACM A.M. Turing Award. Nova York: ACM, 2019. Disponível em: https://awards.acm.org/about/2018-turing. Acesso em: 15 ago. 2026.
  2. BROWN, Tom B. et al. Language models are few-shot learners. In: CONFERENCE ON NEURAL INFORMATION PROCESSING SYSTEMS, 34., 2020. Advances in Neural Information Processing Systems 33. [S. l.]: NeurIPS, 2020. Disponível em: https://arxiv.org/abs/2005.14165. Acesso em: 15 ago. 2026.
  3. CYBENKO, George. Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals, and Systems, v. 2, n. 4, p. 303-314, 1989. DOI: 10.1007/BF02551274. Disponível em: https://doi.org/10.1007/BF02551274. Acesso em: 15 ago. 2026.
  4. GOODFELLOW, Ian; BENGIO, Yoshua; COURVILLE, Aaron. Deep learning. Cambridge: MIT Press, 2016. Disponível em: https://www.deeplearningbook.org/. Acesso em: 15 ago. 2026.
  5. HEBB, Donald O. The organization of behavior: a neuropsychological theory. Nova York: John Wiley & Sons, 1949.
  6. HORNIK, Kurt; STINCHCOMBE, Maxwell; WHITE, Halbert. Multilayer feedforward networks are universal approximators. Neural Networks, v. 2, n. 5, p. 359-366, 1989. DOI: 10.1016/0893-6080(89)90020-8. Disponível em: https://doi.org/10.1016/0893-6080(89)90020-8. Acesso em: 15 ago. 2026.
  7. IBGE — INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA. De 2022 a 2024, percentual de empresas industriais utilizando inteligência artificial subiu de 16,9% para 41,9%. Agência IBGE Notícias, Rio de Janeiro, set. 2025. Disponível em: https://agenciadenoticias.ibge.gov.br/agencia-noticias/2012-agencia-de-noticias/noticias/44551-de-2022-a-2024-percentual-de-empresas-industriais-utilizando-inteligencia-artificial-subiu-de-16-9-para-41-9. Acesso em: 15 ago. 2026.
  8. KRIZHEVSKY, Alex; SUTSKEVER, Ilya; HINTON, Geoffrey E. ImageNet classification with deep convolutional neural networks. In: CONFERENCE ON NEURAL INFORMATION PROCESSING SYSTEMS, 26., 2012, Lake Tahoe. Advances in Neural Information Processing Systems 25. [S. l.]: NeurIPS, 2012. p. 1097-1105. Disponível em: https://papers.nips.cc/paper_files/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html. Acesso em: 15 ago. 2026.
  9. LeCUN, Yann et al. Backpropagation applied to handwritten zip code recognition. Neural Computation, v. 1, n. 4, p. 541-551, 1989. DOI: 10.1162/neco.1989.1.4.541. Disponível em: https://doi.org/10.1162/neco.1989.1.4.541. Acesso em: 15 ago. 2026.
  10. LeCUN, Yann; BOTTOU, Léon; BENGIO, Yoshua; HAFFNER, Patrick. Gradient-based learning applied to document recognition. Proceedings of the IEEE, v. 86, n. 11, p. 2278-2324, 1998. DOI: 10.1109/5.726791. Disponível em: https://doi.org/10.1109/5.726791. Acesso em: 15 ago. 2026.
  11. LeCUN, Yann; BENGIO, Yoshua; HINTON, Geoffrey. Deep learning. Nature, v. 521, p. 436-444, 2015. DOI: 10.1038/nature14539. Disponível em: https://doi.org/10.1038/nature14539. Acesso em: 15 ago. 2026.
  12. McCULLOCH, Warren S.; PITTS, Walter. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, v. 5, p. 115-133, 1943. DOI: 10.1007/BF02478259. Disponível em: https://doi.org/10.1007/BF02478259. Acesso em: 15 ago. 2026.
  13. MINSKY, Marvin; PAPERT, Seymour. Perceptrons: an introduction to computational geometry. Cambridge: MIT Press, 1969.
  14. MITCHELL, Tom M. Machine learning. Nova York: McGraw-Hill, 1997.
  15. NATIONAL MUSEUM OF AMERICAN HISTORY. Electronic neural network, Mark I Perceptron. Washington: Smithsonian Institution, [s. d.]. Disponível em: https://americanhistory.si.edu/collections/object/nmah_334414. Acesso em: 15 ago. 2026.
  16. PROFESSOR'S perceptron paved the way for AI — 60 years too soon. Cornell Chronicle, Ithaca, 25 set. 2019. Disponível em: https://news.cornell.edu/stories/2019/09/professors-perceptron-paved-way-ai-60-years-too-soon. Acesso em: 15 ago. 2026.
  17. ROSENBLATT, Frank. The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Review, v. 65, n. 6, p. 386-408, 1958. DOI: 10.1037/h0042519. Disponível em: https://doi.org/10.1037/h0042519. Acesso em: 15 ago. 2026.
  18. ROSENBLATT, Frank. Principles of neurodynamics: perceptrons and the theory of brain mechanisms. Washington: Spartan Books, 1962.
  19. RUMELHART, David E.; HINTON, Geoffrey E.; WILLIAMS, Ronald J. Learning representations by back-propagating errors. Nature, v. 323, p. 533-536, 1986. DOI: 10.1038/323533a0. Disponível em: https://doi.org/10.1038/323533a0. Acesso em: 15 ago. 2026.
  20. RUSSELL, Stuart; NORVIG, Peter. Inteligência artificial: uma abordagem moderna. 4. ed. Rio de Janeiro: LTC, 2022.
  21. WERBOS, Paul J. Beyond regression: new tools for prediction and analysis in the behavioral sciences. 1974. Tese (Doutorado em Matemática Aplicada) — Harvard University, Cambridge, 1974.
  22. WIDROW, Bernard; HOFF, Marcian E. Adaptive switching circuits. In: IRE WESCON CONVENTION, 1960, Los Angeles. IRE WESCON Convention Record, part 4. Nova York: Institute of Radio Engineers, 1960. p. 96-104.

Comentários

BLOGGER

$show=mobile

Nuvem de Categorias


Coluna Gastroturismo
Nome

#existepesquisanobrasil,2,Abelha,3,Acessibilidade,25,Acessórios,2,Acidente,52,Acústica,16,Adestramento,5,Administração,47,Aerodinâmica,4,Aeronáutica,9,África,7,Agência Bori,1,Agência Brasil,25,Agência FAPESP,5,Agência Fiocruz,6,Agência Porvir,1,Agência Senado,2,Agência USP,5,Agnotologia,1,Agricultura,7,Agropecuária,4,AirBNB,1,Albert Einstein,1,Alcoolismo,9,Alemanha,10,Alemão,4,Alerta,2,Algoritmo,8,Alimento,1,Alzheimer,4,Amazon,5,Amazônia,5,América Latina,1,Análise Combinatória,1,Análise de Texto,2,Anatomia,8,Android,3,Angola,1,Animação,52,Animais de Estimação,6,Animal,2,Antropologia,14,Apicultura,9,App,9,Apple,5,Apresentação,4,aquário,1,Argentina,4,Armamento,1,Arqueologia,6,arquitetura,33,Arte,173,Astrobiologia,3,Astrofísica,4,Astronomia,36,Ativismo,35,Áudio,3,Audio FX,2,Áustria,1,Autismo,2,Auto-ajuda,10,Automobilismo,17,Automóvel,22,aventura,3,Aviação,5,Aviônica,8,Bahia,2,Balonismo,3,Banco Central,1,Banco de Dados,5,Beber e Dirigir,1,biblioteconomia,6,Bicicleta,1,Biografia,18,Biologia,176,Biologia Marinha,15,bioquímica,7,Biotecnologia,25,Bitcoin,2,Blog,29,Blogger,33,Boato,6,Bomba,1,Botânica,6,BRASA,1,BRASA Leads,1,Brasil,41,Brasília,17,BRIC,1,Browser,11,Bugs,3,CAD,3,Calor,2,Caltech,1,Câmera lenta,1,Campanha,47,Canadá,1,cardiologia,16,Carnaval,2,carreira,3,Cartografia,3,Casemods,1,Caso Isabella Nardoni,1,Caso Snowden,1,Ceará,1,Celebridades,6,celular,24,Células-Tronco,5,Cérebro,2,Charge,22,ChatGPT,2,China,23,Cibercultura,3,Ciclovia,1,Cidadania,40,Ciência,225,Cinema,70,Climatologia,3,Clip,1,Cliparts,1,Cloud computing,4,Coaching,12,Comédia,2,competência,2,Complemento de dois,1,Comportamento,277,Computação,103,Computação em grade,5,Computação forense,3,Computação Gráfica,140,Computação Móvel,1,Computação Quântica,1,Comunicação e Marketing,154,Concurso,2,Concurso Cultural de Natal,1,Concursos Público,2,Concursos Públicos,4,Conectômica,1,Conferência,1,Congresso em Foco,1,Conspiração,2,Consumidor,7,Consumismo,3,contabilidade,2,Contos,55,Copa do Mundo,26,Cordel,3,Coreia do Norte,1,Coreia do Sul,1,Corpo,2,Coruja,1,cosmética,3,Cosmologia,21,Covid-19,99,Crash Course,1,Criança,1,Criatividade,4,Crime,49,Crime Digital,9,crise,11,crise econômica,8,Croácia,1,crônica,6,crônicas,5,Cronologia,1,CSS,3,Cuba,4,Culinária,8,Cultura,18,Curiosidades,113,custos fixo,1,custos variáveis,1,Dale Dougherty,2,Dança,6,DAO,1,Darwin,12,Davos,1,Debate,3,Decoração,1,demência,1,Demografia,3,Denúncia,12,Dermatologia,6,Desastre Natural,14,Descoberta,2,Desenho instrucional,19,Desenvolvimento de jogos,18,Desenvolvimento Pessoal,1,Design,33,Design Instrucional,19,Destaque,9,Dia das Mães,1,Dia do professor,1,diabetes,6,Dicas,66,Didática,1,Dieta,4,Dinamarca,1,diplomacia,3,Direito,188,Direito Eleitoral,2,Direito Internacional,30,Direito Militar,1,Direito Trabalhista,1,Direito Tributário,2,Direitos Autorais,4,Direitos Humanos,39,Disney,8,Distrito Federal,4,Documentário,72,Doutorado,1,download,3,Drogas,7,Drone,3,Dubai,1,e-Book,2,e-governo,2,EBC,1,Ecologia,89,Economia,119,Editoração Eletrônica,1,Educação,427,Educação a Distância,190,Educação Corporativa,6,educação física,19,Educação sexual,6,Efeitos Sonoros,4,Egiptologia,2,Eleições,30,Eleições 2014,12,Eleições 2018,5,Eleições 2020,2,Eleições 2022,1,Eletricidade,10,eletrônica,4,Elon Musk,1,Em Operários,1,Embrapa,4,empreendedorismo,7,enciclopédia,1,endocrinologia,6,Enem,3,Energia,17,Energia Alternativa,18,Energia Nuclear,12,Enfermagem,1,Engenharia,70,Engenharia Agrícola,1,Engenharia Civil,6,Engenharia de materiais,18,Engenharia de Software,17,Engenharia Genética,32,Engenharia Mecânica,2,Enretenimento,1,Ensino a Distância,11,Ensino Superior,5,Entomologia,7,Entretenimento,47,Entrevista,91,Entrevista.,1,Epidemiologia,70,Epistemologia,1,Equador,1,Escândalo,6,Escritório,1,ESMPU,1,Espaço,74,Espanha,1,Espanhol,2,Espeleologia,1,Espetáculo,8,Espionagem,20,Esporte,44,Estação,1,Estágio,2,Estatísticas,40,Estética,1,estrutura de dados,1,Ética,32,EUA,20,Europa,2,Evento,59,Evolução,5,Exercícios físicos,2,Exobiologia,3,experiência,43,fábulas,3,Facebook,20,Família,1,Farmacologia,25,Favo,1,Feminismo,2,Férias,1,Ferramentas,15,FIFA,2,Filantropia,4,Filmes,20,Filosofia,50,Finep,2,Finlândia,3,Fintech,1,Firefox,1,Física,119,Física Quântica,4,Fisiologia,10,Fisioterapia,6,Flagrante,2,Flamengo,1,Folclore,3,Fome,1,Fomento,1,Fonética,1,Fonoaudiologia,7,Fotografia,46,Fotos em 360 graus,6,França,10,Francês,4,Frase,3,Fraude,5,Freeware,75,Futebol,38,Futurologia,95,gadget,87,gadgets,1,Gafe,2,Gamificação,8,Gastroenterologia,5,Gastronomia,9,Gastroturismo,7,Geek,2,Genética,46,Geofísica,1,Geografia,57,Geologia,12,Geometria,6,geopolítica,23,Gerenciamento do Tempo,2,Geriatria,13,Gestão de Competências,3,Gestão de Configuração,2,Gestão de Pessoas,12,Gestão de Projetos,26,Gestão do conhecimento,7,Ginecologia,3,Glass,1,Golpe de Estado,1,Google,81,Governo,4,GPS,1,Gradiente,1,gramática,15,Gravidez,1,Grécia,1,Grécia Antiga,2,Guerra,43,Guerra Civil,2,Guinness,1,H2,2,Haiti,3,hardware,39,Henry Ford,1,História,219,HIV,1,Hololens,2,homenagem,46,Horologia,1,HPV,1,HTML,6,Humor,213,Humor Negro,9,IBGE,3,IBM,4,ICIJ,2,Idioma,57,IESB,2,IHC,8,ilo,29,ilusão,36,ilusionismo,5,Imagem 3D,16,Imagens,7,Imagine Cup,1,Império Romano,8,Imprensa,34,Impressora 3D,22,Imunologia,8,Incêndio,2,Inclusão digital,8,Índia,4,Índios,1,Infectologia,36,Infográfico,57,Informática,38,Inglaterra,4,Inglês,26,Inovação,207,Inspiração,1,Inteligência Artificial,174,intercâmbio,1,Interface,205,Interfaces Hápticas,24,Internacional,23,Internacionalização da Amazônia,3,Internet,166,Internet das Coisas,2,Inundação,2,Invenção,20,Inventos,6,iPad,1,IPEA,1,iphone,3,Irã,3,Iraque,1,Israel,7,Itália,2,Japão,5,Java,2,Java.,2,jogos,12,Jogos de Tabuleiro,5,Jogos educativos,20,Jogos Olímpicos,10,Jornalismo,72,José Saramago,1,Justiça,4,Ken Robinson,1,Kinect,10,Le Monde Diplomatique Brasil,9,Le Monde Diplomatique Brasil,1,Letras,2,Lexicografia,5,Liderança,4,Life Hacking,20,línguas estrangeiras,3,Linguística,11,Literatura,59,Livro,73,Lógica,26,Logística,4,Loterias,4,Lua,1,Maçonaria,4,Malásia,2,Malvinas,2,Malware,1,Mapa,96,Mário Sérgio Conti,1,Marte,4,Mastologia,1,Matemática,85,Matemática Financeira,1,maternidade,1,MEC,1,Mecânica,8,Mecânica dos Fluidos,2,Mecatrônica,47,Medalha Fields,1,Medicina,569,Medicina Esportiva,2,Medicina Veterinária,4,Meio Ambiente,131,Mel,1,melanoma,1,Memória,5,memorização,4,Mente,4,Mercado de Trabalho,85,mercosul,1,Mestrado,4,Metaverso,2,meteorologia,12,Metodologia Científica,60,México,1,Microbiologia,4,Microsoft,16,Mídia Social,61,Militar,16,Mineralogia,1,Mistério,3,MIT,15,Mitologia,2,Mobilidade,1,Mobilidade Urbana,9,Moçambique,1,Moda,1,MonaVie,1,Montanhismo,1,Moodle,7,Mossad,1,Motivação,1,Movimento Maker,3,MSF,1,Mudança Climática,30,Mulher,4,Multimídia,14,museu,16,Música,90,MVC,1,Nanotecnologia,37,Nasa,19,Natação,2,Natal,17,Natureza,2,Nefrologia,1,Negócios,31,Netflix,1,Neurociência,97,Neurologia,81,Nicolelis,1,Nordeste,2,Noruega,2,notícias,8,Novidades,18,Novo Enem,2,Números,2,Nutrição,75,Obama,1,Obesidade,11,Observatório da Imprensa,27,Obstetrícia,4,OCDE,1,Oceanografia,7,odontologia,10,Offshore Leaks,2,oftalmologia,11,Olimpíadas,9,oncologia,50,ONU,10,OpenAI,1,Opinião,107,Óptica,17,Oracle,1,Oriente Médio,5,Orkut,2,Ornitologia,1,ortografia,3,Ortopedia,4,Ótica,9,Otorrinolaringologia,2,Oxfam,3,Pacifismo,1,Paginadores,1,paleontologia,4,Palestina,1,Paquistão,1,Pará,2,Paraguai,2,parkinson,2,Passeio virtual,1,Patinação,1,Paulo Freire,1,Pedagogia,8,Pediatria,6,Pensamentos,3,performance,3,Periférico,1,Pesca,2,Pesquisa,267,Petição,1,Petrobrás,10,Petróleo,13,Photoshop,5,Pirataria,7,planilha de custo,1,Playstation 3,2,Plebiscito,3,Pneumologia,1,Podcast,7,Poesia,29,Política,323,Polônia,1,Portugal,9,português,20,Pós-graduação,2,Pré-sal,5,Prêmio Nobel,7,primatologia,1,Primeira Guerra Mundial,2,privacidade,25,produtividade,8,professor Hamilton Alves,2,Programa Gratuito,4,Programação,72,Projeção Mapeada,1,Projeto Truco,2,Promoção,1,Propaganda,5,Psicanálise,1,Psicologia,286,Psicologia Animal,26,Psiquiatria,17,Pública,14,publicidade,19,Publieditorial,6,PUC Minas,1,Quadrinhos,11,Quads,5,Qualidade,4,Qualidade de Vida,12,química,34,REA,2,realidade aumentada,47,realidade diminuída,2,Realidade Misturada,5,Realidade Virtual,50,Reconhecimento de imagem,12,Reconhecimento de voz,3,Recorde,1,Recoverit,1,Recuperar vídeos,1,Redação,1,redes,12,Referência,5,Referendo,1,Reforma Política,3,Reino Unido,2,Relacionamento,2,Relações Internacionais,41,Religião,44,Responsabilidade Social,4,Retrospectiva,1,Review,15,Rio 2016,6,Rio de Janeiro,3,Rio Grande do Norte,1,Rio Grande do Sul,1,Robert Oppenheimer,3,Robô,49,robótica,52,Roda Viva,49,Roma,6,roteiro,1,RSA,1,RTP,1,Rússia,6,Samsung,1,Sanitarismo,5,Santa Catarina,1,São Paulo,5,Saúde,626,Savant,1,Segunda Guerra Mundial,27,Segurança,129,Segurança da Informação,70,Seleção Natural,3,Séries,2,serviço,1,Serviço Online,1,Sexologia,2,sexualidade,5,Show,7,SIGGRAPH,1,Simulação,37,Singularity University,1,Síria,3,Sismologia,2,Sistema operacional,4,Sistemas de Numeração,1,Sites de Busca,22,Sociedade,5,Sociologia,55,Software,34,Software Livre,24,Sol,2,Sono,4,Sony,3,SOPA,2,Star Wars,1,Startup,2,Steve Cutts,1,Steve Jobs,1,Suécia,3,Sugestão de presentes,67,Sun,1,supercomputadores,2,Sustentabilidade,5,Tabagismo,6,Taiwan,1,Talento precoce,1,Taxas Equivalentes,1,Taxidermia,1,Teatro,27,Técnicas de Estudo,3,Tecnologia,601,Tecnologia da Informação,31,TED,448,TED-Ed,48,TedMed,2,TEDx,5,TEDx Rio+20,1,TEDxAmazônia,1,TEDxAsaSul,1,Telefonia,61,Televisão,45,Temas,1,Tempo,2,Tendência,1,Tendências,13,Teologia,6,teoria das supercordas,1,Teoria dos Jogos,1,Terremoto,9,Terrorismo,15,Tesla,1,Testes,17,Thaís Victer,2,ticker,2,TikTok,1,Tipologia,8,Tomada de Decisão,1,tradução,5,Trânsito,12,transporte,59,Tributo,3,Trigonometria,1,Tubarão,2,Tunísia,1,Turismo,30,Tutorial,23,Twitter,10,Uber,7,Ucrânia,11,UFC,1,UFES,1,UFG,2,UFMG,1,ufologia,5,UFRJ,3,UFSC,1,UNB,1,UNESCO,1,Unicamp,4,UNIFESP,1,UNIP,1,universidade,6,Universidade Corporativa,1,Universidade da Califórnica,1,Universidade da Geórgia,1,Universidade da Pensilvânia,1,Universidade de Brasília,1,Universidade de Cambridge,2,Universidade de Chicago,1,Universidade de Columbia,1,Universidade de Michigan,1,Universidade de Princeton,1,Universidade de Rochester,1,Universidade de Washington,3,University College London,1,Urbanismo,26,Urologia,2,URSS,1,User Experience,1,USP,11,Utilidade Pública,4,Utilitário,3,Vale,1,Vaticano,1,Veículo Autônomo,9,Venezuela,1,Ventriloquismo,2,Verão,1,vestibular,3,Vestimenta,1,Vida Digital,7,Vida Moderna,18,Vida Selvagem,10,Videogame,120,Vídeos,990,Vídeos 360,1,Vietnã,1,Violência,5,Vírus,18,Visão Computacional,10,Vôlei,1,Vulcanologia,8,Watergate Política,1,WCIT 2016,2,WCIT 2017,1,Web,1,Web 2.0,29,Web Application,161,Web Semântica,2,Web Seminar,1,webdesign,13,Webinar,2,widget,2,WikiLeaks,37,Wikipedia,4,Windows,5,Xadrez,2,YouTube,6,Zika,1,Zimbábue,1,Zoologia,59,
ltr
item
Brasil Acadêmico: Como a máquina aprende
Como a máquina aprende
https://blogger.googleusercontent.com/img/a/AVvXsEi4PihYUUN8qbKA_Ftu2DZcbh_ALbVK7ITS063TUz2oNH35_7tQAFLJiSKhnCm-KKGQ9n-rLDp5FblUIBxtKa04XfWZsfbgBX4WZjPA3KUcq985HWcOD6eO5HY-iOt1FLaaJ-q74tmIdprGBEsPGFFhMyKu0Vu6OqUBchXJqrQJfFImuAtp_z7WrAb_L-Q
https://blogger.googleusercontent.com/img/a/AVvXsEi4PihYUUN8qbKA_Ftu2DZcbh_ALbVK7ITS063TUz2oNH35_7tQAFLJiSKhnCm-KKGQ9n-rLDp5FblUIBxtKa04XfWZsfbgBX4WZjPA3KUcq985HWcOD6eO5HY-iOt1FLaaJ-q74tmIdprGBEsPGFFhMyKu0Vu6OqUBchXJqrQJfFImuAtp_z7WrAb_L-Q=s72-c
Brasil Acadêmico
https://blog.brasilacademico.com/2026/08/como-maquina-aprende.html
https://blog.brasilacademico.com/
http://blog.brasilacademico.com/
http://blog.brasilacademico.com/2026/08/como-maquina-aprende.html
true
3049085869098582068
UTF-8
Todos os posts carregados Nenhum post encontrado Ver todos Saiba mais Responder Cancelar resposta Apagar Por Início Páginas POSTS Ver todos Especialmente para você Categoria Arquivo Busca Todos os posts Nenhum post coincide com sua busca Início Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sáb Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez Agora 1 minuto atrás $$1$$ minutos atrás 1 hora atrás $$1$$ horas atrás Ontem $$1$$ dias atrás $$1$$ semanas atrás Mais de 5 semanas atrás Seguidores Seguir Conteúdo PREMIUM fechado Passo 1: Compartilhar com a rede social Passo 2: Clique no link da sua rede social Copiar todo código Selecionar todo código Todos os código copiados para a memória Não posso copiar o código / textos, favor teclar [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de Conteúdo