• Sonuç bulunamadı

3. METODOLOJİ VE SONUÇLAR

3.4. KONVOLÜSYONEL SİNİR AĞI (CNN)

Konvolüsyonel Sinir Ağı (Convolutional Neural Networks, CNN), işlevselliğini yerine getirmek için görüntüyü birkaç katman üzerinden işlemektedir. Tüm katmanlar bu tez çalışmasının ileriki bölümlerinde ayrıntılı olarak açıklanacaktır. Temel bir konvolüsyonel sinir ağının şematik diyagramı Şekil 3.17’de [89] gösterilmektedir. Şimdilik sadece bu katmanlar ve amaçları sıralanırsa aşağıdaki gibi 5 bölüme ayrılmaktadır:

- Giriş Katmanı (Input layer)

- Konvolüsyon Katmanı (Convolutional Layer) - Havuzlama Katmanı (Pooling Layer)

- Tam Bağlı Katman (Fully-Connected Layer)

Şekil 3.17. Temel bir konvolüsyonel sinir ağının (CNN) şematik diyagramı mimarisi.

İlk olarak kısaca açıklamak gerekirse, herhangi bir görüntünün bileşenleri 0-255 arası değişen bir matris olarak gösterilmektedir. Bu şekilde matris boyutu (görüntünün yüksekliği) x (görüntünün genişliği) x (görüntünün kanal sayısı) olarak ifade edilmektedir. Renkli bir görüntüdeki (RGB) kanalı (channel) sayısı 3 iken, gri-tonlamalı bir görüntüdeki kanal sayısı 1 olarak belirlenmiştir.

MNIST veri kümesiyle çalışıldığını varsayarsak, MNIST'teki her görüntü 28 x 28 x 1 (siyah beyaz görüntü yalnızca 1 kanal içerir) şeklinde olmaktadır. Giriş katmanındaki toplam nöron sayısı 28 x 28 = 784 olacaktır ve böylece bu istenilen şekilde uygulanabilmektedir. Fakat görüntünün boyutu 1000 x 1000 ise, giriş katmanında 10⁶ nörona ihtiyaç olduğu anlamına gelmektedir. Bundan dolayı bunu uygulamak için çok sayıda nöron gereklidir. Bu durum hesaplama açısından efektif değildir. Bu yüzden bu gibi durumlarda Konvolüsyonel Sinir Ağı veya basit bir deyişle CNN’i kullanmak daha etkili olacaktır. CNN'nin yaptığı iş, görüntünün özelliğini çıkarmak ve özelliklerini kaybetmeden daha düşük bir boyuta dönüştürmektir. Aşağıdaki örnekte, görüntünün başlangıç boyutunun 224 x 224 x 3 olduğu görülmektedir. Konvolüsyon olmadan devam edilirse, giriş katmanında 224 x 224 x 3 = 100, 352 sayı nöron gerekmektedir, ancak konvolüsyon uyguladıktan sonra boyut 1 x 1 x 1000'e düşürülebilmektedir. Bu, ileri beslemeli sinir ağının ilk katmanında sadece 1000 nörona ihtiyaç olduğu anlamına gelmektedir.

Şekil 3.18. CNN görüntü işleme örneği [88].

Giriş Katmanı

CNN'deki giriş katmanı, işlenecek olan görüntüden gelen veriyi içermektedir. Görüntü verileri daha önceden bilindiği gibi üç boyutlu matrisle temsil edilmektedir. Bu yüzden giriş olarak verilecek olan görüntü boyutunun yeniden şekillendirilmesi gerekmektedir. 28 x 28 = 784 boyutunda bir resmin olduğunu varsayılırsa, girdiye girmeden önce onun 784 x 1'e dönüştürülmesi gerekmektedir. Örneğin “n” adet eğitim verisi varsa, girdinin boyutu (784, n) olacaktır. CNN’de ağa verilen verinin büyüklüğü sistemin çalışmasında birçok yönden etki yaptığı için, bu yüzden giriş katmanına uygulanan veriyi seçerken avantaj ve dezavantajların hesaba katılması gerekmektedir ve uygun bir boyut seçilmelidir. Genel olarak, CNN’nin işlediği görüntüden daha fazla özellikler elde etmek ve sistemin öğrenme ve sınıflandırma başarısı arttırılmak isteniyorsa, giriş olarak verilen veri boyutunun mümkün olduğunca büyük seçilmesi gerekir. Fakat artan giriş verisinin boyutu sistemin eğitiminin süresinin uzamasına ve sistemin donanımsal ihtiyaçlarının fazlalaşmasına neden olmaktadır.

