loader
banner

Derin öğrenme ile yapabileceklerimiz hayal gücümüz ile sınırlı…

Bilim insanları uzun süredir yapay zekâ üzerine çalışmalar yürütüyor. Artık makinelerin dönemi başladı diyebiliriz. Yapay zekâ, makine öğrenmesi, derin öğrenme gibi pek çok terim günlük konuşma dilimizde yer almaya başladı bile.

Peki son zamanlarda popülerliği hızla artan derin öğrenme nedir?

2000 yıllarında popülerleşmeye başlayan derin öğrenme, yapay sinir ağlarını temel alan yapay zekâ ve makine öğrenmesinin bir alt kümesidir. Alt küme olduğuna aldanmayın. Bugünkü yapay zekânın popülerliğini sağlayan yegane yapıtaşı derin öğrenmedir desek yanlış olmaz.

Derin öğrenmenin dünya gündemine oturması, sinir ağlarının yapısının kurulmaya başlandığı 1950 yıllarına dayanmaktadır. Daha sonra derin öğrenme alanında 2012 yılına kadar bir sessizlik hakim olmuştur. İlk defa 2012 yılında nesne sınıflandırma için yapılan, içinde ev, araba, kamyonet, kedi, köpek gibi 1000 farklı görüntü sınıfının bulunduğu veri setinin kullanıldığı ImageNet yarışmasında elde ettiği başarı ile derin öğrenme dikkatleri üzerine çekmiştir.

Nesne tanımlama alanında en büyük yarışma olan Büyük Ölçekli Görsel Tanıma Yarışması( ImageNet)(Competition 2012) o yıl derin öğrenmede temel mimari kabul edilen Evrişimsel Sinir Ağı (ESA)(Krizhevsky, Sutskever et al. 2012) ile kazanıldı. Bu, derin öğrenmenin inanılmaz bir yükselişi olmuştur. Çünkü yarışmada %26,1 olan Top-5 hata oranı aşağıdaki görselde görüldüğü üzere %15,3 gibi bir orana düşürüldü. Derin öğrenmenin pik seviyeye ulaşmasında bu yarışmanın katkısı büyük diyebiliriz.

Yıllara göre ImageNet yarışmasının Top-5 hata oranları

Derin Öğrenme ile Neler Yapılabilir?

Derin öğrenme insan beyninin çalışma şeklini referans alır. Sınıflandırma, gruplandırma hatta girilen verilerden bambaşka sentetik veri üretme gibi görevleri de yerine getirebilir. Örneğin aşağıdaki şekilde bulunan insan yüzleri derin öğrenme kullanılarak üretilmiştir.

Yapay zekâ ile üretilmiş insan portrelerinin görüntüleri

Derin öğrenmenin yapısını beynimizin nöron bağlantılarına benzetebiliriz. Bildiğiniz üzere beynimizde çok sayıda nöron bağlantısı bulunmaktadır. Nasıl insan olarak hatalarımızdan ders çıkarabiliyorsak, derin öğrenme de hatalarından ders çıkararak en mükemmeli hedefler.

Derin öğrenmenin bu kadar gelişmesinin temelde iki sebebi bulunuyor.

İlk etken olarak şüphesiz ki verilerin çoğalmasını söyleyebiliriz. Bugün dünyada yılda 41 Zettabyte veri üretiliyor. Verilerin büyüklüğünün gittikçe artması sonucunda makine öğrenmesi algoritmaları artık yetersiz kalmaya başladı. Bu durum makine öğrenmesinin alt kümesi olan derin öğrenme alanının oluşmasına sebep olmuştur.

Derin öğrenme, çoklu soyutlama seviyelerine sahip verilerin gösterimini öğrenmek için çoklu işlem katmanlarını barındıran hesaplama modellerine izin vermektedir.

Veri miktarının artmasının makine öğrenmesi ve derin öğrenme performanslarına etkisi

 

