🧮 Simulador: Gradiente de um Peso do Kernel
∂Perda / ∂K[kr][kc] = Σ dZ · X
PADRÃO DE ENTRADA (IMAGEM 6×6)?
Escolhe qual imagem 6×6 alimenta a convolução.
TAXA DE APRENDIZADO (η)?
Taxa de aprendizado. Ajuste para ver a diferença entre convergência suave (0.002) e colapso por overshooting (0.02).
Exemplo reduzido: imagem 6×6 e filtro 3×3 gerando mapas 4×4. Clique nas abas "🔍 Como é calculado?" abaixo de cada matriz para entender as contas passo a passo. Passe o mouse sobre qualquer célula de X, Z, A, dZ ou K para ver a conta exata daquele valor, com os elementos usados nas camadas relacionadas destacados com contorno tracejado/azul.
1. PESO DO KERNEL?
Selecione qual peso do kernel você deseja analisar individualmente.
KERNEL ATUAL (K)?
Valores do filtro 3×3. O peso selecionado é destacado em azul. Passe o mouse sobre um peso para ver onde ele é usado.
🔍 Como é atualizado?
Regra do Gradiente:
• ∇K = soma dos 16 votos dZ × X.
K ← K − η · ∇K
• η = taxa de aprendizado.• ∇K = soma dos 16 votos dZ × X.
ENTRADA X (6×6)?
Imagem 6×6. Pixel azul = sobreposição com o peso K selecionado na janela atual. Passe o mouse sobre um pixel para ver em quais posições de Z ele é usado.
🔍 Como funciona X?
Matriz de entrada. Na posição (r,c), o peso K multiplica o pixel:
X[r + kr][c + kc]
PRÉ-ATIVAÇÃO Z (4×4)?
Resultado da convolução antes do ReLU: Z = Σ K · X. Passe o mouse sobre uma célula para ver os 9 termos da soma, destacando a janela em X e todo o kernel K.
🔍 Como calcula Z?
Correlação cruzada:
Multiplicação ponto a ponto do filtro 3×3 sobre X:
Multiplicação ponto a ponto do filtro 3×3 sobre X:
Z[r][c] = Σ K · X
ATIVAÇÃO A (4×4)?
Resultado pós-ReLU: A = max(0, Z). Se Z ≤ 0, a ativação é zerada. Passe o mouse sobre uma célula para destacar o Z correspondente.
🔍 Como calcula A?
Função ReLU:
A[r][c] = max(0, Z[r][c])
Soma Global (S):S = Σ A[r][c]
ERRO dZ (4×4)?
Erro propagado: dZ = (S - alvo) · I(Z > 0). Onde A=0, o erro dZ também é 0. Passe o mouse sobre uma célula para ver a conta completa, destacando o Z correspondente e todas as 16 células de A que formam S.
🔍 Como calcula dZ, S e Loss?
1. Perda (Loss L):
L = ½ (S − alvo)²
2. Erro propagado dZ:dZ = (S − alvo) · deriv_ReLU(Z)
2. CÁLCULO E SOMA DOS "VOTOS" DE CADA POSIÇÃO?
Cada posição (r,c) gera um voto = dZ[r][c] × X[r+kr][c+kc]. A soma de todos os 16 votos forma o gradiente do peso.
CÁLCULO DESTA POSIÇÃO?
Exibe o erro local (dZ) e o pixel de entrada (X) multiplicados na posição atual da janela deslizante.
SOMA ACUMULADA (GRADIENTE)?
O valor acumulado dos produtos dZ × X de todas as posições já percorridas. Quando atinge 16/16, este é o gradiente final do peso.
HISTÓRICO DAS 16 POSIÇÕES (COLUNAS c=0, c=1, c=2, c=3)?
Acompanhe a lista de todas as 16 posições organizadas em 4 colunas para corresponder ao movimento da janela sobre a imagem de saída.
3. USE O GRADIENTE PARA ATUALIZAR O KERNEL?
Aplica a regra do Gradiente Descendente (K ← K − η · gradiente) para todos os 9 pesos.
PERDA AO LONGO DAS ATUALIZAÇÕES?
Evolução do erro L = ½(S − alvo)²:
• Objetivo: L → 0 (S → alvo).
• Se travar em L = 40.5: Ocorreu "overshooting" (salto exagerado). Os pesos ficaram muito negativos, gerando Z ≤ 0 (morte da ReLU). Com S = 0, a perda trava em ½(0 − 9)² = 40.5.
• Objetivo: L → 0 (S → alvo).
• Se travar em L = 40.5: Ocorreu "overshooting" (salto exagerado). Os pesos ficaram muito negativos, gerando Z ≤ 0 (morte da ReLU). Com S = 0, a perda trava em ½(0 − 9)² = 40.5.
Descrição: Figura 9.12: Simulador interativo do cálculo do gradiente de um peso do kernel convolucional.