Konvolüsyon Katmanı

Bu katman konvolüsyonel sinir ağlarının en önemli kısmıdır. Konvolüsyon katmanına bazen özellik çıkarıcı katmanda denilmektedir. Çünkü görüntünün özellikleri bu katman içerisinde çıkarılmaktadır. Bu katman özelliklerin tespitinden sorumludur. CNN kendisine girdi olarak verilen resimlere bazı filtreler uygulayarak resimlerdeki yüksek ve düşük özellikleri tespit eder. Örnek verilecek olursa bu kenarları algılayacak bir filtre

kullanabilir. Konvolüsyon operasyonu kenarları tespit etmek için bazı filtrelerde kullanılmaktadır. 6 x 6 boyutunda gri ölçekli bir resim ve 3 x 3 boyutunda bir filtre olduğunu varsayalım. 6 x 6 gri tonlamalı görüntü 3 x 3 filtre ile konvolüsyon edildiğinde 4 x 4 boyutunda bir görüntü elde edilmektedir. İlk olarak 3 x 3 filtre matrisi, gri-tonlamalı görüntünün ilk 3 x 3 boyutu ile çarpılır ve daha sonra bu filtreyi bir sütun sağa kaydırır ve aynı çarpma işlemini burada da yapılır, daha sonra yine aynı şekilde filtre bir sütün daha sağa kaydırılır ve aynı işlemler tekrar tekrar görüntünün sonu gelene kadar tekrar edilir. Bir sütunun sonuna kadar kaydırdıktan sonra, bir satır aşağı doğru kaydırarak aynı işlemlere devam edilir [91]. Örnek olarak 3 x 3 filtre konvolüsyon işlemleri sırası ile aşağıdaki gibi gerçekleştirilir.

2x1+9x1+5x1+7x0+3x0+1x0+4x(-1)+1x(-1)+3x(-3)=4

7x1+3x1+1x1+4x0+1x0+3x0+3x(-1)+1 x(-1)+2 x(-1)=5

4x1+1x1+3x1+3x0+1x0+2x0+0x(-1)+5x(-1)+7x(-1)= -4

Şekil 3.19. Konvolüsyon işlemlerine bir örnek.

3x1+1x1+2x1+0x0+5x0+7x0+1 x(-1)+7x(-1)+2 x(-1)=-4

Şekil 3.17.(devam) Konvolüsyon işlemlerine bir örnek

Görsel olarak bir örnek vermek gerekirse konvolüsyon işlemi Şekil 3.18’deki gibi görselleştirilebilir [88]. Burada görüntü boyutu 4 x 4 ve filtre 3 x 3, dolayısıyla konvolüsyon olduktan sonra 2 x 2 boyutunda bir çıktı alınmaktadır.

Şekil 3.20. Örnek; görüntü boyutu 4 x 4 ve filtre 3 x 3, dolayısıyla konvolüsyon olduktan sonra 2 x 2 boyutunda bir çıktı alıyoruz. [88].

Eğer görüntü boyutu B x B ve filtre boyutu F x F ise, yukarıdaki durumlar için konvolüsyon sonucunda boyut aşağıdaki gibi olmaktadır [88].

Kaydırma (Stride) ve Sıfır Ekleme (Padding)

Kaydırma(stride), konvolüsyon işlemlerinde her işlemde kaç adım hareket edildiğini göstermektedir. Genelde varsayılan olarak 1’dir.

Şekil 3.21. 1 Kaydırma ile konvolüsyon.

Çıktı büyüklüğünün bu girdiden daha küçük olduğu gözlemlenebilir. Çıktı boyutunu girişte olduğu gibi korumak için sıfır ekleme kullanılmaktadır [88]. Sıfır ekleme, giriş matrisine simetrik olarak sıfır ekleme işlemidir. Aşağıdaki örnekte, ekstra gri bloklar sıfır ekleme işlemini göstermektedir. Bu çıktının boyutunu girdi ile aynı yapmak için kullanılmaktadır.

