AlexNet, VGGNet, Inception ve ResNet Nedir?

Kaan Bıçakcı
5 min readDec 17, 2020

Bu yazımda çok fazla matematiğe ve detaya girmeden AlexNet, VGGNet, Inception ve ResNet’i açıklayacağım. Derin öğrenmede resim sınıflandırması (image classification) dendiğinde akla ilk gelen Convolutional Neural Networks oluyor. CNN ile resimleri kategorize ederken ilk önce “feature extraction” yani özellik çıkarması yaparız. CNN’leri güçlü kılan şeylerden birisi de budur. Resimlerin özelliklerini hidden layerlarda öğrendikten sonra kategorize etmeye geçebiliriz.

Feature Extraction görselleştirilmesi, CNN’ler ne öğreniyor?
Feature Extraction görselleştirilmesi, CNN’ler ne öğreniyor?

AlexNet

AlexNet Mimarisi

Bu mimari “ImageNet” sınıflandırma doğruluğunu önemli bir şekilde artırmayı başarmıştı. 5 tane “convolutional layer” ve 3 tane “fully connected” layerden oluşmaktadır.

AlexNet lineer olmayan kısımlarda aktivasyon olarak ReLu (Rectified Linear Unit ) kullanmaktadır. Daha önceki standart neural networklerde (nöral ağlarda) tanh veya sigmoid kullanılıyordu.

Kaynak: https://docs.paperspace.com/machine-learning/wiki/activation-function

ReLu’nun, sigmoid’e göre avantajlı olmasının sebebi, modelimiz eğitilirken daha hızlı oluyor. Bir diğer sebebi ise, sigmoid fonksiyonun vanishing gradient problemine neden olmasıdır. Dikkat ettiyseniz sigmoid fonksiyonun değerleri çok büyüdükçe veya küçüldükçe türevi sıfıra yaklaşıyor. Bu soruna “vanishing gradient” deniyor. Bu nedenle modelimizdeki weight’leri güncellemek zorlaşıyor. Çok derin bir model düşünürseniz, ilk layerlar bu problem nedeniyle öğrenmekte güçlük çekebilirler.

Bu mimari ile çözülen bir diğer problem ise dropout kullanarak overfitting’in önüne geçilmesiydi. Overfitting, verilen train verisini ezberlemektir. Training accuracy %99 olup testing accuracy %85 olursa overfitting olmuş deriz. Yani modelimiz verilen eğitim verisini genelleyememiş, ezberlemiştir. Dropout görselleştirilmesini aşağıda bulabilirsiniz.

Kaynak: deeplearning.ai
AlexNet Parametre sayısı

Input yani ağ için verilen resimler 227 x 227 x 3 boyutunda, RGB resimler olduğu için sonda (x 3) dedik. AlexNet train edilirken,

  • 0.5 Dropout
  • SGD ( Momentum 0.9)
  • Learning Rate = 0.01 (Validation accuracy az artmaya başladığında 0.001 olmuştur)
  • L2 Regularization ( Weight Decay : 5e-4)

gibi hyperparameters (hiperparametreler) yani değerlerini bizim seçtiğimiz parametreler kullanılmıştır. AlexNet, ImageNet Large Scale Visual Recognition Challenge’ı tamamladığında hata oranı %15.3'tü. (30 Eylül 2012)

VGGNet

Bu mimari, VGG Group (Oxford) tarafından ortaya sunulmuştur.

Kaynak: https://neurohive.io/en/popular-networks/vgg16/

VGG16 mimarisi yukarıdaki gibidir. AlexNet mimarisinde kullanılan yüksek kernel boyutlarını azaltılmıştır.

VGG16 Parametre Sayıları

AlexNette kernel boyutları sabit değildi, ilk 11 ile başlıyor 5 ve 3 diye devam ediyordu. VGG16 kernel boyutlarını fixed(sabit) yapmıştır. Bunun arkasındaki fikir ise, 11x11 ve 5x5 kernellerin birden fazla 3x3 kernel ile replike edilebilmesiydi. VGG16'nın toplamda “convolutional“ ve “fully connected layers” sayısı 16'dır. Ayrıca VGG19 olmak üzere başka bir versiyonu da vardır. VGG16 ve VGG19 çok benzer olup farkları sadece layer sayılarının farklı olmasıdır.

VGGNet, ImageNet Large Scale Visual Recognition Challenge’ı %7.3'lük hata oranı ile bitirmiştir.

GoogLeNet / Inception

