Sinir ağını eğitmek için toplu iş hacmi ve yineleme sayısı


221

Bir sinir ağını eğitirken, ne tür bir fark yaratabilir?

  • parti büyüklüğü ve yineleme sayısıab
  • parti büyüklüğünü ve ile yineleme sayısınıcd

nerede ?ab=cd

Aksi taktirde, sinir ağını aynı miktarda eğitim örneğiyle eğittiğimizi varsayarak, optimum parti büyüklüğünü ve yinelemenin sayısını nasıl ayarlayacağız? (parti büyüklüğü * yineleme sayısı = sinir ağına gösterilen egzersiz örneklerinin sayısı, aynı eğitim örneği potansiyel olarak birkaç kez gösteriliyor)

Toplu iş boyutu ne kadar yüksek olursa, kişinin ihtiyaç duyduğu hafıza alanı o kadar fazla olur ve çoğu zaman hesaplamaları daha hızlı yapar. Fakat eğitimli ağın performansı açısından ne fark eder?


1
Farklı parti boyutlarının Cifar-10 veri setinin doğruluğu üzerindeki etkilerini karşılaştırırken doğru parti boyutunu nasıl seçeceğinizi açıklayan bu blogu inceleyin.
Teja Sreenivas

Yanıtlar:


207

Nitish Shirish Keskar'dan, Dheevatsa Mudigere, Jorge Nocedal, Mikhail Smelyanskiy, Ping Tak Peter Tang. Derin Öğrenmeye Yönelik Büyük Toplu Eğitimde: Genelleme Boşluğu ve Keskin Minima. https://arxiv.org/abs/1609.04836 :

Stokastik gradyan iniş yöntemi ve çeşitleri, birçok Derin Öğrenme görevi için tercih edilen algoritmalardır. Bu yöntemler, gradyan için bir yaklaştırma hesaplamak için eğitim verilerinin bir kısmının, genellikle 32-512 veri puanının örneklendiği küçük bir toplu rejimde çalışır. Uygulamada, daha büyük bir parti kullanıldığında, genelleme kabiliyetiyle ölçülen modelin kalitesinde önemli bir bozulma olduğu gözlemlenmiştir.Büyük parti rejiminde bu genelleme düşüşünün nedenini araştırmak için bazı girişimler olmuştur, ancak bu fenomenin kesin cevabı şimdiye kadar bilinmemektedir. Bu yazıda, büyük parti yöntemlerinin eğitim ve test fonksiyonlarının keskin minimize edicilerine yakınlaşma eğilimi gösterdiği görüşünü destekleyen geniş nümerik kanıtlar sunmaktayız - ve bu keskin minimin daha zayıf genellemelere yol açtığı. Buna karşılık, küçük parti yöntemleri tutarlı bir şekilde düz küçültücülere yakınlaşır ve deneylerimiz bunun gradyan kestirimindeki doğal gürültüden kaynaklandığına dair yaygın bir görüş açısı desteklemektedir. Ayrıca, geniş kapsamlı yöntemlerin genelleme açığını ortadan kaldıracak ve gelecekteki araştırma fikirleri ve açık sorularla sonuçlanan çeşitli ampirik stratejileri de tartışıyoruz.

[...]

Genelleme kabiliyetinin yetersizliği, büyük parti yöntemlerinin eğitim işlevinin keskin minimize edicilerine yakınlaşma eğiliminde olmasından kaynaklanmaktadır . Bu küçültücüler, cinsinden büyük pozitif özdeğerlerle karakterize edilir ve daha az genelleme eğilimindedir. Buna karşılık, küçük parti yöntemleri, in küçük pozitif özdeğerleri ile karakterize edilen yassı küçültücülere yaklaşır . Derin sinir ağlarının kayıp fonksiyonunun peyzajının, büyük parti yöntemlerinin neredeyse hiç keskin olmayan minimum bölgelere çekilmeyeceği ve küçük parti yöntemlerinden farklı olarak, bu minimizatörlerin havzalarından kaçamayacağı şekilde olduğunu gözlemledik.2f(x)2f(x)

[...]

görüntü tanımını buraya girin

Ayrıca, Ian Goodfellow’dan gelen ve bazı eğitim setlerini neden gradyanı hesaplamak için kullanmadıklarına yanıt veren iyi bir içgörü var ? Quora'da:

