14 Temmuz 2017 Cuma

Deep Learning: Convolutional Neural Networks

Merhabalar arkadaşlarım bu yazımda sizlerle Derin Öğrenme(Deep Learning) ve Konvolüsyonel Sinir Ağları(Convolutional Neural Network) kavramlarını öğreneceğiz.

Derin öğrenme kavramından kısaca bahsedecek olursak:
Derin öğrenme = Büyük Veri + Büyük Hesaplama

Başlamadan önce belirtmeliyim ki bu konuların daha iyi anlaşılabilmesi için sırasıyla İnsanda Ve Makinede Öğrenme, Bilgisayarda Görüntü Ve Sayı Dizileri, Sinir Ağları yazılarımıda okumanızı öneriyorum.

Aşağıda örnek bir convolution ağı görebilirsiniz:


Bu örnekte el yazısı rakamları algılayan bir mimari gösterilmektedir.
Şimdi gelin bu ağların nasıl çalıştığını öğrenelim.

Convolution Katmanı

Bu katmanda filtreler(Filter, Kernel) görev alır.
Filtreler görsel boyunca kaydırılır. Kaydırma sırasında görselin değerleri ile filtredeki değerler çarpılır ve elde edilen değerler toplanır ve net sonuç bulunur. Bu işlemi tüm görsele uyguladığımızda yeni bir görsel elde etmiş oluruz. Aşağıda bu işlemin görselleştirilmiş hali bulunmakta:


Yukarıdaki örnekte elimizde 5x5 boyutunda bir görselimiz ve 3x3 boyutunda bir filtremiz bulunmaktadır. Filtre görsel boyunca 1 adım sağ ve her yeni satırda bir adım aşağı kaydırılarak yeni görsel elde edilir.
Gördüğünüz üzere 5x5 boyutunda bir görsele, 1x1 kaydırma(stride) ile 3x3'lük bir filtre uygularsak elde edeceğimiz yeni görselin boyutu 3x3 olmaktadır.

Fark ettiyseniz her bir filtre aslında Sinir Ağları yazımızda bahsettiğimiz bir nörondur. Filtre içerisindeki değerler ise ağırlıklardır.

Nasıl Çalışıyor?
Bir örnek ile açıklayalım:
Elimizde aşağıdaki gibi bir filtre olsun:


Sol tarafta filtre değerleri, sağ tarafta bu değerlerin görselleştirilmiş hali bulunmakta.
Aşağıdaki fare görselinde işaretlenen yere(Sarı renkte kare ile gösterilmiştir) bu filtremizi uygulayalım:


Görselin altında yapılan işemler belirtilmiştir. Sonuç olarak büyük bir veri elde edilmiştir yani aradığımız özelliğin bu bölgede olduğunu anlayabiliriz.
Peki filtremizi başka bir yere uygulamış olsaydık:


İşlem sonucumuzda elde ettiğimiz değer 0 olmuş yani aradığımız özelliğin bu bölgede olmadığını anlamaktayız.
Örneğin kaynağı: https://adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/
Farklı filtrelerle farklı özellikler yakalayabiliriz.
Basitçe convolution katmanının nasıl çalıştığını öğrenmiş olduk.

Pooling Katmanı

Aşağıda bir Max-Pooling örneği görmekteyiz:


Bu örnekte 2x2 boyutunda bir çerçeve, 4x4 boyutunda bir görselde gezdirilmiştir(2'şer adım atlamış, 2x2 stride) ve çerçeve içindeki en büyük değer alınmıştır. Bu işlem tüm görsele uygulandıktan sonra daha küçük(2x2 boyutunda) bir görsel elde edilmiştir.

Activation Katmanı

Hatırlarsanız Sinir Ağları yazımda aktivasyon fonksiyonlarından bahsetmiştik bu katmanda da bu fonksiyonlar kullanılmaktadır.

Dropout

Bu katmanda ağımızdaki bazı nöronlar rasgele olarak etkisiz hale getirilmektedir.
Aşağıdaki görselde dropout örneği gösterilmiştir:


Bu özelliğin en önemli noktası eğitim sırasında nöronlara bağımsızlık kazandırarak sistemin daha iyi verim elde etmesini sağlamasıdır.

Bu yazımızda konvolüsyonel sinir ağları ile tanışmış olduk.
Umarım yararlı olmuştur.
Sorularınızı, isteklerinizi ve önerilerinizi bekliyorum.
İyi çalışmalar dilerim.

Share this

0 Comment to "Deep Learning: Convolutional Neural Networks"

Yorum Gönder