Salı , 22 Eylül 2020
Home » Yapay Zeka » Evrişimsel Sinir Ağları
DERİNE DAHA DERİNE: EVRİŞİMSEL SİNİR AĞLARI

Evrişimsel Sinir Ağları

‘Derin Öğrenme’ (Deep Learning) denince akla ilk gelen  Evrişimsel Sinir Ağları ’dır. Peki niçin derin öğrenme, nedir derin öğrenme? Günümüzde yaşanmış olan veri patlaması sonucu adını verdiğimiz ‘Büyük Veri’ (Big Data) bununla beraber hesaplama karmaşıklığı getirdi. Fakat esas mevzu verinin yalnız büyük olması değil. Artık verilerden daha çok şey beklememiz. Daha değişik bakmamız!

“For us Big Data, Small Data, Little Data, Fast Data, and Smart Data are all “Just Data.” The critical success factors for the use of data do not depend on its quantity, structure, or speed – it’s about using data to create true added value!” Alexander Thamm

“Bizim için Büyük Veri, Ufak Veri, Süratli Veri ve Akıllı Veri hepsi yalnız ‘Veri’. Verilerin kullanımında eleştiri başarı faktörleri miktarına, yapısına yada hızına bağlı değildir-gerçek katma kıymeti yaratmak için verileri kullanmakla ilgilidir!” Alexander Thamm

Milyarlarca parametreyi hesaplamak için veriden değişik bilgiler çıkarmak gerektiği anlaşıldı. Görüntü Sınıflandırma (Image Classification), Nesne Bulma (Object Detection), Nesne Takip Etme (Object Tracking), Naturel Dil İşleme (Natural Language Processing), Yoldam Transferi (Style Transfering) şeklinde problemlerin çözümü için ihtiyaç duyulan motivasyon gene yapay sinir ağı tabanlıdır.

Verinin büyümesi ve veriden daha anlamlı bilgilere ulaşmak, öznitelik kestirimleriyle ilgili optimizasyon yapmayı mecburi kılmaktadır. Klasik bir yapay sinir ağı modelleriyle daha önceki yazılarımda anlattığım şeklinde nöronlar ve katmanlar arasındaki bağlantılar ve öğrenilen parametreler oldukca büyük hesaplama zorlukları ortaya çıkarmaktadır. İşte tam bu aşamada imdadımıza Yann LeCun yetişiyor. Evrişimsel Sinir Ağlarını tüm detaylarıyla yazımda anlatmaya çalışacağım.

İki Boyutlu Evrişim

İki boyutlu bilgiye uygulanacak olan filtrenin x ve y eksenine bakılırsa simetrisi alınır. Tüm değerler matriste eleman eleman çarpılır ve tüm değerlerin toplamı çıkış matrisinin ilgili elemanı olarak kaydedilir. Buna çapraz korelasyon ilişkisi de denir. Giriş verisi (mesela; görüntü) tek kanallı iken bu işlem basitçe yapılabilmektedir. Sadece giriş verisi değişik formatlarda ve kanal sayısında olabilir.

F-2

Renkli görüntüler, Kırmızı-Yeşil-Mavi (RGB) 3 kanaldan meydana gelmektedir. Bu koşulda da evrişim işlemi 3 kanal için yapılır. Çıkış işaretinin kanal sayısı da uygulanan filtre kanalı/sayısı ile eşit olarak hesaplanır.

F-3

Bunu sinir ağındaki bir katman olarak hayal edelim. Giriş görüntüsü, filtre de aslına bakarsak devamlı geri yayılımla güncellenen ağırlıklar matrisidir. Aktivasyon fonksiyonunu uygulanan çıkış matrisine son olarak skaler bir b (bias) kıymeti eklenmiş olur. İşlem akışını incelemek için aşağıdaki görüntüye tıklayınız.

F-4

Kenar Bulma

Kenar detayları, görüntüden elde edilmiş öznitelikler içinde en oldukca gerekseme duyulanlarından biridir. Giriş bilgisinin yüksek frekanslı bölgelerini simgelemektedir. Bu öznitelikleri elde etmek için dikey ve yatay olmak suretiyle iki filtre ayrı ayrı kullanılır. Geleneksek yöntemlerde- Sobel, Prewitt, Gabor şeklinde filtreler- filtre, görüntü üstünde ‘evrişim ‘(convolution) işlemine doğal olur. Elde edilmiş çıkış, görüntünün kenar bilgilerini gösterir. 

F-5

