💫
Derin Öğrenme
  • 💫Derin Öğrenme Notları
  • 🚀English Version
  • 🦋Projeye Katkıda Bulunma
  • 💼Kullanışlı Araçlar
  • 💎Yapay Sinir Ağları Kavramları
    • 🌱Giriş
    • 🔎Esas Problem
    • 👷‍♀️ Yapay Sinir Ağlarının Uygulanması Üzerine Notlar
    • 📚Yapay Sinir Ağlarının Kavramları
    • 💥Yapay Sinir Ağlarında Aktivasyon Fonksiyonları
    • 🎈NN Uygulama İp Uçları
    • 👩‍🔧 NN Düzenlileştirme (Regularization)
    • ✨Optimizasyon Algoritmaları
    • 🎨Softmax Regression
    • 🏃‍♀️ Tensorflow'a Hızlı Giriş
    • 👩‍💻 Yapay Sinir Ağlarıyla ilgili Pyhton Kod Parçaları
  • 🙋‍♀️ Yapay Sinir Ağları ile Derin Öğrenme'nin Hello World'u
    • 🌱Giriş
    • 🌐Tarayıcıda CNNler
  • 🚪Bilgisayar Görüşüne Giriş
    • 🌱Giriş
  • 🚩Evrişimli Sinir Ağları Kavramları
    • 🌱Giriş
    • 📌Evrişimli Sinir Ağları ile İlgili Genel Kavramlar
    • 🌟Evrişimli Sinir Ağları Gelişmiş Kavramları
    • 👀Evrişimli Sinir Ağlarının Görselleştirilmesi
    • 👵Klasik Evrişimli Sinir Ağları
    • ✨CNN'leri Kurmak İçin Diğer Yaklaşımlar
    • 🕸️CNN'lerin Popüler Uygulamaları
  • 👩‍💻 CNN'ler Üzerinde Kodlar ve Notlar
    • 🌱Giriş
  • 💄Derin Öğrenmenin Popüler Stratejileri
    • 🌱Giriş
    • 🚙Öğrenme Aktarması (Transfer Learning)
    • 📚Derin Öğrenmede Diğer Stratejiler
  • 🤡Resim Artırma (Image Augmentation)
    • 🌱Giriş
  • 🤸‍♀️ Uygulamalı Makine Öğrenmesi Üzerine Notlar
    • 🌱Giriş
    • 👩‍🔧 Makine Öğrenimi Projelerinin Yapılandırılması Üzerine Notlar
    • 👩‍🏫 Uygulama Talimatları
  • 🕵️‍♀️ Obje Algılama Temelleri
    • 🌱Giriş
    • ⭕Bölge Tabanlı (Region-Based) CNN'ler
    • 🤳SSD ve YOLO
    • 🤖TensorFlow Object Detection API
  • ➰Derin Öğrenmede Dizi Modelleri
    • 🌱Giriş
    • 📚Dizi Modellerinin Genel Kavramları
    • 🔄Tekrarlayan Sinir Ağları (RNN)
    • 🌌RNN'deki Vanishing Gradients
    • 🌚Kelime Gösterimi
    • 💬NLP Hakkında Karışık Bilgiler
  • 📕Proje Sözlüğü
  • 📚Faydalı PDF'ler
  • 👀Hızlı Görsel Bilgiler
Powered by GitBook
On this page
  • 🧙‍♀️ Çözümler
  • 🚪 Gated Recurrent Unit (GRU)
  • 🔁 Güncelleme Kapısı
  • 0️⃣ Sıfırlama Kapısı
  • 💬 Current Memory Content
  • 🎈 Final Memory at Current Time Step
  • 👀 Görselleştirme
  • 🎉 GRU Özeti
  • 🤸‍♀️ Long Short-Term Memory (LSTM)
  • 0️⃣ Sıfırlama Kapısı (Forget Gate)
  • 🔄 Güncelleme Kapısı (Update Gate)
  • 👩‍🔧 Hücreyi Güncelleme
  • 🚪 Çıkış Kapısı (Output Gate)
  • 🌞 Yazının Aslı
  • 🧐 Daha Fazla Oku

