LSTM nedir?
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 53/78
- 5 dk
LSTM (Long Short-Term Memory), uzun dizilerde bellek koruyan RNN türüdür.
LSTM nedir?
Uzun kısa süreli bellek (LSTM), sönen gradyan sorununa karşı geliştirilmiş bir RNN türüdür. Gizli duruma ek olarak bir hücre durumu taşır ve bilginin bu hücreye ne kadar yazılacağını, ne kadar tutulacağını ve ne kadar okunacağını öğrenilen kapılarla denetler.
lstm = nn.LSTM(input_size=8, hidden_size=16, batch_first=True)
output, (h_n, c_n) = lstm(torch.zeros(2, 5, 8))
print(output.shape, h_n.shape, c_n.shape)
# torch.Size([2, 5, 16]) torch.Size([1, 2, 16]) torch.Size([1, 2, 16])LSTM, transformer'dan önce metin, konuşma ve zaman serilerinde en yaygın mimariydi; bugün de küçük dizi problemlerinde güçlü bir seçenektir.
Neden işe yarar?
Hücre durumu adımdan adıma çoğunlukla toplama ile güncellenir: c_t = f_t ⊙ c_(t-1) + i_t ⊙ g_t. Unutma kapısı f ≈ 1 olduğunda bilgi ve gradyan uzun süre neredeyse değişmeden akar; RNN'deki tekrar eden çarpma zinciri kırılır.
Bu, ResNet'teki kalıntı bağlantısıyla aynı fikirdir: bilgiye çarpımsal değil toplamsal bir yol açmak.
Uygulama LSTM şekilleri
nn.LSTM(8, 16, batch_first=True) katmanını (2, 5, 8) girdiye uygula. output, h_n ve c_n şekillerini alt alta, ardından output[:, -1] ile h_n[0]'ın aynı olduğunu torch.allclose ile yazdır.
Başlangıç kodu
import torch
from torch import nn
x = torch.randn(2, 5, 8)
# buraya yazÖrnek çözüm
import torch
from torch import nn
x = torch.randn(2, 5, 8)
lstm = nn.LSTM(8, 16, batch_first=True)
output, (h_n, c_n) = lstm(x)
print(output.shape)
print(h_n.shape)
print(c_n.shape)
print(torch.allclose(output[:, -1], h_n[0]))Beklenen çıktı
torch.Size([2, 5, 16]) torch.Size([1, 2, 16]) torch.Size([1, 2, 16]) True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>nn.LSTM</code> çağrısı <code>nn.RNN</code>'den farklı olarak ne döndürür?
- Yalnızca output
- Üç ayrı output
- Hiçbir şey
- output ile birlikte (h_n, c_n) çifti Doğru cevap
Açıklama: LSTM gizli durum h ve hücre durumu c taşır.
2 LSTM çıktısını aç.
output, (h_n, ____) = lstm(x)
output, (h_n, c_n) = lstm(x)
Açıklama: İkinci eleman (h_n, c_n) çiftidir.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
h |
Gizli durum (çıktı) |
c |
Hücre durumu (bellek) |
kapı |
Bilgi akışını denetler |
toplamsal güncelleme |
Sönmeyi azaltır |