İkinci etapta ise teknolojinin gelişmesini söyleyebiliriz. Teknolojiler geliştikçe donanımlar da gelişti. GPU’ların gelişmesi ile de derin öğrenmenin gerekli kıldığı büyük matematiksel işlemler, bilgisayarlar tarafından en hızlı ve uygun şekilde yapılmaya başlandı.

Bugün artan veri sayısı ile üretilen modellerin genelleme yeteneği artacak ve böylece gerçek hayatta uygulanabilir hale gelmesi mümkün olacaktır.

Bu da şu demek; bir model ne kadar fazla veri ile eğitilirse uygulama alanındaki başarısızlıkları o kadar azalacaktır.

Günümüzde de derin öğrenmenin görüntü işleme (yüz tanıma, plaka tanıma, parmak izi tanıma, iris okuyucular, otonom araçlar), ses tanıma ve doğal dil işleme ve medikal araştırmalar başta olmak üzere pek çok alanda kullanıldığını söyleyebiliriz.

Peki derin öğrenmedeki “derin” ifadesi gerçekten derin bilgilerin öğrenildiği anlamına mı geliyor?

Derinliğin geldiği en temel nokta aslında şu, buradaki öğrenme işlemi katmanlar aracılığı ile gerçekleştiriliyor. Yani nöronlar bir araya gelerek katmanları oluşturuyor. Daha sonra bu katmanlar tekrardan bir araya geliyor ve bir ağ yapısı oluşturuyorlar. Sonuç olarak modelde ne kadar çok katman bulunuyorsa model o kadar derindir diyebiliriz.

Deri öğrenmeyi tanımlarken “Yapay sinir ağlarını temel alan yapay zekâ ve makine öğrenmesinin bir alt kümesidir.” dedik. O halde derin öğrenme konusunda derinleşip yapay sinir ağlarını inceleyemeye geçebiliriz.

Yapay Sinir Ağları (Artificial Neural Networks – ANN)

Yapay sinir ağı sistemi verilen örnek veriden bilgi toplar. Bu bilgiyi işleyip genellemeler yapar. Daha sonra bu genellemelere bakarak hiç karşılaşmadığı örnekler hakkında tahminde bulunmaya çalışır.

Yapay sinir ağı bunu nasıl yapıyor bir örnekle inceleyelim.

Şekildeki robot bizim oluşturduğumuz model olsun. Bu modeli aynı bir bebeği eğittiğimiz gibi eğitmemiz gerekiyor.

Şimdi bir köpek resmi gösterip ona bunun bir köpek olduğunu söyleyelim.

Daha sonra ona yeni bir resim gösterip bunun köpek olup olmadığını soralım.

Gördüğünüz gibi köpek olmadığını söyledi. Çünkü elindeki veriye göre köpek sadece ilk gördüğü obje. Onun dışındaki hiçbir şey köpek değil. Bu hatayla karşılaşmamak için onu eğittiğimiz veri setini büyütmemiz gerekiyor.

Bu gösterdiğimiz resimdeki objenin de köpek olduğunu ona söyleyelim.

Şimdi yeni bir köpek resmi gösterip modelin cevabını bekleyelim.

Bu sefer doğru bildi. Çünkü yeni gösterdiğimiz resim onun veri setindeki köpek olan objelerin ortak özelliğine sahipti.

Daha sonra bir kedi resmi gösterip ne cevap vereceğine bakalım.

Resimdeki objenin köpek olmadığını bildi fakat kedi olduğunu bilemedi. Kedi ya da başka bir nesnenin türünü tam olarak belirleyebilmesi için köpekte olduğu gibi gerekli bilgileri ona öğretmemiz gerekir.

Bu sistemi daha iyi anlayabilmek için biraz daha derine inelim.

