RNN Nedir? Nasıl Çalışır?
Nedir bu RNN?
RNN’ler genelde bir sonraki adımı tahmin etmek için kullanılan bir çeşit Derin Öğrenme yapılarıdır. Diğer derin öğrenme yapılarından en büyük farkları ise hatırlamalarıdır. Evet, RNN’ler hatırlayabiliyor. Bir diğer farkları ise, diğer sinir ağlarında her girdi birbirinden bağımsız iken RNN’lerde girdiler birbiri ile ilişkilidir. Nasıl yani? RNN’ler bir sonraki adımı takip edebilmek için girdiler arasında ilişki kurarlar ve eğitilirken tüm ilişkilerini hatırlarlar.
-Hatırlar dedin, bu nasıl oluyor?
Hemen açıklayayım. RNN’ler kurmuş oldukları ilişkilerin kalıcı olması için kendi içlerinde dönen döngü benzeri bir yapı kullanırlar. Bunu anlamak için RNN yapısının görseline bakalım.
Görselde olduğu gibi, çıkan sonuç aslında bir sonraki adımı besliyor. Daha rahat görebilmek için bu yapının açık haline bakalım.
Yani H_1 için X_0 girdisi ile elde edilen H_0 ve X_1kullanılıyor. Aynı şekilde ilerliyor.
İşin Matematiği:
h_t: Şu anki h değeri
h_t-1: Bir önceki h değeri
x_t: Şu anki girdi vektörü
Bir aktivasyon fonksiyonu ile kullanımı:
W: Ağırlık
h: Gizli katman
W_hh: Bir önceki gizli katmanın ağırlığı
W_hx: Şu anki gizli katmanın ağırlığı
tanh: Aktivasyon fonksiyonu
W_hy: Çıktı katmanının ağırlık değeri
y_t: Çıktı
Eğer anlamadıysan hiç endişelenme. Çünkü şuan anlayacaksın.
Gün boyu dışarıdasın ve ev arkadaşın senin için yemek yapıyor ama bazı kuralları var. Yemekleri elmalı turta, hamburger ve tavuk sırasıyla yapıyor.
Bir diğer kural olarak hava güneşliyse o da dışarı çıkıyor ve bir önceki gün yemek olarak ne yaptıysa aynısını yapıyor. Eğer hava yağmurluysa dün yaptığı yemeği değiştiriyor.
Şimdi işleri biraz kızıştıralım. İki kuralı da aynı anda uygulayalım ve bir haftalık programı çıkartalım.
Pazartesi, sıradaki ilk yemek olan elmalı turta ile başlıyor. Salı günü hava güneşli olduğu için yemeği değiştirmez ve bir önceki gün ne yaptığına bakarak aynısını yapar (Yapacağı yemeği karar vermek için hava durumuna ve bir önceki gün ne yaptığına bakarak karar vermesi RNN’e benzemiyor mu? 😲). Çarşamba günü hava yağmurlu, yani dün yapmış olduğu yemeği değiştirmesi gerekiyor. Bir önceki gün yapmış olduğu elmalı turtaya bakarak bugün hamburger yapması gerektiğine karar veriyor.
Perşembe => Yağmurlu Hava (Yemeği değiştir) + Hamburger = Tavuk
Cuma => Güneşli Hava (Yemek aynı kalsın) + Tavuk = Tavuk
Cumartesi => Güneşli Hava (Yemek aynı kalsın) + Tavuk = Tavuk
Bu denklemler ne kadar da formül 1.1'e benziyor.
Pazar günü için:
Avantajları:
1-) Bir önceki örnek ile ilişki kurar. Bu sayede girdiler unutulmadan ilerlenir.
2-) Kullanım alanı çok geniştir. (Metin ve ses verileri, sınıflandırma problemleri, regresyon problemleri, üretken (generative) modellerde kullanılır.)
Dezavantajları:
1-) Gradient vanishing /exploding problemleri. (Yakın zamanda bunun hakkında bir yazı gelecek.)
2-) Uzun girdileri işlemekte zorlanır.
Özet:
1-) RNN’ler önceki girdileri hatırlar ve her girdi için ilişki kurar.
2-) Kendi içerisinde dönen bir döngü gibi çalışır.
3-) Kendi içerisinde de işlemler yapıldığı için, genelde çok derin RNN yapıları kurulmaz.
RNN bu kadardı. Okuduğunuz için teşekkür ederim.
Esen Kalın.