Derin Öğrenmenin Motivasyonu, Tarihi ve Esin Kaynağı

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Yann LeCun

Ders Planı

  • Denetimli Öğrenme, Sinir Ağları ve Derin Öğrenme Temelleri
  • Geri Yayılım ve Mimari Bilesenler
  • Evrişimli Sinir Ağları (CNN, Convolutional Neural Networks)
  • Derin Öğrenme Mimarileri
  • Düzenlileştirmenin İncelikleri / Eniyilestirmenin İncelikleri/ Derin Öğrenmenin çalışma mantığını kavramak
  • Enerji Tabanlı Modeller
  • Özdenetimli Öğrenme ve Sonrası

Derin Öğrenmenin Esin Kaynağı ve Tarihi

Derin öğrenme temelde insan beyninden esinlenmiştir ancak beynin her detayı derin öğrenme için önemli değildir. Bunu uçakların kuşlardan esinlenmiş olmasına benzetebiliriz. İkisi de uçuyor olsa da, gerçekte nasıl uçtukları oldukça farklıdır.

Derin öğrenmenin temelleri, günümüzde artık sibernetik olarak bilinen bilim dalına dayanır. 1940’lı yıllarda McCulloch ve Pitts ile başlamıştır. İkili, beyindeki sinir hücrelerinin bir eşik değere göre aktif ya da pasif olarak çalıştığı fikrini ortaya attı. Sinir hücrelerini birbirlerine baglayarak bir Boole cebiri devresi kurabilir ve bu devreyi kullanarak mantıksal çıkarımlar yapabilirsiniz. Beynimizdeki sinir hücreleri ikilik düzenle çalıştıkları için beynimiz de bir mantıksal çıkarım makinası olarak nitelendirilebilir. Sinir hücreleri girdilerini belli katsayılarla çarparak bir ağırlıklı toplam alır ve sonucu bir eşik değer ile karşılaştırırlar. Eğer sonuç eşik değerden yüksekse sinir hücresi iletişime geçer, aksi taktirde bir iletim olmaz. Yapay sinir ağları da temelde böyle çalışır.

1947 yılında Donald Hebb, beynimizdeki sinir hücrelerinin arasındaki bağlantıların şiddetini değiştirerek öğrendiği fikrini ortaya attı. Bu fikre hiperöğrenme denir; karşılıklı iletişime geçen sinir hücreleri arasındaki bağlantılar güçlenir, iletişime geçmeyenlerde ise bağlantılar zayıflar.

1948 senesinde ise, Norbert Wiener sensör ve eyleyicilerden oluşan bir sistemin geri bildirim döngüsünde kendi kendini denetleyebileceğini savunan sibernetik alanını ortaya koydu. Arabalardaki geri bildirim kurallarının temeli bu çalışmaya dayanır.

1957 senesinde Frank Rosenblatt basit yapay sinir ağlarındaki ağırlıkları değiştirebilen Perseptron öğrenme algoritmasını önerdi.

Genel olarak, sinir hücrelerini taklit ederek düşünebilen makinalar inşa etme fikri 1940’larda ortaya çıktı, 1950’lerde ivme kazandı ve 1960’ların sonunda tamamen söndü. Bu alanın 1960’larda ortadan kaybolmasının nedenleri:

  • Araştırmacılar ikili sinir hücreleri kullandılar. Geri yayılımın çalışması için sürekli aktifleştirme fonksiyonları gerekir. Bahsettiğimiz yıllardaki araştırmacılar sürekli sinir hücresi kullanma fikrinden uzaklardı ve ikili sinir hücrelerinin türevi alınamayacağı için gradyanlar ile öğrenmenin mümkün olmadığını düşünüyorlardı.
  • Sürekli sinir hücreleri kullanıldığı zaman, bir girdinin ağırlıklı toplama etkisini görebilmek için bir aktiflestirme değeri ile çarpılması gerekir. Ancak 1980’den önce iki sayının çarpımı, özellikle gerçel sayıların çarpımı oldukça yavaştı. Sürekli sinir hücreleri kullanmaya yaklaşılmamasının bir diğer sebebi de buydu.

1985’te geri yayılımın ortaya çıkması ile birlikte Derin Öğrenme tekrar harekete geçti. 1995’te ise alan tekrar duruldu ve makina öğrenmesi topluluğu yapay sinir ağları fikrinden vazgeçtiler. 2010’lu yılların başında yapay sinir ağlarının konuşma tanımada büyük başarıyla uygulanmasının ardından piyasada da yaygın bir şekilde kullanılmaya başlandı. 2013’te bilgisayarlı görü yapay sinir ağlarına geçmeye başladı. 2016 yılında doğal dil işleme aynı geçişi tekrar etti. Yakında aynı devrim robotik, kontrol ve diğer çoğu başka alanda yaşanacak.

