Nesne tespiti, poz tahmini ve daha fazlası gibi görevler için kararlı bir eğitim sağlamak amacıyla, derin öğrenmede patlayan gradyanları nasıl yöneteceğinizi öğrenin.
Patlayan gradyanlar, yapay sinir ağlarının eğitimi sırasında, gradyanlar (ağın ağırlıklarını güncellemek için kullanılan değerler) birikip aşırı derecede büyüdüğünde ortaya çıkar. Bu fenomen genellikle
sürekli öğrenme sırasında meydana gelir.
geri yayılım (backpropagation), ağın
hatayı hesaplayarak doğruluğu artırmak için kendini ayarladığı süreçtir. Bu hata sinyalleri derin katmanlar boyunca tekrar tekrar çarpıldığında
, katlanarak büyüyebilir ve
model ağırlıklarıBu kararsızlık, modelin
yakınsamasına engel olur, öğrenme sürecini etkili bir şekilde kesintiye uğratır ve genellikle kayıp fonksiyonunun
NaN (Sayı Değil) değerleri.
Gradyanların neden patladığını anlamak için, derin öğrenme mimarilerinin yapısına bakmak faydalıdır. Derin ağlarda, örneğin Tekrarlayan Sinir Ağları (RNN'ler) veya çok derin Evrişimli Sinir Ağları (CNN'ler), erken katmanlar için gradyan, tüm sonraki katmanlardan gelen terimlerin çarpımıdır. Bu terimler 1,0'dan büyükse, tekrarlanan çarpma işlemi bir kar topu etkisi gibi davranır.
Bu, optimizerin çok büyük adımlar atarak hata ortamında optimal çözümü aşması gibi bir senaryo yaratır. Bu, Stochastic Gradient Descent (SGD) gibi standart algoritmalarla karmaşık veriler üzerinde eğitim yaparken sıkça karşılaşılan bir zorluktur .
Modern AI geliştirme, gradyanların kontrolden çıkmasını önlemek için çeşitli standart teknikler kullanır ve güvenilir model eğitimi sağlar.
Patlayan gradyan sorunu, genellikle karşıtı olan kaybolan gradyan ile birlikte tartışılır. Her ikisi de geri yayılımda kullanılan tümülüs kuralından kaynaklanır, ancak zıt şekillerde ortaya çıkarlar.
Gradyan büyüklüğünü ele almak, çeşitli endüstrilerde sağlam AI çözümleri uygulamak için çok önemlidir.
Üst düzey kütüphaneler genellikle bunu otomatik olarak hallederken, gradyan kırpmayı PyTorch 'da gradyan kırpma işlemini açıkça uygulayabilirsiniz. Bu kod parçacığı, optimizer ağırlıkları güncellemeden önce gradyanları nasıl kırpacağınızı gösterir.
import torch
import torch.nn as nn
# Define a simple model and optimizer
model = nn.Linear(10, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# Simulate a training step
loss = torch.tensor(100.0, requires_grad=True) # Simulated high loss
loss.backward()
# Clip gradients in place to a maximum norm of 1.0
# This prevents the weight update from being too drastic
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
# Update weights using the safe, clipped gradients
optimizer.step()
