RNN nedir?
Bu derste dizilerle, yani sıralı verilerle çalışabilen ve bir önceki adımdan öğrendiğini sonraki adıma taşıyan RNN (Recurrent Neural Network, Tekrarlayan Sinir Ağı) mimarisini baştan sona işliyoruz: nasıl çalışır, hangi türleri vardır, en büyük sorunu nasıl aşılmıştır ve günümüz yapay zekâsındaki yeri nedir. Konunun temelleri için Yapay sinir ağları dersine, serinin tamamı için Yapay Zekâ dersleri sayfasına göz atabilirsin.
RNN (Tekrarlayan Sinir Ağı) Nedir?
RNN, zamana ya da sıraya bağlı verileri işlemek için tasarlanmış, çıktısının bir kısmını yeniden girdi olarak kullanan bir sinir ağı mimarisidir. Bir cümledeki kelimeler, bir ses kaydındaki anlar ya da elektrik tüketiminin saat saat değerleri gibi her öğe bir zaman adımı (time step) sayılır; ağ aynı hesabı her adımda yeniden uygular. Adındaki “recurrent” (tekrarlayan) sözü bu döngüyü anlatır.
RNN'i sıradan ağlardan ayıran şey, her adımda gizli durum (hidden state) adı verilen bir özeti korumasıdır. Bu özet, o ana kadar görülen verilerin sıkıştırılmış bir hafızasıdır: “Bugün hava çok …” ifadesinde sonraki kelimeyi tahmin ederken önceki kelimeleri unutmamamız gibi, RNN de bağlamı sonraki adıma taşır. Bu yönüyle Derin öğrenme nedir? dersinde anlatılan temel ağ türlerinden farklıdır, çünkü girdilerin sırasını hesaba katar: “Ali Ayşe'yi çağırdı” ile “Ayşe Ali'yi çağırdı” aynı kelimeleri içerir ama aynı anlamı taşımaz.
RNN Nasıl Çalışır?
Standart bir ağda bilgi girdiden çıktıya tek yönde akar; RNN'de ise zaman boyunca bir döngü vardır. Her zaman adımında ağ iki girdiyi birleştirir: o anki veri x(t) ile bir önceki adımın gizli durumu h(t-1). Bu ikisi ağırlıklarla çarpılıp toplanır ve bir aktivasyon fonksiyonundan geçirilerek yeni gizli durum h(t) üretilir. Basitçe formülü şöyledir: h(t) = tanh(W·h(t-1) + U·x(t) + b). Hesabı yapan temel birimi merak ediyorsan Nöron nedir? dersine bakabilirsin.
Kritik bir ayrıntı: ağırlıklar her adımda aynıdır. Dizi üç öğeli de olsa üç yüz öğeli de olsa öğrenilecek parametre sayısı değişmez; bu sayede RNN farklı uzunluktaki dizilerle çalışabilir. Gizli durumu, hücreden hücreye taşınan bir not defteri gibi düşünebilirsin: her adımda eski notlar gözden geçirilir, yenileri eklenir.
Somut bir örnekle pekiştirelim: bir e-ticaret yorumunun olumlu mu olumsuz mu olduğunu bulmak istiyoruz. “Ürün kaliteli ama kargo çok gecikti” cümlesi kelime kelime ağa verilir; her kelimede gizli durum güncellenir. Son kelime işlendiğinde gizli durum tüm cümlenin özetini taşır ve bu özet tek bir karara, yani olumlu/olumsuz etiketine çevrilir.
RNN Türleri: Girdi ve Çıktı Biçimleri
Görevin ihtiyacına göre RNN, farklı girdi-çıktı düzenlerinde kurulabilir:
- Çoktan bire (many-to-one): dizi alır, tek değer üretir. Örnek: bir yorumun duygu analizi.
- Bire çoğa (one-to-many): tek girdiden dizi üretir. Örnek: bir fotoğrafa açıklama cümlesi yazmak.
- Çoktan çoğa (eş hizalı): her girdi öğesine bir çıktı karşılık gelir. Örnek: bir videonun her karesini etiketlemek.
- Çoktan çoğa (kodlayıcı-çözücü): farklı uzunluktaki iki diziyi bağlar. Örnek: makine çevirisi; önce kaynak cümle bir özete dönüştürülür, sonra hedef dilde cümle üretilir.
Birden fazla RNN'i katmanlar hâlinde üst üste koymak da mümkündür; alt katman kelimeler arasındaki basit örüntüleri öğrenirken üst katman daha soyut örüntüleri yakalayabilir.
Kaybolan Gradyan Sorunu: LSTM ve GRU
Klasik (vanilla) RNN'in en büyük eksiği, uzun dizilerde uzak bağlantıları öğrenememesidir. Eğitim sırasında hata sinyali zaman adımlarına geriye doğru yayılırken adım başına 1'den küçük çarpanlarla küçülür; otuz adım sonra sinyal neredeyse yok olur. Bu sorun kaybolan gradyan (vanishing gradient) olarak bilinir ve ağın cümlenin başındaki kelimeyle sondaki kelime arasındaki ilişkiyi kavramasını engeller. Bazen tersi olur ve sinyal kontrolsüz büyüyerek öğrenmeyi bozar; buna patlayan gradyan denir ve genellikle gradyan kırpma (clipping) tekniğiyle önlenir.
Çözüm olarak 1997'de önerilen LSTM (Long Short-Term Memory), uzun süreli bir bilgi hattı olan hücre durumu ve bu hattı yöneten kapılar ekler: unutma kapısı gereksiz bilgiyi siler, girdi kapısı yeni bilgiyi ekler, çıkış kapısı ne kadarının sonraki adıma verileceğine karar verir. 2014'te önerilen GRU (Gated Recurrent Unit) ise aynı fikri daha az kapıyla ve daha yalın bir yapıyla uygular. İkisinde de ilke aynıdır: ağın neyi hatırlayıp neyi unutacağına kendisinin karar vermesi.
RNN Nerelerde Kullanılır?
RNN'ler her tür dizi verisiyle çalışabildiği için kullanım alanları geniştir:
- Doğal dil işleme: duygu analizi, metin sınıflandırma, sohbet botları. Metin ağa verilmeden önce Token nedir? dersinde anlatıldığı gibi parçalara ayrılır; alanın bütünü için NLP nedir? dersine bakabilirsin.
- Ses işleme: konuşma tanıma ve sesli komut algılama.
- Zaman serisi tahmini: elektrik tüketimi, döviz kuru, sıcaklık gibi ardışık ölçümlerle geleceği öngörme.
- Sıralı öneri sistemleri: kullanıcının tıklama ve izleme geçmişine göre sonraki içeriği önerme.
2024–2025 itibarıyla tablo şöyledir: büyük dil modelleri ve güncel çeviri sistemlerinin çoğu Transformer mimarisinı kullanır; çünkü bu mimarideki dikkat mekanizması dizinin tamamını aynı anda işleyebilir ve eğitim paralelleştirilebilir. Vanilla RNN ise adımı adımı çalıştığı için bu paralelliği sağlayamaz ve GPU ve yapay zekâ dersinde incelediğimiz donanım gücünden tam verim alınamaz. Yine de RNN terk edilmiş değildir: gömülü sistemlerde, zaman serisi görevlerinde ve düşük gecikme gerektiren uygulamalarda LSTM ve GRU hâlâ yaygındır; 2023'ten bu yana Mamba gibi durum-uzayı modelleri de tekrarlayan hesabın fikrini daha verimli biçimde yeniden gündeme getirmiştir.
Sık Yapılan Hatalar ve Yanılgılar
Yeni başlayanların RNN karşısında en sık düştüğü noktaları şöyle sıralayabiliriz:
- “RNN tamamen öldü” sanmak: dil modellerinin merkezinde olmasa da gizli durum, zaman adımı, kodlayıcı-çözücü gibi RNN kavramları günümüz mimarilerinde yaşamaya devam ediyor.
- Gizli durumu tüm geçmişin kaydı saymak: gizli durum sabit boyutlu bir özettir; uzun dizilerde ayrıntıların bir bölümü doğal olarak kaybolur.
- Uzun dizideki kötü sonucu hep veri azlığına bağlamak: asıl neden çoğu zaman kaybolan gradyandır; o durumda çözüm daha çok veri değil, LSTM ya da GRU gibi bir yapıdır.
- Farklı uzunluktaki dizileri eşitlemeden yığına koymak: dolgu (padding) ve maskeleme yapılmazsa model boş ya da anlamsız adımları da öğrenmeye çalışır.
- Uzamsal veriye RNN seçmek: komşu pikseller arasındaki örüntü sıralı değildir; görüntü işlemede bu işi CNN nedir? dersinde ele aldığımız evrişimli ağlar üstlenir.
- Yavaşlığı yalnızca donanıma bağlamak: vanilla RNN'in eğitim maliyeti büyük ölçüde hesabın ardışık olmasından gelir; bir adım bitmeden sonraki adım başlayamaz.
Sık Sorulan Sorular
RNN nedir?
RNN (Recurrent Neural Network, Tekrarlayan Sinir Ağı), sıralı verileri işlemek için tasarlanmış, her adımda bir önceki adımın özetini (gizli durumunu) sonraki adıma taşıyan sinir ağı mimarisidir. Bu sayede dizideki sıra ve bağlam bilgisini kullanabilir.
RNN ile LSTM arasındaki fark nedir?
LSTM, RNN'in gelişmiş bir türüdür. Klasik RNN uzun dizilerde kaybolan gradyan sorunu nedeniyle uzak bağlantıları öğrenemez; LSTM, unutma, girdi ve çıkış kapılarıyla neyi hatırlayıp neyi unutacağına karar vererek bu sorunu büyük ölçüde çözer.
RNN ile CNN arasındaki fark nedir?
RNN, metin ve ses gibi zamana bağlı dizi verisi için tasarlanmıştır ve girdilerin sırasını dikkate alır; CNN ise görüntü gibi uzamsal veride örüntü tespiti için kullanılır. Kısacası RNN sıradaki adımlar arasındaki ilişkiyi, CNN komşuluk ilişkisini öğrenir.