KERAS İLE OVERFİTTİNG NASIL ÖNLENİR? REGULARİZATİON, DROPOUT VE EARLY STOPPİNG
Bir Keras modeli eğitim sırasında hızla “mükemmel” görünürken gerçek hayatta hayal kırıklığı yaratıyorsa, büyük ihtimalle overfitting ile karşı karşıyasınız. Eğitim verisini ezberleyen bir ağ, yeni örneklerde genelleme yapamaz; bu da sahada düşük doğruluk, kararsız tahminler ve güven kaybı demektir.
Overfitting’i önlemek, tek bir sihirli ayarla çözülmez. Model kapasitesi, veri kalitesi, eğitim süresi, düzenlileştirme teknikleri ve doğrulama yaklaşımı birlikte ele alınmalıdır. Bu yazıda Keras ile overfitting önleme yöntemlerini; regularization, dropout ve early stopping odağında, pratik kod örnekleriyle uygulayacağız.
Amacımız, yalnızca doğruluğu artırmak değil; aynı zamanda daha istikrarlı, sürdürülebilir ve üretimde güvenilir modeller kurmak. Yazının sonunda bir kontrol listesiyle, kendi projenize en uygun stratejiyi hızlıca seçebileceksiniz.

Overfitting Nedir ve Keras Modellerinde Nasıl Ortaya Çıkar?
Overfitting, modelin eğitim verisindeki örüntüleri öğrenmek yerine ayrıntıları ve gürültüyü de öğrenmesiyle ortaya çıkar. Sonuç: eğitim metriği yükselirken doğrulama metriği durağanlaşır veya düşer. Keras’ta bu durum genellikle validation loss artarken training loss’un düşmeye devam etmesiyle görülür.
Bu problem özellikle küçük veri setlerinde, yüksek kapasiteli ağlarda ve uzun epoch eğitimlerinde sıklaşır. Ayrıca veri sızıntısı (data leakage) veya hatalı doğrulama bölme gibi süreç hataları da overfitting’i olduğundan farklı gösterebilir.
Belirtiler: Eğitim Başarısı Artarken Doğrulama Düşer
En yaygın belirti, eğitim doğruluğunun düzenli artmasına rağmen doğrulama doğruluğunun plato yapması veya dalgalanarak gerilemesidir. Benzer şekilde training loss düşerken validation loss yükselir. Bu noktada modelin kapasitesi ile veri çeşitliliği arasındaki denge bozulmuştur.
Veri Seti Boyutu, Gürültü ve Sınıf Dengesizliği
Az örnek, etiket hataları, düşük sinyal/gürültü oranı ve sınıf dengesizliği, modelin yanlış örüntülere tutunmasına neden olabilir. Bu tür durumlarda yalnızca düzenlileştirme değil, veri temizliği ve daha doğru örnekleme stratejileri de kritik rol oynar.
Doğru Doğrulama Stratejisi: Ölçmediğini Yönetemezsin
Overfitting’i önlemek için önce güvenilir biçimde tespit etmek gerekir. Keras tarafında en temel adım, eğitim sırasında doğrulama metriğini izlemek ve model seçiminde doğrulama performansını temel almaktır. Ancak burada yapılan küçük hatalar, sizi yanlış karar almaya itebilir.
Train/Validation Ayrımı ve Stratified Bölme
Sınıflandırma problemlerinde sınıf dağılımını korumak için stratified split tercih edilmelidir. Aksi halde bazı sınıflar validation tarafında az temsil edilir ve metrikler yanıltıcı olur. Zaman serisi gibi sıralı verilerde ise rastgele karıştırma yerine zamansal ayrım kullanılmalıdır.
Cross-Validation Ne Zaman Gerekli?
Veri seti küçükse tek bir validation bölmesi aşırı şansa bağlı olabilir. Bu durumda k-fold cross-validation daha güvenilir bir resim sunar. Derin öğrenmede maliyetli olsa da, daha küçük mimari, daha az epoch veya transfer learning ile uygulanabilir hale gelir.
Model Karmaşıklığını Yönet: Daha Büyük Her Zaman Daha İyi Değil
Overfitting’in temel nedenlerinden biri gereğinden fazla kapasitedir. Parametre sayısı arttıkça model eğitim setini ezberlemeye daha yatkın olur. Keras ile overfitting önleme sürecinde ilk kontrol noktası, mimarinin problem ölçeğiyle uyumudur.
Katman ve Parametre Sayısını Azaltma
Başlangıç için daha küçük bir ağ kurup performansı gözlemek çoğu zaman daha sağlıklıdır. Örneğin dense katman sayısını düşürmek, nöron sayısını azaltmak veya gereksiz geniş convolution bloklarını sadeleştirmek genellemeyi iyileştirebilir.
Batch Normalization Tek Başına Çözüm mü?
Batch normalization bazen düzenleyici etki gösterse de tek başına bir “anti-overfitting” garantisi değildir. Yanlış yerde/yanlış kombinasyonla kullanıldığında eğitim dinamiklerini değiştirip beklenmedik sonuçlar üretebilir. Bu yüzden dropout ve weight decay gibi tekniklerle birlikte değerlendirilmelidir.
Regularization: L1/L2 ve Weight Decay ile Ağı Dizginlemek
Regularization, modelin ağırlıklarını sınırlandırarak aşırı karmaşık çözümleri cezalandırır. Keras’ta en yaygın yaklaşım L2 (weight decay) ve bazı durumlarda L1’dir. L2, ağırlıkları küçük tutarak daha pürüzsüz karar sınırları elde etmeye yardımcı olur.
L2 (Weight Decay) Ne Zaman Tercih Edilir?
L2, özellikle küçük/orta ölçekli veri setlerinde ve dense katman ağırlıklarının aşırı büyüme eğilimi gösterdiği senaryolarda etkilidir. CNN’lerde de sık kullanılır. Tipik aralıklar 1e-5 ile 1e-3 arasındadır; en iyi değer problemden probleme değişir.
L1 ile Seyrek (Sparse) Ağırlıklar
L1, bazı ağırlıkları sıfıra iterek daha seyrek çözümler üretir. Özellikle çok sayıda özelliğe sahip tabular problemler veya gereksiz özelliklerin çok olduğu durumlarda işe yarayabilir. Ancak derin ağlarda L1 bazen optimizasyonu zorlaştırabilir; bu nedenle dikkatli denenmelidir.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, regularizers
num_features = 100
model = keras.Sequential([
layers.Input(shape=(num_features,)),
layers.Dense(128, activation="relu",
kernel_regularizer=regularizers.l2(1e-4)),
layers.Dense(64, activation="relu",
kernel_regularizer=regularizers.l2(1e-4)),
layers.Dense(1, activation="sigmoid")
])
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=1e-3),
loss="binary_crossentropy",
metrics=["accuracy"]
)
history = model.fit(
x_train, y_train,
validation_data=(x_val, y_val),
epochs=50,
batch_size=64
)Bu örnekte L2 regularization, katmanların ağırlıklarını kontrollü tutarak overfitting riskini azaltır. Yine de tek başına yeterli olmayabilir; aşağıdaki yöntemlerle birlikte kullanıldığında daha güçlü bir etki sağlar.
Dropout: Öğrenmeyi Dağıt, Ezberlemeyi Zorlaştır
Dropout, eğitim sırasında rastgele nöronları devre dışı bırakarak ağın tek bir yol üzerinden ezber yapmasını engeller. Böylece model daha dayanıklı temsiller öğrenir. Keras’ta uygulaması kolay olsa da, oran seçimi ve yerleşim önemlidir.

