Como um gradiente desgovernado pode arruinar um treinamento — e o limite que o salva.

SRC·52 Source
Quase todo passo cutuca de leve. Um passo monstruoso pode apagar semanas.

Quase todo passo cutuca de leve. Um passo monstruoso pode apagar semanas.

Treinar são milhões de passinhos morro abaixo. Mas de vez em quando um lote produz um gradiente monstruoso — e um único passo gigante atira o modelo para fora do mapa, desfazendo semanas de progresso em uma só atualização. O treino inteiro morre. A cura não é um passo melhor. É uma coleira no raro passo violento.
Por que explode: multiplique inclinações suficientes acima de um.

Por que explode: multiplique inclinações suficientes acima de um.

Lh0=Lhtk=1thkhk1,k=1thkhk1λt\frac{\partial \mathcal{L}}{\partial h_0} = \frac{\partial \mathcal{L}}{\partial h_t}\prod_{k=1}^{t}\frac{\partial h_k}{\partial h_{k-1}}, \qquad \left\|\prod_{k=1}^{t}\frac{\partial h_k}{\partial h_{k-1}}\right\| \sim \lambda^{t}
Como a microfonia de um microfone: a caixa alimenta o microfone que alimenta a caixa, cada volta mais alta, até a sala gritar. A retropropagação faz o mesmo numa rede profunda — multiplica uma inclinação por camada. Se cada uma passa só um pouco de um, cinquenta se acumulam num monstro: com λ=1.5 em 50 camadas, um sussurro incha para ≈600 milhões.
Um gradiente gigante significa um salto gigante — para fora do mapa.

Um gradiente gigante significa um salto gigante — para fora do mapa.

θθηg,Δθ=ηg\theta \leftarrow \theta - \eta\, g, \qquad \lVert \Delta\theta \rVert = \eta\, \lVert g \rVert
Como um estilingue esticado demais: puxe o normal e a pedra acerta o alvo; puxe feito louco e a pedra dispara por cima da colina, perdida para sempre. O passo que você dá é a taxa de aprendizado vezes o comprimento do gradiente. Deixe esse comprimento explodir para milhões e o modelo salta para fora da superfície de perda inteira — para o absurdo, para NaN.
Primeiro, meça o tamanho do gradiente inteiro.

Primeiro, meça o tamanho do gradiente inteiro.

g2=igi2\lVert g \rVert_2 = \sqrt{\sum_i g_i^{2}}
Antes de pôr um limite, você precisa de um único número para o tamanho de um vetor com milhões de partes. Como a diagonal de uma caixa: eleve cada aresta ao quadrado, some e tire a raiz — e cada lado separado se funde num único comprimento reto. Essa é a norma do gradiente: o comprimento único do passo inteiro, por mais milhões de números que o alimentem.
A solução: limite o comprimento, mantenha o rumo.

A solução: limite o comprimento, mantenha o rumo.

g^=gmin ⁣(1, cg)\hat{g} = g \cdot \min\!\left(1,\ \frac{c}{\lVert g \rVert}\right)
Como rédear um cavalo disparado: você puxa as rédeas para baixar o galope selvagem a um trote seguro — mas o cavalo ainda corre exatamente para onde você o aponta. O recorte por norma faz isso com o gradiente: abaixo do limiar, deixa; acima, encolhe até esse limite. Mesma direção, passada mais curta. A descida ainda aponta morro abaixo — só não pode mais se atirar.
O primo bruto: limite cada número e entorte a mira.

O primo bruto: limite cada número e entorte a mira.

g^i=clip(gi,v,v)=max ⁣(v, min(v, gi))\hat{g}_i = \operatorname{clip}(g_i, -v, v) = \max\!\left(-v,\ \min(v,\ g_i)\right)
Há um jeito mais barato: prenda cada componente em ±v. Como serrar uma cerca rente: uma fileira de estacas que subia numa rampa limpa, cortada plana no topo, já não se inclina como antes — você impôs 'nada alto demais' mas perdeu a forma. Limitar cada número por si só salva o treino, mas gira o gradiente para fora do rumo sem avisar. Por norma mantém o rumo; por valor troca-o pela simplicidade.
Agora o pior passo fica preso a um limite conhecido.

Agora o pior passo fica preso a um limite conhecido.

Δθ=ηg^ηc\lVert \Delta\theta \rVert = \eta\, \lVert \hat{g} \rVert \le \eta\, c
Como uma rede de segurança sob o trapézio: o acrobata ousa a pega mais difícil porque a rede está lá para a única vez em que errar. Depois do recorte, o passo nunca passa da taxa de aprendizado vezes o limite — o gradiente violento vira um empurrão firme, não um salto fatal. Não conserta por que o gradiente explodiu. Só garante que, na única vez em que isso acontece, você sobrevive.
Silenciamos a correção mais selvagem. Era um aviso?

Silenciamos a correção mais selvagem. Era um aviso?

Um gradiente tão violento era o modelo gritando que algo — os dados, a taxa, a arquitetura — estava muito errado. O recorte não escuta; só transforma o grito num empurrãozinho educado para o treino seguir. Mantivemos o equilíbrio. 🌱 Mas, ao limitar o sinal raro e violento, curamos o problema — ou só paramos de ouvi-lo?
toque →deslize ↑ para maisdeslize ↓ para sair