Öğrenme oranının büyüklüğü, maliyet fonksiyonunun ne kadar eğri olduğu gibi faktörlerle sınırlıdır. Degrade inişini, maliyet işlevine doğrusal bir yaklaştırma yaparak daha sonra bu yaklaşık maliyet boyunca yokuş aşağı ilerleyerek düşünebilirsiniz. Maliyet fonksiyonu oldukça doğrusal değilse (yüksek kavisli), o zaman yaklaşım çok uzaklara kadar iyi olmaz, bu nedenle sadece küçük adım boyutları güvenlidir. Bu konuda daha fazla bilgiyi derinlemesine ders kitabının 4. Bölümünde, sayısal hesaplamada okuyabilirsiniz: http://www.deeplearningbook.org/contents/numerical.html

M örneklerini bir minibatch'e koyduğunuzda, O (m) hesaplama yapmanız ve O (m) belleği kullanmanız gerekir, ancak gradyandaki belirsizlik miktarını yalnızca O (sqrt (m)) faktörü ile azaltırsınız. Başka bir deyişle, minibatch'e daha fazla örnek vermenin azalan marjinal getirileri var. Bu konuda derin öğrenme ders kitabının 8. Bölümünde, derin öğrenme optimizasyon algoritmalarında daha fazla bilgi bulabilirsiniz : http://www.deeplearningbook.org/contents/optimization.html

Ayrıca, bunun hakkında düşünürseniz, tüm eğitim setini kullanmak bile, size gerçek degradeyi vermez. Gerçek degrade, veri üreten dağıtım tarafından ağırlıklandırılmış tüm olası örnekler üzerinden alınan beklentiyle beklenen gradyan olacaktır. Tüm eğitim setini kullanmak, sadece minibatch'ınızın boyutunun hesaplama için harcadığınız miktar yerine veri toplama için harcadığınız miktarla sınırlandırıldığı çok küçük bir minibatch boyutu kullanıyor.

İlgili: Toplu degrade iniş karşı stokastik degrade iniş


Batch_size yalnızca ayarlanan eğitim verilerini partilere ayırdığı için, veri kümesini (geçici değil) yeniden düzenlemek tüm partiler arasında tekdüze bir değişkenliğe sahip olur mu? Bunu yapmak, toplu boyut optimizasyonuna olan ihtiyacı azaltabilir; bu, yalnızca daha hızlı yakınsama bulmak için iyidir. eğer öyleyse, nasıl yapılırdı? Düz bir minima sağlayamayacağını düşünüyordum. Detaylı rehberlik takdir ediyorum.
user12348

@ user12348 Veri kümesini nasıl yeniden düzenlersiniz? Verilen veri boyutunun eğitimden sonra belirli bir özellik vektörü üreteceğini nasıl tahmin edersiniz?
Cloud Cho,

46

Mini toplu stokastik gradyan iniş algoritmasında parti boyutunu küçültmekten ve daha az yineleme gerektiren daha büyük parti boyutlarıyla karşılaştırmaktan bahsettiğinizi farz ediyorum.

Andrew Ng. bunun ve bazı görsellerin ML ve sinir ağları üzerindeki çevrimiçi ders sınıfındaki tartışmalarını sağlar. Bu nedenle, bu görevin geri kalanı çoğunlukla, o sınıftaki öğretilerinin yetersizliğidir.

İki uç ucu alalım, bir tarafta her degrade iniş adımı tüm veri kümesini kullanıyor. Her örnek için degradeleri hesaplıyorsunuz. Bu durumda bildiğiniz tam bir yerel minimum doğru doğrudan iyi. Yanlış yöne gitmekle zaman kaybetmezsin. Yani sayılar gradyan iniş adımları açısından, en az oraya ulaşırsınız.

Tabii ki tüm veri kümesindeki gradyanı hesaplamak pahalıdır. Şimdi diğer uç noktaya gidiyoruz. Sadece 1 numunenin parti büyüklüğü. Bu durumda, bu numunenin gradyanı sizi tamamen yanlış yöne götürebilir. Ancak, hey, bir degradeyi hesaplama maliyeti oldukça önemsizdi. Sadece bir numuneyle ilgili adımlar atarken, biraz "dolaşırsınız", ancak ortalama olarak tam parti gradyanı inişinde olduğu gibi eşit derecede makul bir yerel asgari seviyeye yöneliyorsunuz.

Bu, belki de 1 örnekli stokastik gradyan inişinin etrafında zıplamanın, tam parti modunun önleyemeyeceği yerel bir minimadan çıkmanıza yardımcı olabileceğini öne süren bazı literatürleri gördüğümü belirtmek için bir an olabilir. Buradaki bazı iyi cevaplar, bu soruyu benden daha doğrudan ele alıyor.

Hesaplamalı güç açısından, tek örnekli stokastik GD süreci çok daha fazla yineleme alırken, oraya tam parti modundan daha az maliyetle "tipik olarak" ulaşıyorsunuz. Andrew Ng bunu böyle koyuyor.

