TL; DR: Çok büyük bir küçük grup boyutu genellikle daha düşük doğruluk sağlar!
İlgilenenler için işte bir açıklama.
İki hız kavramı vardır:
- Hesaplama hızı
- Bir algoritmanın yakınsama hızı
Hesaplama hızı, donanımda sayısal hesaplamalar yapmanın hızıdır. Dediğiniz gibi, genellikle daha büyük bir mini parti büyüklüğüyle daha yüksektir. Bunun nedeni, lineer cebir kütüphanelerinin daha fazla bellek kullanmak pahasına, onları hızlandırmak için vektör ve matris işlemleri için vectorization kullanmasıdır. Bir noktaya kadar kazançlar önemli olabilir. Tecrübelerime göre, eğer varsa hızda yalnızca marjinal kazanımların olduğu bir nokta var. Mesele, veri kümesine, donanıma ve sayısal hesaplamalar için kullanılan bir kütüphaneye (kaputun altında) bağlıdır.
Ancak, algoritmamızın ne kadar çabuk birleştiğini söyleyen başka bir hız kavramının da olduğunu unutmayalım.
Öncelikle, algoritmamızın birleşmesi ne anlama geliyor? Doğrulama setinde hesaplanan bir doğruluk veya yanlışlıktan ne zaman memnun olduğumuzu tanımlayıp karar vermek bize bağlıdır. Bunu önceden tanımlayabilir ve algoritmanın bu noktaya gelmesini bekleyebiliriz veya eğitim sürecini izleyebilir ve doğrulama hatası önemli ölçüde artmaya başladığında bunu durdurmaya karar verebiliriz (model veri setine uymaya başlar). Bunu hemen durdurmamalıyız, mini partilerle çalışırsak ilk hatanın artmaya başladığı an, çünkü SGD'de Stochastic Gradient Descent kullanıyoruz. (Tam parti) Gradient Descent olması durumunda, her çağdan sonra, algoritma yerel mi yoksa global mi olursa olsun asgariye yerleşir. SGD hiçbir zaman asgariye razı olmaz. Etrafında salınan tutar. Süresiz devam edebilirdi.
Şimdi, tüm bu teoriden sonra, dikkat etmemiz gereken bir "yakalama" var. Daha küçük bir parti büyüklüğü kullanırken, hatanın hesaplanması, daha büyük bir parti büyüklüğü kullandığımızdan daha fazla gürültüye sahiptir. Biri derdi ki, bu kötü, değil mi? Mesele şu ki, bu algoritma algoritmanın kötü bir yerel minimumdan atlamasına yardımcı olabilir ve daha iyi bir yerel minimum veya umarım küresel minimum bulma şansını arttırır.
Bu nedenle, daha büyük olanın yerine daha küçük bir parti büyüklüğünü kullanarak daha hızlı bir şekilde daha iyi bir çözüm bulabilirsek , sadece "istenmeyen" gürültünün yardımıyla, algoritmamızın tatmin edici bir şekilde bulması için gereken toplam süreyi ayarlayabiliriz. çözüm ve daha yüksek doğruluk.
Söylemek istediğim, belirli bir doğruluk (veya hata) için, daha küçük parti büyüklüğünün, çoğu kişinin inandığı gibi, daha kısa bir toplam eğitim süresine yol açabileceğidir.
Veya, önceki eğitim zamanını aynı tutmaya karar verirsek, daha küçük bir parti büyüklüğü ile biraz daha yüksek bir doğruluk elde edebiliriz ve büyük olasılıkla, özellikle de öğrenme oranımızı uygun bir şekilde seçmiş olursak yapacağız.
Zamanınız varsa, bu makaleyi inceleyin:
ImageNet'teki CNN ilerlemelerinin sistematik olarak değerlendirilmesi
Özellikle, "3.7. Parti büyüklüğü ve öğrenme oranı" ve Şekil 8'e bakın. , öğrenme oranını bir sezgisel olarak ayarlasanız bile.
Genel olarak, 32 parti büyüklüğü iyi bir başlangıç noktasıdır ve 64, 128 ve 256 ile de denemelisiniz. Bazı değerler için diğer değerler (daha düşük veya daha yüksek) iyi olabilir, ancak verilen aralık genellikle en iyi ile denemeye başla. Yine de, 32 yaşın altında olmasına rağmen, vektörlemeyi tam olarak kullanamadığı için hesaplama hızının düşmesi nedeniyle çok yavaşlayabilir. Bir "yetersiz bellek" hatası alırsanız, yine de mini parti boyutunu küçültmeyi denemelisiniz.
Yani, sadece hafızaya sığabilecek en büyük mini parti boyutunu kullanmakla ilgili değil.
Sonuç olarak ve sorunuzu cevaplamak için, daha küçük bir küçük parti büyüklüğü (çok küçük değil), genellikle bir eğitim algoritmasının az sayıdaki yinelemelerine değil, büyük bir büyüklük boyutuna göre değil, aynı zamanda genel olarak daha yüksek bir hassasiyete de yol açar. Aynı miktarda eğitim süresi içinde veya daha az iyi performans gösteren bir sinir ağı.
Yüksek gürültünün, içinde sıkışıp kalmak yerine, kötü bir yerel minimumdan atlamasına yardımcı olabileceğini unutmayın.