Yapay sinir ağları adından da anlaşıldığı üzere insanlardaki sinir sisteminden esinlenerek yapılmıştır. İnsan sinir sitemi nöron denilen hücrelerden oluşur. Nöronlar dendritlerden uyarıyı alırlar ve belirli bir eşik değerinin üzerindeyse bir sinyal oluştururlar. Daha sonra aksonlarıyla diğer nöron hücrelerine bu uyarıyı gönderirler. Diğer nöronlarda da bu işlem aynı şekilde tekrarlanır ve nihai sonuca ulaşılır. Özetle, biz bir harekete geçerken bu işlemin kararında sadece nöronlarımız ve nöronlarımızın birbirleriyle kurduğu bağlar etkili olmaktadır.

İnsanlarda kompleks bir sinir sistemi bulunmaktadır. Bunun nedeni karar verici nöronlardır. Mesajı alan nöronla eyleme geçen nöron arasında karar verici nöronlar yoğun bir şekilde beyinde toplanmışlardır. Temel olarak sinir sistemi bu şekilde çalışmaktadır.

Yapay sinir ağlarını daha iyi anlamak için daha önce de bahsettiğim eşik değer kavramını çok iyi bir şekilde anlamamız gerekir.

Eşik değer kavramını bir örnek ile inceleyelim.

Elimize bir çivi ve iğne dokundurduğumuzu düşünelim. İkisi de derimizin altındaki aynı basınç reseptörlerini uyaracak fakat ikisine de verdiğimiz tepki birbirinden çok farklı olacaktır. Birinde acıyla elimizi çekerken diğerinde elimize bir şey değdiğini bile hissetmeyebiliriz. Bunun nedeni eşik değeridir. İğnenin basıncı çivinin basıncına göre daha fazla nöronun eşik değerini geçebilecek düzeydedir. Bu yüzden değerlendirici nörona gelen mesaj sıklığı, mesaj miktarı gibi konular farklılık göstermektedir. Bu faktörlere göre verilen karar etkilenmektedir. Sonuç olarak iki karar birbirinden çok farklıdır.

Şimdi sistemin çalışma mantığını öğrendiğimize göre işin matematik kısmına geçebiliriz.

İlk olarak her sinir hücresi dendritlerinden mesajı alır. Onlarca dendrit olduğunu düşünürsek ilk önce alınan mesaj düzgün bir şekilde hücredeki değerlendirme merkezine gönderilmelidir. Bu şekilde inputlarımızı yani girdilerimizi dendrit olarak düşünebiliriz.

Bu durumu matematiksel olarak modelleyelim.

İnputlarımız yukarıdaki gibi dizilmiş olsun. Bu inputların türüne göre başlarına bir kat sayı getirilir. Buna daha sonra ağırlıkları adını vereceğiz. Örneğin X1 nöronunun görevi parmağımıza zarar gelip gelmediğini anlayıp buna göre kaslarımıza parmağımızı geri çekmek için kasılma mesajını iletmek olsun.

Bu durumda acı reseptöründen gelen bilgi gıdıklanma reseptöründen gelen bilgiye göre daha önemlidir. Burada acı reseptöründen gelen inputların ağırlıklarını diğerlerine göre fazla ayarlarsak nöronumuz bu bilginin daha değerli olduğunu anlayacaktır.

Mesajların nereden geldiğini hallettiğimize göre ikinci kısım olan mesajların değerlendirilmesi aşamasına geçelim.

Nöronlar bunu aynı anda birçok şekilde yapabilirler. Verinin gelme sıklığı, gelme sayısı gibi özelliklerini değerlendirip karar alırlar. Yani Gelme sıklığında gelen mesaj sayısı / Geçen süre gibi bir fonksiyon gelen mesaj sayısında ise, gelen tüm inputların toplamını dönen bir fonksiyona sahiptirler. Yapay sinir ağlarında bu işlem Net Girdi Fonksiyonu adı altında gerçekleştirilmektedir.

Şimdi de diğer aşama olan karar verme sürecine bakalım.

Nöronlar ya aktifleşir mesaj gönderir ya da gelen mesajı soğururlar. Bu da gelen mesajın eşik değerinin üstünde mi yoksa altında mı olduğuna bağlıdır. Yapay sinir ağlarında bu karar modellemede kurulan aktivasyon fonksiyonuna göre şekillenir.