Was this helpful?

Export as PDF
  1. Derin Öğrenmede Dizi Modelleri

RNN'deki Vanishing Gradients

  • 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

  • GRU Gated Recurrent Unit

  • LSTM Long Short-Term Memory

🚪 Gated Recurrent Unit (GRU)

GRU'lar standart tekrarlayan sinir ağlarının gelişmiş versiyonlarıdır ✨, GRU güncelleme kapısı ve sıfırlama kapısını kullanır

  • Temel olarak, bunlar çıktıya hangi bilgilerin aktarılması gerektiğine karar veren iki vektördür

  • Onlarla ilgili özel olan şey, bilgiyi uzun zaman önce tutmak için eğitilebilecekleridir

    • Zamanla kaybolmadan veya tahminle ilgili bilgileri çıkarmadan

Kapı

Açıklama

🔁 Güncelleme Kapısı

Modele, geçmiş bilgilerin ne kadarının (önceki zaman adımlarından) geleceğe aktarılması gerektiğini belirlemede yardımcı olur

0️⃣ Sıfırlama Kapısı

Modele, geçmiş bilgilerin ne kadarının unutacağına karar vermede yardımcı olur

🔁 Güncelleme Kapısı

Bu kapı göz önüne alındığında, vanishing gradient problemi ortadan kalkar çünkü model kendi başına geçmiş bilgilerin ne kadarını geleceğe taşıdığını öğreniyor.

Kısaca: Şimdi ne kadar geçmiş önemli olmalı? 🙄

0️⃣ Sıfırlama Kapısı

Geçmiş bilgilerinin ne kadarının unutulacağına karar vermek için model tarafından kullanıldığından, bu kapı güncelleme kapısıyla karşılaştırıldığında tam tersi bir işlevselliğe sahiptir.

Kısaca: Önceki bilgi düşürülecek mi? 🙄

💬 Current Memory Content

Geçmişten ilgili bilgileri saklamak için sıfırlama kapısını kullanacak bellek içeriği.

🎈 Final Memory at Current Time Step

Mevcut birim için bilgi tutan ve onu daha sonra ağa iletecek bir vektör.

👀 Görselleştirme

🎉 GRU Özeti

  • vanishing gradient problemini gidermek için bir çözümdür

  • Model her seferinde yeni girişi kaybetmekte kalmıyor, ilgili bilgileri saklıyor ve ağın bir sonraki zaman adımlarına aktarıyor

🤸‍♀️ Long Short-Term Memory (LSTM)

0️⃣ Sıfırlama Kapısı (Forget Gate)

  • Bir metinde kelimeler okuduğumuzu varsayalım ve örneğin tekil mi yoksa çoğul mu olduğu gibi gramer yapılarını takip etmek için bir LSTM kullanmak istiyoruz.

  • Eğer konu tekil bir kelimeden çoğul kelimeye geçerse, tekil / çoğul durumun önceden depolanmış hafıza değerinden kurtulmanın bir yolunu bulmalıyız.

  • LSTM'de, sıfırlama (forget) kapısı bunu yapmamıza izin veriyor