Dropout Oranı Nasıl Seçilir?
Genelde dense katmanlarda 0.2–0.5 aralığı sık kullanılır. Çok yüksek dropout, underfitting’e yol açabilir; çok düşük dropout ise yeterli düzenleme sağlamaz. CNN’lerde konvolüsyon blokları sonrası düşük oranlar (0.1–0.3) daha yaygındır.
Dropout’u Nerede Kullanmalı?
Dropout genellikle dense katmanlar arasında etkilidir. Konvolüsyon katmanlarında da kullanılabilir; ancak bazen spatial dropout gibi varyantlar daha uygun olur. Ayrıca batch normalization ile birlikte kullanırken sıralamayı düşünmek gerekir; bazı projelerde BN sonrası dropout iyi çalışırken, bazılarında tam tersi daha iyidir.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
layers.Input(shape=(num_features,)),
layers.Dense(256, activation="relu"),
layers.Dropout(0.4),
layers.Dense(128, activation="relu"),
layers.Dropout(0.3),
layers.Dense(1, activation="sigmoid")
])
model.compile(
optimizer=keras.optimizers.Adam(1e-3),
loss="binary_crossentropy",
metrics=["accuracy"]
)
history = model.fit(
x_train, y_train,
validation_split=0.2,
epochs=60,
batch_size=64,
verbose=1
)Bu mimari, eğitimde güçlü sinyali korurken ezberi zorlaştırır. Eğer validation performansı hâlâ dalgalıysa, early stopping ve öğrenme oranı planlamasıyla eğitim sürecini daha akıllı hale getirmek gerekir.
Early Stopping: En İyi Noktada Durmayı Bilmek
Early stopping, doğrulama metriği iyileşmeyi bıraktığında eğitimi durdurur. Böylece model, validation loss’un yükselmeye başladığı aşamaya geçmeden “en iyi genel performans” noktasında kalır. Keras callbacks ile çok pratik uygulanır.