Nöronun çalışma mantığına değindik şimdi bu mekanizmayı baştaki örnekle birleştirerek biraz daha derine inelim.

Aşağıdaki gibi bir yapay sinir ağı sistemi kuralım.

Input layer ile dışarıdan gelen veriler alınır. Output layer da ise nihai sonuca karar verilir. Bazen bu iki katman karar vermek için yeterli olmayabilir. Daha doğru sonuçlar elde etmek için araya biraz daha nöron koyma ihtiyacı hissedebiliriz. Bu katmanlara da Hidden Layer adı verilmektedir.

Sistem başladığında aşağıdaki gibi her bağlantıya birer tane ağırlık verilir.

Daha önce bahsettiğim örnekteki eğitim veri setini yükleyerek devam edelim.

Her bir veriyi tek tek input layer’dan geçirip sonuçları gözlemleyelim.

Belirlenen bu ağırlığa göre sistem düzgün bir şekilde çalışmadı. En sondaki bulunan köpeğe, köpek değil dedi ve bir kediye de köpek dedi. Sistem sayısal olarak %50 hatalı çalıştı.

Peki böyle bir durumda ne yapılabilir?

Sistem belli bir sayıda iterasyon yapacak ve bu yaptığı iterasyonlarda beklenen değere en yakın olan çözüm yolunu seçecektir. Her iterasyonda ağırlığı yeniden hesaplayacaktır.

Bu sistem için her bağlantıya yeni bir ağırlık değeri atayıp eğitim setini tekrar gönderip aynı işlemleri tekrarlayalım.

 

 

 

Bu ağırlıklara göre sistem %100 doğru çalıştı. Fakat hala sistem hazır değil. Kullanmadan önce test etmemiz gerekiyor. Aslında başlangıçta bize verilen veriyi alıp %80 ve %20 olarak ayırıp, %80’lik kısımla modeli eğitip %20’lik kısımla test etmemiz gerekliydi.

Şimdi bu işlem için %20’lik bir test veri seti yükleyelim ve modelimizi deneyelim.

Bu testten de geçtiyse sistemi rahatlıkla kullanabiliriz.

Evrişimli Sinir Ağları (Convolutional Neural Networks – CNN)

İnsanlar olarak en önemli duyu organlarımızdan birisi görme duyusudur. Gördüğümüz her şeye inanırız. Bir insanı tanımlarken, bir insanın yüzündeki duygu ifadesini anlamlandırmaya çalışırken, yeni bir şehri ya da yeni bir bölgeyi keşfederken hep görme duyumuzu kullanırız. Aslında en çok kullandığımız duyu organlarımızdan birisi de görmedir.

Peki görmeyi biz bu kadar aktif kullanıyorken bunu bir makineye nasıl yaptırabiliriz?

İşte tam bu sırada karşımıza bilgisayarlı görü uygulamalarında sıklıkla tercih edilen evrişimli sinir ağları (convolutional neural networks-CNN) çıkıyor. Bu sinir ağı sayesinde görüntü ve videolar üzerinde en iyi şekilde işlemleri gerçekleştirebilir ve nesne tespiti yapabiliriz.

İlk olarak 1996 yılında Yann LeCun (Facebook AI Lab Direktörü) tarafından CNN bir makale şeklinde yayınlandı. Ardından 1998 yılında CNN’in ilk uygulaması yine Yann LeCun ve ekibi tarafından gerçekleştirildi. Aynı zamanda bu model evrişimsel sinir ağı modeli olarak da ilk başarılı sonucu vermiştir.

Yukarıdaki görüntüde gözlemlenen bu model MNIST veri kümesi ile eğitilerek posta numaraları, banka çekleri üzerindeki sayıların okunması gibi işlemler için kullanılmıştır. Bu modeli diğerlerinden ayıran en önemli özelliklerden biri, boyut azalma aşamalarında maksimum ortaklama yerine ortalama ortaklama işlemi kullanılmasıdır. Bunun yanı sıra aktivasyon fonksiyonu olarak da sigmoid ve hiperbolik tanjant kullanılmıştır. Yann LeCun bu ağın ismine LeNet adını vermiştir.

