CNN (Convolutional Neural Networks) Nedir?

Gün geçtikçe gelişim hızını daha da artırarak büyüyen yapay zeka sayesinde makinelerin işlevleri daha da artmakta. Yavaş yavaş NLP (Natural Language Processing) ile insan dilini, Speech Recognition (Konuşma tanıma) ile sesleri tanımlayabilen makineler bilgisayarlı görme sayesinde insanlar gibi görerek nesneleri, yüzleri, hareketleri algılayabilmekte. Resimleri yüksek doğruluk oranları ile algılayabilen, sınıflandırabilen, yeniden yapılandırabilen derin öğrenmeli bilgisayarlı görme modellerinin vazgeçilmezi olan algoritma, CNN (Convolutional Neural Networks), bir diğer adıyla evrişimli sinir ağları nedir?

CNN Mimarisi Nedir?

CNN genellikle görüntü işlemede kullanılan ve girdi olarak görselleri alan bir derin öğrenme algoritmasıdır. Farklı operasyonlarla görsellerdeki featureları (özellikleri) yakalayan ve onları sınıflandıran bu algoritma farklı katmanlardan oluşmaktadır. Convolutional Layer, Pooling ve Fully Connected olan bu katmanlardan geçen görsel, farklı işlemlere tabii tutularak derin öğrenme modeline girecek kıvama gelir. CNN modelleri oluştururken, unstructural (düzensiz) veri ile uğraştığımızdan klasik makine öğrenmesi algoritmalarına kıyasla veri ön işleme kısmında çok uğraşmamaktayız.

cnn-mimarisi-nedir

Convolutional Layer

Convolutional (evrişim katmanı) CNN algoritmalarında görüntüyü ele alan ilk katmandır. Bilindiği üzere görseller aslında içlerinde belirli değerler taşıyan piksellerden oluşan matrislerdir. Evrişim katmanında da orijinal görsel boyutlarından daha küçük bir filtre görselin üzerinde gezer ve bu görsellerden belirli özellikleri yakalamaya çalışır.

convolution

Yukarıda görüldüğü üzere 3×3’lük bir filtre, 5×5’lik bir görsel üzerinde gezdiriliyor. Çıkan sonuçlar eşitliğin sağ tarafındaki yeni matrisimiz olan feature map üzerine yazılıyor.

CNN algoritmalarında öğrenilen parametreler bu filtrelerdeki değerlerdir. Model sürekli olarak bu değerleri günceller ve özellikleri daha da iyi tespit etmeye başlar. Bunun dışında bazı bilinen filtrelerle görseller keskinleştirilebilir, blur eklenebilir, kenar tespiti yapılabilir. Bunlar için kullanılan filtreler aşağıdaki gibidir.

cnn-filters

Stride (Adım)

Stride değeri CNN modellerinde parametre olarak değiştirilebilen bir değerdir. Bu değer filtrenin ana görsel üzerinde kaç piksel boyunca kayacağını belirler. Örnek vermek gerekirse yukarıdaki evrişim operasyonundaki stride değeri birdir. Yani filtre sadece bir piksel atlayarak bu işlemi yapar. Stride 2 olsaydı atladığı piksel sayısı artacağından ortaya çıkacak feature map de daha küçük bir hal alacaktı.

Padding (Dolgu)

Bir görsele filtreyi uyguladığımızda boyutlardan dolayı çıktı orijinal görselden daha küçük olur. Bunu önlemek için kullanabileceğimiz yöntem ise padding yani dolgulamadır. Dolgulama işleminde görsele adete bir çerçeve olacakmış gibi dört taraftan da sıfırlar eklenir. Filtrenin boyutuna göre bu sıfır eklenen katmanlar artırılabilir.

ReLU

ReLU (Rectified Linear Unit) f(x) = max(0,x) şeklinde çalışan doğrusal olmayan bir fonksiyondur. Örnek vermek gerekirse -25 değerini alan bir ReLU fonksiyonu çıktı olarak 0’ı, 25 değerini alan bir fonksiyon ise 25’i verir. Ana amacı negatif değerlerden kurtulmak olan ReLU CNN’lerde oldukça önemli bir konumdadır.

relu-aktivasyon-fonksiyonu

Modelimizin negatif değerleri öğrenmesini ya da bazı özellikleri bu negatif değerlerden dolayı kavrayamamasının önüne geçmek için ReLU, tanh ve sigmoid gibi doğrusal olmayan fonksiyonlar kullanılır.

Pooling

Evrişimli katman gibi pooling (havuzlama) katmanı da boyutsallığı azaltma amacındadır. Bu sayede hem gereken işlem gücü azalır hem de yakalanan gereksiz özellikler yok sayılarak daha önemli özelliklere odaklanılır.

CNN modellerinde genellikle kullanılan iki farklı pooling tekniği vardır. Bunlardan biri Max (Maksimum) diğeri de Average (Ortalama) pooling’tir.

cnn-pooling-nedir

Evrişimli katmandaki gibi bir kernele (filtre) sahip olan pooling katmanında bu kernel yine görsel üzerinde gezer. Fakat convolutional operasyon yerine bu sefer belirlenen pooling tekniğini uygular. Yani eğer max pooling uyguluyorsanız filtrenin kapsadığı alandaki en büyük değeri, average pooling uyguluyorsanız ise filtredeki değerlerin ortalamasını alır. Bu sayede boyut azalır ve önemli özellikler elimizde kalır.

Fully Connected Layer (Tam Bağlantılı Katman)

Fully Connected katmanda birkaç kez evrişimli katmandan ve pooling katmanından geçen ve matris halinde olan görselimiz düz bir vektör haline getirilir.

fully-connected-nn

Girdi resmimizi sinir ağları ile eğitebileceğimiz kıvama getirdikten sonra geriye sadece klasik sinir ağlarındaki çalışma mantığı kalıyor. Yine katmanlardaki nodelarda (düğüm) özellikler tutuluyor ve weight (ağırlık) ve bias değiştirilerek öğrenme sürecine giriliyor.

Temel olarak bu tarz bir yapıya sahip CNN algoritması üzerinde sürekli geliştirmeler yapılıyor. Günümüzde çok fazla bilinen bazı CNN mimarileri nedir dersek onlar da şu şekilde listeleyebiliriz:

  • LeNet
  • AlexNet
  • VGGNet
  • GoogLeNet
  • ResNet
  • ZFNet

Teknoloji'den geri kalmamak için e-posta listemize abone olun!

Özgür Doğan (Okunuşu: Özgür Do:an) : Teknoloji içerikleri yazmayı ve okumayı seven kişi, kimse, topluluk.