Resim sınıflandırma problemlerinde belirleyici özellikler, görüntü çerçevesinde önemli ölçüde değişkenlik gösterebilir. Bu sebepten ötürü kernel boyutuna (sabit boyut) karar vermek zorlaşır.

Resimlerin geniş alanlarına yayılmış biraz daha evrensel özellikleri resimden çıkarmak için boyutları büyük kerneller tercih edilir. Öte yandan küçük kerneller resimlerdeki alana özgü özellikleri algılamamızı sağlar.

Neticede etkili bir şekilde özellikleri çıkarmak - anlamak için değişen boyutlarda kernellere ihtiyacımız vardır. Yani katman olarak derine inmektense daha da genişlemek ana fikirdir. Inception mimarisi tam olarak bunu yapar.

Kaynak: https://www.researchgate.net/figure/GoogLeNet-Inception-Architecture_fig2_324999549

Her modülde:

  • 1x1 Conv Layer
  • 3x3 Conv Layer
  • 5x5 Conv Layer
  • Max Pooling

bulunur. 1x1 convolution ne işe yarıyor diye düşünebilirsiniz. Derinlik azaltmada 1x1 convolution kullanılır.

1x1 Convolution — Kendi notlarımdan.

İlk başta 1x1 değil de 5x5 ve 32 filtre kullansaydık sonucunda hesaplaması zor ve kompleks bir işlem çıkacaktı. 1x1 kullanarak bunu 12.4M’e parametreye indirebiliyoruz. (5x5 ve 32 filtre için çıkan sonuç 120M param.)

Inception, training ile en iyi ağın(networkun) seçileceği ağ alanını artırır. Her Inception modülü, farklı seviyelerde ayırt edici özellikleri yakalayabilir.

InceptionV3, ImageNet Large Scale Visual Recognition Challenge’ı %3.57'lik hata oranı ile bitirmiştir. (2015)

ResNet

Modellerimiz daha çok hidden layer içermeye başladığında yani çok fazla derinleşmeye başladığında “computation” (değerleri hesaplama-öğrenme) çok daha zor ve kompleks olmaya başlıyor. Ayrıca Neural Networkler işleri karmaşıklaştırmakta bir numaralardır :) Hem işlemler zor hem de karmaşık bir model olursa, daha fazla derinlik olduğunda işler iyice içinden çıkılmaz hale gelebilir. Örneğin:

  • Diyelim ki “multi-layer perceptron” bir ağımız(networkumuz) var ve onu girdin çıktıya eşit olduğu bir veri kümesi üzerinde eğitmek istiyoruz.
  • (X -> Y, X = Y ) Bu sorunun en basit çözümü, tüm weighlerin(ağırlıkların) bire eşit olması ve tüm hidden layerlar için tüm biasların sıfır olmasıdır. Ancak böyle bir network, backpropagation kullanılarak eğitildiğinde, weightlerin ve biasların geniş bir değer aralığına sahip olduğu oldukça karmaşık bir mapping(haritalama) öğrenilir.

ResNet ise bu sorunu kısayollara başvurarak çözüyor. ResNet’lerin farklı versiyonları bulunuyor. En çok kullanılan ResNet50'dir.

Kaynak: geeksforgeeks

Peki nedir bu Residual Block?

Bu ağda skip connection(bağlantıları atlamak) adı verilen bir teknik kullanılır. Skip Connections, birkaç katmanı atlar ve doğrudan çıktıya bağlanır. Bu şekilde exploding /vanishing gradient sorununun önüne geçilir. Exploding gradients ise vanishing’in tam tersi olup, gradient’lerin aşırı büyümesidir.

  • H(x) = F(x) + x diyecek olursak,

Networkun derinliklerine gittikçe, çok sayıda layer(katman) olduğu için H(x) ‘i öğrenmek çok zor olacaktır. Bu yüzden burada “skipping connection” kullanılır. Son çıktı olarak F(x)’i doğrudan x girdisi şeklinde öğrendik. Bu nedenle F(x), “residual” olarak adlandırılır.

ResNet Modelleri Parametre Karşılaştırılması

Sonuç

Kaynak: https://www.edge-ai-vision.com/2018/07/deep-learning-in-five-and-a-half-minutes/

Machine Learning içim örnek proje arıyorsanız Github sayfamdan ulaşabilirsiniz.

LinkedIn’den bağlantı kurmak isterseniz: https://www.linkedin.com/in/kaan-b%C4%B1%C3%A7akc%C4%B1-92a35117b/

--

--