2. Genel Recurrent Neural Network bilgileri
RNN ilk olarak 1980lerde ortaya çıkmıştır.
Bu yaklaşımın ilerlemesinin ana sebepleri Grafik işlemci birimleri ve artan hesaplama gücüne dayanmaktadır.
Bu yaklaşım sıralı veriler için faydalıdır.Çünkü her nöron ya da ünite önceki girdi ile ilgili bilgileri korumak için dahili belleği
kullanır.
Ben evimi yıkadım ile evimi yıkadım ifadesi birbirinden farklıdır. Bu yapı ağın ifadeyi daha iyi anlamasına yardımcı olur.
İnsan düşünceleri her zaman sıfırdan başlamaz.Örneğin okuduğunuz bir makalenin her sözcüğünü daha önceki
sözcükleri anlamanıza dayanarak anlıyorsunuz.
Geleneksel sinir ağları bunu yapamaz ve önemli bir eksikliktir.Mesela izlediğiniz bir filmdeki her noktadaki hangi türde
olayın sınıflandırmak istediğinizi düşünün.Geleneksel sinir ağları,filmdeki önceki olaylarla ilgili mantığı daha sonra
bildirmek için nasıl kullanırki.
Tekrarlayan sinir ağları bu sorun ile ilgilenir. Bunlar, içinde döngüler bulunan ve bilginin devam etmesine izin veren
ağlardır.
3. Recurrent Neural Network
Nedir RNN diğer modellerden daha efektif ve popüler yapan? Örneğin Feed-Forward Neural Network ve
Convolutional Neural Network. Bunların apileri çok kısıtlıdır: Sabit büyüklükte bir vektörü girdi olarak alıp(örneğin
görüntü) ve yine sabit büyüklükte bir vektör üretirler(Örneğin , farklı sınıfların olasılıkları). Bunun dışına bu
modeller bu eşlemeyi sabit miktarda hesaplama aşamaları ile gerçekleştirirler(Örneğin modeldeki katman
sayısı).Recurrent Neural Network ü daha somutlaştırarak anlatmaya çalışayım.
4. Recurrent Neural Network
Bu diyagram da x_t girdi , A yı RNN’nin bir parçası h_t çıktıdır.Esasen
cümledeki kelimeleri , hatta dizedeki karakterleri x_t olarak RNN den bir h_t
olacak şekilde besleyebilirsiniz.Bunun böyle olmasının sebebi genellikle
verilerimizde Sequence pattern durumu vardır.Sadece girdiklerimiz değil bir
önceki durumda çıkışa etki ediyordur. Amaç h_t yi girdi olarak kullanmak ve
test verileriyle(genellikle orjinal verilerinin daha küçük bir alt kümesi gibi)
karşılaştırmaktır.Ardında hata oranlarını elde ederiz.Çıktınız test verilerinize
göre hata oranını elinizde kıyasladıktan sonra Back Propagation Through
Time (BPTT) adı verilen bir teknik kullanabilirsiniz. BPTT geri ağ üzerinden
kontrol eder ve hata oranına bağlı olarak ağırlıkları ayarlar. Bu, ağı ayarlar
ve daha iyi sonuç vermeyi öğrenmesini sağlar.Fakat bu yıllardır bilinen yapı
popüler olmamasını sebebi vardır: Bu da meşhur Vanishing Gradient
Problemidir.Hesaplanmış çıkış değerleri ile test datası arasındaki fark bize
bir gradient değer verir ve bu değer göre geriye doğru ağ ağırlık değerleri
güncellenir.Fakat ağımız çok karmaşıksa geriye doğru bu değer sıfırlanır ve
eğitim durur. Bu problemin çözümü için Long Short Term Memory diye bir
yapı kurulmuş. Bundan birazdan bahsedeceğim.
6. Recurrent Neural Network
Her dikdörtgen bir vektör ve oklar fonksiyonları temsil etmektedir (örn., Matris çarpımı). Giriş vektörleri kırmızı,
çıktı vektörleri mavi, yeşil vektörler RNN'nin durumunu koruyor . Soldan sağa: (1) RNN'siz, sabit büyüklükteki
girişten sabit boyutlu çıktıya (ör. Resim sınıflandırma) Vanilya(FFN) işleme modu. (2) Sıra çıktısı (örneğin, resim
yazısı görüntü alır ve kelimelerin bir cümlesini çıkarır). (3) Sekans girişi (örneğin, verilen bir cümlenin pozitif veya
negatif duygu ifade ettiği şeklinde sınıflandırıldığı duygu analizi). (4) Sıra girişi ve sıra çıktısı (örn. Makine
Çevirisi: bir RNN bir cümleyi ingilizce okur ve sonra bir cümle Fransızca'yı verir). (5) Senkronize edilmiş dizi giriş
ve çıkışı (örneğin, videonun her karesini etiketlemek istediğiniz video sınıflandırması). Döngüsel dönüşüm (yeşil)
sabit olduğundan ve istediğiniz gibi birçok kez uygulanabileceğinden, her durumda uzunluk dizileri üzerinde
önceden belirlenmiş kısıtlamalar olmadığına dikkat edin.
7. LSTM
Uzun Kısa Vadeli Hafıza Ağları -LSTM- olarak adlandırılır - uzun vadeli bağımlılıkları öğrenebilen özel bir RNN
türüdür. Bunlar Hochreiter & Schmidhuber (1997) tarafından tanıtıldı.Çok çeşitli problemlerde çok iyi çalışıyorlar
ve artık yaygın bir şekilde kullanılmaktadırlar.Yapıda kabaca RNN hücresine birde hafıza eşlik ediyor. Bu hafıza
ile bir önceki zamandan gelen bilgi alınabiliyor , bir sonrakine iletilebiliyor. Neyi alıp neyi almayacağına eğitim ile
karar veriyor. LSTMler , uzun vadeli bağımlılık sorunun önüne geçmek için tasarlanmış yapılardır. Uzun süreli bilgi
hatırlamak pratikte varsayılan davranışlarıdır. Öğrenmek için bir çabaları yoktur. Bu tasarlanmış yapı RNN
öğrenme süresinde eşlik ederler.
8. Adım adım LSTM
LSTM'mizin ilk adımı hangi bilginin hücre durumundan atılacağına karar vermektir.Bu katman sigmuod katmanından oluşur.
Bu, ht-1 ve xt'ye bakar ve hücre durumu Ct-1'deki her sayı için 0 ile 1 arasında bir sayı çıkarır. A 1, "bunu tamamen
saklamayı" temsil ederken, 0 "Bundan tamamen kurtulmak" anlamına geliyor.Bir sonraki kelimeyi önceki tüm kelimelere
dayanılarak tahmin etmeye çalışan bir dil modeli örneğimize geri dönelim. Böyle bir problemde hücre durumu, doğru
zamirlerin kullanılabilmesi için mevcut öznenin cinsiyetini içerebilir. Yeni bir konu gördüğümüzde, eski konunun cinsiyetini
unutmak istiyoruz.
9. Bu katman hangi yeni bilgiyi hücremize depolayacağımıza karar vermektir.Bu katman yine kendi içinde iki
aşamadan oluşur. İlk aşama input gate layer olarak adlandıracağımız sigmoud katman ile hangi değerleri
güncelleyeceğimize karar veririz.Daha sonra tanh katmanı ile yeni bir vektör oluştururuz ,C t duruma eklenebilir.
Bir sonraki adımda, duruma bir güncelleme oluşturmak için bu ikisini birleştireceğiz.
Dil modelimiz örneğinde, yeni konunun cinsiyetini hücre durumuna eklemek isteriz ki unuttuğumuz eski olanın
yerini alabiliriz.
10. Artık eski Ct_1 hücre durumunu Ct ye güncelleme zamanı geldi.Eski durumu, ft ile çarpıyoruz, unuttuğumuz
şeyleri unutuyoruz. Daha önce unutmayı nasıl yapacağımız kararlaştırmıştık. Sonra şunu ekliyoruz: * C t. Bu, her
durumun değerini ne kadar güncellemeye karar verdiğimiz tarafından ölçeklendirilen yeni aday değerleridir.Dil
modeli söz konusu olduğunda, burası, eski öznenin cinsiyeti hakkındaki bilgileri gerçekten bırakıp yeni bilgileri
eklediğimiz yerdir Önceki adımlarda buna karar vermiştik.
11. Önce, hücre durumunun hangi bölümlerine çıktıracağımıza karar veren bir sigmoid katmanı çalıştırırız.Daha
sonra, hücrenin durumunu tanh vasıtasıyla (-1 ile 1 arasında olacak şekilde) koyduk ve sigmoid gate output
çarpıp, kararlaştırdığımız parçaları çıktı alıyoruz.
Dil modeli örneği için, yalnızca bir konuyu gördüğünden, bir fiille alakalı bilgiyi çıktı isteyebilir; Örneğin, konu tekil
mi yoksa çoğul mu çıktı, böylece bir sonraki fiilin bir sonraki harfi ne ise onun içine birleştirildiğini bileceğiz.