Değişik kenar bulma filtreleri ile açısal kenarlar, karanlıktan aydınlığa, aydınlıktan karanlığa geçişler ayrı ayrı birer öznitelik olarak değerlendirilir ve hesaplanır. Çoğu zaman kenarlar evrişimsel bir ağ modelinin ilk katmanlarında hesaplanmaktadır. Tüm bu hesaplamalar yapılırken giriş boyutu ve çıkış boyutu içinde farklılık meydana gelir. Mesela; giriş görüntüsü (n): 6×6, kenar bulma filtresi (f): 3×3 olduğu durumda evrişim işlemi sonucu elde edilmiş çıkış görüntüsü: (n-f+1)x(n-f+1)=4×4 boyutlu olur. Eğer bu şekilde boyutun azalması istenmiyorsa -giriş ve çıkış boyutunun eşit olması isteniyorsa- ne yapılmalı?

Piksek Ekleme (Padding)

Evrişim işleminden sonrasında giriş işareti ile çıkış işareti arasındaki boyut farkını yönetmek elimizde olan bir hesaplamadır. Bu işlem giriş matrisine eklenecek extra pikseller ile sağlanır. İşte tam bu px ekleme işine (padding) denir. Giriş matrisi nxn, filtre (ağırlık) matrisi (fxf) olduğu durumda çıkış matrisinin giriş ile aynı boyutlu olması isteniyorsa; (n+2p-f+1)x(n+2p-f+1) formülü uygulanır. Burada ‘p’ ile gösterilen kıymet giriş matrisine eklenen px boyutudur doğrusu padding değeridir. Bunu belirlemek için p=(f-1)/2 denkleminden faydalanılır. 

F-6
F-7

Kaydırma Adımı (Stride)

Bu kıymet evrişim işlemi için ağırlık matrisi olan filtreyi görüntü üstünde birer piksellik adımlarla ya da daha büyük adımlarla kaydıracağının bilgisini verir. Bu da direkt çıkış boyutunu etkileyen öteki bir parametredir. 

F-8

Mesela padding kıymeti p=1 iken, adım sayısı s=2 seçildiğinde çıkış matrisinin boyutu (((n+2p-f)/s)+1)x(((n+2p-f)/s)+1);  n=5 ve f=3 değerleri için hesaplanırsa çıkış boyutu (3)x(3) olur. Padding işleminde eklenen pikseller aşağıdaki örnekte olduğu şeklinde 0’lardan oluşabilir. Bir başka uygulanma şeklide tarafındaki pikselin değerinin kopyalanmasıdır.

F-10

Pooling

Bu katmanda çoğu zaman maksimum pooling yöntemi kullanılır. Ağın bu katmanında öğrenilen parametre yoktur. Giriş matrisinin kanal sayısını durağan(durgun) tutarak yükseklik ve genişlik bilgisini azaltır. Hesaplama karmaşıklığını azaltmak için kullanılan bir adımdır. Sadece Hinton’ın kapsül teorisine bakılırsa verideki mühim bazı bilgilerinde kaybolmasına sebep olduğundan başarımdan taviz vermektedir. Bilhassa lokasyon bilgisinin oldukca mühim olmadığı problemlerde gene de oldukça güzel sonuçlar vermektedir. Seçilen pooling boyutu içindeki piksellerin en büyüğünü çıkışa aktarır. Aşağıdaki örnekte 2×2 max-pooling işlemi 2 adım (px) kaydırılarak uygulanmıştır. İlgili 4 elemanın olduğu alandaki en büyük kıymeti çıkışa aktarılır. Çıkışta 4’te 1 boyutlu bir veri elde edilmiş olur.

Evrişimsel Sinir Ağları 1 – 4GA17A

Bir evrişimsel ağın muhteviyatında meydana getirilen işlemleri artık biliyoruz. Peki model iyi mi oluşturulur? Bu soruya en kolay cevap klasik ağ modellerini incelemektir. O halde derin öğrenme ya giriş yaptık anlamına gelir.

“I like to train Deep Neural Nets on large datasets.” Andrej Karpathy, Tesla AI
“Büyük veri setleri üstünde Derin Sinir Ağları eğitmeyi severim.” Andrej Karpathy, Tesla AI

Evrişimsel Sinir Ağları 2 – ROA1m7

LeNet-5

