CodeBlanks Logo Icon CodeBlanks

RNN nedir?

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

model.py
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

model.py
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.

Soru
h = torch.____(W_x @ x_t + W_h @ h + b)
Cevap
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

İleri seviye bölümündeki tüm dersler