LSTM Nedir? Nasıl Çalışır?

Mehmet Fatih AKCA
3 min readJan 4, 2021

--

RNN’ler (eğer okumadıysanız: https://medium.com/deep-learning-turkiye/rnn-nedir-nas%C4%B1l-%C3%A7al%C4%B1%C5%9F%C4%B1r-9e5d572689e1) kısa cümleler üzerinde gayet iyi işler çıkartabilseler de, sıra uzun cümleler veya paragraflara geldiğinde pek bekleneni karşılamamakta. Bunun nedeni Vanishing (Kaybolma) Gradient Problemidir.

Vanishing Gradient Problemi:

Aktivasyon fonksiyonları sayesinde girdimizi belirli bir aralığa indirgeyebiliriz. Bu aralık genelde -1 ve 1 veya 0 ve 1 aralığıdır. Ufak bir alana indirgediğimiz için girdimizdeki büyük bir değişim aktivasyon fonksiyonunda o kadar büyük bir değişime yol açmayabilir.

Sigmoid Fonksiyonu (kaynak:https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21)

Dolayısıyla türevi de küçük olur. Eğer türevi çok küçükse, o katman yeteri kadar öğrenemez

Daha detaylı bilgi için Gradient Descent adlı yazıma bakabilirsiniz: https://medium.com/deep-learning-turkiye/gradient-descent-nedir-3ec6afcb9900

RNN’de çok erken aşamalarda dahi bu durum gerçekleşebilir. Bu katmanlar öğrenmediği için, RNN’ler daha uzun metinlerde gördüklerini unutabilir ve böylece kısa süreli bir hafızaya sahip olurlar.

Peki LSTM bu sorunu nasıl çözüyor?

LSTM yapısı içerisindeki kapılar (gate) neyin hatırlanacağını, neyin unutulacağını belirler. Yani gelen girdi önemsizse unutulur, önemliyse bir sonraki aşamaya aktarılır. Bunu Gate ve Cell State yardımıyla yapar. Detaylı açıklayacak olursam:

1-) Forget Gate (Unutma Kapısı):

Hangi bilginin tutulacağı veya unutulacağına karar verir. Mantığı hiç karmaşık değil. Matematikte öğrendiğimiz gibi, bir sayı 0 ile çarpılırsa ne kadar büyük olursa olsun sonuç 0 olur. Burada da aynı mantıkla işlem yapılıyor. Unutmak için girdinin ağırlığına 0 verilir.

Bir önceki gizli katmandan gelen bilgiler ve güncel bilgiler Sigmoid Fonksiyonundan geçer. 0'a ne kadar yakınsa o kadar unutulacak, 1'e ne kadar yakınsa o kadar tutulacak demektir.

Forget Gate (Kaynak: https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21)

2-) Input Gate (Girdi Kapısı):

Cell State’i güncellemek için kullanılır. Öncelikle Forget Gate’de (Unutma Kapısı) olduğu gibi Sigmoid fonksiyonu uygulanır, hangi bilginin tutulacağına karar verilir. Daha sonra ağı düzenlemek için Tanh fonksiyonu yardımıyla -1,1 arasına indirgenir ve çıkan iki sonuç çarpılır.

Input Gate (Kaynak: https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21)

3-) Cell State:

Cell State’in hücre içerisindeki en önemli görevi bilgiyi taşımaktır. Taşınması gereken verileri alır ve hücre sonuna, oradan da diğer hücrelere taşır. Yani ağ üzerinde veri akışını Cell State yardımıyla sağlarız. İlk olarak Forget Gate’den (Unutma Kapısı) gelen sonuç ile bir önceki katmanın sonucu çarpılır. Daha sonra Input Gate’den (Girdi Kapısı) gelen değer ile toplanır.

Cell State (Kaynak: https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21)

4-) Output Gate (Çıktı Kapısı):

Bir sonraki katmana gönderilecek değere karar verir. Bu değer, tahmin için kullanılır. Öncelikle bir önceki değer ile şu anki girdi Sigmoid fonksiyonundan geçer. Cell State’den gelen değer Tanh fonksiyonundan geçtikten sonra iki değer çarpılır ve bir sonraki katmana “Bir önceki değer” olarak gider. Cell State ilerler.

Output Gate (Kaynak: https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21)

Şu ana kadar anlattıklarım hücre içerisinde yapılan işlemlerdi. Daha geniş açıyla bakacak olursak:

--

--

Mehmet Fatih AKCA

Sakarya Üniversitesi Yönetim Bilişim Sistemleri 4.sınıf öğrencisiyim. Makine Öğrenmesi, Veri Madenciliği, Veri Analizi ve Görüntü İşleme www.mfakca.com