1998 senesinde yayınlanmış ve ilk başarı göstermiş sonucu veren evrişimsel sinir ağı modelidir. Yann LeCun ve ekibi tarafınca posta numaraları, banka çekleri üstündeki sayıların okunması için geliştirilmiştir. MNIST (Modified National Institute of Standards and Technology) veri seti üstünde deneyler gösterilmiştir. Bu modelde sonradan geliştirilecek öteki modellerden değişik olarak boyut azalma adımlarında max-pooling yerine average (averaj) pooling işlemi yapılmaktadır. Ek olarak aktivasyon fonksiyonu olarak ta sigmoid ve hiperbolik tanjant kullanılmaktadır. 

Evrişimsel Sinir Ağları 3 – nJdjvM

FC (Tam Bağlantı-Fully Connected) katmanına giren parametre sayısı 5x5x16=400 ve y çıkışında 0-9 arasındaki sayıları sınıflandırdığı için 10 sınıflı softmax bulunmaktadır. Bu ağ modelinde 60 bin parametre hesaplanmaktadır. Ağ süresince matrisin yükseklik ve genişlik bilgisi azalırken derinlik (kanal sayısı) kıymeti artmaktadır.

Evrişimsel Sinir Ağları 4 – nJdRlV

AlexNet

2012 senesinde evrişimsel sinir ağ modellerini ve derin öğrenmenin yeniden popüler hale gelmesini elde eden ilk çalışmadır. Alex Krizhevsky, Ilya Sutskever and Geoffrey Hinton tarafınca geliştirilmiştir. Temel olarak LeNet modeline, birbirini takip eden evrişim ve pooling katmanları bulunmasından dolayı, oldukca benzemektedir. Aktivasyon fonksiyonu olarak ReLU (Rectified Linear Unit), pooling katmanlarında da max-pooling kullanılmaktadır. 

Evrişimsel Sinir Ağları 5 – o650LX

Daha büyük ve daha derin olan bu ağ modeli paralel çift GPU (Grafik İşlem Birimi-Graphics Processing Unit) üstünde iki parçalı bir modeldir. Ortalama olarak 60 milyon parametre hesaplanmaktadır. ImageNet ILSVRC yarışmasında sınıflandırma doğruluk oranını %74,3’ten %83,6’ya ani bir yükselme sağlayarak görüntü sınıflandırma probleminde bir kırılma noktasıdır.

VGG-16

Kolay bir ağ modeli olup öncesindeki modellerden en mühim farkı evrişim katmalarının 2’li ya da 3’li kullanılmasıdır. Tam bağlantı (FC) katmanında 7x7x512=4096 nöronlu bir öznitelik vektörüne dönüştürülür. İki FC katmanı çıkışında 1000 sınıflı softmax başarımı hesaplanır. Ortalama 138 milyon parametre hesabı yapılmaktadır. Öteki modellerde olduğu şeklinde girişten çıkışa doğru matrislerin yükseklik ve genişlik boyutları azalırken derinlik kıymeti (kanal sayısı) artmaktadır. 

Evrişimsel Sinir Ağları 6 – 7yJ7OL

Modelin her evrişim katmanı çıkışında değişik ağırlıklara haiz filtreler hesaplanır ve katman sayısı artıkça filtrelerde oluşan öznitelikler görüntünün ‘derinliklerini’ simgelemektedir.

Evrişimsel Sinir Ağları 7 – Qp5vkj

Ağ modelinin gerçek anlamda derinleşmeye başladığı kendinden önceki modellerden değişik bir mantığı barındıran ResNet; artık değerlerin (residual value) sonraki katmanlara besleyen blokların (residual block) modele eklenmesiyle oluşmaktadır. ResNet bu özelliği ile klasik bir model olmaktan çıkmaktadır.

Doğrusal ve ReLU içinde iki katmanda bir eklenen bu kıymet aşağıdaki şeklinde sistemdeki hesabı değiştirir. Evvel gelen a[l]kıymeti, a[l+2] hesabına eklenmiş olur. 

Evrişimsel Sinir Ağları 8 – JO9q55

Kuramsal olarak, modelde katman sayısı arttıkça başarımın artacağı düşünülür. Sadece gerçekte bu şekilde olmadığı deneyimlenmiştir. Buradan hareketle ResNet modeli oluşturulmuştur. Böylece w[l+2]=0 olduğu durumda yeni teoriye bakılırsa a[l+2]=b[l+2] olur. Bu (vanishing gradient) istenmeyen bir durumdur.

Evrişimsel Sinir Ağları 9 – 3p57B9

Sadece artık kıymet (residual) beslemesi yeni çıkış eşitliğini iki önceki katmandan gelen a[l] kıymeti o an ki ağırlık 0 olsa bile öğrenme hatasını optimize eder. Daha süratli eğitilir. 

