🌌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
Burada, $W_f$ sıfırlama kapısı davranışını yöneten ağırlıklardır. 'yi birleştiriyoruz ve ile çarpıyoruz. Yukarıdaki denklem, 0 ile 1 arasında değerleri olan bir vektörüyle sonuçlanır
Bu sıfırlama kapısı vektörü, önceki hücre durumu olan ile element-wise çarpılır
Eğer 'nın değerlerinden biri 0 ise (veya 0'a yakınsa), LSTM'nin bu bilgi parçasını '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:
Sıfırlama kapısında olduğuna benzer şekilde, burada yine 0 ile 1 arasındaki değerlerden oluşan bir vektördür. Bu, 'i hesaplamak için, 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:
Son olarak, yeni hücre durumu:
🚪 Çıkış Kapısı (Output Gate)
Hangi çıktıları kullanacağımıza karar vermek için aşağıdaki iki formülü kullanıyoruz:
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
Last updated