Gradyan İnişi ve Backpropagation

Gradyan iniş algoritması , yapay sinir ağlarının onlara verdiğimiz verileri ‘öğrenmesini’ sağlayan algoritmalardan biri. Bu algoritma nöral ağımızın kayıp fonksiyonunun değerini minimize etmeye çalışıyor. Bir çeşit optimizasyon fonksiyonu olarak düşünebilirsiniz. Backpropagation ise gradyan iniş algoritmamızı kolaylıkla uygulayabilmemiz için oluşturulan bir yöntem. Ağımızdaki katmanları oluşturan fonksiyonları en basit değişkenlerine kadar indirip bir model oluşturuyoruz, ve modeli çıktıdan itibaren geri doğru takip ederek dL/dW ilişkisini zincir kuralıyla bulmaya çalışıyoruz.

Şimdi, basitçe anlatabilmek için, 2 tane tamamen bağlı katmana sahip bir nöral ağda backpropagationu modelleyelim.

Modelin Açıklaması

Ağımız ilk katmanda X1 inputları ile W1 ağırlıklarını çarpıyor. Bu çarpıma bias değerini ekleyip. Bir RELU maskesinden geçiriyor(RELU maskesi max(0,f(x,w) fonksiyonunu uygular). Maskeden çıkarılan değerler tekrar W2 ağırlıklarıyla çarpılıyor ve bir skor değeri elde ediliyor. Bu skor değerleri de kayıp fonksiyonumuza sokulup modelimizin ne kadar başarılı olduğu ölçülüyor. Kayıp fonksiyonumuzun da bir Cross-Entropy Loss Function olduğunu kabul edelim.

Forward Pass

Şimdi modelin matematiksel ifadesini yazalım.Önce x1 ve w1 çarpılıyor :

$$f\;=\;X1\;.\;W1\;$$

Sonrasında b1 ekleniyor ve ilk katmanın yapısını tamamlamış oluyoruz.

$$f\;=\;X1\;.\;W1\;+\;b1$$

İlk katmandan çıkan değerler bir RELU içinden geçiriliyor. Bu işlem sonucunda aldığımız değerlere de X2 diyelim.

$$\mathrm X2\;=\:\max(0,\mathrm f)$$

Son olarak da bu X2 değerlerini W2 ile çarpıp, b2 ile toplayarak g fonksiyonunu elde ediyoruz.

$$g\;=\;X2\;.\;W2\;+\;b2\;$$

Yani skor fonksiyonumuzu şöyle açabiliriz :

$$g\circ f\;=\;W2\;.\;f\;+\;b2 \;\;\;\;,\;\;\;\; f\;=\;max(0,X1.W1+b1)$$

Kayıp Fonksiyonumuza gelirsek, Softmax ve Cross-Entropy Loss Function kullanıyoruz.

$$Softmax_j(z)\;=\;\frac{\;e^{Z_j}}{\displaystyle\underset k{\sum\;\;e^{z_k}}}$$
$$Cross-Entropy\;Loss\;,\;L_i\;=\;-\;\log\left(Softmax(y_i)\;\right)$$

Backpropagation (Backward Pass)

Şimdi modelimizi sondan başa doğru gradyanlar alarak takip edeceğiz. Önce skorlarımızın kayıp fonksiyonumuz üzerindeki gradyanını bulalım.
Softmax fonskiyonunun girdisi ve çıktısı birer vektör olduğundan, softmax’ın türevi dediğimizde aslında kastettiğim ve bulacağımız şey jakobyan matrisidir.
Aşağıdaki notasyonla ifade edilebilir :

$$D_jS_{i\;}\;=\;\frac{\partial S_i}{\partial a_j}\;=\;S_i(\delta_{ij}\;-\;S_j)$$

Notasyonun eldesi hakkında daha detaylı bilgi için bu linke tıklayabilirsiniz.

Şimdi modelimizi geri doğru takip edelim :

$$\frac{\partial L}{\partial b2}\;=\;\frac{\partial L}{\partial g}\;.\;\frac{\partial g}{\partial b2}\;\;\;,\;\;\; \frac{\partial L}{\partial W2}\;=\;\frac{\partial L}{\partial g}\;.\;\frac{\partial g}{\partial W2}$$
$$\frac{\partial L}{\partial X2}\;=\;\frac{\partial L}{\partial g}\;.\;\frac{\partial g}{\partial X2}\;$$

RELU kapısında işler biraz değişiyor.

$$\frac{\partial L}{\partial RELU}\;=\;\frac{\partial X2}{\partial RELU}\;.\;\frac{\partial L}{\partial X2}\;$$

Burada X2’nin RELU’ya göre kısmı türevini aldığımızda, RELU sadece 0’dan büyük gradyanların bu kapıdan geriye gitmesine izin veriyor. Detayını burda vermeyeceğim, merak edenler için şu linkte anlatılmış.

$$\frac{\partial L}{\partial b1}\;=\;\frac{\partial L}{\partial RELU}\;.\;\frac{\partial{RELU}}{\partial{b1}}\;\;\;,\;\;\;\;\frac{\partial L}{\partial W1}\;=\;\frac{\partial L}{\partial RELU}\;.\;\frac{\partial{RELU}}{\partial{W1}}\;$$

Evet, sonuç olarak W1 ve W2 ağırlık tensorlerine giden gradyanları bu şekilde elde ediyoruz. Gradyan iniş algoritması ile bu ağırlık tensorleri güncellenir ve model optimize edilir. Tabii inceledğimiz örnek oldukça basitti, yine de karmaşık modellerin de temelinde bu mantık yatıyor. Dolayısıyla bu iki yöntemi anlamak oldukça önemli.

Paylaş Yorumlar