Exploding Gradient
Patlayan gradyanlar, geri yayılım sırasında üstel biçimde büyüyerek aşırı büyük ağırlık güncellemelerine, kayıp sıçramalarına ve NaN değerlerine yol açar. Nedenler, belirtiler ve çözümler.
Gradyan patlaması, geri yayılım tarafından hesaplanan gradyanların derin veya yinelemeli bir sinir ağında geriye doğru ilerlerken üstel biçimde büyüdüğü bir eğitim hatasıdır. Gradyan inişi, ardından model ağırlıklarına aşırı büyük güncellemeler uygular; kayıp fonksiyonu aniden yükselir veya NaN ya da inf hâline gelir ve eğitim yakınsamaz. Bu, kaybolan gradyan probleminin tersidir. Pascanu, Mikolov ve Bengio, her iki sorunu da yinelemeli sinir ağlarında inceledi ve gradyan patlamasına karşı günümüzde derin öğrenme eğitiminde standart koruma yöntemi olan gradyan normu kırpmayı önerdi.
Gradyanlar Neden Patlar#
Zincir kuralına göre erken bir katmana ulaşan gradyan, sonraki her katmandan veya yinelemeli bir ağdaki her zaman adımından gelen birer çarpanın çarpımıdır. Bu çarpanlar sürekli 1'den büyükse çarpım derinlikle üstel olarak büyür: 1,5 çarpanının 30 katmanda yinelenmesi sinyali yaklaşık 190.000 katına çıkarır. Yaygın tetikleyiciler arasında kötü ağırlık başlatması, çok yüksek bir öğrenme oranı, normalleştirilmemiş girdiler, yinelemeli modellerde uzun diziler ve karma hassasiyetli eğitimde taşma yer alır; bu eğitimde 65.504'ü aşan FP16 değerleri inf hâline gelir. Belirtiler arasında aniden sıçrayan veya NaN hâline gelen kayıp eğrisi, adımlar arasında büyüklük mertebeleri artan gradyan normu günlükleri ve NaN hâline gelen ağırlıklar bulunur.
Önleme ve Azaltma#
Modern eğitim işlem hatlarının çoğu bu savunma yöntemlerinden birkaçını bir arada kullanır.
- Gradyan Kırpma: Tüm gradyanların genel L2 normu bir eşiği aşınca her gradyan aynı katsayıyla küçültülür. Güncellemenin yönü korunur, yalnızca uzunluğu sınırlandırılır.
- Yığın Normalizasyonu: Yığın normalizasyonu ve katman normalizasyonu, her katmandaki aktivasyonları yeniden ölçeklendirir; böylece sinyaller katmanlar boyunca kararlı bir ölçekte kalır ve kayıp yüzeyi yumuşar.
- Dikkatli Başlatma: Xavier (Glorot) ve He başlatma yöntemleri, aktivasyon varyansının katmanlar arasında yaklaşık olarak sabit kalması için başlangıç ağırlıklarını ölçeklendirir.
- Artık Bağlantılar: Atlama bağlantıları, her blok çevresinde gradyanlara bir özdeşlik yolu sağlar; böylece geriye doğru ilerleyen sinyal tek bir uzun çarpım yerine yolların toplamı olur.
- Öğrenme Oranı Isınması: Küçük bir öğrenme oranıyla başlayıp ilk adımlar boyunca bu oranı artırmak, ağırlıklar ve optimize edici istatistikleri henüz oturmamışken aşırı büyük güncellemeleri önler.
Aşağıdaki kod parçacığı, her katmanı girdisini 1,5 kat artıran 30 katmanlı bir yığın oluşturur ve ardından ortaya çıkan gradyanı PyTorch ile kırpar:
import torch
from torch import nn
torch.manual_seed(0)
# 30 stacked linear layers, each initialized to amplify its input by 1.5x
layers = [nn.Linear(64, 64, bias=False) for _ in range(30)]
for layer in layers:
nn.init.orthogonal_(layer.weight, gain=1.5)
model = nn.Sequential(*layers)
loss = model(torch.randn(8, 64)).pow(2).mean()
loss.backward()
# clip_grad_norm_ rescales all gradients in place and returns their norm before clipping
norm_before = nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
norm_after = nn.utils.get_total_norm([p.grad for p in model.parameters()])
print(f"Gradient norm before clipping: {norm_before:.2e}, after: {norm_after:.2f}")Ham gradyan normu 9.90e+10, kırpma sonrasındaki norm ise 1.00'dır; bu nedenle ham gradyan ne kadar büyük olursa olsun sonraki optimize edici adımı sınırlandırılmış kalır.
Ultralytics YOLO26 eğitimi, bu korumayı her adımda uygular: eğitici, karma hassasiyetli gradyanların ölçeğini geri alır, genel normlarını 10.0 değerine kırpar ve hâlâ inf veya NaN değerleri içeren güncellemeleri gradyan ölçekleyicinin atlamasına izin verir. Bir özel eğitici, örneğin RT-DETR için sınırı 0.1'e indirerek bu değeri değiştirebilir.
Patlayan ve Kaybolan Gradyanlar#
Her iki problem de geri yayılımdaki katman başına çarpanların aynı çarpımından kaynaklanır. 1'den büyük çarpanlar gradyanları patlatarak kararsız güncellemelere, sayısal taşmaya ve yakınsamama durumuna yol açar; yaygın çözüm kırpmadır. 1'den küçük çarpanlar gradyanları sıfıra doğru küçültür ve erken katmanların öğrenmesini durdurur; yaygın çözümler arasında ReLU gibi doygunluğa ulaşmayan aktivasyonlar, artık bağlantılar ve LSTM gibi kapılı yinelemeli birimler bulunur. Normalleştirme ve dikkatli başlatma her iki probleme de yardımcı olur.
Gerçek Dünya Uygulamaları#
Büyük dil modelleri, uzun metin dizileri üzerinde yüz binlerce adım boyunca eğitilir; bu süreçte ani kayıp sıçramaları bilinen bir tehlikedir ve eğitim tarifleri gradyanları kırpar. GPT-3, Adam ile ve 1.0 değerinde kırpılmış genel gradyan normuyla eğitildi.
Bilgisayarlı görü alanında derin nesne algılama ağları, yüksek öğrenme oranlarında ve karma hassasiyetle COCO ölçeğindeki veri kümelerinde eğitilir; bu nedenle kırpma ve kayıp ölçekleme, nadir görülen aşırı bir yığının ağırlıkları bozmasını önler. Transformer tabanlı algılayıcılar daha hassastır; çünkü kod çözücülerindeki çapraz dikkat üzerinden ilerleyen gradyanlar sıçrayabilir. Bu yüzden RT-DETR ve DINO gibi DETR ailesi modellerinde genellikle 0.1 maksimum normla kırpma yapılır.










