Evrişimli Sinir Ağlarında Dolgu (Padding)
Evrişimli Sinir Ağları (CNN’ler), görüntü işleme, doğal dil işleme ve konuşma tanıma gibi birçok alanda devrim yaratmıştır. Bu başarının temelinde yatan önemli bir operasyon ise evrişimdir (convolution). Evrişim operasyonunun verimli bir şekilde çalışabilmesi ve ağın öğrenme yeteneğini artırabilmesi için dolgu (padding) adı verilen bir teknik kullanılır. Bu makalede, evrişimli sinir ağlarında dolgunun ne olduğunu, neden kullanıldığını, farklı dolgu türlerini, dolgunun çıktının boyutları üzerindeki etkisini ve dolgu seçiminin model performansı üzerindeki önemini detaylı bir şekilde inceleyeceğiz.
Evrişim Operasyonunun Temelleri ve Çıktı Boyutu Sorunu
Evrişimli Sinir Ağlarının kalbinde evrişim katmanı bulunur. Bu katman, bir girdi tensörü (genellikle bir görüntü) üzerinde küçük filtreler (çekirdekler) kaydırarak özellik haritaları (feature maps) oluşturur. Filtre, girdi üzerinde belirli bir konuma getirildiğinde, girdi ile filtrenin ağırlıklarının eleman bazında çarpımı ve ardından bu çarpımların toplanmasıyla bir çıktı değeri elde edilir. Bu işlem, filtre girdi boyunca kaydırıldıkça tekrarlanır ve sonuçta bir özellik haritası üretilir.
Evrişim operasyonunun temel bir sorunu, çıktının boyutlarının girdi boyutlarından daha küçük olma eğiliminde olmasıdır. Bu durumun birkaç nedeni vardır:
1. Kenar Etkileri (Edge Effects): Filtre, girdi tensörünün kenarlarına yaklaştığında, girdi üzerinde kaydırılabileceği pozisyon sayısı azalır. Örneğin, 3×3’lük bir filtre ve 5×5’lik bir girdi düşündüğümüzde, filtre yalnızca 3 pozisyon boyunca yatay ve dikey olarak kaydırılabilir. Bu, çıktı boyutunun girdi boyutundan daha küçük olmasına yol açar.
2. Bilgi Kaybı: Her evrişim katmanında çıktı boyutunun azalması, zamanla özellik haritalarının küçülmesine ve en önemlisi, girdinin kenarlarındaki bilginin daha hızlı bir şekilde kaybolmasına neden olur. Kenarlar genellikle nesnelerin sınırları, köşeler gibi önemli yapısal bilgileri içerir. Bu bilginin kaybı, modelin karmaşık desenleri öğrenme yeteneğini olumsuz etkileyebilir.
3. Ağ Derinliği ve Boyut Azalması: Derin evrişimli sinir ağlarında, her katmanda çıktı boyutunun azalması, ağın sonlarına doğru özellik haritalarının çok küçük hale gelmesine neden olabilir. Bu, yeterli detayın yakalanamamasına ve modelin genelleme yeteneğinin düşmesine yol açabilir.
Bu sorunları çözmek ve evrişim operasyonunun daha etkili olmasını sağlamak için dolgu tekniği devreye girer.
Dolgu (Padding) Nedir?
Dolgu, girdi tensörünün kenarlarına eklenen sabit değerlerden (genellikle sıfır) oluşan piksellerdir. Bu eklenen pikseller, girdi tensörünün boyutlarını artırır ve evrişim operasyonunun girdi üzerinde daha fazla kaydırma pozisyonuna sahip olmasını sağlar. Dolgunun temel amacı, evrişim işlemi sırasında kenarlardaki bilginin korunmasına yardımcı olmak ve çıktı özellik haritasının boyutunu kontrol etmektir.
Dolgu, girdi tensörünün etrafına eklenir. Örneğin, bir görüntüye dolgu eklediğimizde, görüntünün üst, alt, sol ve sağ kenarlarına belirli sayıda piksel eklenir. Bu piksellerin değeri genellikle sıfır olur, ancak bazı özel durumlarda farklı değerler de kullanılabilir.
Dolgunun Neden Kullanılır?
Dolgu kullanmanın başlıca nedenleri şunlardır:
1. Kenar Bilgisinin Korunması: Dolgu, filtrelerin girdi tensörünün kenarlarında daha fazla kaydırılmasına olanak tanır. Bu sayede, kenarlardaki pikseller de filtrenin merkezi bir parçası olarak evrişim işlemine daha fazla dahil edilir. Sonuç olarak, kenar bilgileri daha iyi korunur ve çıktı özellik haritasında kaybolmaz. Bu, özellikle nesne tanıma gibi görevlerde, nesnelerin sınırlarının doğru bir şekilde tespit edilmesi için kritiktir.
2. Çıktı Boyutunun Kontrol Edilmesi: Dolgu, çıktı özellik haritasının boyutunu girdi boyutuna göre kontrol etmemizi sağlar. Doğru miktarda dolgu ekleyerek, çıktı boyutunun girdi boyutuna eşit olmasını (full padding veya same padding) veya belirli bir oranda azalmasını sağlayabiliriz. Bu, ağ mimarisinin tasarımında esneklik sağlar. Örneğin, bazı mimarilerde her katmanda çıktı boyutunun aynı kalması istenir.
3. Daha Fazla Evrişim İmkanı: Dolgu, filtrelerin girdi üzerinde daha fazla pozisyonda kaydırılmasına izin vererek daha fazla evrişim işlemi yapılmasını sağlar. Bu, ağın girdideki desenleri daha kapsamlı bir şekilde öğrenmesine yardımcı olabilir.
4. Ağ Derinliği ve Verimlilik: Dolgu, özellikle derin ağlarda, her katmanda boyutun aşırı derecede küçülmesini engelleyerek daha fazla katmanın etkili bir şekilde kullanılmasını sağlar. Bu, daha karmaşık ve daha iyi performans gösteren modellerin oluşturulmasına katkıda bulunur.
Dolgu Türleri
Dolgu, uygulandığı şekle ve kullanılan değere göre farklı türlere ayrılabilir. En yaygın kullanılan dolgu türleri şunlardır:
1. Sıfır Dolgu (Zero Padding)
Sıfır dolgu, en yaygın kullanılan dolgu türüdür. Bu teknikte, girdi tensörünün kenarlarına sıfır değerine sahip pikseller eklenir. Bu piksellerin değeri, evrişim işlemi sırasında diğer girdilerle aynı şekilde işlenir. Sıfır dolgu, hem hesaplama açısından basittir hem de genellikle iyi sonuçlar verir.
* Çıktı Boyutu Üzerindeki Etkisi: Eğer P kadar dolgu eklenirse (her kenara P piksel), K filtre boyutu ve S adım (stride) ile, çıktı boyutu N_out şu şekilde hesaplanır:
N_out = floor((N_in + 2P - K) / S) + 1
Burada N_in girdi boyutudur.
Eğer S=1 ve K tek sayı ise, çıktı boyutunun girdi boyutuna eşit olması için 2P = K - 1 olacak şekilde dolgu eklenmesi gerekir. Bu duruma “same padding” denir.
2. Yansıtma Dolgu (Reflection Padding)
Yansıtma dolgu, girdi tensörünün kenarlarındaki pikselleri kullanarak dolgu oluşturur. Bu teknikte, kenara eklenen dolgu pikselleri, girdi tensörünün kenarındaki piksellerin yansıtılmış bir kopyasıdır. Örneğin, kenara eklenen bir piksel, kenardaki ilk pikselin değeriyle aynı olur ve bu şekilde devam eder.
* Avantajı: Sıfır dolgunun aksine, yansıtma dolgu kenarlardaki değerleri sıfırlamaz, bu da özellikle kenarlarda önemli desenler olduğunda daha iyi sonuçlar verebilir. Görüntünün kenarlarındaki doku ve desenlerin devamlılığını sağlamaya yardımcı olur.
* Dezavantajı: Sıfır dolguya göre hesaplama açısından biraz daha karmaşıktır.
3. Tekrarlama Dolgu (Replication Padding) veya Kenar Dolgu (Edge Padding)
Tekrarlama dolgu, girdi tensörünün kenarındaki son pikselin değerini kenara eklenen tüm dolgu pikselleri için kullanır. Yani, en dış kenardaki piksel, kenara eklenen tüm dolgu alanını doldurur.
* Avantajı: Yansıtma dolguya benzer şekilde, kenarlardaki bilgiyi sıfırlamaz.
* Dezavantajı: Yansıtma dolgu kadar doğal bir devamlılık sağlamayabilir, çünkü kenardaki tek bir pikselin değeri tüm kenarı doldurur.
4. Boyut Korumalı Dolgu (Same Padding)
Boyut korumalı dolgu, aslında bir dolgu türü olmaktan çok, dolgunun bir hedefidir. Bu teknikte amaç, evrişim katmanının çıktı boyutunu, girdi boyutuna eşit tutmaktır. Bu, yukarıda bahsedilen N_out = N_in koşulunu sağlayan dolgu miktarı (P) kullanılarak elde edilir. Genellikle, filtre boyutu K ve adım S için, 2P = K - 1 (eğer S=1 ve K tek ise) olacak şekilde sıfır dolgu eklenerek gerçekleştirilir.
* Avantajı: Ağ mimarisini tasarlarken büyük esneklik sağlar. Katmanlar arasında çıktı boyutunun aynı kalması, daha basit ağ tasarımlarına ve özellik haritalarının boyutunu koruyarak daha fazla katman ekleme olanağına yol açar.
* Dezavantajı: Her zaman tam olarak girdi boyutunu korumak mümkün olmayabilir, özellikle filtre boyutu çift olduğunda veya adım değeri 1’den büyük olduğunda. Bu durumlarda, çıktı boyutu girdi boyutundan biraz farklı olabilir.
Dolgu Seçiminin Çıktı Boyutları Üzerindeki Etkisi
Dolgu miktarı (P), filtre boyutu (K) ve adım (S) evrişim katmanının çıktı boyutunu belirleyen temel parametrelerdir.
Genel formül:
N_out = floor((N_in + 2P - K) / S) + 1
Bu formülden yola çıkarak farklı senaryoları inceleyelim:
* Dolgu Yok (P=0):
N_out = floor((N_in - K) / S) + 1
Bu durumda çıktı boyutu kesinlikle girdi boyutundan küçük olacaktır (K>1 ise).
* Same Padding (Çıktı Boyutu = Girdi Boyutu, N_out = N_in):
Eğer S=1 ve K tek sayı ise, N_in = floor((N_in + 2P - K) / 1) + 1 denklemini çözerek 2P = K - 1 elde ederiz. Yani, dolgu miktarı P = (K - 1) / 2 olmalıdır. Örneğin, 3×3’lük bir filtre için P = (3-1)/2 = 1 olur. Her kenara 1 piksel dolgu eklenir. 5×5’lik bir filtre için P = (5-1)/2 = 2 olur.
* Full Padding (Maksimum Dolgu):
Bu terim genellikle daha az kullanılır, ancak çıktı boyutunun mümkün olduğunca büyük tutulduğu bir durumu ifade edebilir. Genellikle, filtre N_in boyutuna tam olarak sığacak şekilde dolgu eklenir. Bu, filtrenin her girdiyi en az bir kez merkezlemesidir. Çıktı boyutu N_in + K - 1 olabilir. N_out = N_in + K - 1 için P‘yi hesaplamak gerekir.
Örnek:
Bir girdi tensörünün boyutu 28×28 olsun (N_in = 28).
Filtre boyutu 3×3 (K = 3).
Adım 1 (S = 1).
* Dolgu Yok (P=0):
N_out = floor((28 + 2*0 - 3) / 1) + 1 = floor(25 / 1) + 1 = 25 + 1 = 26.
Çıktı boyutu 26×26 olur. Girdi boyutundan 2 piksel azalır (her kenardan 1 piksel).
* Same Padding (P=1):
N_out = floor((28 + 2*1 - 3) / 1) + 1 = floor(27 / 1) + 1 = 27 + 1 = 28.
Çıktı boyutu 28×28 olur. Girdi boyutu korunur.
* Farklı Adım Değerleri:
Eğer N_in = 28, K = 3, S = 2 ise:
* Dolgu Yok (P=0):
N_out = floor((28 + 2*0 - 3) / 2) + 1 = floor(25 / 2) + 1 = floor(12.5) + 1 = 12 + 1 = 13.
Çıktı boyutu 13×13 olur.
* Same Padding Hedefi: N_out = 28 olmasını istiyoruz. Ancak S=2 olduğunda N_out = N_in koşulunu tam olarak sağlamak genellikle mümkün değildir. Bu durumda, kütüphaneler genellikle çıktı boyutunu ceil(N_in / S) gibi bir değere yuvarlar. Örneğin, PyTorch’ta padding='same' kullanıldığında, padding değeri otomatik olarak ayarlanır.
### Dolgu Seçiminin Model Performansı Üzerindeki Etkisi
Dolgu seçimi, evrişimli sinir ağlarının performansı üzerinde önemli bir etkiye sahip olabilir:
1. Kenar Bilgisinin Korunması: Sıfır dolgu, kenarlara sıfır ekleyerek bu bölgelerdeki bilgiyi “seyreltir”. Yansıtma veya tekrarlama dolgu gibi yöntemler, kenarlardaki orijinal bilgiyi daha iyi koruyarak, özellikle nesnelerin kenarlarının veya ince detayların önemli olduğu durumlarda daha iyi sonuçlar verebilir.
2. Ağ Mimarisi ve Boyut Küçülmesinin Yönetimi: “Same padding” kullanmak, ağın her katmanında özellik haritalarının boyutunu koruyarak daha derin ağların oluşturulmasına olanak tanır. Bu, modelin daha karmaşık hiyerarşik özellikleri öğrenmesine yardımcı olabilir. Boyutun sürekli küçülmesi, özellikle ilk katmanlarda önemli bilgilerin kaybolmasına neden olabilir.
3. Aşırı Uyum (Overfitting) ve Az Uyum (Underfitting):
* Çok fazla dolgu kullanmak (özellikle “same padding” ile birlikte), modelin girdideki her detayı yakalamaya çalışmasına neden olabilir. Bu, özellikle küçük veri kümelerinde aşırı uyuma yol açabilir.
* Dolgu kullanmamak veya çok az dolgu kullanmak, kenarlardaki önemli bilgilerin kaybolmasına ve modelin yeterli özelliği öğrenememesine (az uyum) neden olabilir.
4. Filtrelerin Etkinliği: Dolgu, filtrelerin girdi üzerinde daha fazla kaydırılmasına izin vererek, filtrelerin girdinin farklı bölgelerindeki desenleri daha fazla keşfetmesini sağlar. Bu, filtrelerin daha genel ve sağlam özellikler öğrenmesine yardımcı olabilir.
### Uygulamada Dolgu Kullanımı
Popüler derin öğrenme kütüphaneleri (TensorFlow, PyTorch vb.), evrişim katmanları için dolgu seçenekleri sunar. Bu seçenekler genellikle şunları içerir:
* padding='valid' (Dolgu Yok): Bu seçenek, hiçbir dolgu eklenmediği anlamına gelir. Çıktı boyutu, dolgu olmadan hesaplanan standart evrişim formülüne göre daha küçük olacaktır.
* padding='same' (Boyut Korumalı Dolgu): Bu seçenek, çıktı boyutunu girdi boyutuna eşit tutmaya çalışır. Kütüphane, gerekli dolgu miktarını otomatik olarak hesaplar. Genellikle, filtre boyutu K ve adım S için, N_out = N_in olacak şekilde dolgu eklenir.
* Sayısal Dolgu Değeri (Örn: padding=1): Bu seçenek, girdi tensörünün her kenarına belirtilen sayıda piksel eklenmesini sağlar. Örneğin, padding=1 ile 3×3’lük bir filtre kullanıldığında, bu genellikle (K-1)/2‘ye karşılık gelir ve “same padding” etkisini verir.
Pratikte, çoğu modern CNN mimarisi, özellik haritalarının boyutunu korumak ve kenar bilgisini daha iyi işlemek için “same padding” veya buna eşdeğer dolgu miktarlarını kullanır. Bu, mimarinin daha modüler ve tekrar kullanılabilir olmasını sağlar.
### Sonuç
Dolgu, evrişimli sinir ağlarında evrişim operasyonunun temel bir bileşenidir. Kenar bilgisinin korunması, çıktı boyutunun kontrol edilmesi ve ağın öğrenme kapasitesinin artırılması gibi kritik görevleri yerine getirir. Sıfır dolgu en yaygın kullanılan yöntem olsa da, yansıtma ve tekrarlama dolgu gibi alternatifler, kenar bilgilerinin daha iyi korunması gerektiğinde faydalı olabilir. “Same padding” ise ağ mimarisi tasarımında büyük esneklik sağlayarak, özellik haritalarının boyutunu korumaya yardımcı olur. Dolgu seçimi, modelin performansı üzerinde doğrudan bir etkiye sahip olduğundan, mimari tasarım aşamasında dikkatli bir şekilde değerlendirilmelidir. Doğru dolgu stratejisi, modelin daha iyi genelleme yapmasına, daha doğru tahminler üretmesine ve daha karmaşık görevleri başarıyla yerine getirmesine katkıda bulunur.
