RNN nedir?
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 47/78
- 5 dk
RNN (Recurrent Neural Network), dizi verisini işlemek için tasarlanmış bir modeldir.
RNN nedir?
Tekrarlayan sinir ağı (RNN), dizileri (metin, zaman serisi, ses) adım adım işler. Her adımda yeni girdiyi ve bir önceki adımdan gelen gizli durumu birleştirir; böylece geçmişin özetini taşır:
# h_t = tanh(W_x · x_t + W_h · h_(t-1) + b)
h = torch.zeros(gizli)
for x_t in dizi:
h = torch.tanh(W_x @ x_t + W_h @ h + b)Aynı ağırlıklar her adımda kullanılır; bu, CNN'deki ağırlık paylaşımının zaman eksenindeki karşılığıdır ve her uzunlukta diziyi işlemeyi sağlar.
Dizi problemleri
RNN'ler farklı girdi-çıktı biçimlerine uyar:
- Çoktan teke: duygu analizi (cümle → olumlu/olumsuz).
- Çoktan çoğa: etiketleme (her kelimeye tür), zaman serisinde her adımı tahmin.
- Tekten çoğa: metin üretimi (başlangıç → cümle).
Sıralı işleme RNN'in zayıflığıdır da: adımlar paralel hesaplanamaz ve uzun dizilerde erken bilgi kaybolur. Transformer bu iki sorunu çözmek için geliştirildi.
Uygulama Elle RNN
Gizli boyutu 2 olan bir RNN'i elle çalıştır: h sıfırdan başlasın, her adımda h = torch.tanh(W_x @ x_t + W_h @ h). Dizideki üç girdiden sonra h'yi round(..., 3) uygulanmış liste olarak yazdır.
Başlangıç kodu
import torch
from torch import nn
W_x = torch.tensor([[1.0], [0.5]])
W_h = torch.tensor([[0.5, 0.0], [0.0, 0.5]])
dizi = [torch.tensor([1.0]), torch.tensor([0.0]), torch.tensor([-1.0])]
# buraya yazÖrnek çözüm
import torch
from torch import nn
W_x = torch.tensor([[1.0], [0.5]])
W_h = torch.tensor([[0.5, 0.0], [0.0, 0.5]])
dizi = [torch.tensor([1.0]), torch.tensor([0.0]), torch.tensor([-1.0])]
h = torch.zeros(2)
for x_t in dizi:
h = torch.tanh(W_x @ x_t + W_h @ h)
print([round(v, 3) for v in h.tolist()])Beklenen çıktı
[-0.674, -0.368]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 RNN'de aynı ağırlıkların her adımda kullanılması neyi sağlar?
- Etiketsiz öğrenmeyi
- Farklı uzunluktaki dizileri işleyebilmeyi Doğru cevap
- Paralel eğitimi
- Daha çok parametreyi
Açıklama: Parametre sayısı dizi uzunluğuna bağlı değildir.
2 Gizli durumu güncelle.
h = torch.____(W_x @ x_t + W_h @ h + b)
h = torch.tanh(W_x @ x_t + W_h @ h + b)
Açıklama: Klasik RNN tanh aktivasyonu kullanır.
3 Problemleri biçimlerle eşleştir.
| Kavram | Anlamı |
|---|---|
Duygu analizi |
Çoktan teke |
Sözcük türü etiketleme |
Çoktan çoğa |
Metin üretimi |
Tekten çoğa |
gizli durum |
Geçmişin özeti |