Evrişimsel Sinir Ağları 10 – NOXp6g

2013 senesinde Min Lin ve arkadaşlarının “Network in Network” makalesi ile modellerdeki hesaplama karmaşıklığına yeni ve ses getiren bir çözüm önermiştir. Google, bu tavsiye yardımıyla altın tepsiyle sunulan modeli derhal kullanmıştır ve başarıya ulaşmıştır. Hesaplamada esneklik sağlanmış ve başarımı çoğaltmak için varyasyonlu modellerin tasarlanmasına olanak tanınmıştır.

Peki ağ içinde ağ ne demek? Birçok kişinin niçin yapıldığını anlamamasına rağmen son aşama kolay bir matematiktir: 1×1 evrişim işlemi!

Sadece 1×1 element işlemin matris üstünde bir tesiri olmaz dediğinizi duyar gibiyim 🙂

Evrişimsel Sinir Ağları 11 – 1GbLPB

Sadece giriş matrisi oldukca kanallıysa işler değişmiş olur! Mesela giriş matrisi 100 kanallıysa ve buna 30 kanallı bir 1×1 evrişim filtresi hacimsel olarak uygulandığında çıkış matrisinin kanal sayısı filtre sayısına eşit, doğrusu 30 olur. O süre 1×1 evrişim katmanı derinlikte boyut azaltmak anlamına gelir. Aşağıdaki örnekte de çıkış kanal sayısı filtre ile eşit şekilde hesaplanmaktadır.

Evrişimsel Sinir Ağları 12 – g9gqlN

Dikkat edilirse bundan ilkin anlattığım klasik ağ modellerinin tamamında modelin başından sonuna doğru ilerlerken matrislerin yükseklik ve genişlikleri pooling katmanları yardımıyla azaltılıyordu. Sadece kanal sayıları artıyordu. O halde niçin 1×1 evrişim katmanlarını modellere ekleyip kanal sayısını da istediğimiz şeklinde sınırlandırmayalım? Doğal olarak bu suali Google ekibi sordu ve uyguladı. 2014 senesinde “Inception” ile sonuçlar etkileyiciydi.

Şu ana kadar bahsi geçen ağ modellerinden değişik ve anlaşılması zor olanıdır. Sadece hesaplama karmaşıklığına ve ebatlarına bulunan çözüm bununla beraber hız ve başarımı getirmektedir. En kolayı bunu bir örnekle açıklamak olur.

Evrişimsel Sinir Ağları 13 – YOyD3E

Inception ağ modeli modüllerden oluşmaktadır. Her bir modül, değişik boyutlu evrişim ve max-pooling işemlerinden meydana gelmektedir. Yukarıdaki görüntüde 3 değişik evrişim ve bir max-pooling işlemi sonucunca 28x28x256 boyutlu bir tensör elde edilmiştir. Bu çıkıştan yalnız 5×5 evrişim işlemindeki parametre sayısını hesaplayıp işlem kompleksliğini değerlendirelim. 

Evrişimsel Sinir Ağları 14 – BynroQ

Yalnızca bu işlem adımı için (28x28x32)x(5x5x192)=120 milyon parametre hesaplanması gerekir. Bunun şeklinde öteki evrişim ve max-pooling katmanlarını da aynı şekilde hesaplamak gerekir. C. Szegedy ve ekibi ‘Network in Network’ makalesine atıf yaparak her evrişim katmanından ilkin 1×1 evrişim katmanı kullanılarak işlem yükünü optimize etmeye odaklanmıştır. 

Evrişimsel Sinir Ağları 15 – 7yJq2l

Böylece daha karmaşık bir ağ modelin ile daha azca hesap ve daha süratli bir tasarım yapılmaktadır. Bu koşulda; 1×1 evrişim katmanında: (28x28x16)x(1x1x192)=2,4 milyon parametre ve 5×5 evrişim katmanında: (28x28x32)x(5x5x16)=10 milyon parametre olmak suretiyle toplamda 12.4 milyon parametre hesaplanmaktadır. İlk duruma bakılırsa ortalama 10 kat daha azca parametre hesabı son aşama çarpıcıdır. Bu 1×1 evrişim işlemini ‘bottleneck’ (darboğaz) olarak tanımlamışlardır.

