Redes Convolucionais Prof. Anderson Rocha Tavares Bloco 10 · Slide 5 / 5

Síntese: BatchNorm na Prática

Efeitos práticos, onde a camada fica na rede e comparação com Residual.

Efeitos Práticos
🚀
Acelera o treinamento
Permite taxas de aprendizado maiores; a rede converge em muito menos épocas.
principal
🛡️
Regulariza a rede
O ruído estatístico do batch tem efeito similar ao dropout — reduz overfitting.
secundário
⚖️
Reduz sensibilidade à inicialização
Pesos iniciais têm muito menos impacto — inicializar mal a rede deixa de ser crítico.
bônus
🏗️
Posição na rede: após Conv, antes da ativação
Conv → BatchNorm → ReLU → MaxPool — normaliza antes de introduzir não-linearidade.
padrão
🐍 pytorch — mlp + batchnorm (features)
class MLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(2, 16)
        self.bn1 = nn.BatchNorm1d(16)  # normaliza as 16 saídas
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(16, 1)

    def forward(self, x):
        x = self.fc1(x)
        x = self.bn1(x)
        x = self.relu(x)
        return self.fc2(x)  # logit final
🐍 pytorch — conv + batchnorm (imagens)
import torch.nn as nn

      class ConvBlock(nn.Module):
        def __init__(self, in_ch, out_ch):
          super().__init__()
          self.conv = nn.Conv2d(in_ch, out_ch, 3, padding=1)
          self.bn   = nn.BatchNorm2d(out_ch)  # γ e β por canal
          self.relu = nn.ReLU()
          self.pool = nn.MaxPool2d(2)

        def forward(self, x):
          x = self.conv(x)
          x = self.bn(x)
          x = self.relu(x)
          x = self.pool(x)
          return x  # Conv → BN → ReLU → MaxPool
Comparação: Residual vs BatchNorm
Problema
🔗 Residual
📊 BatchNorm
Vanishing gradient
✅ Mitiga
❌ Não
Instabilidade das ativações
❌ Não
✅ Mitiga
Treinamento lento
⚡ Ajuda
✅ Ajuda muito
Overfitting
— Neutro
🛡️ Reduz
Redes muito profundas
✅ Essencial
⚡ Ajuda
🏆

As duas técnicas são complementares: arquiteturas modernas (ex.: ResNet) combinam skip connections e BatchNorm para obter o melhor dos dois mundos.

🔗
Residual → gradiente fraco

Skip connections garantem caminho direto para o gradiente — mitiga o vanishing gradient em redes profundas.

📊
BatchNorm → instabilidade das ativações

Normalização de batch garante que cada camada receba ativações estáveis — acelera o treinamento.