LeNet mimarisi

Hazırsanız CNN konusunda biraz derinlere inelim!

Evrişimli Sinir Ağı Katmanları

CNN’de görüntüler katmanlardan geçirilerek bir öğrenme işlemi gerçekleştirilmektedir.

Temel anlamda bir CNN mimarisinde;

  • Evrişim Katmanı
  • Aktivasyon Katmanı
  • Pooling Katmanı
  • Fully Connected & Flattening katmanları yer almaktadır.

Bu katmanlara ek olarak Batch Normalization ve Dropout katmanları da opsiyonel olarak kullanılabilir. Bu katmanlar kurulan modelin hız ve performansını etkileyecek katmanlardır.

Şimdi bu katmanları detaylı bir şekilde inceleyelim.

  1. Evrişim Katmanı (Convolution Layer)

Bu katmanda giriş görüntüsü üzerinden öznitelik (kenar bulma, köşe bulma, görüntü üzerinde nesne bulma) çıkarımı yapılmaktadır. Bu çıkarım filtreler aracılığı ile yapılmaktadır.

CNN’de görüntüler matrislerle ifade edilmektedir. Gerekli işlemler matrisler üzerinde gerçekleştirilir. Matrislerin içerisinde yer alan değerler ise görüntüye ait piksel değerlerini içermektedir.

Bilgisayarlara bir görüntüyü tanımlatmak istediğinizde aslında o görüntünün ilgili piksel noktalarının matematiksel karşılıklarını bilgisayara veririz ve bilgisayar bu matematiksel ifadeleri hafızasında tutar ve daha sonra ilgili işlemleri gerçekleştirebilir.

Örnek bir evrişim işlemini inceleyelim.

Şekilde görüldüğü üzere elimizde 5×5’lik bir görüntü matrisi ve 3×3 boyutunda bir filtre matrisi bulunmaktadır. Bu görüntü üzerinde evrişim işleminin gerçekleştirmeden önce çıkış matrisimizin kaça kaç olacağını hesaplayalım.

Şekildeki formüle göre çıkış matrisimizin boyutu:

(5–3 + 1) x (5–3 + 1) = 3 x 3 olacaktır.

Çıkış matrisinin boyutu hesaplandıktan sonra filtre matrisi görüntü matrisinin sol üst köşesinde konumlandırılır. Ve bu iki matrisin kesişen indislerindeki değerler çarpılarak toplanır. Böylece çıkış matrisimizin ilk indeksi oluşmuş olur. Daha sonra filtre matrisi bir adım sağa kaydırılarak bu işlem devam ettirilir. Bu şekilde filtre matrisi görüntü üzerindeki yolculuğunu bitirdiğinde çıkış matrisindeki değerlerimiz hesaplanmış olacaktır. Gerekli öznitelikler bu şekilde evrişim katmanında belirlenebilir. Ek olarak birden çok öznitelik için evrişimli sinir ağında birden fazla evrişim katmanı kullanılabilmektedir.

  • Adım Kaydırma (Stride)

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 aşağıdaki evrişim işlemindeki stride değeri birdir. Yani filtre sadece bir piksel atlayarak bu işlemi gerçekleştirir.

Stride 2 olsaydı atladığı piksel sayısı artacağından ortaya çıkacak feature map de daha küçük bir hal alacaktı. Bu durumu inceleyecek olursak,

Stride = 2 olduğu durumda görüldüğü üzere çıkış matrisimizin boyutu da farklılık gösteriyor.

Bu durumda çıkış matrisinin boyut hesabı için aşağıdaki formül kullanılmaktadır.

Yukarıdaki formüle göre tekrar hesaplama yaptığımızda çıkış matrisimizin 3×3 boyutunda olduğu gözlemlenmektedir.

  • Piksel Ekleme (Padding)