Her bir modüle ‘inception’ adı verilmektedir. Toplam 9 inception bloğundan oluşan modele, bu işlere (derin öğrenme) başlangıç kıymeti veren LeNet modeline atıf yaparak GoogLeNet adı verilmektedir. GoogLeNet modelinde modelin kendisi de genişlemektedir. Üstelik bu yalnız versiyon 1. Bu modelin öteki bir garip özelliği de ilk kez bir bilimsel nitelikli yazının kaynakçasında bir ‘caps’ web sayfasına atıf yapılmaktadır. Model adının esin deposu da bir Hollywood filmi olan ‘inception’. 

Evrişimsel Sinir Ağları 16 – qJ0b2q

Bazı modellerin eğitilmesi, model karmaşıklığı ya da veri setinin büyüklüğü sebebiyle standart bilgisayar işlemcilerinde gerçekleştirmek imkansıza yakındır. Bu yüzden grafik işleme birimlerine gerekseme vardır. Günlerce kimi zaman haftalarca devam eden eğitimler sonucunda bu eğitilmiş modeller değişik problemlerin çözümü içinde çeşitli şekillerde kullanılabilir. İşte tam da buna ‘Geçirme Öğrenme’ denir. Mesela; kullanacağınız veri seti yeterince büyük değilken bu işlem avantaj sağlamaktadır. ImageNet şeklinde 15 milyon değişik görüntüden oluşan veri setiyle eğitilmiş bir model var ise sizdeki veri seti oldukca azca görüntüye sahipse bile öğrenme işlemi gerçekleştiği için oldukca daha başarı göstermiş sonuçlar üretilmiş olur. Peki aktarma öğrenme kaç değişik şekilde yapılabilir?

Geçirme öğrenme, yapay zeka çalışmalarında birçok problemin daha süratli çözüm bulmasını sağlar. Bu sebeple açık kaynak kodlu bir sistem mevcuttur ve desteklenmektedir. GitHub’ta çalışmaların orijinalleri incelenip kendi problemlerinizde ön eğitim ya da aktarma öğrenme için kullanılabilir. Burada eleştiri nokta derin öğrenme için tasarlanmış olan uygulamaların (framework) öğrenilmesi ve konfigürasyonların anlaşılmasıdır.

www.github.com

Ufak veri setlerinde bilhassa başarımı çoğaltmak için verilerin çeşitli bozulma etkilerine maruz bırakılarak artırılmasıdır. Bu şekilde modelin değişik koşulları da öğrenmesinin sağlanmaktadır.

Evrişimsel Sinir Ağları 17 – blank
Evrişimsel Sinir Ağları 18 – blank

şeklinde birçok değişik şekilde veriden elde edilmiş yeni veri parçaları oluşturularak çoğaltma/artırma yapılabilir. Böylece model ezberleme (overfit) eğiliminden uzaklaşmaktadır.

Makine öğrenmesi senelerdir kullanılan yöntemlerin başlangıcında gelmektedir. Buna karşın yazı süresince bahsi geçen tüm bu modeller, hesaplama karmaşıklığından uzaklaştırmaktadır. Hem de modelin ve verilerin derinleşmesine sebep olmaktadır.

Birçok araştırmacı ve verilerin sahibi sayılabilecek büyük firmalar, başta Google-DeepMind, Feysbuk, Baidu bilhassa görüntü ve ses mevzusunda derin öğrenme projeleri yürütmektedir. DARPA’da bu mevzuda büyük yatırımlar yaparak insansız hava araçlarından toplanan görüntülerin meydana getirmiş olduğu büyük verilerden anlamlı sonuçlar çıkarmak için derin öğrenme çalışmalarına destek sağlamaktadır.

Özetlemek gerekirse bilincinde olun ya da olmayın, yapay zeka artık bilim kurgu değil, günlük hayatımızın bir parçası haline gelmiştir! Derin öğrenme ile makine öğrenmesinin birçok ergonomik uygulaması gerçekleştirilmektedir. Sıhhat hizmetlerinde hasta takibinden ilaç üretimine, otonom robotlardan araçlara kadar yaşamımızın bir parçasıdır. Kullandığımız telefondaki uygulamalar, karşımıza çıkan reklamlar, bizi bizlerden kimi zaman daha iyi tanıyan o ‘şey’!

Sizin de ilginizi çekmiyor mu? 🙂

Evrişimsel Sinir Ağları 19 – vJGbor

Kaynaklar

Bir sonraki yazıda ResNet V1-V2 ve Inception modüllerinin V1-V2-V3 ve V4 tipleri arasındaki farkı inceleyeceğim. Merak edenleri beklerim.

Kaynaklar

Yazar Merve Ayyüce Kızrak‘a teşekkürler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir