Evrişimli Sinir Ağları (Convolutional Neural Networks - CNN), özellikle görüntü işleme, nesne tanıma ve bilgisayarlı görü alanlarında yaygın olarak kullanılan bir derin öğrenme modelidir. CNN'ler, geleneksel yapay sinir ağlarına kıyasla daha az parametreye sahip olmaları ve yerel özellikleri etkili bir şekilde öğrenebilmeleri nedeniyle tercih edilmektedir.
Evrişimli sinir ağlarının temelinde yapay sinir ağları yatmaktadır ve bu ağlar, insan beyninin işleyişi baz alınarak oluşturulmuş modellerdir. Ağın temel amacı, öğrenme işleminin gerçekleştirilmesi, öğretilerin yorumlanması ve yorum sonucunda sistemin otonom bir şekilde karar verebilmesidir. Yapay sinir ağları temelde üç katmandan meydana gelmektedir.
1. Giriş Katmanı (Input Layer)
2. Gizli Katman (Hidden Layer)
3. Çıkış Katmanı (Output Layer)
Giriş katmanında, özellikler sisteme aktarılır. Katmandaki düğüm sayısı, özelliği en iyi şekilde ifade edecek olan öznitelik sayısına eşittir. Gizli katman, giriş katmanından gelen değerleri belirli katsayılarla çarparak bu değerlere dönüşüm işlemleri uygular. Örneğin, bu düğümlerde belirli threshold koşulları uygulanarak output sayısı kadar değer elde edilebilir. Gizli katmandan sonra gelen çıkış katmanında ise elde edilen bulgulara göre bir tahminleme/yorumlama yapılır.
Tarihsel süreçte, yapay sinir ağları ilk olarak Warren S. McCulloch ve Walter Pitts tarafından 1943 yılında ortaya atılmış bir modeldir. Ancak o dönemde bilgisayar gücünün sınırları çok dar olduğu için bu modelin gücü yeterince anlaşılamamıştır. 2000'li yıllara gelindiği ise bilgisayar gücündeki ciddi artış, yapay sinir ağlarındaki başarının ve popülerliğin artmasına sebep olmuştur. Buna rağmen modelin çıkış noktasını oluşturan insan beyninde, yaklaşık olarak 100 milyar adet nöron bulunmaktadır. Günümüzdeki sistemlerle bu yapının tam olarak modellenmesi mümkün değildir. Ancak zamanla gelişen teknolojiyle birlikte bu modeller de sürekli olarak gelişmektedir.
CNN'nin Temel Bileşenleri
Bir evrişimli sinir ağı yapısı
Evrişim Katmanı (Convolutional Layer)
Evrişim katmanı, CNN'nin en önemli bileşenidir. Bu katman, girdi görüntüsü üzerinde filtreler (kernels) kullanarak yerel özellikleri çıkarır. Her filtre, görüntünün belirli bir bölgesini tarar ve bu bölgedeki piksellerle çarpılarak bir özellik haritası (feature map) oluşturur.
1. Filtre (Kernel): Genellikle 3x3 veya 5x5 boyutlarında olan matrislerdir. Bu filtreler, kenar, köşe veya doku gibi özellikleri algılamak için kullanılır.
2. Adım Sayısı (Stride): Filtrenin görüntü üzerinde kaydırılma adım sayısını belirler. Örneğin, stride=1 ise filtre bir piksel kaydırılır.
3. Padding: Görüntünün kenarlarına sıfır değerleri eklenerek boyutun korunması sağlanır.
Evrişim işlemi örneği (Yapay zeka ile oluşturulmuştur.)
Havuzlama Katmanı (Pooling Layer)
Evrişimsel Sinir Ağları (CNN) mimarisinde, birbirini izleyen birden fazla evrişim katmanının arasında havuzlama katmanı da bulunur. Havuzlama katmanının amacı, görüntüler çok büyük olduğunda parametre sayısını azaltarak görüntüyü küçültmektir. Bu işlem, her bir haritanın boyutsallığını azaltır ama önemli bilgileri korur. İki tür havuzlama yöntemi vardır. Bunlar, maksimum havuzlama yöntemi ve ortalama havuzlama yöntemidir.
Havuzlama katmanı örneği (Kredi: Mayank Jain)
Maksimum havuzlama yöntemi, evrişim katmanından sonra giriş verisinin uzamsal boyutunu azaltmak için kullanılır. İki evrişim katmanı arasında yer alır. Maksimum havuzlama yönteminde rotasyonel ve konumsal olarak değişmeden yükseklik ve genişlik azaltılarak baskın özellikler çıkarılması modelin etkili bir şekilde eğitilme sürecinin devam ettirilmesini sağlar.
Maksimum Havuzlama (Kredi: Afshine Amidi ve Shervine Amidi, CNN Handbook)
Ortalama Havuzlama (Kredi: Afshine Amidi ve Shervine Amidi, CNN Handbook)
Tam Bağlantılı Katman (Fully Connected Layer)
Evrişimsel Sinir Ağlarının son adımı bu katmanda gerçekleşir. Tam Bağlantı Katmanları, mimarinin bir katmanındaki bütün düğüm ve nöronlarının bir sonraki katmana bağlandığı bir yapay sinir ağ türüdür. Bu ağ türü hesaplama açısından karmaşık olmasının yanı sıra aşırı yüklenmeye meyillidir. Elde edilen verilere uygulanan Düzleştirme (Flattening) işleminden sonra sinir ağları ile öğrenme işlemi uygulanır.
Düzleştirme Katmanı (Kredi: Rubiscode.net)
Tam Bağlantılı Katman Çalışma Mantığı (Kredi: teknoloji.org)
CNN'nin Öğrenme Süreci
CNN’nin öğrenme süreci, modelin giriş verilerinden anlamlı özellikleri öğrenmesini ve ağırlıkları optimize ederek daha doğru tahminlerde bulunmasını sağlar. Bu süreç ileri yayılım (forward propagation), hata hesaplama, geri yayılım (backpropagation), optimizasyon ve ağırlık güncelleme adımlarından oluşur.
İleri Yayılım (Forward Propagation)
İleri yayılım, giriş verisinin CNN ağı boyunca katmanlar aracılığıyla işlenerek bir çıktı tahmini üretilmesini sağlar. Bu süreç şu aşamalardan oluşur:
1. Giriş Katmanı: Giriş olarak genellikle bir görüntü verilir. Örneğin, 28x28 piksel bir el yazısı rakamı veya 224x224x3 boyutunda renkli bir görüntü giriş olarak alınabilir.
2. Evrişim Katmanları: Girdi görüntüsü, evrişim katmanındaki filtrelerle (kerneller) işlenir. Her filtre, görüntünün belirli bir bölgesini tarar ve bu bölgedeki piksellerle çarpılarak bir özellik haritası (feature map) oluşturur. Örneğin, 3x3 boyutunda bir filtre, görüntü üzerinde kaydırılarak yerel özellikler çıkarılır.
3. Aktivasyon Fonksiyonu: Evrişim işleminden sonra, özellik haritasına bir aktivasyon fonksiyonu (genellikle ReLU) uygulanır. Bu adım, modelin doğrusal olmayan özellikleri öğrenmesini sağlar.
4. Havuzlama Katmanı: Havuzlama katmanı, özellik haritasının boyutunu küçültmek için kullanılır. Max pooling gibi yöntemlerle, belirli bir penceredeki en büyük değer seçilir. Bu, hesaplama maliyetini azaltır ve modelin ölçek değişikliklerine karşı daha dayanıklı olmasını sağlar.
5. Tam Bağlantılı Katman: Evrişim ve havuzlama katmanlarından çıkan özellikler, tam bağlantılı katmana (fully connected layer) beslenir. Bu katman, özellikleri birleştirerek sınıflandırma veya regresyon görevlerini gerçekleştirir.
6. Çıktı Katmanı: Son olarak, çıktı katmanında (örneğin softmax), modelin tahminleri hesaplanır. Örneğin, bir görüntünün hangi sınıfa ait olduğu belirlenir.
Kayıp Hesaplama (Loss Calculation)
İleri yayılım sonucunda elde edilen çıktılar, gerçek değerlerle (ground truth) karşılaştırılır. Bu karşılaştırma, modelin ne kadar hata yaptığını ölçmek için bir kayıp fonksiyonu (loss function) kullanılarak yapılır. Yaygın kayıp fonksiyonları şunlardır:
1. Çapraz Entropi Kaybı (Cross-Entropy Loss): Sınıflandırma görevlerinde kullanılır.
2. Ortalama Kare Hata (Mean Squared Error - MSE): Regresyon görevlerinde kullanılır.
Kayıp fonksiyonu, modelin performansını ölçer ve bu değer, modelin optimize edilmesi için kullanılır.
Geri Yayılım (Backpropagation)
Geri yayılım, modelin hatalarını minimize etmek için kullanılan bir optimizasyon sürecidir. Bu süreç, kayıp fonksiyonunun gradyanlarını hesaplayarak modelin parametrelerini (filtreler ve ağırlıklar) günceller. Geri yayılımın adımları şunlardır:
1. Gradyan Hesaplama: Kayıp fonksiyonunun, modelin her bir parametresine göre türevi (gradyan) hesaplanır. Bu gradyanlar, parametrelerin ne kadar ve hangi yönde güncellenmesi gerektiğini belirler.
2. Zincir Kuralı (Chain Rule): Geri yayılım, zincir kuralı kullanılarak gerçekleştirilir. Zincir kuralı, katmanlar arasındaki gradyanların birbirine bağlı olduğunu ve bu gradyanların geriye doğru yayıldığını ifade eder.
3. Gradyanların Güncellenmesi: Her bir katmanın gradyanları hesaplandıktan sonra, bu gradyanlar kullanılarak filtreler ve ağırlıklar güncellenir.
Parametre Güncelleme (Parameter Update)
Geri yayılım sırasında hesaplanan gradyanlar, optimizasyon algoritmaları (örneğin Gradient Descent) kullanılarak modelin parametrelerini güncellemek için kullanılır. Bu adım, modelin hatalarını minimize etmesini sağlar.
1. Gradyan İnişi: Gradyan inişi, kayıp fonksiyonunu minimize etmek için parametrelerin gradyanların tersi yönünde güncellenmesi işlemidir. Güncelleme adımı şu formülle ifade edilir:
Burada:
- θ: Modelin parametreleri (filtreler ve ağırlıklar),
- η: Öğrenme oranı (learning rate),
- ∇L(θ): Kayıp fonksiyonunun gradyanı.
2. Optimizasyon Algoritmaları: Gradyan inişinin yanı sıra, daha gelişmiş optimizasyon algoritmaları da kullanılabilir. Örneğin:
a. Momentum: Gradyan inişine momentum ekleyerek daha hızlı öğrenme sağlar.
b. Adam (Adaptive Moment Estimation): Hem momentum hem de öğrenme oranını adaptif olarak ayarlar.
CNN'nin Avantajları
1. Parametre Verimliliği: CNN'ler, tam bağlantılı katmanlara kıyasla daha az parametre kullanır. Bu, modelin daha hızlı eğitilmesini ve daha az bellek tüketmesini sağlar.
2. Yerel Özellikleri Öğrenme: CNN'ler, görüntünün yerel bölgelerindeki özellikleri etkili bir şekilde öğrenebilir.
3. Ölçek ve Dönüşüm Değişmezliği: Havuzlama katmanları sayesinde CNN'ler, ölçek ve dönüşüm değişikliklerine karşı daha dayanıklıdır.
Uygulama Alanları
CNN'ler, aşağıdaki alanlarda yaygın olarak kullanılmaktadır:
1. Görüntü ve video anlamlandırma
2. Tavsiye/öngörü sistemleri
3. Görüntü Sınıflandırma
4. Görüntü Segmentasyonu
5. Medikal Görüntü İşleme
6. Doğal Dil İşleme
7. Beyin-Bilgisayar Arayüzü
8. Zaman Serileri