Evrişim işleminden sonra giriş matrisi ile çıkış matrisi arasında oluşan boyut farkı biçimlendirilebilir. Eğer giriş matrisi ile çıkış matrisinin aynı boyutlarda olmasını istiyorsak giriş matrisine piksel ekleme (Literatürde dolgulama olarak da görülebilir) işlemi uygulamamız gerekir.

Piksel ekleme işlemi nasıl gerçekleştirilir?

Padding işlemi için temelde iki yöntem mevcuttur.

  1. Filtre matrisi görüntü matrisinin üzerinde gezdirilirken görüntü matrisinin dışına taşan kısımlara 0 değeri eklenir.

    2. Görüntü matrisi dışında kalan kısımlara şekilde görüldüğü üzere komşu indekslerdeki piksel değerleri eklenir.

Yukarıdaki giriş matrisini ele alırsak, elimizde 7×7 boyutunda bir giriş matrisi olsun. Çıkış matrisini oluşturmak için kullanacağımız filtre matrisinin de boyutunun 5×5 olduğunu varsayalım.

Bu bilgilere göre çıkış matrisinin boyutunu hesaplayalım.

Görüldüğü üzere piksel eklemeden hesapladığımızda giriş matrisi ve çıkış matrisi arasında boyut farkı oluştu.

Piksel ekleme işlemi gerçekleştirip tekrar hesaplama yapalım. Bu hesaplamayı yapabilmek için aşağıdaki formüllerden faydalanabiliriz.

Önce kaç piksel ekleneceğini bulalım:

Artık çıkış matrisinin boyutunu hesaplayabiliriz.

Bu şekilde giriş ve çıkış matrislerimiz arasındaki boyut farkı ortadan kalkmış oldu.

Piksel ekleme yöntemlerinden hangisi daha kullanışlı?

Örneğin bir evrişim işlemi yaptığımız zaman piksel ekleme yöntemlerinde sıfır ile doldurmayı kullandıysak, filtre matrisinin giriş matrisi üzerinde gezmesi sırasında çıkış matrisinin piksel değerleri hesaplanırken sıfır değerleri eklenen bölüme denk gelen kısımlar hesaplanan değeri aşağı çekeceğinden dolayı elde edilen çıkış matrisinde birbirinden uzak değerler oluşacaktır. Bu pek istenilen bir durum değildir.

Eğer diğer yöntemdeki gibi ilgili alanlara görüntü matrisi içerisindeki piksel değerlerinden ekleme yapılırsa, bu eklenen değerler görüntüye aitmiş gibi davranacağı için özellikle çıkış matrisinin hesaplanması sırasında piksel değerleri arasında aykırılık olmadığı için yapılan evrişim işlemi çıkışında da mutlaka yine görüntüye ait bilgilerden oluşan bilgilere yakın çıkışlar elde edilir. Buradaki dezavantaj ise diğer yönteme göre işlem yükünün fazla olmasıdır.

2. Aktivasyon Katmanı (Activation Layer)

Aktivasyon fonksiyonu içermeyen bir yapay sinir ağı, basit bir lineer regresyon modelinden farksız olacaktır. Yapay sinir ağına öğrenmesi için görüntü, ses, video gibi gerçek dünya verilerini , yani karmaşık verileri öğretebilmek için aktivasyon fonksiyonlarına ihtiyaç duyarız.

Aktivasyon işlemi, giriş sinyali üzerinden yaptığımız doğrusal olmayan dönüşümdür. Bu dönüştürülmüş çıktı daha sonra girdi olarak bir sonraki nöron katmanına gönderilir.

Genel olarak Relu, tanh, sigmoid gibi aktivasyon fonksiyonları kullanılmaktadır. Hız konusunda en iyi sonucu Relu verdiği için aktif olarak Relu kullanılmaktadır. Çıkış katmanındaki aktivasyon fonksiyonu ise probleme göre farklılık gösterebilmektedir.

Aktivasyon fonksiyonları

3. Ortaklama Katmanı (Pooling Layer)

