🔄 Tekrarlayan Sinir Ağları (RNN)

🔄 Tekrarlayan Sinir Ağları (RNN)

🔎 Tanım

Önceki çıkışların sonraki katmanlara giriş olarak kullanılmasına izin veren bir sinir ağı sınıfıdır

Eğitim sırasında öğrendikleri şeyleri hatırlarlar ✨

🧱 Mimari

🔶 RNN Tamamının Mimarisi

🧩 Bir RNN Hücresi

Temel bir RNN hücresi. xtx^{⟨t⟩}'yi (Şimdiki girdi) ve at1a^{⟨t−1⟩}'yi (geçmişten gelen bilgileri içeren önceki gizli durum) girdi olarak alır, bir sonraki RNN hücresine verilen ve aynı zamanda yty^{⟨t⟩}'yi tahmin etmek için kullanılan ata^{⟨t⟩}'yi çıktı olarak verir

⏩ Forward Propagation

a<t>a^{<t>}'yi hesaplamak için:

a<t>=g(Waaa<t1>+Waxx<t>+ba)a^{<t>}=g(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a)

y^<t>\hat{y}^{<t>}'yi hesaplamak için:

y^<t>=g(Wyaa<t>+by)\hat{y}^{<t>} = g(W_{ya}a^{<t>}+b_y)

👀 Görselleştirme

⏪ Back Propagation

Kayıp fonksiyonu aşağıdaki şekilde tanımlanır

L<t>(y^<t>,y<t>)=y<t>log(y^)(1y<t>)log(1y^<t>)L^{<t>}(\hat{y}^{<t>}, y^{<t>})=-y^{<t>}log(\hat{y})-(1-y^{<t>})log(1-\hat{y}^{<t>})

L(y^,y)=t=1TyL<t>(y^<t>,y<t>)L(\hat{y},y)=\sum_{t=1}^{T_y}L^{<t>}(\hat{y}^{<t>}, y^{<t>})

🎨 RNN Türleri

  • 1️⃣ ➡ 1️⃣ One-to-One (Klasik ANN)

  • 1️⃣ ➡ 🔢 One-to-Many (Müzik Üretme)

  • 🔢 ➡ 1️⃣ Many-to-One (Anlamsal Analiz)

  • 🔢 ➡ 🔢 Many-to-Many Tx=TyT_x = T_y (Konuşma tanıma)

  • 🔢 ➡ 🔢 Many-to-Many TxTyT_x \neq T_y (Makine Çevirisi)

🔥 Gelişmiş Tekrarlayan Sinir Ağları

🔄 Çift Yönlü Tekrarlayan Yapay Sinir Ağları (BRNN)

  • Birçok uygulamada, tüm giriş sırasına bağlı olabilecek bir y(t)y^{(t)} tahmini çıkarmak isteyebiliriz

  • Bidirectional RNN'ler dizinin başlangıcından başlayarak zaman içinde ileri hareket eden bir RNN'i, dizinin sonundan başlayarak zaman boyunca geri hareket eden bir RNN ile birleştirirler.

💬 Başka Bir Deyişle

  • Çift Yönlü Tekrarlayan Yapay Sinir Ağları aslında iki bağımsız RNN bir araya getiriyorlar.

  • Giriş dizisi bir ağ için normal zaman sırasıyla, diğeri için ters zaman sırasıyla aktarılır.

  • İki ağın çıkışları genellikle her zaman adımında birleştirilir.

  • 🎉 Bu yapı, ağların, her adımda dizi hakkında hem geri hem de ileri bilgiye sahip olmalarını sağlar.

👎 Dezavantaj

Tahmin yapmadan önce tüm veri dizisine ihtiyacımız vardır.

e.g: gerçek zamanlı konuşma tanıma için uygun değildir

👀 Görselleştirme

🕸 Derin RNN'ler

Çoğu RNN hesaplamaları, üç parametre bloğuna ve ilişkili dönüşümlere ayrıştırılabilir.: 1. Girişten gizli duruma, x(t)x^{(t)}a(t)a^{(t)} 2. Önceki gizli durumdan sonraki gizli duruma, a(t1)a^{(t-1)}a(t)a^{(t)} 3. Gizli durumdan çıktıya, a(t)a^{(t)}y(t)y^{(t)}

Derin tekrarlayan ağlarla sonuçlanan yukarıdaki dönüşümlerin her biri için birden çok katman kullanabiliriz 😋

👀 Görselleştirme

❌ Problem: Vanishing Gradients with RNNs

  • 10.000 zaman adımı büyüklüğünde bir dizi verisini işleyen bir RNN, optimize edilmesi çok zor olan 10.000 derin katmana sahiptir 🙄

  • Derin Sinir Ağlarında da, daha derin ağlar vanishing gradient problem sorununa giriyor 🥽

  • Bu da, uzun dizi boyutuna sahip RNN'lerde de olur 🐛

🧙‍♀️ Çözümler

  • RNN'deki Vanishing Gradients problemi üzerine Yazımı okuyabilirsin 🤸‍♀️

🌞 Yazının Aslı

🧐 Daha Fazla Oku