Şimdi sorduğunuz orta alanı bulalım. Modern BLAS kütüphanelerinin bilgisayar vektör matematiğini oldukça verimli yaptığını farkedebiliriz, bu nedenle bir kerede 10 veya 100 örneğin hesaplanması, kodunuzu doğru şekilde vektörleştirdiğinizi varsayalım, 1 örneklemekten ziyade daha fazla iş olacağını düşünün (bellek çağrısı verimlerinin yanı sıra en verimli matematik kütüphanelerine yerleştirilmiş hesaplamalı numaralar). Ve 10, 100, 1000 numunelik bir partiden ortalama alma, gerçek, tam parti mod gradyanının daha makul bir yaklaşımı olan bir gradyan üretecektir. Bu nedenle adımlarımız artık daha doğru, yani bir araya gelmek için daha azına ihtiyacımız var ve tek bir örnek GD'den yalnızca marjinal olarak daha yüksek bir maliyetle.

Kullanmanız gereken mini toplu işin tam boyutunu optimize etmek genellikle deneme yanılma durumuna bırakılır. Sayılardan birkaç bine kadar sayıları olan bir veri kümesi örneği üzerinde bazı testler uygulayın ve hangisinin en hızlı şekilde birleştiğini görün, sonra bununla devam edin. Bu aralıklardaki parti büyüklükleri literatürde oldukça yaygın görünüyor. Verileriniz gerçekten IID ise, o zaman rastgele işlemlerin çeşitlendirilmesinde merkezi limit teoremi de bu aralıkların tam degradenin makul bir tahmini olduğunu düşündürür.

Tam olarak yinelemenin ne zaman durdurulacağına karar vermek, genellikle genelleme hatasını eğitimsiz bir sette eğitimsizliğe karşı izleyerek ve doğrulama hatasının en düşük noktasında olduğu noktayı seçerek yapılır. Çok fazla yineleme için eğitim sonunda aşırı uyarmaya neden olur, bu noktada doğrulama setinizdeki hatanız tırmanmaya başlar. Bunu gördüğünüzde geriye doğru durun ve en uygun noktada durun.


22

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.


14

Google’dan bu soruyu neredeyse doğrudan ele alan yeni bir (2018) ICLR konferansı makalesine gönderme yapmak için bu soruya bir cevap daha ekliyorum.

Title: Öğrenme Hızını Düşürme, Parti Boyutunu Artırma

https://arxiv.org/abs/1711.00489

Yukarıdaki kağıttan özet buraya kopyalanır:

Öğrenme oranını düşürmek yaygın bir uygulamadır. Burada, eğitim sırasında parti boyutunu artırarak genellikle hem eğitim hem de test setlerinde aynı öğrenme eğrisini elde edebileceğimizi gösteriyoruz. Bu prosedür stokastik gradyan iniş (SGD), momentumlu SGD, Nesterov momentum ve Adam için başarılıdır. Aynı sayıda eğitim döneminden sonra eşdeğer test doğruluğuna ulaşır, ancak daha az parametre güncellemesiyle daha fazla paralellik ve daha kısa eğitim sürelerine yol açar. Öğrenme oranını increasing artırarak ve parti büyüklüğü B∝ϵ'yi ölçeklendirerek parametre güncelleme sayısını daha da azaltabiliriz. Son olarak, test momenti hassasiyetini m artırabilir ve B∝1 / (1 − m) skalasına rağmen, test doğruluğunu hafifçe azaltma eğilimindedir. En önemlisi, Tekniklerimiz hiper-parametresi ayarlaması olmadan büyük parti eğitimi için mevcut eğitim programlarını yeniden hedeflememize izin verir. ResNet-50'yi ImageNet'te 30 dakikanın altında bir sürede% 76,1 doğrulama doğruluğuna yetiştiriyoruz.


1
Daha büyük bir bellek gereksinimi, bir değeri düşürmekten kaçınmak için kötü bir denge gibi görünüyor. Ayrıca IMHO eğitim sırasında hafızanın ayak izini büyütüyor, daha az değil, ölçeklenebilir bir algoritma sağlıyor.
P-Gn

3

Burada bazı deneysel deneyimler gösteriyorum . Parti boyutu 4 ve parti boyutu 4096 ile bir deney yaptım. Boyut 4096, 1024x daha az geri yayılım yapıyor. Bu yüzden benim sezgim, daha büyük partilerin optimum çözüm için daha az sayıda ve daha kaba arama adımlarını gerçekleştirmesidir ve bu nedenle inşaatın optimal çözüme yaklaşması daha az olası olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.