Demonstrações interativas da aula de funções de ativação e funções de custo
Três visualizações que acompanham os slides: a galeria das ativações ponto a ponto com suas derivadas, o efeito da saturação sobre o gradiente em uma rede profunda (o vanishing gradient problem) e a comparação entre entropia cruzada binária e MSE aplicado após a sigmoide na camada de saída. Notação dos slides: z = θ⊤x, a = φ(z), σ(z) = 1/(1+e−z).
Cada unidade computa a pré-ativação z = θ⊤x e aplica uma função φ para obter a ativação a = φ(z). A descida de gradiente depende de φ′(z), então a forma da derivada importa tanto quanto a da própria função. Escolha a ativação, arraste o marcador x0 sobre a curva e observe a tangente: nas zonas sombreadas (|φ′(z)| < 0.05) a função satura e quase não passa gradiente.
φ(z) (roxo) com tangente em x0 (verde); sombreado = zona de saturação
Derivada φ′(z) (ciano)
💡 Compare a sigmoide e a ReLU: a sigmoide satura nos dois lados e tem derivada máxima 0.25 em z = 0, enquanto a ReLU mantém φ′ = 1 em todo o lado positivo (mas morre no negativo, o dying ReLU; veja como Leaky ReLU e ELU evitam isso). Duas ativações dos slides ficam fora da galeria: a softmax, que age na camada inteira e aparece na seção 3, e a SwiGLU, que não é ponto a ponto (combina duas projeções lineares com gating).
A regra da cadeia em uma rede profunda multiplica as derivadas camada a camada. Aqui usamos uma cadeia de L camadas escalares idênticas, al = φ(w·al−1), e acompanhamos o gradiente acumulado ∂al/∂a0 = ∏k≤l φ′(zk)·w. Com sigmoide cada fator vale no máximo 0.25·w, então o produto encolhe geometricamente; com ReLU em região ativa cada fator vale w, e a escala dos pesos decide entre dissipar e explodir.
|∂al/∂a0| por camada, escala log (tracejado: decaimento (0.25·w)l, o teto da sigmoide)
Ativação al por camada (mostra a saturação)
💡 Com sigmoide e w = 1, o gradiente perde pelo menos um fator 4 por camada: em 20 camadas resta menos de 10−12, e as camadas iniciais quase não aprendem. Troque para ReLU e o gradiente fica constante enquanto a unidade está ativa. Depois suba w para 1.5 e veja o problema oposto, a explosão de gradiente: a saturação não é o único vilão, a escala dos pesos também.
Na classificação binária dos slides, a rede produz um logit z e a sigmoide o converte em probabilidade λ = σ(z). A NLL da Bernoulli leva à entropia cruzada binária (BCE). E se usássemos a MSE sobre a saída da sigmoide? As curvas abaixo mostram a loss e a magnitude do gradiente em função do logit, para um único exemplo. Arraste o marcador z0 e compare os gradientes na região em que a predição está confiante e errada.
ℒBCE(z) = −[y·log σ(z) + (1−y)·log(1−σ(z))], com dℒBCE/dz = σ(z) − y · ℒMSE(z) = (σ(z) − y)², com dℒMSE/dz = 2(σ(z) − y)·σ(z)(1−σ(z))
ℒ(z): BCE (roxo) e MSE pós-sigmoide (laranja); arraste z0
Magnitude do gradiente |dℒ/dz|
💡 Com y = 1 e z0 = −6 (predição confiante e errada), o gradiente da BCE vale quase 1, mas o do MSE pós-sigmoide vale quase 0: a derivada da sigmoide satura e o aprendizado para justamente quando o erro é máximo. Por isso a BCE, que sai da NLL da Bernoulli, é o par natural da sigmoide. Nos slides, a MSE aparece como a loss natural da regressão (NLL da gaussiana com saída Linear), e para multiclasse o par é softmax com a entropia cruzada categórica (CCE).