Gate'ler
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 54/78
- 5 dk
LSTM, input, forget ve output gate'leri ile bilgi akışını kontrol eder.
Kapılar
LSTM'in her adımında dört bileşen hesaplanır; üçü sigmoid ile 0-1 arasında "ne kadar" sorusunu cevaplayan kapılardır:
- Unutma kapısı f: eski hücre bilgisinin ne kadarı tutulacak.
- Giriş kapısı i: yeni aday bilginin ne kadarı yazılacak.
- Aday g (tanh): yazılacak yeni bilgi.
- Çıkış kapısı o: hücreden ne kadarı gizli duruma okunacak.
f = sigmoid(W_f [h, x]); i = sigmoid(W_i [h, x]); o = sigmoid(W_o [h, x])
g = tanh(W_g [h, x])
c = f * c + i * g
h = o * tanh(c)Elle bir adım
Kapı değerleri verildiğinde bir adım kolayca hesaplanır:
c_eski = torch.tensor([2.0])
f, i, o = torch.tensor([0.5]), torch.tensor([1.0]), torch.tensor([1.0])
g = torch.tensor([0.5])
c = f * c_eski + i * g # 0.5·2 + 1·0.5 = 1.5
h = o * torch.tanh(c) # tanh(1.5) ≈ 0.905Gerçek LSTM'de kapılar sabit değil; her adımda girdiye ve önceki gizli duruma göre hesaplanır.
Uygulama LSTM adımı
Verilen kapı değerleriyle bir LSTM adımı hesapla: c = f * c_eski + i * g, h = o * torch.tanh(c). c ve h değerlerini round(..., 3) ile aynı satırda yazdır. Ardından f = 0 yapıp aynı hesabı tekrarla ve yeni c'yi yazdır.
Başlangıç kodu
import torch
c_eski = torch.tensor(2.0)
i = torch.tensor(1.0)
o = torch.tensor(0.5)
g = torch.tensor(0.5)
f = torch.tensor(0.5)
# buraya yazÖrnek çözüm
import torch
c_eski = torch.tensor(2.0)
i = torch.tensor(1.0)
o = torch.tensor(0.5)
g = torch.tensor(0.5)
f = torch.tensor(0.5)
c = f * c_eski + i * g
h = o * torch.tanh(c)
print(round(c.item(), 3), round(h.item(), 3))
f = torch.tensor(0.0)
print((f * c_eski + i * g).item())Beklenen çıktı
1.5 0.453 0.5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Unutma kapısı 0'a yakınsa ne olur?
- Yeni bilgi yazılmaz
- Çıktı sıfır olur
- Eski hücre bilgisi silinir Doğru cevap
- Her şey korunur
Açıklama: c = f · c_eski + ...; f ≈ 0 eski bilgiyi çarparak yok eder.
2 Hücre durumunu güncelle.
c = f * c_eski ____ i * g
c = f * c_eski + i * g
Açıklama: Hücre toplamsal güncellenir: tutulan + yazılan.
3 Kapıları eşleştir.
| Kavram | Anlamı |
|---|---|
f |
Unutma |
i |
Giriş |
g |
Aday bilgi |
o |
Çıkış |