Patience ve Restore Best Weights Ayarı
Patience, kaç epoch boyunca iyileşme görülmezse durdurulacağını belirler. Çok düşük patience erken kesmeye, çok yüksek patience ise overfitting’e yaklaşmaya neden olabilir. restore_best_weights ise en iyi doğrulama sonucundaki ağırlıkları geri yükleyerek pratikte büyük fark yaratır.
Early Stopping + ModelCheckpoint Kombinasyonu
En iyi modeli dosyaya kaydetmek, deneylerinizi daha güvenilir hale getirir. Özellikle uzun eğitimlerde veya farklı hyperparameter denemelerinde, doğru ağırlıklara dönmek için checkpoint önemli bir güvenlik ağıdır.
import tensorflow as tf
from tensorflow import keras
callbacks = [
keras.callbacks.EarlyStopping(
monitor="val_loss",
patience=6,
min_delta=1e-4,
restore_best_weights=True
),
keras.callbacks.ModelCheckpoint(
filepath="best_model.keras",
monitor="val_loss",
save_best_only=True
),
keras.callbacks.ReduceLROnPlateau(
monitor="val_loss",
factor=0.5,
patience=3,
min_lr=1e-6
)
]
history = model.fit(
x_train, y_train,
validation_data=(x_val, y_val),
epochs=100,
batch_size=64,
callbacks=callbacks
)Bu kombinasyon, overfitting’i azaltmanın yanında eğitim verimliliğini de artırır. ReduceLROnPlateau, doğrulama iyileşmesi durduğunda öğrenme oranını düşürerek daha rafine bir minimuma inmenize yardımcı olur.
Veri Artırma ve Gürültüyle Dayanıklılık Kazandırma
Model kapasitesini kısmanın bir alternatifi, veriyi zenginleştirmektir. Özellikle görüntü ve metin problemlerinde veri artırma, modelin farklı varyasyonları görmesini sağlayarak genelleme gücünü yükseltir. Tabular veride ise kontrollü gürültü ekleme veya robust ölçekleme benzeri yaklaşımlar etkili olabilir.

