Atlas’ta ara

Keşfetmeye buradan başla

Öğren/Evrişim

Evrişimli ağlar: görüntüde küçük bir pencere

Bir görüntüdeki her pikseli ayrı ayrı bağlamak neden israftır? Evrişim, aynı küçük çekirdeği her konumda kullanır: ağırlık paylaşımı, kenar bulma, havuzlama ve katmanların birikimi.

ÖN BİLGİ

Bu yazıyı rahat izlemek için şunlara önce bakmış olman iyi olur:

01Her pikseli her nörona bağlamak#

224×224 piksellik renkli bir görüntü, 224 × 224 × 3 = 150.528 sayıdır. Bunu bin nöronlu tam bağlı bir katmana bağlarsan, ağırlık sayısı 150.528 × 1.000 + 1.000 = 150.529.000 olur; tek bir katman için bile yüz elli milyon parametre. Üstelik bir görüntünün anlamı çoğunlukla yerel örüntülerden doğar (kenarlar, köşeler, dokular) ve aynı örüntü görüntünün her yerinde olabilir. Bir kedi kulağını sol üstte tanımayı öğrenen bir ağırlık takımı, sağ altta da işe yaramalı.

Evrişimli ağlar bu iki gözleme dayanır: yerellik (her çıktı, küçük bir komşuluğa bakar) ve ağırlık paylaşımı (aynı küçük çekirdek görüntünün her konumunda kullanılır). 3×3’lük bir çekirdekle, 3 renk kanalı ve 64 filtre için gereken parametre sayısı: 3 × 3 × 3 × 64 + 64 = 1.792. Aynı girdi için tam bağlı katmanla karşılaştır: 150 milyon.

02Pencereyi gezdir#

Bir çekirdek, genellikle 3×3’lük küçük bir sayı tablosudur. Görüntüde bir pencere seçilir, penceredeki dokuz piksel çekirdeğin dokuz ağırlığıyla çarpılıp toplanır; sonuç çıktının bir hücresi olur. Pencere bir piksel kaydırılır ve işlem tekrarlanır. Aşağıda 10×10’luk bir görüntü (bir blok ve bir köşegen çizgi) ve beş çekirdek var. Çekirdek seç, pencereyi gezdir.

01

Küçük bir pencere, her yerde aynı ağırlık

Hesaplanan · temsili girdiler

Bir çekirdek seç ve pencereyi görüntü üzerinde gezdir: her konumda aynı dokuz ağırlık, altındaki dokuz pikselle çarpılıp toplanır. Dikey ve yatay kenar çekirdeklerinin neden farklı yerleri yakaladığına bak.

Girdi (10×10)
Çıktı (8×8)
SEÇİLİ PENCERE: 9 ÇARPIMIN TOPLAMI0,00 + 0,00 + 1,00 + 0,00 + 0,00 + 2,00 + 0,00 + 0,00 + 1,00
ÇIKTI DEĞERİ4,00
Çekirdeğin sayıları
−1,000,001,00
−2,000,002,00
−1,000,001,00
10×10’luk görüntü öğretim için üretilmiştir (bir blok ve bir köşegen çizgi). Çekirdekler elle seçilmiştir; hiçbiri öğrenilmemiştir. Hesap (çapraz ilişki, ReLU, 2×2 en büyük havuzlama) tarayıcıda gerçekten yapılır. Öğrenen bir evrişimli ağda bu çekirdeklerin sayıları eğitimle bulunur.

Dikey kenar çekirdeğini seçtiğinde bloğun sol kenarında güçlü pozitif, sağ kenarında güçlü negatif değerler çıkar; bloğun içi ve dışı sıfıra yakındır, çünkü düz alanda çekirdeğin pozitif ve negatif yarısı birbirini götürür. Yatay kenar çekirdeği ise bloğun dikey kenarlarına tepki vermez, üst ve alt kenarlarına verir. Hiçbir çekirdek “kenar nedir” bilmez; kenarı bulan, ağırlıkların düzenidir. Bulanıklaştırma çekirdeği komşuların ortalamasını alır; keskinleştirme ise merkezi komşularından ayrıştırır.