Denetimli Öğrenme

Derin öğrenme uygulamalarının $\%90$’ı denetimli öğrenme kullanır. Denetimli öğrenme için öncelikle çok sayıda girdi-çıktı çifti toplanır ve doğru çıktının öğrenilmesi için girdiler makinaya verilir. Eğer makina doğru çıktı verirse bir şey yapılmaz. Yanlış çıktıda ise makinanın ayarları ile oynanarak makinanın verdiği çıktı istenen çıktıya yakınlaştırılmaya çalışılır. Burada işin püf noktası parametrelerin hangi yöne doğru ve ne kadar değişeceğine karar vermektir, bu da gradyan hesabına ve geri beslemeye bağlıdır.

Denetimli öğrenmenin kökleri Perseptron ve Adaline’a dayanır. Adaline ağırlıklı girdilerin kullanıldığı mimariyle aynı temellere sahiptir; eşik değer üzerine çıkıldığında iletişime geçer, eşik değer altında kalırsa ise sessiz kalır. Perceptron ise 2. katmanın eğitilebildiği, ilk katmanın ise sabit tutulduğu 2 katmanlı bir yapay sinir ağıdır. İlişkili katman adı verilen ilk katman çoğu zaman rastgele başlatılır.

Şekil Tanımanın Tarihi ve Gradyan İnişine giriş

Yukarıdaki videoda derin öğrenme yaygınlaşmadan önce kullanılan şekil tanıma yöntemlerinin kavramsal altyapısı anlatılmıştır. Şekil tanıma için kullanılan genelgeçer model birer öznitelik çıkarıcısı ve eğitilebilir sınıflandırıcıdan oluşur. Girdi, işimize yarayabilecek özellikleri bulunmak üzere öznitelik çıkarısıcına verilir, mesela yüzleri tanımak istiyorsak gözleri saptayabilir. Sonrasında elde edilen öznitelik vektörleri eğitilebilir sınıflandırıcıdan geçirilir ve ağırlıklı toplam hesaplanarak eşik değer ile karşılaştırılır. Burada eğitilebilir sınıflandırıcı bir perseptron ya da tek katmanlı yapay sinir ağı olabilir. Buradaki asıl sorun öznitelik çıkarıcısının elle hazırlanmasının gerekmesi. Şekil tanıma ya da bilgisayarlı görü çalışmalarında harcanan zamanın çoğu eğitilebilir bir sınıflandırıcı üretmektense öznitelik çıkarıcısının eldeki problem için özel tasarımına harcanıyor.

Derin öğrenmenin ortaya çıkışı ve olgunlaşması sonrasında yukarıda bahsedilen iki aşamalı süreç birbiri ardına eklenen, ayarlanabilir değişkenli, eğrisel modüller ile yapılmaya başlandı. Bu modülleri üst üste koyarak edinilen çok katmanlı yapı aynı zamanda alana “derin öğrenme” adını veriyor. Doğrusal yerine eğrisel modüller kullanılmasının sebebi ise doğrusal cebirden gelir; iki doğrusal katman birleştirilerek tek bir doğrusal katmana indirgenebilir.

Ayarlanabilir değişkenlere sahip eğrisel çok katmanlı yapıya bir örnek verelim: öncelikle, resimleri ya da sesleri vektörlerle ifade edebiliriz. Bu vektörleri girdi olarak alıp, elemanları ayarlanabilir değişkenler olan bir ağırlık matrisiyle çarpabiliriz. Çıktı olarak elde ettiğimiz matrisin her elemanını ReLU gibi bir eğrisel fonksiyondan geçirebiliriz. Bu adımları tekrarlayarak basit bir yapay sinir ağı elde ederiz. Bu yapıya yapay sinir ağı denmesinin sebebi ise girdi vektörünün ağırlıklı toplamının elde edilmesi için bir matristeki karşılığına denk gelen satırlarıyla çarpılmasıdır.

Denetimli öğrenmeye dönecek olursak; amacımız yukarıda bir turda elde ettiğimiz çıktıyı, istenilen çıktıyla karşılaştırıp, amaç fonksiyonu olarak kullandığımız kayıp fonksiyonunu eniyilemek için istenilen çıktı ile elimizdeki çıktı arasında uzaklık/ceza/ıraksama hesaplamak ve kayıp fonksiyonunun bütün eğitim kümesi üzerindeki ortalamasını almak. Buradaki hedefimiz kayıp fonksiyonunu en aza indirmek. Başka bir deyişle kayıp fonksiyonunun bütün eğitim kümesi üzerindeki değerini en aza indirecek değişken kümesini arıyoruz.

