Yapay zeka temelleri
CNN’ler (Convolutional Neural Networks) Nedir?
Belki Facebook (META ) veya Instagram’ın bir görüntüdeki yüzleri otomatik olarak tanıyabildiğini veya Google’ın bir fotoğrafı yükleyerek benzer fotoğrafları arama yapabildiğini merak etmişsinizdir. Bu özellikler bilgisayar vizyonu örnekleridir ve bunlar convolutional neural networks (CNNs) tarafından sağlanmaktadır. Peki, convolutional neural networks tam olarak nedir? Bir CNN’nin mimarisine derinlemesine bakalım ve nasıl çalıştığını anlayalım.
Neural Networks Nedir?
Convolutional neural networks hakkında konuşmaya başlamadan önce, düzenli bir sinir ağı hakkında kısaca bilgi verelim. Sinir ağları hakkında başka bir makale mevcuttur, bu nedenle burada çok derine girmeyeceğiz. Ancak kısaca tanımlamak gerekirse, bunlar insan beyninden esinlenen hesaplamalı modellerdir. Bir sinir ağı, verileri alarak ve “ağırlıklar” dediğimiz, girdi özelliklerinin birbirleriyle ve nesnenin sınıfıyla ilgili varsayımlarını değiştirerek çalışır. Ağ eğitilirken ağırlıkların değerleri ayarlanır ve umarım doğru ilişkileri yakalayarak öğrenirler.
Bu, bir feed-forward sinir ağı nasıl çalıştığıdır ve CNN’ler iki parçadan oluşur: bir feed-forward sinir ağı ve bir grup convolutional katman.
Convolutional Neural Networks (CNNs) Nedir?
Convolutional neural network’te gerçekleşen “convolutions” nedir? Bir convolution, bir dizi ağırlık oluşturan bir matematiksel işlemdir, temelde bir görüntü parçasının temsilini oluşturur. Bu ağırlık kümesi, bir çekirdek veya filtre olarak adlandırılır. Oluşturulan filtre, tüm girdi görüntüsünden daha küçüktür ve sadece görüntünün bir bölümünü kapsar. Filtredeki değerler, görüntüdeki değerlerle çarpılır. Filtre daha sonra yeni bir görüntü parçasının temsilini oluşturmak için hareket ettirilir ve bu işlem tüm görüntü kapsanana kadar tekrarlanır.
Bunu başka bir şekilde düşünmek için, bir tuğla duvarı hayal edin, tuğlalar girdi görüntüsündeki pikselleri temsil etsin. Bir “pencere” duvarda ileri geri hareket ediyor, bu da filtredir. Pencereden görünen tuğlalar, filtredaki değerlerle çarpılan piksellerdir. Bu nedenle, bir filtreyi kullanarak ağırlıklar oluşturma yöntemi often “sliding windows” tekniği olarak adlandırılır.
Filtrelerin tüm girdi görüntüsünü kapsamasının sonucu, tüm görüntüyü temsil eden iki boyutlu bir dizi oluşturur. Bu dizi, “özellik haritası” olarak adlandırılır.
Neden Convolutions Gerekir?
Peki, convolutions neden gerekli? Convolutions gerekli çünkü bir sinir ağı, bir görüntüdeki pikselleri sayısal değerler olarak yorumlayabilmelidir. Convolutional katmanların işlevi, görüntüyü sinir ağı tarafından yorumlanabilen sayısal değerlere dönüştürmektir. Convolutional ağdaki filtrelerin işi, daha sonra sinir ağındaki sonraki katmanlara geçirilebilecek bir dizi değer oluşturmaktır.
Filtreler ve Kanallar

Foto: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)
CNN’ler sadece bir filtreyi girdi görüntülerinden desenleri öğrenmek için kullanmaz. Birden fazla filtre kullanılır, çünkü farklı filtreler tarafından oluşturulan farklı diziler, girdi görüntüsünün daha karmaşık ve zengin bir temsilini sağlar. CNN’ler için ortak filtre sayıları 32, 64, 128 ve 512’dir. Filtreler ne kadar çoksa, CNN’nin girdi verilerini incelemek ve onlardan öğrenmek için o kadar çok fırsat vardır.
Bir CNN, nesnelerin sınırlarını belirlemek için piksel değerlerindeki farklılıkları analiz eder. Bir grayscale görüntüde, CNN sadece siyah ve beyaz, yani ışık ve karanlık arasındaki farklılıkları dikkate alır. Görüntüler renkli olduğunda, CNN sadece karanlık ve ışık değil, aynı zamanda kırmızı, yeşil ve mavi renk kanallarını da dikkate alır. Bu durumda, filtreler görüntüdeki kanallar gibi 3 kanal sahiptir. Bir filtrenin sahip olduğu kanal sayısı, onun derinliği olarak adlandırılır ve filtrenin kanal sayısı, görüntünün kanal sayısına karşılık gelmelidir.
Convolutional Neural Network (CNN) Mimarisi
Şimdi bir convolutional neural network’un tam mimarisine bakalım. Her convolutional ağın başında bir convolutional katman bulunur, çünkü görüntü verilerini sayısal dizilere dönüştürmek gerekir. Ancak convolutional katmanlar, diğer convolutional katmanların ardından da gelebilir, yani bu katmanlar birbirlerinin üzerine yığılabilir. Birden fazla convolutional katman olması, bir katmandan çıkan çıktıların daha fazla convolution geçirebileceği ve ilgili desenlere göre gruplanabileceği anlamına gelir. Pratikte bu, görüntü verilerinin convolutional katmanlardan geçerken, ağın görüntünün daha karmaşık özelliklerini “tanıma” başladığını gösterir.
ConvNet’in erken katmanları, basit çizgileri oluşturan pikseller gibi düşük seviyeli özellikleri çıkarmakla sorumludur. ConvNet’in daha sonraki katmanları, bu çizgileri şekillere birleştirecektir. Bu yüzeyden derinlemesine analize doğru giden süreç, ConvNet’in kompleks şekilleri seperti hayvanlar, insan yüzleri ve arabaları tanıyabildiği noktaya kadar devam eder.
Veriler tüm convolutional katmanlardan geçtikten sonra, ağın yoğun olarak bağlı kısmına geçer. Yoğun olarak bağlı katmanlar, geleneksel bir feed-forward sinir ağı gibi görünür, birbirlerine bağlı düğümlerden oluşan bir dizi katmandan oluşur. Veriler bu yoğun olarak bağlı katmanlardan geçer ve convolutional katmanlar tarafından çıkarılan desenleri öğrenir, böylece ağ nesneleri tanıyabilme yeteneğine sahip olur.












