ResNet, MobileNet, Vanishing Gradient: Nesne Sınıflandırma Ağlarının Gelişimi ve Çıkardığımız Dersler

irfan bilaloğlu
5 min readJul 10, 2020

--

Önceki yazımızda AlexNet, VGGNet, Inception ağlarını incelemiştik. Bu yazımızda biraz daha modern ağlara ve Vanishing Gradient problemine getirilen çözüme bakacağız.

Önceki yazıya ulaşmak için:

Derinlik ve anlamsal zenginlik:

Her katmandaki aktive olan nöronlar

Yukarıda gördüğünüz grafik CNN katmanlarındaki tepkileri göstermektedir. Görüldüğü gibi ilk katmanlarda çizgi ve kenar bulma filtreleri oluşmuşken ilerleyen katmanlarda bunların birleşimlerini kullanarak daha karmaşık yapıları filtreleyen nöronlar oluşmuştur.

Derin öğrenme ağlarında derinlik arttıkça öğrenilen anlamsam değerler (feature) zenginleşir.

Her katman kendinden önceki katmanların öğrendiklerini birleştirerek yeni filtre oluşturur. Gözünüzde canlandırmak için şu şekilde düşünebilirsiniz:

Çizgi ve kenar ->Yuvarlak ve dikdörtgen -> Pencere, baca, yüz -> Ev ve araba

Yuvarlak şekilleri tanımayı öğrendikten sonra bir yuvarlağın içinde 3 yuvarlak ( gözler ve ağız ) birleştirerek yüz şeklini anlayabilir ya da dikdörtgeni öğrendikten sonra bir dikdörtgen içinde birden fazla dikdörtgen var’ı öğrenerek pencereler içeren bir evi tanıyabilir hale gelebilir.

GoogLeNet katmanlarının görselleştirilmesi

Tabiki o nöronun tam olarak insanın düşüncesel yapısıyla eşlenik bir kavramı temsil etmesi gerekmez, yalnızca anlaşılması kolaylaştırılması için bu örnekler verilmiştir.

Bu linkte katmanların görselleştirmesini daha rahat incelyebilirsiniz. https://distill.pub/2017/feature-visualization/appendix/

The Vanishing/Exploding Gradient

Peki anlamsal değer artıyorsa neden daha derin ağlar kurmuyoruz? Bunun cevaplarından biri kaybolan ve patlayan gradient problemi.

Backpropogationda güncellenen nöron ağırlıklarının türevin zincir kuralı ile hesaplandığını biliyoruz. Arka arkaya koyduğumuz her katman bu zinciri gittikçe büyütüyor.

Back Propogation Denklemi

Peki şöyle bir durum düşünün:

10 katmanlı bir ağda hesaplanan aktivasyon fonksiyonlarının sonuçlarının hepsinin aynı ve 0.2 olduğunu varsayalım. Son katman 0.2 ye göre değişim gösterecektir, bir arkasındaki katman ise 0.2*0.2 =0.04 değişim gösterecektir. İlk katman ise 0.2¹⁰ = 0.0000001 değişim gösterecektir, yani neredeyse hiç.

Her katmanda nöron ağırlıkları gittikçe küçülmekte ve değişim ilk katmanlara neredeyse hiç ulaşmamaktadır. Bu yüzden loss fonksiyonu çok çok az değişmekte ve eğitim çok uzun sürmektedir

Aynı şekilde 1'in üzerindeki ağırlıklar içinse sonsuza gidebilir yani 1.2¹⁰ = 6.191 iken 1.8¹⁰= 357 ve 1.9¹⁰ = 613'e çıkar. Yani çok küçük ağırlık güncellemesi bile çok büyük değişimlere sebep olabilir.

İşte ResNet bu probleme çözüm sunmuştur.

Resnet (2015):

ILSVRC 2015’te Microsoft’un 152 katmanlı, o zamana kadar yapılmış en derin CNN ağı olan ResNet, %3.57 hata payıyla birinci olmuş ve %5 hata payı yapan insanı da geride bırakmıştır.

ResNet nispeten basit ve düz bir mimariye sahiptir. Her konvolüsyondan sonra ReLu ve aralarda max pooling içerir. Ancak onu etkili kılan derin olmasıdır.

ResNet Mimarisi

Resnet The Vanishing/Exploding Gradient problemine çözüm önerisi olarak, gradient’in akışını fazla etkiye maruz bırakmadan daha kolay erken ve geç katmanlara gidebileceği Identity ve Projection bağlantılarını getirmiştir