Şekil 3.22. 1 kaydırma ile sıfır ekleme işlemi.

Diyelim ki sıfır ekleme “p" olsun. Başlangıçta sıfır ekleme işlemi olmaksızın olan denklem (3.2)’deki gibidir:

Fakat sıfır ekleme işlemi uygulandıktan sonra işlemler aşağıdaki gibi olur.

Şekil 3.23. Sıfır ekleme işleminden sonra

Sıfır ekleme işlemi ile (B + 2p) x (B + 2p) giriş matrisine F x F filtresi uygulanırsa, çıkış

matrisi boyutu (B + 2p-F + 1) x (B + 2p-F + 1) olmaktadır. Sıfır ekleme uyguladıktan sonra orijinal giriş boyutuyla (B x B) aynı boyut alınacağından Denklem (3.3) ve Denklem (3.4) elde edilir:

(B+2p-F+1) x(B+2p-F+1) eşittir BxB

Konvolüsyon katmanındaki çıktı bir sonraki katmanın girdisi olacaktır. Konvolüsyon katmanı ayrıca tüm negatif değerleri sıfıra getirmek için ReLU aktivasyon fonksiyonunu kullanmaktadır.

Havuzlama Katmanı (Pooling layer)

Havuzlama (pooling) katmanında boyutu düşürme işlemi yapılmaktadır. Yani konvolüsyondan sonra girdi görüntüsünün uzamsal hacmini azaltmak için kullanılmaktadır. İki konvolüsyon tabakası arasında kullanılır. Birkaç çeşit havuzlama işlemi vardır, ancak en çok kullanılan yöntem maksimum havuzlama (max-pooling)’dır. Diğer türleri olan ve aynı mantık ile çalışan average pooling ve L2-norm pooling yöntemleri de kullanılmaktadır. Konvolüsyon katmanından sonra tam bağlı katmanı havuzlama uygulamadan işlem yapılırsa, hesaplama maliyetli artacaktır ve bu istenmeyen bir durumdur. Bu nedenle havuzlama, giriş görüntüsünün boyutunu azaltmanın tek yoludur. Aşağıdaki örnekte, 2’li kaydırma yapılmıştır ve maksimum havuzlama uygulanmıştır. Ve böylece 4 x 4 boyut girişi 2 x 2 boyutuna indirilmiştir.

Şekil 3.24. Havuzlama işlemine örnek.

B+2p-F+1 = B

(3.3)

Havuzlama katmanında parametre yoktur, ancak iki hiperparametresi vardır. Bunlar; Filtre (F) ve Kaydırma (S).

Genel olarak, giriş boyutu W1 x H1 x D1 ise,

Burada W2, H2 ve D2 sırasıyla çıkışın genişliği, yüksekliği ve derinliğidir. Düzleştirme Katmanı

Düzleştirme katmanının fonksiyonu basitçe, nihai ve en önemli kısım olan tam bağlı katmanın girişinde verileri hazırlamaktan sorumludur. Yapay sinir ağlarının genelde girişi tek boyutlu dizilerden oluşan verilerden elde edilmektedir. Bu sinir ağındaki veriler ise konvolüsyon ve havuzlama katmanlarından gelen matrislerin tek boyutlu diziye döndürülmüş halidir.

Şekil 3.25. Düzleştirme katmanda gerçekleşen işleme bir örnek.

W2 = (W1−F) /S+1 (3.5)

H2 = (H1−F) /S+1 (3.6)

Tam Bağlı Katman

Bu kısım klasik yapay sinir ağıdır. Tam bağlı katman ağırlıklar, biaslar ve nöronları içermektedir [92]. Bir katmanındaki nöronlar başka bir katmandaki nöronlara bağlıdır. Verileri eğiterek farklı görüntü kategorileri arasında sınıflandırma işlemi gerçekleştirilmektedir. Tam bağlı katman kendinden önceki katmandan gelen verileri almakta ve çıkışta verilmesi gereken kategori sayısına dönüştürmektedir.

Şekil 3.26. Tam Bağlı Katman.

3.5. WORD2VEC KULLANARAK CNN İLE SORU SINIFLANDIRILMASI

Benzer Belgeler