Bir özelliği de test ettim: görüntüyü bir piksel sağa kaydırırsan çıktı da aynen bir piksel sağa kayar (sınırlar hariç). Buna kaymaya eşdeğerlik denir ve ağırlık paylaşımının doğrudan sonucudur: aynı örüntü nerede olursa olsun aynı tepkiyi üretir.

03ReLU, havuzlama ve üst üste katmanlar#

Çekirdek çıktısına genellikle ReLU uygulanır (negatifler sıfırlanır; nöron yazısındaki etkinleştirme). Ardından havuzlama: her 2×2’lik pencerenin en büyük değeri alınır ve çıktı her kenarda yarıya iner. Demoda ReLU ve 2×2 havuzlamayı aç: 8×8’lik çıktı 4×4’e iner, ama güçlü tepkiler korunur; küçük kaymalar sonucu pek değiştirmez.

Katmanları üst üste koyduğunda, ikinci katmanın her hücresi ilk katmanın 3×3’lük bir bölgesine, o da girdinin 3×3’lük bölgelerine bakar; yani bakış alanı büyür. Adım 1 olan 3×3’lük L katman, girdide 1 + 2L genişlikli bir bölgeyi görür: iki katman 5×5, üç katman 7×7. Böylece ilk katmanlar kenar gibi basit örüntüleri, sonraki katmanlar bunları birleştirerek daha karmaşık biçimleri yakalar. Bu bir düzenektir, her ağın tam olarak böyle öğrendiğinin garantisi değil.

04Tarihten bugüne#

LeCun ve arkadaşlarının 1998 tarihli çalışması, evrişimli ağların el yazısı rakam tanıma gibi 2 boyutlu şekillerdeki değişkenliği ele almak için tasarlandığını ve bu görevde karşılaştırılan diğer tekniklerden daha iyi sonuç verdiğini gösterdi; çek okuma gibi uygulamalarda da kullanıldı. Gradient-based learning applied to document recognition ↗ 2012’de AlexNet, yaklaşık 60 milyon parametreli ve beş evrişim katmanlı bir ağdı; makale, ILSVRC-2012 yarışmasına girilen bir varyantın ilk beş tahminde %15,3 hataya ulaştığını, ikinci sıradaki sistemin ise %26,2’de kaldığını bildirir (AI tarihi yazısına bak). AlexNet makalesi ↗

Bugün evrişim yalnızca görüntüde değil: ses modellerinde (wav2vec 2.0 konuşmayı önce evrişimli bir ağdan geçirir) ve dalga biçimi üreten WaveNet’te (genişletilmiş nedensel evrişimler) kullanılır. Görüntüde ise ViT gibi dikkat tabanlı modeller rekabet ediyor: yazarlar ViT’nin büyük veriyle ön eğitildiğinde CNN’lerle yarıştığını, küçük veri kümelerinde ise CNN’lerin yerleşik varsayımlarının (yerellik, ağırlık paylaşımı) avantaj sağladığını bildirdi. Yani seçim, “hangi mimari daha iyi” değil, elindeki veri miktarına ve ne kadar varsayım gömmek istediğine bağlıdır.

Etiketli veriyle çalışan yöntemlerin dışında, tablo verisinde hâlâ en güçlü araçlardan biri sinir ağı değil: Tablo verisinde ağaçlar neden hâlâ güçlü?

KENDİNİ SINA

Bu yazıyı bitirdiğinde:

  • Evrişim ve ağırlık paylaşımının parametre sayısını nasıl düşürdüğünü anlatabilirsin.
  • Bir çekirdeğin kenar gibi örüntüleri nasıl bulduğunu açıklayabilirsin.
  • ReLU ve havuzlamanın ne yaptığını ve katmanların alım alanını nasıl büyüttüğünü söyleyebilirsin.

Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.

İlerleme yalnızca bu tarayıcıda saklanır.
BAĞLANTILI KAVRAMLAR

Bir fikri diğerine bağla.

Rotanı gör: sıradaki adım ne? Bütün dersler