Derin Öğrenme (Deep Learning) Nedir? Kapsamlı Rehber
Derin öğrenme (deep learning), makine öğrenmesinin bir alt dalıdır ve insan beyninden ilham alan yapay sinir ağlarını kullanır. "Derin" ifadesi, ağın birden fazla gizli katmana sahip olmasından gelir; bu katmanlar veriden giderek soyutlaşan özellikler öğrenir. Bu kapsamlı rehberde sinir ağının temel bileşenlerinden geriye yayılıma, vanishing gradient probleminden CNN/RNN/Transformer mimarilerine kadar derin öğrenmenin tüm boyutlarını ele alıyoruz.
1. Derin Öğrenme Nedir? Makine Öğrenmesinden Farkı
Klasik makine öğrenmesi, insan tarafından tasarlanan özellikler (feature engineering) üzerinde çalışan algoritmaları kapsar — bkz. Makine Öğrenmesi Nedir?. Derin öğrenme ise çok katmanlı yapay sinir ağları sayesinde ham veriden özellikleri otomatik olarak öğrenir. Bu özellik, özellikle görüntü, ses ve metin gibi yapılandırılmamış verilerde derin öğrenmenin çok daha üstün performans göstermesini sağlar.
2. Yapay Sinir Ağı Nedir? Temel Bileşenler
Yapay sinir ağı (Artificial Neural Network — ANN), birbirine bağlı düğümlerden (nöronlardan) oluşan bir hesaplama modelidir. Her nöron, önceki katmandan gelen girdileri ağırlıklarla çarpar, toplar ve bir aktivasyon fonksiyonundan geçirir.
Temel bileşenler:
- Girdi Katmanı (Input Layer): Ham verinin ağa girdiği katman
- Gizli Katmanlar (Hidden Layers): Özellik öğrenmenin gerçekleştiği katmanlar — ne kadar çok katman, o kadar "derin"
- Çıktı Katmanı (Output Layer): Tahmin veya sınıflandırma sonucunun üretildiği katman
- Aktivasyon Fonksiyonları: ReLU, sigmoid, softmax — doğrusal olmayan ilişkileri öğrenmek için zorunludur; ayrıntılı karşılaştırma için Aktivasyon Fonksiyonları yazımıza bakabilirsiniz.
3. Eğitim Süreci: İleri Geçiş, Kayıp, Geriye Yayılım
Sinir ağı, geriye yayılım (backpropagation) algoritması ile eğitilir. Süreç şu şekilde işler:
- İleri geçiş (forward pass): Girdi ağdan geçer, tahmin üretilir.
- Kayıp hesaplama (loss calculation): Tahmin ile gerçek değer arasındaki fark bir kayıp fonksiyonuyla (regresyonda MSE, sınıflandırmada cross-entropy) ölçülür.
- Geri geçiş (backward pass): Hata, zincir kuralı (chain rule) ile geriye doğru yayılır ve her ağırlığın kayba katkısı (gradyan) hesaplanır.
- Ağırlık güncelleme: Gradyanlar kullanılarak ağırlıklar, kaybı azaltacak yönde küçük adımlarla güncellenir.
- Bu döngü binlerce kez tekrarlanır (epoch).
4. Gradyan İnişi ve Optimizasyon Algoritmaları
Ağırlık güncellemesi için gradyan inişi (gradient descent) ve türevleri kullanılır:
| Algoritma | Özellik |
|---|---|
| SGD (Stochastic Gradient Descent) | Her adımda küçük bir batch kullanır; basit ama gürültülü yakınsama |
| Momentum | Önceki gradyan yönünü hatırlayarak salınımları azaltır, yakınsamayı hızlandırır |
| RMSprop | Her parametre için öğrenme hızını uyarlamalı ayarlar |
| Adam | Momentum + RMSprop'un birleşimi; günümüzde en yaygın varsayılan seçim |
💡 Öğrenme hızı (learning rate) derin öğrenmede en kritik hiperparametredir. Çok yüksek olursa model ıraksar; çok düşük olursa eğitim aşırı yavaşlar. Learning rate scheduler (eğitim ilerledikçe hızı kademeli azaltma) bu sorunu büyük ölçüde çözer.
5. Vanishing/Exploding Gradient Problemi
Derin ağlarda geriye yayılım sırasında gradyanlar, zincir kuralı gereği katman katman çarpılarak geriye taşınır. Sigmoid/tanh gibi aktivasyon fonksiyonlarının türevleri 1'den küçük olduğundan, çok katmanlı ağlarda gradyan girdi katmanına ulaştığında neredeyse sıfıra iner (vanishing gradient) — bu da ilk katmanların hiç öğrenememesine yol açar. Tam tersi durumda (büyük ağırlıklarla) gradyan katlanarak büyüyebilir (exploding gradient).
Bu problemi çözen üç ana yaklaşım:
- ReLU aktivasyonu: Pozitif bölgede türevi sabit 1'dir; sigmoid/tanh'ın küçülen türev sorununu önemli ölçüde azaltır.
- Residual (skip) bağlantılar: ResNet mimarisinde tanıtılan bu bağlantılar, gradyanın katmanları "atlayarak" doğrudan geriye akmasına izin verir.
- Batch Normalization: Her katmanın girdisini normalize ederek gradyan akışını stabilize eder (bkz. Bölüm 6).
6. Regularization: Dropout, Batch Normalization
Aşırı öğrenmeyi (overfitting) önlemek ve eğitimi stabilize etmek için kullanılan başlıca teknikler:
- Dropout: Eğitim sırasında her adımda rastgele seçilen nöronlar geçici olarak "kapatılır" (genelde %20-50 oranında); bu, ağın belirli nöronlara aşırı bağımlı olmasını önler ve bir tür model topluluğu (ensemble) etkisi yaratır.
- Batch Normalization: Her katmanın girdisini mini-batch içinde normalize eder (ortalama 0, varyans 1); eğitimi hızlandırır, daha yüksek öğrenme hızlarına izin verir ve gradyan akışını stabilize eder.
- Weight Decay (L2 Regularization): Kayıp fonksiyonuna ağırlıkların büyüklüğüyle orantılı bir ceza terimi ekler; aşırı büyük ağırlıkları caydırır.
- Early Stopping: Doğrulama kaybı iyileşmeyi bıraktığında eğitimi durdurur.
7. Evrişimli Sinir Ağları (CNN — Convolutional Neural Networks)
Görüntü verisini işlemek için tasarlanmıştır. Evrişim (convolution) katmanları, görüntüdeki kenar, şekil ve doku gibi yerel özellikleri otomatik olarak öğrenir. Havuzlama (pooling) katmanları boyutu küçülterek hesaplamayı verimli kılar.
Uygulama alanları: Görüntü sınıflandırma, nesne tespiti, yüz tanıma, tıbbi görüntü analizi — bkz. Uydu Görüntüsü Sınıflandırması.
Öne çıkan modeller: ResNet, VGG, EfficientNet, YOLO.
8. Tekrarlayan Sinir Ağları (RNN, LSTM, GRU)
Sıralı (sequential) verileri işlemek için tasarlanmıştır. Önceki adımlardan gelen bilgiyi "bellek" olarak taşır. Standart RNN'ler uzun bağımlılıkları öğrenmekte zorlanır (vanishing gradient'in bir uzantısı); bu sorunu çözmek için LSTM (Long Short-Term Memory) ve GRU (Gated Recurrent Unit) geliştirilmiştir — kapı (gate) mekanizmalarıyla hangi bilginin tutulup hangisinin unutulacağını öğrenirler.
Uygulama alanları: Zaman serisi tahmini (bkz. Zaman Serisi & ARIMA), metin üretimi, konuşma tanıma, makine çevirisi.
9. Transformer Mimarisi ve Dikkat Mekanizması
2017'de Google tarafından tanıtılan Transformer, öz-dikkat (self-attention) mekanizması sayesinde dizideki tüm öğeler arasındaki ilişkileri eş zamanlı (paralel) olarak modeller — her kelime, dizideki tüm diğer kelimelere "ne kadar dikkat etmesi gerektiğini" öğrenir. Bu, RNN'nin sıralı işlem zorunluluğunu ve uzun bağımlılık sorununu aşar.
Uygulama alanları: Doğal dil işleme (bkz. Doğal Dil İşleme (NLP)), metin üretimi, görüntü işleme, çok modlu yapay zeka.
Öne çıkan modeller: BERT, GPT, T5, ViT (Vision Transformer).
10. Üretici Modeller: GAN ve Diffusion
Üretici Çekişmeli Ağlar (GAN — Generative Adversarial Networks): İki ağın (üretici ve ayırt edici) birbirine karşı eğitilmesiyle gerçekçi sentetik veri üretir — üretici sahte örnekler üretmeye, ayırt edici bunları gerçeklerden ayırt etmeye çalışır; bu "çekişme" ikisini de geliştirir.
Diffusion Modelleri: Görüntüye kademeli olarak gürültü ekleyip (forward process) sonra bu süreci tersine çevirmeyi (reverse process, gürültüden görüntü üretme) öğrenen modellerdir. Stable Diffusion, DALL-E ve Midjourney gibi modern metin-görüntü üretim sistemlerinin temelini oluşturur; GAN'lara göre eğitim kararlılığı genellikle daha yüksektir.
11. Derin Öğrenme Ne Zaman Kullanılmalı?
Derin öğrenme her zaman doğru seçim değildir. Şu koşullar sağlandığında tercih edilmelidir:
- Büyük miktarda etiketli veri mevcutsa (genellikle on binlerce örnek ve üzeri)
- Görüntü, ses veya metin gibi yapılandırılmamış veriyle çalışılıyorsa
- Geleneksel yöntemler yeterli başarıyı sağlayamıyorsa
- GPU hesaplama gücü erişilebilir durumdaysa
Az miktarda yapılandırılmış tablo verisiyle çalışılıyorsa XGBoost veya Random Forest gibi geleneksel makine öğrenmesi yöntemleri çoğunlukla daha iyi sonuç verir ve yorumlanması çok daha kolaydır.
12. Transfer Learning
Sıfırdan model eğitmek yerine, ImageNet gibi büyük veri setleriyle önceden eğitilmiş modelleri kendi probleminize ince ayar (fine-tuning) yaparak kullanmak hem zaman hem kaynak tasarrufu sağlar. Küçük veri setlerinde özellikle etkilidir — ayrıntılı ele alış için Transfer Learning Nedir? yazımıza bakabilirsiniz.
13. Python ile Basit Bir Sinir Ağı
14. Derin Öğrenme Araçları
- TensorFlow / Keras: Google tarafından geliştirilmiş, geniş ekosisteme sahip çerçeve
- PyTorch: Meta tarafından geliştirilen, araştırma dünyasında tercih edilen dinamik çerçeve
- Hugging Face: Transformer modelleri için hazır model kütüphanesi
- Google Colab / Kaggle: Ücretsiz GPU ile tarayıcı üzerinden çalışma ortamı
15. Zorluklar ve Sınırlamalar
- Veri ihtiyacı: Yüksek kaliteli ve büyük miktarda etiketli veriye ihtiyaç duyar.
- Hesaplama maliyeti: Güçlü GPU/TPU gerektirir, eğitim süresi uzun olabilir.
- Yorumlanabilirlik: "Kara kutu" yapısı nedeniyle modelin kararlarını açıklamak güçtür (bu sorunu hafifletmek için SHAP, LIME gibi açıklanabilir yapay zeka — XAI — araçları kullanılır).
- Aşırı öğrenme: Veri az olduğunda model kolayca eğitim verisini ezberler.
16. Yaygın Hatalar
- Küçük veri setinde sıfırdan derin ağ eğitmek: Birkaç bin örnekle CNN/Transformer eğitmek yerine transfer learning kullanılmalıdır (bkz. Bölüm 12).
- Öğrenme hızını çok yüksek/düşük ayarlamak: Iraksama veya aşırı yavaş eğitim ile sonuçlanır; learning rate scheduler veya öğrenme hızı arama (LR range test) önerilir.
- Batch normalization ve dropout'u eğitim/test modunda karıştırmak: Bu katmanlar eğitim ve çıkarım (inference) sırasında farklı davranır; framework'ün model.eval()/training=False gibi mod ayarlarına dikkat edilmelidir.
- Doğrulama kaybını izlemeden yalnızca eğitim kaybına bakmak: Eğitim kaybı düşerken doğrulama kaybının yükselmesi klasik bir overfitting işaretidir.
- Basit bir problem için gereksiz derin/karmaşık mimari seçmek: Yapılandırılmış tablo verisinde çoğu zaman XGBoost/Random Forest, çok daha az kaynakla benzer veya daha iyi sonuç verir.
Kaynaklar
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521, 436–444.
- Vaswani, A., et al. (2017). Attention is all you need. Advances in Neural Information Processing Systems, 30.
- Géron, A. (2022). Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow (3rd ed.). O'Reilly Media.
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. CVPR 2016.
- Ioffe, S., & Szegedy, C. (2015). Batch Normalization. ICML 2015.
Derin Öğrenme Projeniz İçin Destek Alın
Model geliştirme, eğitim ve değerlendirme için Python ve TensorFlow/PyTorch ile profesyonel destek.
Hemen Sipariş Ver Teklif Al