Demonstrações interativas da aula de inicialização de pesos
Uma MLP profunda de largura 300, sem nenhum treino, mostra como a escolha dos pesos iniciais controla o sinal que se propaga em forward e em backward. Esquemas dos slides: θ = 0, θ ∼ 𝒩(0, σ²), Xavier/Glorot com σθ² = 1/n(l−1) (recomendada para sigmoide e tanh) e He/Kaiming com σθ² = 2/n(l−1) (recomendada para ReLU), sempre com bias inicializado em 0.
Como no estudo de caso de MNIST da aula, propagamos um batch de 100 entradas x ∼ 𝒩(0, I) por L camadas ocultas de 300 unidades, aplicando z(l) = θ(l) a(l−1) e a(l) = φ(z(l)), com n(l−1) = 300 (fan-in) em todas as camadas. Antes da primeira atualização, só a inicialização e a ativação determinam a magnitude das ativações. Escolha o esquema e observe os histogramas.
Histogramas das ativações a(l) em camadas selecionadas (mesma escala horizontal em todas as células)
Desvio padrão das ativações por camada, escala log. Tracejado: desvio do input. Pontos: camadas dos histogramas acima.
💡 Reproduza as tentativas da aula: com θ ∼ 𝒩(0, 1) e tanh a massa concentra em ±1, a zona morta de derivada nula; com σ pequeno (tente 0.01) a distribuição encolhe a cada camada até virar uma agulha em zero; com zeros toda unidade calcula o mesmo valor e o histograma colapsa em um único ponto (a simetria nunca se quebra). Compare então Xavier com tanh e He com ReLU: o desvio fica aproximadamente constante, que é exatamente a condição σ²z⁽ˡ⁾ = σ²z⁽ˡ⁻¹⁾ derivada nos slides. Troque o par (He com tanh, Xavier com ReLU) e veja o desajuste.
Para medir o sinal de aprendizagem, injetamos na última camada um gradiente com desvio 1 e o retropropagamos pela mesma rede da seção 1: g(l) = (θ(l+1))T(g(l+1) ⊙ φ′(z(l+1))), sem precisar de uma loss. É o argumento simétrico dos slides: no backward o mesmo produto de pesos e derivadas decide se o gradiente chega ou não às primeiras camadas. A configuração é compartilhada com a seção 1, qualquer ajuste lá atualiza os dois painéis.
Histogramas do gradiente g(l) = ∂out/∂a(l) em camadas selecionadas (mesma escala horizontal em todas as células)
Desvio padrão do gradiente por camada, escala log. Tracejado: desvio do gradiente injetado na saída. Pontos: camadas dos histogramas acima.
💡 Com σ pequeno (tente 0.01) o gradiente encolhe a cada camada e some antes de chegar às primeiras (vanishing): a razão acima fica minúscula. Com σ = 1 acontece o oposto, tanto com ReLU quanto com tanh: mesmo com a tanh saturada (φ′ pequena), os pesos grandes amplificam mais do que a derivada atenua e o gradiente explode em direção às primeiras camadas (exploding). Com zeros, θTg = 0 e o gradiente das ativações é exatamente zero abaixo da última camada; por simetria, as unidades de uma mesma camada receberiam atualizações idênticas. Com Xavier e tanh, ou He e ReLU, a curva fica aproximadamente plana e a razão fica perto de 1.