Recapitulando: As 4 Decisões da LSTM
❓ As 4 Perguntas
O que esquecer da memória antiga?
▶
fₜ = σ(Wf·xₜ + Uf·hₜ₋₁ + bf)
Que nova informação considerar?
▶
c̃ₜ = tanh(Wc·xₜ + Uc·hₜ₋₁ + bc)
Quanto dessa informação entra?
▶
iₜ = σ(Wi·xₜ + Ui·hₜ₋₁ + bi)
Quanto da memória expor?
▶
oₜ = σ(Wo·xₜ + Uo·hₜ₋₁ + bo)
🔢 7 Operações por Passo
- 1Ler xₜ e hₜ₋₁
- 2Calcular fₜ: o que esquecer
- 3Calcular iₜ: o que permitir entrar
- 4Calcular c̃ₜ: conteúdo candidato
- 5Atualizar cₜ = fₜ⊙cₜ₋₁ + iₜ⊙c̃ₜ
- 6Calcular oₜ: o que expor
- 7Produzir hₜ = oₜ⊙tanh(cₜ)
🔑
A LSTM substitui a simples equação hₜ = φ(U·xₜ + V·hₜ₋₁) por um mecanismo de controle explícito com 4 componentes.
❓
Dúvida frequente: se sigmoid e tanh saturam, como a LSTM mitiga o vanishing gradient?
▶
❌ RNN simples — produto de Jacobianos
∂L/∂hₜ₋k = (∏ φ'(·)·W) · ∂L/∂hₜ
A cada passo o gradiente é multiplicado por φ', que vale no máximo 0,50 (tanh) ou 0,25 (sigmoid). Com k passos, o produto tende a 0 — o gradiente desaparece.
✅ LSTM — autoestrada pelo estado de célula cₜ
∂cₜ/∂cₜ₋₁ = diag(fₜ)
A atualização cₜ = fₜ⊙cₜ₋₁ + iₜ⊙c̃ₜ é aditiva. A derivada de cₜ em relação a cₜ₋₁ é simplesmente fₜ — não passa por nenhuma não-linearidade extra. Se fₜ ≈ 1, o gradiente atravessa intacto.
Ponto-chave:
- Os gates usam sigmoid/tanh para serem calculados — mas o gradiente de longo alcance não percorre os gates.
- Ele percorre cₜ → cₜ₋₁ → ⋯ → cₜ₋k, multiplicando apenas por fₜ a cada passo.
- Quando a memória deve ser preservada, a rede aprende fₜ ≈ 1 — e o gradiente atravessa sem ser esmagado.
- Os gradientes dos pesos dos gates passam por sigmoid/tanh, mas servem só para aprender quando abrir/fechar — não para propagar erro a distância.