Evrişimsel Sinir Ağları

Buse Köseoğlu
BAU Yazılım ve Bilişim Kulübü
3 min readMar 21, 2021

--

Evrişimsel sinir ağları bir fotoğrafı girdi olarak alıp, bu fotoğraftaki çeşitli nesnelere ve yönlere değer ağırlıkları atayarak bir fotoğrafı diğerinden ayırt edebilen bir derin öğrenme algoritmasıdır. Günümüzde fotoğraf arama servisleri, otonom araçlar, otomatik video sınıflandırması gibi bir çok alanda kullanılmaktadır.

“Evrişimsel sinir ağı” adında evrişim olmasının nedeni ağın katmanlarından en az birinde genel matris çarpımı yerine evrişim kullandığını belirtir.

Evrişim Nedir?

Evrişim işlemi iki fonksiyonu (f ve g) alarak üçüncü bir fonksiyon (f*g) üreten ve birinin şeklinin diğeri tarafından nasıl değiştiğini ifade eden bir matematiksel işlemdir. Evrişim işlemi hem sonuç fonksiyonunu hem de onu hesaplama sürecini ifade eder. Resim üzerinden incelersek;

“x” görüntüyü temsil eden 2 boyutlu ve pikselleri farklı renk kanallarından oluşan bir girdidir.

“w” özellik algılayıcı da olarak adlandırılan girdiye uygulanacak ağırlıkları taşıyan matristir. “filtre” veya “kernel” olarak adlandırılır.

Bu matematiksel işlemlerin yapılması sonucunda ise “feature map” oluşur.

Evrişimsel Katman

CNN’in en önemli bloğu evrişimsel katmandır. İlk evrişimsel katmandaki nöronlar giriş fotoğrafında verilen her piksel ile bağlantılı değildir. İkinci katmandaki her nöron ise birinci katmandaki küçük bir kısım ile bağlantılıdır. Bu yapı ağın öncelikle birinci katman üzerindeki düşük seviyeli özelliklere konsantre olmasını daha sonra bunları bir sonraki katmandaki daha yüksek seviyeli özelliklerle birleştirmesine izin verir.

Padding (Piksel Ekleme)

Evrişim işleminden sonra giriş ile çıkış arasında bir boyut farklı olur. Bunu gidermek için ekstra piksel ekleme işlemi yapılır. Giriş matrisi boyutu (n x n) , filtre/kernel matrisi (f x f) olduğunda evrişim sonucu olarak (n-f+1)x(n-f+1) boyutlu bir matris elde ederiz. Örneğin (16 x 16) bir fotoğrafa (5 x 5) bir filtre uyguladığımızda evrişim işleminden sonra elde ettiğimiz boyut (12 x 12) olur. Buradan da görebileceğimiz gibi fotoğraf her evrişim işlemi sonucunda küçülür. Ayrıca köşelerdeki ve kenardaki pikseller daha az kullanılır.

Yukarıda anlatılan sorunları önlemek için padding işlemi yapılır. Padding basitçe giriş görüntüsüne sıfır katmanı ekler.

Sıfır katmanı eklenince görüntümüzün boyutu (n + 2p)x(n + 2p) olacak ve (f x f) boyutlu bir filtre eklediğimizde (n + 2p — f + 1)x(n + 2p — f + 1) boyutlu bir görüntü elde edeceğiz. Buradaki p eklenen piksel boyutudur. Yukarıdaki örneği tekrar incelersek sonuç olarak (16 x 16) boyutunda bir görüntü elde ederiz.

İki tür padding işlemi vardır.

  1. Valid: Padding işlemi yapmaz.
  2. Same: “p” katmanı eklenir.

“p” değerini belirlemek için aşağıdaki denklemden faydalanılır.

Stride (Kaydırma)

Stride işlemi yukarıda bahsettiğimiz ağırlıkları taşıyan matrisi (filtre) görüntü üzerinde kaydırmaya yarar. Kaydırma işlemi piksel piksel yapılır ve stride parametresine kaç değeri verilirse o kadar adım kayar. Bu parametre doğrudan çıkış boyutunu etkiler. Örneğin eğer stride parametresine 2 değerini verirsek çıkış boyutu giriş boyutunun yarısı olur.

Pooling (Ortaklama)

Pooling işlemi çıkış görüntüsünü daha küçük yapar. Hesaplama karmaşıklığını azaltmak için kullanılan bir adımdır. Örneğin 100x100 bir girdide, pool boyutu 2 verilirse çıktı 50x50 olur.

Maximum Pooling

Average Pooling

The English version.

Kaynaklar

Hands on Machine Learning with Scikit-Learn and Tensorflow

Deep Learning — Ian Goodfellow

https://www.geeksforgeeks.org/cnn-introduction-to-padding/

https://ayyucekizrak.medium.com/deri̇ne-daha-deri̇ne-evrişimli-sinir-ağları-2813a2c8b2a9

https://en.wikipedia.org/wiki/Convolution

https://medium.datadriveninvestor.com/convolutional-neural-network-cnn-simplified-ecafd4ee52c5

--

--