Derin Öğrenme - 2 - Geri Yayılım Algoritması

backpropagation,gradient descent

Derin Öğrenme - 2 - Geri Yayılım Algoritması
Derin Öğrenme - 2 - Geri Yayılım Algoritması

Bir önceki makalede forward propagation algoritmasından bahsetmiştim. Bu makalenin konusu ise forward propagation işlemi yaptıktan sonra ağırlıkları güncellememizi sağlayan backpropagation algoritmasıdır.

 

Kullanılan Terimler

  • Backpropagation - Geri Yayılım
  • Loss(Error) Function -  Kayıp(Yitim) Fonksiyonu
  • Gradient Descent - Gradyan İnişi
  • Cost Function - Maliyet Fonksiyonu
  • Learning Rate - Öğrenme Hızı

 

 

Temel Amaç

Forward propagation algoritmasında modelin input layer ' ndan output layer'ına kadar bir çeşit hesaplamalar ile gelmeyi başarmıştık. Buraya kadar yapılan işlemlere tam öğrenme diyemeyiz çünkü öğrenme işlemi yaptığımız hatalardan ders alarak birdaha bunları yapmamaya çalışmaktır. Backpropagation  da işte tam da bunu yapıyoruz. 

;Output layer ' a gelince loss function denen bir fonksiyon sayesinde modelimizin tahmininin ne kadar doğru olduğunu hesaplıyoruz ve ona göre bir değer üretiyoruz. Örneğin ilk iterasyonda modelin loss function 'u 0.99 şeklinde bir çıktı oluşabilir.

Forward propagation da input layer dan output layer a gelmiştik burda ise artık output layer dan input layer a bir yayılım söz konusudur. Bu yayılımda kullanılan temel algoritma Gradient Descent 'dir.

Kısaca amacımız Gradient Descent 'i kullanarak ağırlıkların güncellenmesini sağlamaktır. Bu bize modelin loss function u azaltmasını yani hatasını telafi etmesini sağlayacaktır.

 

Peki Nasıl ? 

Backpropagation da output 'dan input layer 'a gidiyoruz ama nasıl ? Bu işlemleri yaparken matematikteki kısmi türevi kullanacağız. Bu sayede bir önceki layer 'ın ağırlıklarına ulaşabiliriz.

 

Cost Function ? 

Loss function sadece tek bir eğitim örneği için hatayı hesaplarken cost function ise bütün eğitim seti üzerindeki ortalama loss function u hesaplar. İlk başta loss function 'u küçültmek istediğimiz görünse de genel olarak cost function u küçültmek isteriz. Çünkü cost function bir bakıma parametrelerin maliyetidir. Yani cost 'u en aza indiren W ile b parametrelerini bulmaya çalışırız.

 

Gradient Descent

Gradient Descent algoritması ile kısmi türev kullanarak ağırlıkları güncelleyebilirz demiştim. Fakat burda dikkat edilmesi gereken çok önemli noktalar var. Gradient  descent algortiması kısmi türevle geri doğru giderek optimum cost u bulmaya çalışırken local minimum ve local maximum noktalarına takılabilir. Bunu engellemek için çeşitli yöntemler kullanılmata fakat bu yöntemleri bir sonraki yazıda anlatmak istiyorum. 

Ek olarak bu algoritmanın local min ve max a takılmamasın diye cost function grafiğinin convex olmasını isteriz bu sayede takılma riskini biraz azaltmış oluruz ancak convex oldu diye optimum noktayı buldu anlamına gelmemektedir. Bu durum sadece riski azaltır.

Gösterim Olarak

w := w - (æ. ÐJ(w,b) / Ð w)

b := b - (æ. ÐJ(w,b) / Ð b)

Ð --> kısmi türev

æ --> learning rate 

:= güncelleme işareti

Yukardaki formludeki kısmi türevin ve learning rate in gerçek gösterimi değildir.

Yukardaki formuldenden anlaşılacağı üzere bir diğer parametremiz learning rate.

Learning rate i gradient descent ile giderken adım uzunluğu gibi düşünebilirsiniz. Örneğin learning rate ininz çok büyük olursa gideceğiniz yere hızlı varırsınız fakat hassasiyetiniz düşük olur. Learning rate ininiz çok küçük olursa da gideceğiniz yere varmanız çok uzun zaman alabilir ve gereksiz hassasiyet sağlamış olabilirsiniz.