Bu bağlantılardan identity basitçe önceki katmanın çıkışından
alınan değerleri, katman sonucuyla toplamaktadır. Katman boyutlarının farklı olduğu zamanlar ise projection bağlantısı kullanmakta ve toplanacağı katmanın boyutuna göre ölçeklendirme yapıldıktan sonra toplama işlemi uygulamaktadır. Bu bağlantılar öğrenilecek parametre içermediklerinden işlem yüküne etkileri yoktur. (Basit toplama işlemi dışında) Ancak değişimlerin katlanmaya maruz kalmadan ağın ilk katmanlarına dahi ulaşmasını sağlamaktadır. Bu şekilde 1202 katmana kadar ulaşmışlardır!

ResNet mimarisi
ResNet mimarisi

19 katmanlı VGG 19 19.6 milyar FLOPs içerirken 152 katmanlı ResNet sadece 11.3 milyar FLOPs içermekte ve daha doğru sonuçlar vermektedir.

Ayrıca ResNet her konvolüsyondan sonra batch normalizasyonu uygulamaktadır. Ve bu normalizasyonu ilk benimseyen ağlardandır.

Batch Normalizasyonu:

Batch Normalizasyon Formülü

Toplu halde gelen imgeleri standartlaştırarak öğrenme süresini kısaltmaktadır.

MobileNet (2017):

Doğruluk oranlarını arttırmak için Nesne Tanıma ağları giderek büyümüş ve karmaşıklaşmıştır. Ancak MobileNet daha az işlem gücü isteyen bir ağ yaratmaya yönelmiştir.

MobileNet, mobil platformlar düşünülerek tasarlanmış, gereken işlem gücü ile doğruluk arasında seçim yapabildiğimiz verimli bir ağdır.

Sol: Standart Konvulüsyon Katmanı, batchnorm ve relu. Sağ: Depthwise Separable konvulüsyon, PointWise konvulüsyon ve batchnorm ve relu

Bunu standart 3x3 konvolüsyon filtresini 2 parçaya ayırarak yapmaktadır. Standart 3x3 konvolüsyon filtresi, her renk kanalını işleme dahil ederek ağırlıklı toplamını almakta ve tek kanala indirmektedir.

a) Normal 3x3 konvulüsyon b) Depthwise Separable konvülüsyon

Ancak MobileNet’in Depthwise Separable convolutions adını verdikleri işlem, her kanalı kendi içinde evriştirdikten sonra 1x1 konvolüsyona sokarak bu işlemi yapmaktadır. Böylece sonucun boyutları aynı olmasına rağmen eğitilmesi gereken parametre miktarı düşürülmüş olur. Bu yeni filtre, standart filtreye oranla yaklaşık 9 kat daha az işlem gerektirmektedir.

Ayrıca kullanılan donanıma ve eldeki probleme göre hız ve doğruluk arasında seçim yapmaya yarayan 2 hiperparametre sunmuşlardır, Giriş katmanı genişlik çarpanı α ve giriş katmanı çözünürlük çarpanı ρ. Bu hiperparametreler değiştirilerek, doğruluk oranı daha yüksek ancak daha
çok işlem gücü isteyen ağlar ya da işlem gücü istemi daha az ve doğruluk oranı daha düşük ağlar oluşturulabilmektedir.

Sol: Genişlik çarpanının etkisi Sağ: çözünürlük çarpanının etkisi

Tablolarda görüldüğü üzere doğruluk ve işlem gücü arasında değişiklik yapabilmekteyiz. Örneğin genişlik çarpanını 1.0 dan 0.75'e çektiğimizde parametre sayısı ve işlem istemi neredeyse yarıya düşmüş ancak doğruluk sadece %2.2 düşmüştür.

Böylece hem gömülü sistemlerde hem de büyük işlem gücüne sahip sistemlerde kullanabiliriz.

MobileNet telefonlar ve gömülü sistemlerde derin öğrenme ağları kullanmayı kolaylaştırmıştır.

GPU ve CPU üzerinde hız karşılaştırmaları

Nesne tanıma ağlarınının GPU ve CPU üzerindeki hız karşılaştırmalarını yukarıdaki tabloda görebilirsiniz. GPU üzerinde MobileNet çok büyük farklar göstermezken, CPU üzerinde diğer ağlardan çok daha verimli olduğunu gözlemliyoruz.

Özet:

Bu yazımızda Vanishing/Exploding Gradient problemini ve getirilen çözümü gördük.

Ayrıca daha derine ulaşmamızı sağlayan ResNet. Ve çok daha düşük işlem gücüyle gömülü sistemlerde kullanabileceğimiz MobileNet ağlarını inceledik.

Bir sonraki yazımızda nesnelerin sınırlarını veren Nesne Algılama ( Object Detection ) ağlarına giriş yapacağız.

--

--