Deep Learning Algoritması


#1

Merhaba,

Ben deep learning’in alt yapısını öğrenmeye çalışırken, algoritmasında biraz karmaşa yaşadım. Kendimce bildiğim kadarıyla algoritmanın çok basit bir halini oluşturdum, bir hatanın yada eksiğimin olup olmadığını sormak istiyorum. Ayrıca bunun hakkında matematik üzerindende matrislerle çarpmaları toplamaları vs yaparak basitçe anlatan bir yazı, bir gif, yada bir video aradım bulamadım, eğer varsa paylaşır, yoksa üretmeye çalışırsanız çok çok yardımcı olacağını düşünüyorum.

Aklımdaki algoritmaya gelecek olursak,

Örneğin 256 sample’lık datamız olsun, batch size da 128 olsun, 1 tane hidden layerimiz olsun
-Bunun anlamı bir epoch 2 batch sürecek.

  1. Datamızın ilk 128lık kısmını verdik network’e
  2. Inıtılize edilmiş weightler ile çarpıldı,toplandı, aktivasyon fonksiyonuna verildi. Hidden layerlardaki noronlardan aktivasyon fonksiyonundan çıkan tüm değerler tekrar başka weight ile çarpılıp toplanarak output üretildi
  3. Üretilen output ile labellerin gerçek değerleri loss fonksiyonuna sokularak loss hesaplaması yapıldı.
  4. Backprop işlemi ile weighler değişti.
  5. Datanin ikinci 128 lık kısmı neural network’e verilerek 2. adıma atlandı.
  6. Epoch sayısı bitene kadar 1. adıma atlandı.

Ayrıca diğer sorumda backprop olan 4. adımı da biraz benim anlattığım tarzda detaylandırabilir misinz? Örneğin weightler nasıl değişiyor yada değişince weighler aynı data ile tekrar loss bir noktaya erişinceye kadar değiştiriliyor mu yada 1 kere değiştilip hemen diğer batch’a mi geçiliyor, bu kısmıda anlamadım.

Yardımcı olursanız çok sevinirim, teşekkürler.


#2

Ayrıca diğer sorumda backprop olan 4. adımı da biraz benim anlattığım tarzda detaylandırabilir misiniz?

Anladığım kadarıyla geriye yayılım (back propagation) algoritmasının daha iyi anlamaya çalışıyorsunuz.

Bu Matt Mazur’un yazısını tavsiye ederim. Kalem kağıtla kolaylıkla hesaplanacak ufak bir ağ üzerinde algoritmanın çalışmasını, kısmi türevlerin nasıl alındığını, zincir kuralını göstermiş.

Ayrıca benzer bir yazı olarak Doruk Sönmez’in yazısını tavsiye edebilirim.

6 adımda belirttiğiniz şey aslında temel olarak bir yapay sinir ağının ileri ve geri yönlü hesaplamalarını içeriyor.

Örneğin weightler nasıl değişiyor yada değişince weighler aynı data ile tekrar loss bir noktaya erişinceye kadar değiştiriliyor mu yada 1 kere değiştilip hemen diğer batch’a mi geçiliyor, bu kısmıda anlamadım

Mini yığın (Mini Batch) kullanıldığında genelde kullanılan yöntem her yığının geçişi sırasında geriye yayılım algoritması ile güncelleme değerlerinin hesaplanması ve epoch sonunda da güncelleme değerlerinin toplanarak ağırlıklara uygulanması şeklinde. Yığınlar verinin çok farklı noktalarından alınabildiği için her defasında güncelleme yapılmıyor genelde. Güncellemeler epoch sonlarında yapılır.


#3

Merhabalar,

CS231N: Lecture Videos - Introduction to Neural Networks
bu linkte Computational Graph’lar ile ilgili kısımda tek tek türevlerin nasıl hesaplandığı ile ilgili örnekler var. Videodan daha iyi anlarım derseniz çok faydalı bir kaynak.