Grafos de Computação

Cálculo multivariável a partir dos primeiros princípios

Uma única estrutura de dados organiza tudo das duas últimas lições: o grafo de computação. Toda operação aritmética de um modelo (soma, multiplicação, matmul, ativação) torna-se um nó num grafo direcionado. É com este grafo que PyTorch, JAX e TensorFlow calculam gradientes automaticamente.

O treinamento percorre o grafo em duas varreduras. O forward pass flui da esquerda para a direita, calculando e guardando em cache o valor de cada nó. O backward pass flui da direita para a esquerda, usando a regra da cadeia para empurrar o gradiente da loss de volta até cada entrada, um nó de cada vez.

A ideia que faz tudo isso escalar: cada nó só precisa conhecer a sua própria derivada local. Para enviar o gradiente para trás através de um nó, multiplique o gradiente que chega (de cima) pela Jacobiana local do nó (ou seja, por como a sua saída depende das suas entradas). Nenhum nó precisa da imagem global; as regras locais encadeadas entre si produzem o gradiente total exato.

Onde isso aparece no MLUm grafo de computação é o autograd. Quando você escreve um modelo em PyTorch, cada operação registra silenciosamente um nó; chamar loss.backward() percorre o grafo no sentido inverso, multiplicando as Jacobianas locais pela regra da cadeia, e deposita ∂loss/∂w em cada parâmetro. Você nunca escreve uma derivada à mão, e essa única comodidade, derivadas calculadas de forma exata e gratuita, é…
▶ Grafos de Computação
← Regra da Cadeia: Forma MatricialPontos Críticos em Rⁿ →