Parti büyüklüğü SGD'nin yakınsamasını nasıl etkiler ve neden?


18

Minibatch boyutu büyüdükçe SGD'nin yakınsamasının aslında zorlaştığı / kötüleştiği gibi birçok tartışmadan benzer bir sonuç gördüm, örneğin bu makale ve bu cevap . Ayrıca, erken aşamada küçük öğrenme oranları veya parti boyutları gibi hileler kullanan insanların büyük parti boyutları ile bu zorluğu gidermek için duydum.

Ancak bir minibatch ortalama kaybı veri dağıtımı üzerinde beklenen kaybı bir yaklaşım olarak düşünülebilir gibi sezgisel görünüyor,

1|X|xXl(x,w)Expdata[l(x,w)]
seri boyutu ne kadar büyük olursa, o kadar doğru olması gerekir. Pratikte neden böyle değil?


İşte açıklamaya çalışan bazı düşüncelerim (muhtemelen yanlış).

Modelin parametreleri birbirine çok bağlıdır, parti çok büyük olduğunda bir kerede çok fazla parametreyi etkileyecektir, böylece parametrelerin kararlı bir doğal bağımlılığa ulaşması zor mu? ( parti normalizasyon belgesinde belirtilen dahili değişken değişken problemi gibi )

Ya da hemen hemen tüm parametreler her yinelemeden sorumlu olduğunda, gereksiz örtülü kalıpları öğrenme eğilimi gösterirler ve bu nedenle modelin kapasitesini azaltır mı? (Diyelim ki basamak sınıflandırma problemleri için bazı desenler noktalardan, bazıları kenarlardan sorumlu olmalı, ancak bu olduğunda her desen tüm şekillerden sorumlu olmaya çalışır).

Yoksa, parti büyüklüğü eğitim setinin ölçeğine yaklaştığında, minibatchlar artık ilişkili minibatchlar için büyük bir olasılık olacağından, veri dağıtımından uzak görülemez mi?


Güncelleme
Benoit Sanchez'in cevabında belirtildiği gibi, önemli minibatchların bir güncellemeyi tamamlamak için daha fazla hesaplama gerektirmesi ve analizlerin çoğunun karşılaştırma için sabit miktarda eğitim dönemi kullanmasıdır.

Bununla birlikte, bu makale (Wilson ve Martinez, 2003), yeterli miktarda eğitim çağına rağmen, daha büyük bir parti boyutunun hala biraz dezavantajlı olduğunu göstermektedir. Genelde durum böyle mi? resim açıklamasını buraya girin

Yanıtlar:


12

Tabii bir güncelleme büyük minibatch ile daha (doğruluk açısından) "daha iyi" olduğu bir güncelleme küçük minibatch ile. Bu, sorunuza kopyaladığınız tabloda görülebilir ( örnek boyutunu olarak arayın ):N

  • toplu iş boyutu 1: güncelleme sayısı 27N
  • 8343×N200000.47N-

Daha büyük gruplar için aynı doğruluk için çok daha az güncellemeye ihtiyacınız olduğunu görebilirsiniz.

Ancak aynı miktarda veri işlemediği için karşılaştırılamaz. İlk makaleyi aktarıyorum:

kBj1jkBj

Burada aynı miktarda veri işlemekle ilgilidir ve çoklu mini partiler için küçük bir ek yük olsa da, bu karşılaştırılabilir işleme kaynakları gerektirir.

Birkaç güncellemenin neden daha iyi olduğunu anlamanın birkaç yolu vardır (aynı miktarda veri okunurken). Stokastik degrade iniş ve degrade inişin ana fikri. Her şeyi okumak ve sonunda kendinizi düzeltmek yerine, kendinizi daha iyi bir tahminden düzelttiğiniz için kendinizi düzelterek bir sonraki okumaları daha kullanışlı hale getirirsiniz. Geometrik olarak, birkaç güncelleme daha iyidir, çünkü her bir parçanın başlangıcında (yaklaşık) degrade yönünde birkaç parça çiziyorsunuz. tek bir büyük güncelleme ise başlangıçtan itibaren (tam) gradyan yönünde tek bir segmenttir. Yön daha az hassas olsa bile yönü birkaç kez değiştirmek daha iyidir.

Mini partilerin boyutu aslında güncellemelerin sıklığıdır: daha küçük minibüsler daha fazla güncelleme yapar. Bir uçta (minibatch = veri kümesi) degrade inişiniz var. Diğer uçta (minibatch = bir satır) SGD hattı başına dolu. Her hat için SGD zaten daha iyidir, ancak daha büyük minibatchlar daha verimli paralelleştirme için uygundur.

