Uma rede neural não “entende” uma foto, um som ou uma frase. Ela calcula. Recebe números, mistura esses números com outros números chamados pesos, e devolve uma saída. Se a saída se aproxima do que queremos — um preço, uma classe, a próxima palavra — dizemos que a rede aprendeu. A frase é cômoda. Precisa ser desmontada.
O que está sendo aprendido são os pesos. Não um conceito. Não uma definição. Uma função numérica suficientemente flexível para imitar o mapa entre entrada e saída, dentro dos exemplos que o treino viu.
Quem já acompanhou machine learning como programa que ajusta parâmetros está no lugar certo. A rede é esse programa com uma forma específica: camadas de transformações simples, empilhadas.
Pesos como aproximador de função
Uma função linear, y = wx + b, já é um aproximador. Com um peso e um viés, ela descreve uma reta. Serve para pouca coisa. Se o fenômeno curva, a reta erra com disciplina.
A unidade clássica de uma rede — o neurônio — faz pouco mais do que isso: combina as entradas com pesos, soma um viés e passa o resultado por uma não-linearidade. A não-linearidade é o detalhe que impede a pilha de colapsar numa reta só. Sem ela, várias camadas lineares equivalem a uma única camada linear. Com ela, a composição consegue dobrar o espaço.
Milhares desses neurônios, organizados, definem uma função com milhões de números. Esses números são os parâmetros. Treinar é procurá-los. A arquitetura — quantas camadas, que tipo de conexão — é a forma da função. Os pesos são o conteúdo.
Nada nisso exige uma metáfora biológica forte. O nome “neurônio” é histórico. O objeto de engenharia é um aproximador: uma família enorme de funções, indexada por pesos, da qual o treino escolhe um membro.
flowchart TD
A[Entrada] --> B[Camada 1]
B --> C[Camada 2]
C --> D[Saída]
D --> E[Perda]
E --> F[Ajuste dos pesos]
F --> B
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:#14513B,stroke:#0F3328,color:#FBFAF6,stroke-width:1.4px
class A ouro
class B,C,D,F verde
class E fim
Camadas como representações sucessivas
A primeira camada não “vê” um gato. Vê pixels, ou atributos tabulares, ou tokens. Cada neurônio responde a uma combinação local desses números. A saída da camada é um novo vetor: uma representação.
A camada seguinte não recebe a foto. Recebe essa representação. Combina de novo. Produz outra. Em problemas visuais, as primeiras combinações tendem a reagir a contrastes e bordas; as seguintes, a partes; as últimas, a arranjos que correlacionam com o rótulo. Essa hierarquia é um fato empírico frequente, não uma garantia filosófica. A rede não está obrigada a aprender bordas. Está obrigada a transformar a entrada até a saída acertar.
O ponto útil para quem programa é outro: cada camada é uma função, e a rede é a composição. Forward é chamar uma função depois da outra. Não há oráculo no meio. Há tensores.
Quando a composição é profunda, o treino ganha expressividade e também problemas: gradientes que somem ou explodem, representações que saturam, a necessidade de normalizar, regularizar, inicializar com cuidado. Nada disso muda o objeto. Continua sendo uma função. Só fica mais difícil de ajustar.
O que “aprender” quer dizer aqui
No treino, comparamos a saída da rede com o alvo. A diferença vira um número: a perda. Quanto menor, mais a função atual se parece com o mapa desejado — nos exemplos daquele lote.
Aprender, neste ofício, é fazer a perda descer de forma que a avaliação em dados não vistos também desça. Se a perda de treino cai e a de avaliação sobe, a rede está memorizando. Se nenhuma das duas cai, a função não está cabendo no problema, os dados não carregam o sinal, ou o procedimento de ajuste está quebrado.
Essa definição é seca de propósito. Ela impede duas tentações. A primeira é antropomorfizar: a rede não “percebeu o conceito de cadeira”. Ajustou pesos até acertar o rótulo cadeira com alguma regularidade. A segunda é celebrar a métrica de treino como se fosse compreensão. Perda baixa é condição necessária de um bom ajuste. Não é evidência de que o modelo fará o que você imagina fora da distribuição.
O procedimento típico — descida de gradiente — não procura a função verdadeira do mundo. Percorre o espaço de pesos na direção que, localmente, reduz a perda. Pode parar em um lugar bom o suficiente. Pode parar em um lugar frágil. A ética do treino continua sendo a mesma de qualquer otimização: você obtém o que mediu, não o que pretendia.
O que não está sendo aprendido
A rede não recebe, de graça, causalidade. Se nos dados o guarda-chuva aparece junto da chuva, o modelo pode usar o guarda-chuva para “prever” chuva. Estatística não é mecanismo.
Também não recebe, de graça, o significado que um humano atribui a uma palavra. Recebe coocorrência. Pode imitar uso. Imitar uso é poderoso e ainda assim distinto de ter um modelo do mundo.
Não aprende a regra que você esqueceu de colocar nos dados. Se o conjunto de treino não contém o caso noturno, a representação noturna não aparece por empatia. Se o rótulo é ruidoso, parte da capacidade da rede será gasta em copiar o ruído.
Esses limites não tornam a ferramenta inútil. Tornam o vocabulário honesto. “A rede aprendeu a detectar fraude” deveria significar: nos recortes que medimos, a função reduz o erro de detecção. O restante é hipótese de produto e precisa de teste no mundo.
Para que serve esta imagem mental
Serve para escolher o próximo passo sem mistério.
Se a perda não desce, o problema pode ser taxa de aprendizado, inicialização, vazamento, rótulo, ou arquitetura pobre. Se desce só no treino, o problema é capacidade versus dados. Se desce nos dois e o produto ainda falha, o problema é o recorte: o mundo não é o dataset.
Serve também para ler um diagrama de rede. Caixas e setas descrevem a forma da função. Os números dentro das caixas é que serão procurados. Discutir só a arquitetura sem discutir dados e perda é discutir a carcaça.
Quem quiser o percurso completo, da matemática à visão e às sequências, encontra essa trilha organizada na série AI One. Este texto fica no centro: pesos, camadas, perda.
Uma rede neural é um aproximador de função feito de transformações empilhadas. O que está sendo aprendido são os parâmetros dessa composição. Aprender, aqui, é perda que desce de um jeito que ainda vale fora da folha de treino. O resto — entendimento, inteligência, conceito — é linguagem nossa, colada depois do cálculo.
Leia também: Machine learning para quem já programa.