Bu kümeyi bulmak için gradyan hesabı kullanılır. Örnek vermek gerekirse, sisli bir gece vakti engebesiz bir dağda kaybolduğumuzu ve vadideki köye inmeye çalıştığımızı düşünelim. Yolumuzu bulmak için etrafımızı yoklayarak hangi yönün yokuş aşağı olduğunu kestirip oraya doğru küçük bir atım atabiliriz. Bu yön (eksi) gradyandır. Örneğimizdeki vadinin içbükey olduğunu varsayarak köye ulaşabiliriz.

Bu yöntemin daha verimli haline Stokastik Gradyan İnişi (Stochastic Gradient Descent (SGD)) denir. Eğitim kümesi üzerindeki ortalama kaybı en aza indirmek amacıyla, önce bir örnek ya da küçük bir örneklem kümesi alarak onun ya da onların üzerinden hata hesaplaması yaptıktan sonra gradyan inişini gerçekleştirebiliriz. Sonrasında, yeni bir örneklem alarak yeni bir hata değeri ve yeni bir gradyan ile genellikle farklı bir yön elde ederiz. SGD’yi tercih etmemizin iki sebebi var; çok büyük eğitim kümelerinde bir modelin hızlıca yakınsamasını sağladığı deneysel olarak kanıtlanmıştır. Ayrıca daha iyi genelleme yapmamıza imkan tanır, böylelikle farklı veri kümelerinde benzer performans alabiliriz.

Geri yayılım ile gradyan hesaplanması

Geri yayılım ile gradyan hesabı zincir kuralı uygulanarak yapılır. Girdi gradyanı için geri besleme denklemi aşağıda verilmiştir.

\[\begin{aligned} \frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{x}_{i - 1}} \\ \frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{x}_{i - 1}} \end{aligned}\]

Ağırlık gradyanları için geri besleme denklemi ise aşağıdadır.

\[\begin{aligned} \frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{w}_{i}} \\ \frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{w}_{i}} \end{aligned}\]

Skaler girdiler yerine vektörel ya da genel bir tabirle çok boyutlu girdiler olacağını unutmayın. Geri besleme kullanarak beklediğiniz çıktı ile elde ettiğiniz çıktı arasındaki farkın (amaç fonksiyonunun verdiği değer) yapay sinir ağı içinde herhangi bir değere göre türevini alabilirsiniz. Son olarak geri besleme, çok katmanlı yapıda çalışabilmesi nedeniyle vazgeçilmezdir.

Girdilerin nasıl ele alınacağı da önemlidir. Örnek vermek gerekirse; 256\(\times\)256’lık bir resim 200,000 elemanlı bir matrisle ifade edilebilir. Bu kadar büyük matrisler sinir ağı katmanlarına ağır gelebilir ve böyle matrisleri kullanmak mantıksız olabilir. Bu nedenle nasıl bir matris ile çalışılacağı önceden düşünülmelidir.

Görme Korteksinin Akışsal Gösterimi

Fukushima’nin yaptığı deneyler beynimizin gözlerimizden gelen bilgiyi nasıl işlediği konusunda bize genel bir fikir verdi. Özetle, retinanın önündeki nöronların görüntüyü sıkıştırdığı (kontrast normalizasyonu olarak bilinir) ve sonrasında bu sinyalin gözlerimizden beynimize gittiği keşfedildi. Beynimizde görüntü aşamalı olarak işlenir ve belirli sınıflara göre belirli nöronlar aktifleşir. Görme merkezi şekilleri sıralı bir düzen kullanarak tanır diyebiliriz.

Araştırmacılar, V1 alanı başta gelmek üzere, görme merkezini elektrotlarla dürterek yaptıkları deneylerle, bir grup sinir hücresinin gördüğümüz alanın çok küçük bir kısmındaki motiflere tepki verdiğini ve komşu gruplardaki sinir hücrelerinin yine gördüğümüz alanda birbirine komşu olan yerlere karşılık gelecek şekilde iletişime geçtiklerini fark ettiler. Ayrıca, aynı kareye tepki veren sinir hücreleri farklı kenar tiplerine (dikey ya da yatay) bir ağızdan farklı tepkiler veriyorlar. Altını çizmemiz gereken başka bir nokta ise görme sürecinin özünde bir ileri besleme süreci olduğu fikri. Böylece, yinelemeli işlemlere gerek duymadan hızlıca tanıma gerçekleştirmek mümkün.


📝 Yunya Wang, SunJoo Park, Mark Estudillo, Justin Mae
Yiğit Sever
27 Jan 2020