Γf<t>=σ(Wf[a<t−1>,x<t>]+bf)\Gamma ^{<t>}_f = \sigma(W_f[a^{<t-1>}, x^{<t>}]+b_f)Γf<t>​=σ(Wf​[a<t−1>,x<t>]+bf​)

  • Burada, $W_f$ sıfırlama kapısı davranışını yöneten ağırlıklardır. [a<t−1>vex<t>][a^{<t-1>} ve x^{<t>}][a<t−1>vex<t>]'yi birleştiriyoruz ve WfW_fWf​ ile çarpıyoruz. Yukarıdaki denklem, 0 ile 1 arasında değerleri olan bir Γf<t>\Gamma_f^{<t>}Γf<t>​ vektörüyle sonuçlanır

  • Bu sıfırlama kapısı vektörü, önceki hücre durumu c<t−1>c^{<t-1>}c<t−1> olan ile element-wise çarpılır

  • Eğer Γf<t>\Gamma_f^{<t>}Γf<t>​'nın değerlerinden biri 0 ise (veya 0'a yakınsa), LSTM'nin bu bilgi parçasını c<t−1>c^{<t-1>}c<t−1>'nin karşılık gelen bileşeninden çıkarması gerektiği anlamına gelir (örneğin: tekil nesne).

  • Değerlerden biri 1 ise, bilgiyi olduğu gibi korunacaktır.

🔄 Güncelleme Kapısı (Update Gate)

Odaklandığımız nesnenin tekil olduğunu unuttuğumuzda, yeni nesnenin artık çoğul olduğunu yansıtacak şekilde güncellemenin bir yolunu bulmalıyız. Güncelleme kapısının formülü aşağıdaki gibidir:

Γu<t>=σ(Wu[a<t−1>,x<t>]+bu)\Gamma ^{<t>}_u = \sigma(W_u[a^{<t-1>}, x^{<t>}]+b_u)Γu<t>​=σ(Wu​[a<t−1>,x<t>]+bu​)

Sıfırlama kapısında olduğuna benzer şekilde, burada  Gammau<t>\ Gamma_u^{<t>} Gammau<t>​ yine 0 ile 1 arasındaki değerlerden oluşan bir vektördür. Bu, c⟨t⟩c^{⟨t⟩}c⟨t⟩ 'i hesaplamak için, c~<t>\tilde{c}^{<t>}c~<t> ile element-wise çarpılacaktır.

👩‍🔧 Hücreyi Güncelleme

Yeni nesneyi güncellemek için önceki hücre durumumuza ekleyebileceğimiz yeni bir sayı vektörü oluşturmamız gerekiyor. Kullandığımız denklem aşağıdaki gibidir:

c~<t>=tanh(Wc[a<t−1>,x<t>]+bc)\tilde{c}^{<t>}=tanh(W_c[a^{<t-1>}, x^{<t>}]+b_c)c~<t>=tanh(Wc​[a<t−1>,x<t>]+bc​)

Son olarak, yeni hücre durumu:

c<t>=Γf<t>∗c<t−1>+Γu<t>∗c~<t>c^{<t>}=\Gamma _f^{<t>}*c^{<t-1>} + \Gamma _u^{<t>}*\tilde{c}^{<t>}c<t>=Γf<t>​∗c<t−1>+Γu<t>​∗c~<t>

🚪 Çıkış Kapısı (Output Gate)

Hangi çıktıları kullanacağımıza karar vermek için aşağıdaki iki formülü kullanıyoruz:

Γo<t>=σ(Wo[a<t−1>,x<t>]+bo)\Gamma _o^{<t>}=\sigma(W_o[a^{<t-1>}, x^{<t>}]+b_o)Γo<t>​=σ(Wo​[a<t−1>,x<t>]+bo​)

a<t>=Γo<t>∗tanh(c<t>)a^{<t>} = \Gamma _o^{<t>}*tanh(c^{<t>})a<t>=Γo<t>​∗tanh(c<t>)

Birinci denklemde, sigmoid fonksiyonunu kullanarak neyin çıktısı alınacağına karar verirken, ikinci denklemde önceki durumu tanh fonksiyonu ile çarpıyoruz.

GRU, LSTM'den daha yeni, LSTM daha güçlü, ancak GRU'nun uygulanması daha kolay 🚧

🌞 Yazının Aslı

🧐 Daha Fazla Oku

PreviousTekrarlayan Sinir Ağları (RNN)NextKelime Gösterimi

Last updated 4 years ago

Was this helpful?

➰
🌌
Burada 🐾
What are RNNs and GRUs
Understanding GRU Networks
Detailed LSTM