Literatürde havuzlama katmanı olarak da yer alan pooling katmanında down sapmling yani boyut indirgeme işlemi uygulanmaktadır. Bu katmanda herhangi bir öğrenme işlemi gerçekleşmez. Amaç giriş matrisinin kanal sayısını sabit tutarak genişlik ve yükseklik bazında boyut indirgemesi yapmaktır. Avantaj olarak hesaplama karmaşıklığını azalttığını söyleyebiliriz. Bu nedenle evrişim katmanından sonra kullanılmaktadır.

Down sampling işlemi

Yaygın olarak bu işlemi  gerçekleştirmek için aşağıdaki iki yöntem kullanılmaktadır.

3.1. Ortalama Ortaklama (Average Pooling)

Evrişim işleminden sonra uygulanan ortaklama işleminde ortalama ortaklama kullanıldığı taktirde filtrenin görüntü matrisi üzerindeki gezinmelerinde kesiştiği noktadaki piksel değerlerinin ortalaması alınarak boyutu azaltılmış yeni görüntü matrisi oluşturulmuş olur. Aşağıdaki görüntüde 4×4 boyutundaki matrise ortalama ortaklama işlemi uygulanması sonucu 2×2 boyutundaki yeni görüntü matrisi elde edilmiştir.

Ortalama ortaklama işlemi

3.2. Maksimum Ortaklama (Maximum Pooling)

Evrişim işleminden sonra uygulanan ortaklama işleminde maksimum ortaklama kullanıldığı taktirde filtrenin görüntü matrisi üzerindeki gezinmelerinde kesiştiği noktadaki piksel değerleri arasından maksimum olan değer seçilerek boyutu azaltılmış yeni görüntü matrisi oluşturulmuş olur. Aşağıdaki görüntüde 4×4 boyutundaki matrise maksimum ortaklama işlemi uygulanması sonucu 2×2 boyutundaki yeni görüntü matrisi elde edilmiştir.

4. Flattening Katmanı

Bu katmana kadar yaptığımız tüm işlemler matrisler üzerinden gerçekleştirildi. Ama bu yapılan işlemleri bir sonraki katmana aktarıp işlenebilir hale getirmek için yapay sinir ağlarının istediği format olan tek düzlemli bir vektöre dönüştürmemiz gerekiyor. Bu işlemin gerçekleştirildiği katman flattening katmanıdır.

Flattening işlemi

Flattening katmanı

5. Fully Connected (Tam Bağlantı) Katmanı

Bu katmanda ise flattening katmanında tek düzlemli hale dönüştürülen vektörler alınıp yapay sinir ağlarına giriş olarak verilir. Bu sayede ilgili öğrenme işlemi için süreç başlamış olur.

Fully Connected katmanı

6. Batch Normalization (Toplu Normalleştirme) Katmanı

Normalleştirme verileri standartlaştırmak için kullanılan bir ön işleme tekniğidir. Batch Normalization ise bir sinir ağının katmanları arasında yapılan bir normalleştirme işlemidir. Tüm veriyi değil de mini gruplar halinde normalleştirme işlemi yapılmaktadır. Eğitimi hızlandırmaya ve daha yüksek öğrenme oranlarını kullanmaya olanak sağlayarak öğrenmeyi kolaylaştırılır. Genellikle evrişim katmanı ile aktivasyon katmanı arasında yer almaktadır.

7. Dropout (Seyreltme) Katmanı

Basitçe söylemek gerekirse dropout, rastgele seçilen belirli nöron setlerinin eğitim aşaması sırasında birimlerin (yani nöronların) yok sayılması anlamına gelmektedir. Modelin overfitting olduğu düşünülüyorsa dropout katmanı kullanılabilir. Bu sayede performans artışı sağlanabilir.

Dropout katmanı

Genel Resmi Görmek

Input layer’a verilen objenin CNN katmanlarından geçirilerek sınıfının belirlenmesi

CNN Mimari Yapısı

 

Hilal Gözütok – AI/ML Intern