Görüntü Problemlerinde Augmentation Örnekleri
Döndürme, kırpma, yatay çevirme, parlaklık/kontrast değişimleri gibi dönüşümler; modelin “aynı sınıfın farklı koşulları”nı öğrenmesine yardım eder. Ancak dönüşümler probleme uygun olmalıdır: örneğin medikal görüntülerde bazı dönüşümler etiketi bozabilir.
Tabular Veride Daha Temkinli Yaklaşım
Tabular veride rastgele gürültü eklemek, her zaman iyi sonuç vermez. Bunun yerine doğru normalizasyon, outlier yönetimi ve özellik mühendisliği ile daha sağlam bir temsil kurmak çoğu zaman daha güvenlidir. Ayrıca hedef sızıntısını engellemek, overfitting ile mücadelede temel adımdır.
Pratik Uygulama Planı: Hangi Tekniği Ne Zaman Denemelisin?
Her problem için tek bir reçete yok; ama karar verme sürecini sistematik hale getirebilirsiniz. Aşağıdaki liste, Keras modellerinde overfitting önleme için yaygın ve etkili bir sırayı önerir.
- Önce doğru veri bölmesi ve metrik takibi kur: stratified split, uygun validation yaklaşımı, tutarlı seed
- Model kapasitesini kontrol et: gereksiz katmanları ve parametreleri azalt
- L2 regularization ile başla: küçük değerlerle dene, sonra kademeli artır
- Dropout ekle: dense katmanlarda 0.2–0.5 aralığını kontrollü dene
- Early stopping + checkpoint kullan: en iyi ağırlıklara güvenle dön
- Gerekirse veri artırma uygula: probleme uygun dönüşümler seç
- Öğrenme oranını planla: ReduceLROnPlateau veya schedule ile ince ayar yap
Secondary Keyword’leri Doğal Kurgulama
Metin içinde “validation loss”, “weight decay”, “veri artırma”, “model karmaşıklığı”, “Keras callbacks”, “öğrenme oranı planlama” gibi kavramlar, konu bütünlüğü içinde doğal biçimde geçmelidir. Bu yaklaşım, hem SEO hem de okunabilirlik açısından daha sürdürülebilir sonuç verir.
Hızlı Kontrol: Overfitting mi Underfitting mi?
Eğer training metrikleri de düşükse ve validation da düşükse underfitting olasılığı yüksektir; bu durumda aşırı regularization veya yüksek dropout oranları problemi büyütebilir. Buna karşılık training çok yüksekken validation zayıfsa, burada anlattığımız düzenleme adımları daha doğrudan etki eder.
Örnek Senaryo: Regularization + Dropout + Early Stopping Birlikte
Pratikte en iyi sonuçlar çoğunlukla kombinasyonlardan gelir. L2 ile ağırlıkları kontrol eder, dropout ile temsili dayanıklı hale getirir, early stopping ile en iyi noktada durursunuz. Buradaki amaç, tek bir tekniği “abartmak” değil; birkaç tekniği dengeli biçimde kullanmaktır.
Dengeli Bir Mimari Yaklaşımı
Çok agresif dropout veya çok yüksek L2, öğrenmeyi baskılayabilir. Bu nedenle küçük değerlerle başlayıp doğrulama eğrilerini izleyerek kademeli ayarlamak daha sağlıklıdır. Ayrıca batch size, optimizer ve learning rate gibi eğitim dinamikleri de overfitting görünümünü değiştirebilir.
Deney Takibi ve Tek Değişken Prensibi
Her denemede tek bir değişkeni değiştirmek (örneğin önce L2 eklemek, sonra dropout oranını ayarlamak) hangi adımın fayda sağladığını netleştirir. Deney kayıtlarıyla ilerlemek, model geliştirmeyi daha hızlı ve tekrarlanabilir kılar.
İç Kaynak: Keras ile Derin Öğrenme Eğitimine Devam Et
Keras’ta düzenlileştirme ve eğitim stratejilerini daha geniş bir çerçevede öğrenmek isterseniz, detaylı uygulamalar ve proje örnekleri için şu içeriğe göz atabilirsiniz: Deep Learning Keras Eğitimi.
Sonuç: Overfitting’i Azalt, Genellemeyi Güçlendir
Keras ile overfitting önleme, modelin “daha uzun eğitilmesi” değil; doğru noktada durdurulması, kapasitesinin doğru ayarlanması ve düzenlileştirme teknikleriyle dengelenmesi anlamına gelir. Regularization (özellikle L2), dropout ve early stopping birlikte kullanıldığında çoğu senaryoda güçlü bir iyileşme sağlar.
Unutmayın: en iyi çözüm, veri setinizin yapısına, problem türüne ve hedef metriklerinize göre değişir. Doğrulama stratejisi sağlam değilse, en iyi teknik bile yanlış yönlendirebilir. Sistematik deney yaklaşımıyla, daha güvenilir ve üretime hazır modeller kurabilirsiniz.


