CNN'in temel yapı taşları nelerdir? Convolution katmanının çıktı boyutunu nasıl hesaplarsınız?
Cevap
Convolutional Neural Network, görüntü gibi ızgara yapılı verilerde yerel örüntüleri öğrenen bir ağdır. Temel fikir: küçük bir filtre (kernel) görüntü üzerinde kaydırılır ve her konumda aynı ağırlıklar kullanılır.
Yapı taşları
- Convolution katmanı: Kenar, doku gibi yerel özellikleri çıkarır.
- Aktivasyon (genelde ReLU).
- Pooling (max/average): Uzamsal boyutu küçültür, küçük kaymalara karşı dayanıklılık sağlar.
- Normalization (BatchNorm) ve residual connection (ResNet).
- Sonda global average pooling ve fully connected sınıflandırıcı.
Neden fully connected yerine CNN?
- Parametre paylaşımı: 3x3'lük bir filtre tüm görüntüde aynıdır. 224x224x3 bir görüntüye FC katman milyonlarca parametre gerektirirdi.
- Yerel bağlantı: Her nöron sadece küçük bir bölgeye bakar.
- Translation equivariance: Nesne kaysa özellik haritası da kayar.
- Katmanlar derinleştikçe receptive field büyür: kenar, sonra şekil, sonra nesne parçaları.
Çıktı boyutu formülü
çıktı = floor((girdi - kernel + 2·padding) / stride) + 1Örnek: 32x32 girdi, kernel 3, padding 1, stride 1 olursa çıktı 32x32 olur ("same" padding). Stride 2 olursa 16x16.
Parametre sayısı: (kernel_h · kernel_w · in_channels + 1) · out_channels. 3x3, 64 kanaldan 128 kanala giden bir katman için (3·3·64 + 1)·128 = 73.856.
import torch.nn as nn
conv = nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, stride=1, padding=1)Not: 2025 itibarıyla görüntüde Vision Transformer (ViT) ve ConvNeXt gibi modeller yaygın olsa da CNN'ler edge cihazlarda ve küçük veri setlerinde hâlâ çok kullanılır.
İlgili Derin Öğrenme soruları
- NumPy ile sayısal olarak kararlı (numerically stable) softmax ve cross-entropy loss yazın. Logit'lere göre gradyanı nedir?
- PyTorch ile bir sınıflandırma modeli için eksiksiz bir training loop yazın. Hangi adımlar sık unutulur?
- Transfer learning nedir? Önceden eğitilmiş bir modeli küçük bir veri setine nasıl fine-tune edersiniz?
- Embedding nedir? One-hot encoding'e göre avantajı nedir ve nerelerde kullanılır?
- Transformer mimarisini anlatın. Encoder-only, decoder-only ve encoder-decoder modeller arasındaki fark nedir?
- Self-attention nasıl çalışır? Scaled dot-product attention'ı NumPy ile yazın ve neden sqrt(d_k) ile bölündüğünü açıklayın.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.