“ImageNet Classification with Deep Convolutional Neural Networks” çalışması Alex Krizhevsky, Ilya Sutskever ve Geoffrey E. Hinton tarafından yapılmış olup Advances in neural information processing systems dergisinde 2012 yılında basılmıştır.
Deep Learning furyasının başlangıç makalesidir.
ImageNet LSVRC-2010 veri kümesinde 1,2 milyon yüksek çözünürlüklü resim bulunmakta ve bu resimler 1000 kategoride sınıflanmaktadır. top-1 ve top-5 hata oranı olarak 37.5% ve 17.0% bulunarak o güne kadarki çalışmalardan daha başarılı olduklarını belirtmişlerdir.
Çalışmada 60,000,000 parametreli, 650,000 nöronlu, bazılarını max-pooling katmanının takip ettiği 5 evrişimsel(convolutional) katmanlı, 3 fully-connected katmana sahip sonunda da 1000 yollu softmax olan bir yapay sinir ağı kullanılmıştır.
Overfitting’den kaçmak için dropout algoritması kullanılmıştır. Evrişimsel(convolutional) katman hesapları GPU üzerinde yapılarak hızlanma sağlanmıştır.
Ayrıca ILSVRC-2012 yarışmasında da bu yapı top-5 test hatası %15.3 ile birinci olurken ikinci olan %26.2 hata ile olmuştur.
Giriş
Onbinlerce resmin olduğu veri kümeleri ile yapılan çalışmalardan iyi sonuçlar elde edilmişti. Örneğin MNIST veri kümesi üzerinde hata %0,3’ten daha aşağıya çekilerek insan ile hemen hemen aynı seviyeye getirilmiştir. Fakat obje tanıma işleminde böyle bir başarı henüz ortada yoktur. Bunun için çok büyük veri setleri gereklidir. Bu veri setleri segmente edilmiş ve sınıflandırılmış olmalıdır.
LabelMe : Yüzbinlerce tamamen segmente edilmiş resim içermektedir.
[B.C. Russell, A. Torralba, K.P. Murphy, and W.T. Freeman. Labelme: a database and web-based tool for image annotation. International journal of computer vision, 77(1):157–173, 2008.]
ImageNet: 22000 kategoride 15 milyondan fazla resim içermektedir.
[J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei-Fei. ImageNet: A Large-Scale Hierarchical Image Database. In CVPR09, 2009.]
Milyonlarca resmin içindeki binlerce objeyi tespit etme işlemi oldukça büyük işlem gücü gerektiren bir süreçtir. Convolutional neural networks (CNNs) bir model oluşturarak derinlik(depth ve genişliğe (breadth) bağlı çıkarımlarla daha efektif bir eğitim gerçekleştirmektedir.
CNN çok avantajlı olmasına rağmen yine de büyük ölçekli yüksek çözünürlüklü resimlere bunu uygulamak hesaplama açısından çok maliyetlidir. Günümüz GPU teknolojisi bu işi yapmak için elverişlidir ve elimizde eğitim yapacak kadar da resim bulunmaktadır.
Bu çalışmada ;
Şimdiye kadar kurulmuş en büyük CNN yapısı kullanılmıştır.
CUDA üzerinde 2D convolution için optimize edilmiş bir yapı hazırlanmıştır. CUDA CONVNET olarak paylaşılmaktadır.
Eğitim süresini kısaltan yeni ve alışılmadık öznitelikler çıkarılmış ve bunlar izah edilmiştir.
1,200,000 etiketlenmiş resim ile çalışıldığından overfittiğing olmaktadır, bundan nasıl kaçınıldığı izah edilmiştir.
5 convolutional ve 3 fully-connected katman bulunmaktadır. Bunları azaltmak başarıyı düşürmektedir.
2 adet GTX 580 3GB GPU ile eğitim 5-6 gün sürmektedir.
Veri Kümesi
ImageNet içerisinde 15,000,000’dan fazla resim olan 22,000 kategoriye ayrılmış bir veri kümesidir. Resimler insanlar tarafından Amazon’s Mechanical Turk crowd-sourcing tool ile etiketlenmiştir. Bu çalışmada ise ImageNet Large-Scale Visual Recognition Challenge (ILSVRC) veri kümesi kullanılmıştır. 1,200,000 eğitim resmi, 50,000 doğrulama resmi, 150,000 test resmi bulunmaktadır.
Test işlemi top-1 ve top-5 hata ölçütleriyle kıyaslanmaktadır.
Sistem tek bir çıktı vermekte ve gerçek çıktı ile kıyaslanmaktadır. Bu şekilde top-1 hatası bulunur.
Sistem 5 adet çıktı vermekte ve gerçek çıktı bunlardan biri değilse hatalı sayılmaktadır. Bu şekilde top-5 hatası bulunur.
Girdi resimleri 256*256 olacak şekilde ölçeklenmiştir. Dikdörtgen olan resimler ise kısa kenarı 256 olacak şekilde ölçeklenmiş, daha sonra 256*256 olacak şekilde merkezden kırpılmıştır. Başka bir işlem yapılmamış, ham RGB verisi ile sistem eğitilmiştir.
Mimari
ReLU Nonlinearity
Nöronların çıkışında klasik olarak tanh ve (1 + e^-x)^-1 gibi fonksiyonlar kullanılmaktadır. Bu fonksiyonlarda negatif değerlerde olduğundan eğitim sürecini uzattığı tespit edilmiştir. Bu yüzden negatif değerlerde 0, pozitif değerlerde kendi değerini veren Rectified Linear Unit (ReLU) aktivasyon fonksiyonu kullanılmıştır.
CIFAR-10 veri kümesi üzerinde tanh ve RELU testi yapılmış ve 6 kat hızlı eğitim yapıldığı görülmüştür.
ReLU ilk defa 2010 yılında önerilmiş olsada [V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In Proc. 27th International Conference on Machine Learning, 2010.], 2009 yılında da tanh fonksiyonu mutlak değer içerisine alınarak negatifliğin etkisinden kurtulma çalışması [K. Jarrett, K. Kavukcuoglu, M. A. Ranzato, and Y. LeCun. What is the best multi-stage architecture for object recognition? In International Conference on Computer Vision, pages 2146–2153. IEEE, 2009.] yapılmıştır.
Çoklu GPU ile Eğitim
GTX 580 GPU’nun 3 GB belleği olduğundan eğitim için yetersizdir. O yüzden iki adet GPU kullanılmıştır. GPU’lar birbirlerinin belleklerine direk olarak yazma ve okuma işlemi yapma yeteneğine sahiptir. Ağ ortadan ikiye bölünmüştür. Belirli noktalarda iletişime izin verilmiştir. Bu yapı sütunlu (columnar) CNN yapısına [D.C. Cire¸san, U. Meier, J. Masci, L.M. Gambardella, and J. Schmidhuber. High-performance neural networks for visual object classification. Arxiv preprint arXiv:1102.0183, 2011.] benzemektedir fakat bu çalışmada sütunlar bağımsız değildir.
ReLU her ne kadar normalizasyon yapılması ihtiyacını kısmen ortadan kaldırsada “Local Response Normalization” ismi verilen bir yaklaşımla normalizasyon yapılmaktadır. Bu normalizasyon işlemiyle test hatası biraz daha düşürülmüştür. Ayrıca CIFAR-10 veri kümesinde ise test hatası %13’ten %11’e düşürülmüştür.
Pooling işlemi öznitelikleri anlamlı bir şekilde azaltmak için kullanılmaktadır:
Çalışmada Overlapping Pooling yaklaşımının Local Pooling yaklaşımından biraz daha iyi olduğu söylenmiştir.
Local Pooling: Patch Size ve Stride sayısının eşit olduğu işlemdir. 3×3’lük bir pool matrisi, 3’er adım atlayarak işlem yapması anlamına gelir.
Overlapping Pooling: Patch Size sayısının Stride sayısından büyük olduğu işlemdir. 3×3’lük bir pool matrisinin, 2 veya 1’er adım atlayarak işlem yapması anlamına gelir.
Ayrıca Average Pooling ve Max Pooling işlemleri yapılabilir. Max Pooling’in daha iyi olduğu söylenmektedir.
Bu bilgilerden sonra ağı komple izaha geçebiliriz:
8 katman ve ağırlıkları vardır.
5 katman convolutional
3 katman fullyconnected
fullyconnected’dan sonraki çıkış katmanında 1000-way softmax ile 1000 kategorik veriye ait olasılıkları içeren bir çıktı vektörü bulunmaktadır.
Eğitim sürecinde sınıflandırma başarısını maksimize etmeye çalışır.
2,4 ve 5.katmanlarda sadece aynı GPU içerisindeki veriler işlenmektedir.
2.katmandaki tüm kerneller, 3.katmanda birleşmektedir.
fullyconnected katmanlardaki tüm nöronlar bir önceki katmana tamamen bağlıdır.
Local Response Normalization 1. ve 2. katmanlarda yapılmıştır.
Max Pooling 1,2 ve 5.katmanlarda yapılmıştır.
İşlem adımları:
224x224x3’lük girdiyi 11x11x3’lük convolutional katman filtresi 4 piksel adımlarla uygulanarak 55×55 adet değer elde edilmektedir. 96 kernel 48-48 olacak şekilde 2 GPU’da tutulmaktadır.
Daha sonra her katmanda farklı convolutional katman filtreleri uygulanarak ağ aşağıdaki şekle getirilmektedir.
1000 kategorik veri olduğundan 10 bit ile çıktı temsil edilmektedir. 2^10=1024 olduğundan 1000 farklı nesne bu şekilde çıktı formatı olarak kullanılabilir. Bu şekilde ağın yaklaşık 60 milyon parametresi bulunmaktadır.
Overfitting ile Mücadele
Aşırı uyum veya ezberleme olarak çevrilebilecek overfitting istenmeyen bir durumdur. En basit mücadele yöntemi eğitim setini genişletmektir.
Çalışmada mevcut resimlerde otomatik olarak CPU ile hafif değişiklikler yapılarak GPU’da eğitim devam ederken, diske kaydetmeden ve hesaplama maliyetini artırmadan yeni resimler üretilmiştir.
256×256’lık ham resimlerden 224×224’lük resimler ve yatay yansımaları elde edilmiştir. Örnek bir yatay yansımayı aşağıda görebilirsiniz:
Bu işlem eğitim verisini 2048 kat artırmıştır.
Daha sonra RGB değerlerine PCA işlemi uygulanmıştır. Ortalaması 0, standart sapması 0.1 olan Gauss/Normal dağılımla üretilmiş rastgele sayıları içeren bir özdeğer vektörü ile bu işlem yapılmıştır. Bu işlem ile hata oranı %1 daha azalmıştır.
Dropout
Katmanların belirli oranda etkisizleştilmesi mantığına dayanmaktadır. Böylece hem eğitim süresi kısalmakta, hem de kimi veri kümeleri için ezberleme ortadan kalkmaktadır. Dropout ilk iki fully-connected katmana uygulanmıştır.
Daha fazla ayrıntı için:
Srivastava, Nitish, et al. “Dropout: a simple way to prevent neural networks from overfitting.” Journal of machine learning research 15.1 (2014): 1929-1958.
G.E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R.R. Salakhutdinov. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580, 2012.
Nasıl Öğreniyor?
Stokastik düşüş inişi (stochastic gradient descent) ile 128 örneklik batch grupları ile, 0.9 momentum ve 0.0005 azaltım ile öğrenme sağlanmıştır.
Her katmanda ağırlıklar 0 ortalama, 0.01 standart sapma ile normal dağılıma uygun olarak rastgele atanmıştır.
Nöronlara 2,4 ve 5. convolutional katmanlarda bias eklenmiştir. Ayrıca fully-connected gizli katmanlarda bu değer 1 alınmıştır. Bu aşama ilk adımlarda öğrenmeyi hızlandırıp, pozitif etkisiyle ReLU’nun etkisini artırmıştır. Diğer katmanlarda bias değeri 0 verilmiştir.
Öğrenme katsayısı (learning rate) 0.01 olarak başlatılmış, bitime kadar 3 kere değiştirilmiştir. Doğrulama hatası (validation error) iyileşmediği zaman değer 10’a bölünerek daha da küçültülmüştür.
Ağ 90 çevrim eğitilmiştir.
Sonuçlar
top-1 37.5% ve top-5 17.0% hata ile sınıflandırma yapılmıştır.
8 test resmi ve sonuçları aşağıda görülmektedir:
Verilen 5 test resmine en yakın eğitim verisinden getirdiği örnek resimler:
Ara katmanları azaltmak başarıyı düşürmektedir.
İndirmek için:
imagenet-classification-with-deep-convolutional-neural-networks
Çok açıklayıcı bir konferans özeti olmuş. Teşekkürler emeğinize sağlık