Yakınsama sürecinin sonunda, SGD (toplu) GD'den daha az hassas hale gelir. Ancak bu noktada, işler (genellikle) bir tür işe yaramaz şekilde hassas bir uyum haline gelir. Egzersiz setinde biraz daha küçük bir kayıp fonksiyonu elde ederken, gerçek tahmin gücü elde edemezsiniz. Sadece çok hassas bir optimum arıyorsunuz ama yardımcı olmuyor. Kayıp fonksiyonu doğru bir şekilde düzenlenmişse (aşırı uymayı önler), tam olarak "fazla" -fit yapmazsınız, sadece yararsız bir şekilde "hiper" uyarlaması yaparsınız. Bu, test setinde doğrulukta önemli bir değişiklik olmadığını gösterir.


1
teşekkürler, çok mantıklı. Yani temelde aynı miktarda güncelleme yapıyorsanız, daha büyük parti boyutu en azından iyi olacak mı?
dontloo

bununla ilgili yayınlanmış deneyleri biliyor musunuz (farklı parti boyutlarını sabit sayıda güncellemeyle karşılaştırarak)?
dontloo

Aynı sayıda güncelleme için evet, daha büyük gruplar her zaman daha iyidir. Bir yayın bilmiyorum, eğer bir tane bulursam, yayınlayacağım.
Benoit Sanchez

Sorunuzun geri kalanını okudum (tablo). İlginç bir şekilde, bir test setinde sonuçları gösterirken, gradyan insana yönelik amaç eğitim setini optimize etmektir. Küçük partilerin, optimumun rastgele seçilmesiyle belirli bir tür küçük aşırı takılmadan kaçınılması mümkündür. Bu sezgisel yakalamak değil ince bir şey.
Benoit Sanchez

Makaleye göre doğruluk farkı önemli değil. Sadece doğruluğun aslında aynı olduğunu belirtmek istiyorlar. Esas olarak belirtmek istedikleri, küçük partilere sahip SGD'nin çok daha hızlı olmasıdır.
Benoit Sanchez

4

Curtis White'ın cevabına eklemek (ve daha fazla referans eklemek için):

Evet SGD bir tür düzenleyici olarak çalışır. Bu önemlidir, çünkü aksi takdirde DNN'lerin neden her zaman fazla uymadığını açıklamak zordur, çünkü yapabilirler .

Bunun nedeni, anladığım kadarıyla, SGD'nin parametre alanında 'etrafında atlanmaya' neden olmasıdır, bu nedenle eğitim sırasında parametreler dar bir minimumda, sadece daha geniş olanlarda (veya yakınında) kalamaz. Ve bu daha geniş olanların görünüşte [1] daha iyi genelleme (diğer bir deyişle, daha az takma).

Daha fazla referans:

  • İşte [2] bunu resmileştiren başka bir makale (veya her şeyi takip etmedim, kendiniz kontrol edin!)
  • Bu kağıt [3] "stochastic relaxation, or random diffusion"SGD'nin doğasında var olan stokastikliğin yol açtığı bir aşama olduğunu iddia etmektedir "maximiz[ation of] the conditional entropy of the layer".

Her ikisi de SGD'nin bir entropi düzenleme terimine karşılık geldiğini söylüyor.

Parti büyüklüğünün yakınsamayı etkilemesinin başka yolları da olabilir; bildiğim bu.


[1] Örnek: "Genelleme ve Stokastik Degrade İniş Üzerine Bayesci Bir Bakış", Smith, Le, 2018. Özetden : "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "Stokastik gradyan inişi varyasyon çıkarımı gerçekleştirir, derin ağlar için döngüleri sınırlamak için birleşir", Chaudhari, Soatto 2017

[3] "Derin Sinir Ağları'nın kara kutusunun bilgi yoluyla açılması" Schwartz-Ziv, Tishby, 2017

[4] "Derin öğrenmeyi anlamak genellemeyi yeniden düşünmeyi gerektirir", C. Zhang vb. 2016


(+1) İyi referanslar. btw, [4] 'deki ilk yazar C. Zhang
user20160

Oh, haklısın! Düzeltme için teşekkürler.
dasWesen

0

Çok büyük bir parti boyutu en azından SGD kullanırken yakınsamayı önleyebilir ve MLP'yi Keras kullanarak eğitir. Neden olduğu gibi, degradelerin ortalamasıyla ilgili olup olmadığından veya daha küçük güncellemelerin yerel minimadan kaçma olasılığı sağladığından% 100 emin değilim.

Buraya bakın .

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.