RNN ya da tekrarlayan sinir ağı, metin, konuşma veya zaman serisi gibi diziler için tasarlanmış bir sinir ağıdır. Her adımda mevcut girdiyi bir önceki adımdan gelen gizli durumla birleştirir; böylece çıktı, daha önce ne geldiğine bağlı olabilir.
Temel fikir budur: RNN’in çalışan bir belleği vardır. LSTM ise, önemli bilginin birçok adım boyunca korunması gerektiğinde bu belleği daha dikkatli yöneten kapılı bir RNN türüdür.
Bir RNN her zaman adımında ne yapar?
zaman adımında, basit bir RNN gizli durumunu şu tür bir kuralla günceller:
Burada mevcut girdi, önceki gizli durum ve yeni gizli durumdur. ve matrisleri ile bias terimi eğitim sırasında öğrenilir.
Model her adımda bir çıktı da üretiyorsa, yaygın bir biçim şudur:
Tam çıktı kuralı göreve bağlıdır. Bazı problemler her adım için bir çıktı isterken, bazıları yalnızca son gizli durumu kullanır.
Gizli durum neden önemlidir?
İleri beslemeli bir ağ tek bir girdi görür ve devam eder. RNN ise önceki hesaplamasının bir kısmını yeniden kullanır. Onu metin, konuşma, zaman serisi ve diğer sıralı veriler için yararlı yapan şey de bu yeniden kullanımdır.
Gizli durumu, modelin her adımdan sonra kendine yazdığı kısa bir not gibi düşünebilirsiniz. Sonraki adım bu notu okur, günceller ve düzeltilmiş hâlini ileri taşır.
Aynı girdilerin sırasını değiştirirseniz, gizli durumlar da genellikle değişir. Yani dizide sıra önemlidir.
Çözümlü RNN örneği
Gerçek RNN’ler genellikle vektörler ve doğrusal olmayan aktivasyonlar kullanır. Hesabı okunabilir tutmak için tek sayılı oyuncak bir durum kullanalım:
Şimdi , , dizisini işleyelim.
İlk adım:
İkinci adım:
Üçüncü adım:
Burada önemli olan tam formül değildir. Önemli olan, önceki duruma bağımlılıktır. 2. adımda güncelleme yalnızca ’yi kullanmaz; 1. adımdan taşınan bilgiyi de kullanır. RNN’in temel fikri budur.
Sırayı değiştirip , , kullanırsanız, o zaman
Aynı sayılar görünse bile son durum farklıdır. RNN’lerin girdi yığını modelleri değil de dizi modelleri olmasının nedeni tam olarak budur.
Temel RNN’ler neden uzun dizilerde zorlanır?
Temel bir RNN’de eski bilgi, birçok tekrarlı güncelleme boyunca korunmak zorundadır. Dizi uzunsa bu zor olabilir. Yararlı sinyaller zayıflayabilir; eğitim sırasında gradyanlar da birçok adım boyunca küçülebilir ya da patlayabilir.
Bu yüzden düz RNN’ler, görev dizinin çok gerisindeki bilgiye bağlı olduğunda sık sık zorlanır. Sorun, tekrarlılığın yanlış olması değildir. Sorun, uzun menzilli belleğin basit bir gizli durum güncellemesiyle korunmasının zor olmasıdır.
LSTM, RNN belleğini nasıl geliştirir?
LSTM, long short-term memory ifadesinin kısaltmasıdır ve kapılı bir RNN’dir. Genellikle hücre durumu denen daha yapılandırılmış bir bellek yolu ekler; ayrıca hangi bilginin unutulacağını, hangi yeni bilginin yazılacağını ve hangi kısmın çıktı olarak açığa çıkarılacağını kontrol eden kapılar kullanır.
Ana fikri anlamak için tüm kapı denklemlerine ihtiyacınız yoktur. Bu tasarım, modele bellek üzerinde daha fazla kontrol verir. Bir ayrıntının birçok adım boyunca korunması gerekiyorsa, LSTM bunu düz bir RNN’den daha iyi sürdürebilir.
Bu, LSTM’nin her şeyi sonsuza kadar hatırladığı anlamına gelmez. Anlamı şudur: Mimari, bilginin ne zaman korunacağını ve ne zaman atılacağını öğrenmede daha iyidir.
Sade dille RNN ve LSTM karşılaştırması
Temel bir RNN’in tek bir çalışan durumu vardır ve bunu tekrar tekrar günceller. LSTM ise bu fikrin etrafına daha güçlü bir bellek mekanizması ekler.
Dizi kısaysa ve bağımlılık yerelse, düz bir RNN yeterli olabilir. Görev dizinin çok daha önceki kısımlarındaki bilgiye bağlıysa, LSTM çoğu zaman daha güvenli seçimdir.
RNN ve LSTM hakkında yaygın hatalar
RNN’in tüm diziyi aynı anda gördüğünü sanmak
Genellikle böyle değildir. Standart yaklaşım, durumun ileri taşındığı adım adım işlemedir.
LSTM’nin bellek sorununu kusursuz çözdüğünü varsaymak
Uzun menzilli bağımlılıklarda yardımcı olur, ama yine de sonlu kapasiteye ve pratik sınırlara sahip, eğitilen bir modeldir.
Dizi sırasını göz ardı etmek
RNN’ler sıralı veriler için tasarlanmıştır. Dizi öğelerini karıştırmak hesabı değiştirir.
Gizli durumu insanın okuyabileceği bir bellek gibi görmek
Gizli durum, cümle benzeri temiz bir özet değil; öğrenilmiş sayısal bir temsildir.
RNN’ler ve LSTM’ler ne zaman kullanılır?
Dil modelleme, konuşma, el yazısı, sensör akışları ve zaman serisi tahmini gibi dizi problemlerinde kullanılırlar. Günümüzde birçok dil görevi bunun yerine transformer kullanıyor, ancak RNN’ler ve LSTM’ler hâlâ önemlidir; çünkü dizi belleğini açık biçimde öğretirler ve daha küçük ya da özel durumlarda hâlâ yararlı olabilirler.
Kendi sürümünüzü deneyin
Kendinize ait dört adımlı bir dizi yazın ve oyuncak kuralı uygulayın. Sonra iki girdinin yerini değiştirin ve son durumu karşılaştırın. Bu küçük deney, tekrarlılığın rolünü yalnızca kısaltmanın kendisinden çok daha net gösterir.
Başka bir durumu incelemek isterseniz, bu sayfayı bir transformer veya Markov zinciri açıklamasıyla karşılaştırın ve her modelin geçmiş bilgiyi nasıl kullandığına dikkat edin.
Bir soruyla yardıma mı ihtiyacın var?
Sorunuzu yükleyin ve saniyeler içinde doğrulanmış adım adım çözüm alın.
GPAI Solver Aç →