Diğer yanıtların da belirttiği gibi, SGD'yi kullanmanın asıl nedeni, gradyanın hesaplama maliyetini düşürürken, birçok küçük parti veya numunenin ortalaması alındığında gradyan yönünü büyük ölçüde koruyarak - kesinlikle yerel asgari seviyeye getirmenize yardımcı olmaktır.
- Minibatch neden çalışır ?
Bunun arkasındaki matematik, maliyet fonksiyonunun "gerçek" gradyanının (genelleme hatası veya sonsuz büyük numuneler için olan gradyan) gradyanın gerçek veri üreten dağıtım üzerindeki beklenti olmasıdır . bir örnek grubu üzerinden hesaplanan gerçek gradyan, her zaman ampirik veri dağılımıyla ile gerçek gradyana bir yaklaşımdır .
pdatap^data
g=Epdata(∂J(θ)∂θ)
Toplu degrade iniş tüm veri örnekleri verilen olası "optimal" degrade getirebilir, ancak "gerçek" degrade değildir. Daha küçük bir parti (minibatch) muhtemelen tam parti kadar optimal değildir, fakat her ikisi de yaklaşık değerlerdir - yani tek örnekli minibatch (SGD). Standart hatalar arasındaki fark, minibatch'in boyutları ile ters orantılıdır. Yani,
SE(g^(n))SE(g^(m))=mn−−−√
Yani, standart hatanın azaltılması, numune büyüklüğünün artmasının kareköküdür. Yukarıdaki denklem, minibatch gradyan inişinin bir basamağında hesaplanan gradyanlar içindir. Minibatch gradyan güncellemelerinin adımlarını yinelediğinizde ve tüm eğitim örneklerini nihayet bir çağda kullandığınızda, verilen tüm örneklere dayanarak degradelerin ortalamasını neredeyse hesaplarsınız. Yani, minibatch boyutu ,
Yukarıdaki denklemlerden, tek bir dönemle, farklı minibatch boyutlarına sahip ortalama gradyanlarınızı
mEp^data(g^(m))=Ep^data(∂J(θ)∂θ)
m (bir partiden tam partiye) aynı standart hataya sahiptir ve daha da önemlisi, hepsi "doğru" gradyanına sadık yaklaşımlardır, yani "doğru" gradyanının doğru yönüne hareket ederler.
- Minibatch neden daha iyi çalışabilir ?
İlk olarak, minibatch, daha küçük parti büyüklüğüne sahip olan düşük hesaplama talebi nedeniyle teknik olarak çözülemeyen bazı öğrenme problemlerini çözülebilir hale getirir.
İkincisi, azaltılmış parti büyüklüğü mutlaka azaltılmış gradyan doğruluğu anlamına gelmez. Eğitim örneklerinin çoğunda çok fazla gürültü veya aykırı veya önyargı var. Rastgele örneklenmiş bir mini seri, orijinal veri grubundan daha iyi (veya daha kötüsü değil) gerçek veri üretme dağılımını yansıtabilir. Minibatch gradyan güncellemelerinin bazı yinelemeleri size daha iyi bir tahmin verirse, genel olarak bir dönemin ortalama sonucu, tam bir partiden hesaplanan gradyandan daha iyi olabilir.
Üçüncüsü, minibatch sadece nahoş veri örnekleriyle başa çıkmaya yardımcı olmakla kalmaz, aynı zamanda birçok yerel minimuma sahip olan nahoş maliyet işleviyle de ilgilenir. Jason_L_Bens'ın belirttiği gibi, bazen hata manifoldları normal bir gradyanı yerel bir minimaya yakalamak daha kolay olabilirken, minibatch ile hesaplanan geçici olarak rastgele gradyanı yakalamak daha zor olabilir.
Son olarak, gradyan inişiyle tek adımda küresel minimaya ulaşmıyorsunuz, ancak erro manifoldunu tekrarlıyorsunuz. Gradyan büyük ölçüde size yalnızca yinelenecek yönü verir. Minibatch ile çok daha hızlı yineleyebilirsiniz. Çoğu durumda, daha fazla yineleme, ulaşabileceğiniz daha iyi noktaya. Gerçekten de tüm hava koşullarında küresel ve hatta yerel olarak en uygun nokta umrunda değil. Sadece size kabul edilebilir genelleme hatası veren makul bir modele ulaşmak istiyorsunuz. Minibatch bunu kolaylaştırıyor.
Ian Goodfellow'un "Deep learning" kitabını ve ark.nın dikkatlice okuduysanız, bu konuda oldukça iyi tartışmalar yaptığını görebilirsiniz.