Stokastik gradyan inişi için parti büyüklüğü ne kadar olmalıdır?


Yanıtlar:


72

"Örnek size" olarak adlandırılır bahsediyoruz seri boyutu , . Toplu iş boyutu parametresi, mini toplu Stochastic Gradient Descent (SGD) içeren bir sinir ağını eğittiğinizde ayarlayacağınız hiper parametrelerden yalnızca biridir ve verilere bağlıdır. Hiper-parametre aramanın en temel yöntemi, ağı birleştiren bir çift bulmak için öğrenme oranı ve parti büyüklüğü üzerinde bir ızgara araması yapmaktır.B

Parti boyutunun ne olması gerektiğini anlamak için parti gradyanı inişi, çevrimiçi SGD ve mini parti SGD arasındaki ilişkiyi görmek önemlidir. Burada, her üç tipin de genelleştirilmesi olan mini-seri SGD'deki ağırlık güncelleme basamağının genel formülü bulunmaktadır. [ 2 ]

θt+1θt-ε(t)1BΣb=0B-1L(θ,mb)θ
  1. Toplu degrade iniş, B=|x|
  2. Çevrimiçi stokastik gradyan inişi: B=1
  3. Mini toplu stokastik gradyan iniş: ama B < | x | .B>1B<|x|

1 ile kayıp fonksiyonunun artık rastgele bir değişken olmadığını ve stokastik bir yaklaşım olmadığını unutmayın.

SGD, normal "toplu" gradyan inişinden daha hızlı bir şekilde birleşir, çünkü egzersiz setinin rastgele seçilen bir alt kümesine baktıktan sonra ağırlıkları günceller. Let bizim eğitim seti olmak ve izin m x . B parti büyüklüğü sadece m : B = | m | .xmxBmB=|m|

Toplu gradyan iniş ağırlıkları güncelleştirir tüm veri kümesi arasında gradyanları kullanılarak x ; SGD, mini parti m için ortalama gradyanlar kullanarak ağırlıkları günceller . (Ortalamanın bir toplamın aksine kullanılması, algoritmanın veri kümesi çok büyükse çok büyük adımlar atmasını engeller. Aksi takdirde, öğrenme oranınızı veri kümesinin boyutuna göre ayarlamanız gerekir.) Bunun beklenen değeri SGD'de kullanılan gradyanın stokastik yaklaşımı, parti gradyanı inişinde kullanılan deterministik gradyana eşittir. E [ L S G D ( θ , m ) ] = θxm .E[LSG,D(θ,m)]=L(θ,x)

Bir örnek alıp ağırlıklarımızı her güncellediğimizde mini-batch olarak adlandırılır . Veri setinin tamamını taradığımız her seferde buna çağ denir .

En bazı veri vektör olduğunu varsayalım , bizim sinir ağı parameterizes bir ilk ağırlık vektörü θ 0 : R, S ve kayıp fonksiyonu L ( θ , x ) : R, SR DR S biz küçültmeye çalışıyorlar. Eğer T eğitim örneklerine ve toplu B boyutuna sahipsek, bu eğitim örneklerini C mini gruplarına bölebiliriz:x:R,Dθ0:R,SL(θ,x):R,SR,DR,STB

C=T/B

Basit olması için, T'nin B tarafından eşit bir şekilde bölünebilir olduğunu varsayabiliriz, ancak, bu olmadığında, genellikle olmadığı gibi, her mini partiye boyutunun bir işlevi olarak uygun ağırlık atanmalıdır.

M

t0süre t<Mθt+1θt-ε(t)1BΣb=0B-1L(θ,mb)θtt+1

Not: Gerçek hayatta, bu eğitim örneği verilerini bellekten okuyoruz ve önbellek önbelleğe alma ve bilgisayarınız tarafından yapılan diğer bellek püf noktaları nedeniyle, bellek erişimi birleştiğinde , yani belleği okuduğunuzda algoritmanız daha hızlı çalışacaktır. sırayla ve rastgele atlamak yok. Bu nedenle, çoğu SGD uygulaması veri kümesini karıştırır ve ardından örnekleri okunacakları sırayla belleğe yükler.

Yukarıda tarif edilen vanilya (momentum yok) SGD için ana parametreler:

  1. ε

Epsilonu, dönem sayısından öğrenme oranına kadar bir işlev olarak düşünmeyi seviyorum. Bu fonksiyona öğrenme oranı programı denir .

ε(t):N-R,

Öğrenme oranını sabit tutmak istiyorsanız epsilon'u sabit bir fonksiyon olarak tanımlayın.

  1. Parti boyutu

Parti büyüklüğü, ağırlık güncellemesi yapmadan önce kaç örneğe bakacağınızı belirler. Ne kadar düşük olursa, eğitim sinyali o kadar gürültülü olur, ne kadar yüksek olursa, her adım için degradeyi hesaplamak o kadar uzun sürer.

Alıntılar ve Ek Okumalar:

  1. Gradyan Tabanlı Öğrenmeye Giriş
  2. Degrade temelli derin mimarlık eğitimi için pratik öneriler
  3. Stokastik Optimizasyon İçin Verimli Mini Toplu Eğitim

1
For simplicity we can assume that D is evenly divisible by B. T'nin B tarafından eşit bir şekilde bölünmesi gerektiği anlamına gelmiyor mu?
Antoine

4
ve OP'nin sorusuna yanıt vermek için B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(Bengio'nun 2012 raporundan) ekleyebilirsin
Antoine

@sabalaba Güzel cevap. Ancak, "M devirleriyle SGD için yinelemeli bir algoritma aşağıda verilmiştir" denkleminde, her bir mini toplu işlemden sonra ağırlığı güncelleyeceğimiz anlamına gelmiyor mu? Başka bir deyişle, dönemin içinde döngünün içinde başka bir döngü (C mini partileri üzerinde) olmamalı, yani t <M
Kaushik Acharya

2
İstatistiklerde, bir örneklem çok sayıda gözlemden oluşur. Bu nedenle örneklem büyüklüğü istatistikçiler tarafından doğru bir şekilde yorumlanmaktadır. Bilgisayar bilimlerinde (özellikle makine öğreniminde) bir örnek , tek bir gözlemdir ve toplu bir örnek koleksiyonudur. Biraz kafa karıştırıcı olabilir. İstatistikçilere bir örnek veri bilimcilerine yönelik bir gruptur
Oleg Melnikov

nm
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.