Derin Öğrenme Terimleri: Katmanlar, Aktivasyon ve Backprop Örnekleri
Derin Öğrenme ve Sinir Ağları
Derin Öğrenme Terimleri: Katmanlar, Aktivasyon ve Backprop Örnekleri

Giriş — Ne öğreneceksiniz?
Bu makale, "ai terimleri ve anlamları" arayan genel okurlar için hazırlanmıştır. Derin öğrenmenin temel yapı taşlarını (katmanlar, aktivasyon fonksiyonları, backpropagation) Türkçe olarak tanımlıyor, basit bir backprop örneği üzerinden adım adım ilerliyor ve uygulamada işe yarayan pratik ipuçları veriyoruz. Temel tanımlar için Amazon Web Services ve Stanford kaynaklarından yararlandık; ilgili yerlere makale içinde bağlantılar bulunmaktadır.
Derin öğrenmeye kısa bir bakış ve katmanlar
Derin öğrenme, çok katmanlı yapay sinir ağları kullanarak verilerden öğrenme yeteneği sağlayan bir yapay zeka alanıdır. Katmanlar, modelin veri üzerinde giderek daha soyut temsiller öğrenmesini sağlar; tipik olarak giriş, bir veya daha fazla gizli katman ve çıkış katmanı olur (bkz. AWS açıklaması: https://aws.amazon.com/tr/what-is/deep-learning/).
Her katman, ağırlıklar (weights), önyargılar (bias) ve bir aktivasyon fonksiyonundan oluşan hesaplama birimlerine sahiptir. Katman türleri modelin amacına göre değişir; örneğin görüntü işleme için konvolüsyonel katmanlar, sıra verileri için geri beslemeli (recurrent) yapılar tercih edilir. Bu yaklaşımlar ve katman açıklamaları için SAP ve akademik kaynaklar faydalıdır (örnek okuma: https://www.sap.com/turkey/resources/what-is-deep-learning).
Yaygın katman türleri (kısa)
- Dense / Tam bağlantılı: Her nöron bir önceki katmandaki tüm nöronlara bağlıdır. Genel amaçlıdır.
- Konvolüsyonel (Conv): Görüntü gibi 2B verilerde yerel örüntüleri yakalamak için filtreler kullanır.
- Pooling: Uzaysal boyutları azaltmak ve özet bilgi elde etmek için kullanılır.
- RNN / LSTM / GRU: Sıra verilerde (zaman serileri, metin) bağlamı yakalamak için tasarlanmış katmanlardır.
- Normalizasyon (BatchNorm): Öğrenmeyi stabilize etmek için ara katmanlarda uygulanabilir.
Aktivasyon fonksiyonları: Neden gereklidir?
Aktivasyon fonksiyonları, nöronların doğrusal olmayan ilişkileri modelleyebilmesini sağlar. Lineer katmanların ardarda gelmesi yalnızca lineer dönüşüm sağlar; doğrusal olmayan aktivasyonlar sayesinde ağlar karmaşık, sınırlandırılmamış fonksiyonları öğrenebilir. Yaygın aktivasyon fonksiyonları ve kısa notları aşağıdaki tabloda özetlenmiştir (kaynak: Stanford ders notları ve görsel anlatımlar: https://stanford.edu/~shervine/l/tr/teaching/cs-229/cheatsheet-deep-learning/, https://bilisim.io/2020/02/02/derin-ogrenme-aktivasyon-fonksiyonlari-ile-dans/).
| Fonksiyon | Formül | Çıkış aralığı | Kısa not |
|---|---|---|---|
| Sigmoid | σ(x)=1/(1+e^{-x}) | (0, 1) | Binary sınıflandırma için çıktı katmanında sıkça kullanılır; iç katmanlarda vanishing gradient oluşturabilir. |
| Tanh | tanh(x) | (-1, 1) | Sıfır merkezli; bazı durumlarda Sigmoid'den daha iyi çalışır. |
| ReLU | max(0, x) | [0, ∞) | Basit ve hesaplı; derin ağlarda yaygın. Ancak "ölü nöron" problemi olabilir. |
| Softmax | e^{x_i}/∑_j e^{x_j} | Bir sınıflandırma dağılımı | Çok sınıflı çıkışlarda olasılık dağılımı sağlar. |
Backpropagation: Mantık ve temel adımlar
Backpropagation (geri yayılım), modelin hatasını katmanlara geri ileterek ağırlıkları güncelleyen algoritmadır. Yöntemin özünde zincir kuralı (chain rule) bulunur: kayıp fonksiyonunun ağırlıklara göre türevi hesaplanır ve bu türevler kullanılarak ağırlıklar güncellenir. Genel akış şu şekildedir (özet):
- İleri geçiş (forward pass): Girdi aktivasyonları katman katman işlenerek tahmin (y_hat) elde edilir.
- Kayıp hesaplama: Tahmin ve gerçek değer arasındaki fark bir loss fonksiyonu ile ölçülür (ör. MSE veya çapraz entropi).
- Geri geçiş (backward pass): Zincir kuralı kullanılarak loss'un her ağırlığa göre türevi hesaplanır.
- Ağırlık güncelleme: w := w - η * dL/dw (η = öğrenme oranı).
Bu yöntemin matematiksel temeli Stanford ders özetlerinde açıkça bulunabilir; backprop mantığı ve türev ilişkileri için bkz. Stanford cheat sheet.
Basit bir örnek (sembolik)
Diyelim ki küçük bir ağımız var: z1 = w1 * x + b1, a1 = f(z1), z2 = w2 * a1 + b2, y_hat = f_out(z2). Loss L = 1/2 (y - y_hat)^2 olsun. Zincir kuralı ile:
dL/dw2 = (dL/dy_hat) * (dy_hat/dz2) * (dz2/dw2) = (y_hat - y) * f_out'(z2) * a1
dL/dw1 = (dL/dy_hat) * (dy_hat/dz2) * (dz2/da1) * (da1/dz1) * (dz1/dw1) = (y_hat - y) * f_out'(z2) * w2 * f'(z1) * x
Bu türevler hesaplandıktan sonra ağırlıklar öğrenme oranı ile çarpılıp çıkarılır. Bu sembolik akış, backprop temelini gösterir ve aynı mantık daha derin ağlara genellenir.
Pratik küçük sayısal örnek (adım adım)
Aşağıdaki örnek eğitici amaçlı, basit sayılarla türev hesaplarını göstermek içindir. Sayıları salt eğitim amaçlı gösteriyoruz; gerçek modellerde otomatik fark alma (autodiff) ve kütüphaneler kullanılır.
- x = 0.5, y = 1.0
- w1 = 0.4, b1 = 0.0, f = ReLU (basitlik için) → a1 = max(0, z1)
- w2 = 0.3, b2 = 0.0, çıkış için f_out = Sigmoid
İleri geçişte z1 = 0.4*0.5 = 0.2 → a1 = 0.2. z2 = 0.3*0.2 = 0.06 → y_hat = σ(0.06) ≈ 0.515. Loss L = 1/2 (1 - 0.515)^2 ≈ 0.117. Zincir kuralı ile dL/dw2 ve dL/dw1 hesaplanıp ağırlıklar güncellenir. Bu adımların elle yapılması öğreticidir ancak pratikte TensorFlow veya PyTorch gibi kütüphaneler otomatik türevleme sağlar.
Eğitim parametreleri: epoch, batch size, öğrenme oranı
Temel eğitim terimleri şunlardır:
- Epoch: Tüm eğitim verisinin modele bir kez sunulmasıdır.
- Batch size: Bir ileri/geri geçişte kullanılan örnek sayısı. Küçük batch'ler bellek kullanımı ve genelleme üzerinde etkili olabilir; yaygın uygulamalarda çeşitli batch boyutları denenir.
- Öğrenme oranı (learning rate): Ağırlık güncellemesinin büyüklüğünü belirler. Çok büyükse dalgalı öğrenme, çok küçükse yavaş yakınsama olur.
Bu parametreler arasında iyi bir denge bulmak model başarısı için kritiktir. Eğitim stratejileri ve hiperparametre seçimleri hakkında AWS ve akademik kaynaklardaki temel açıklamalar yol göstericidir (ör. AWS, Stanford).
Sık karşılaşılan sorunlar ve çözüm önerileri
- Vanishing gradient: Sigmoid veya Tanh kullanan çok derin ağlarda gradyanlar küçülerek öğrenmeyi engelleyebilir. ReLU veya BatchNorm gibi yöntemler yardımcı olabilir.
- Exploding gradient: Gradyanların çok büyümesi durumunda gradient clipping uygulanabilir.
- Overfitting: Model eğitim verisine aşırı uyum sağladığında dropout, L2 düzenleme veya daha fazla veri ile çözüm denenebilir.
- Yavaş yakınsama: Öğrenme oranı, optimizasyon algoritması (Adam, SGD+momentum) ve batch boyutu gözden geçirilebilir.
Hızlı kontrol listesi (pratik)
- Verileri normalize ettiniz mi? (girdi ölçeklendirme)
- Ağırlık başlatma stratejisi uygun mu? (örn. He veya Xavier başlatma)
- Doğru aktivasyon fonksiyonunu seçtiniz mi?
- Validation loss ile overfitting kontrolü yapılıyor mu? (early stopping kullanın)
- Öğrenme oranı ve batch size için birkaç değer denediniz mi?
Kaynaklar ve ileri okumalar
- Derin Öğrenme Nedir? - AWS — Derin öğrenme temelleri için kurumsal açıklama.
- CS 229 - Derin Öğrenme El Kitabı (Stanford) — Matematiksel özet ve cheat sheet.
- Derin öğrenme nedir? | SAP — Konuya giriş ve kullanım senaryoları.
- Derin Öğrenme Aktivasyon Fonksiyonları İle Dans (Bilişim IO) — Aktivasyon fonksiyonlarının görsel anlatımı.
Sık Sorulan Sorular (Kısa)
Backpropagation nedir, neden önemli?
Backpropagation, modelin hatasından öğrenmesini sağlayan algoritmadır; zincir kuralı kullanılarak loss'un ağırlıklara göre türevleri hesaplanır ve ağırlıklar güncellenir. Bu, modern derin öğrenmenin temel öğrenme mekanizmasıdır (bkz. Stanford kaynakları).
Hangi aktivasyon fonksiyonunu seçmeliyim?
Genel kural olarak gizli katmanlarda ReLU veya türevleri (Leaky ReLU) sıklıkla tercih edilir; çıkış katmanında problemin türüne göre Sigmoid (binary) veya Softmax (çok sınıflı) kullanılır. Deneme-yanılma ve doğrulama sonuçları seçimi belirler.
Epoch ve batch size arasındaki fark nedir?
Epoch bir tam veri setinin modele sunulmasıdır; batch size ise tek bir ileri/geri geçişte kullanılan örnek sayısıdır. Batch size bellek ve gürültü/kararlılık üzerinde etkilidir.