Yanlılığı düzeltmeme sorunu
Kağıda göre
Seyrek degradeler söz konusu olduğunda, ikinci anın güvenilir bir tahmini için, gra2 küçük bir değer seçerek birçok degradenin ortalamasını almak gerekir; bununla birlikte, başlatma önleme düzeltmesinin eksikliğinin çok daha büyük başlangıç adımlarına yol açacağı tam olarak bu küçük β2 vakasıdır.
Normal uygulamada çok daha yakın 1 olarak ayarlanır (yazar tarafından önerilen , ), güncelleştirme katsayılarını, çok daha küçüktür .β2β1β2=0.999β1=0.91−β2=0.0011−β1=0.1
Eğitim ilk aşamasında , , doğrudan yanlı kestirimi kullanılmıştır Parametre güncelleme terimi çok büyük olabilir.m1=0.1gtv1=0.001g2tm1/(v1−−√+ϵ)
Öte yandan önyargı düzeltmeli tahmin, ve , terimi ve karşı daha az duyarlıdır .m1^=g1v1^=g21mt^/(vt^−−√+ϵ)β1β2
Sapma nasıl düzeltilir
Algoritma, birinci ve ikinci momentleri tahmin etmek için hareketli ortalama kullanır. Önyargılı tahmin, keyfi bir tahmin ile başlar ve tahmini aşamalı olarak . Bu nedenle, ilk birkaç adımda hareketli ortalamamızın ilk doğru .m0mt=βmt−1+(1−β)gtm0
Bunu düzeltmek için, ilk tahminin (sapma) etkisini hareketli ortalamadan kaldırabiliriz. Örneğin, 1, , terimini ve ile böleriz , bu da . Tüm , . Tam kanıt makalenin 3. Bölümünde verilmiştir.m1=βm0+(1−β)gtβm0m1(1−β)m1^=(m1−βm0)/(1−β)m0=0mt^=mt/(1−βt)
Mark L. Stone'un yorumladığı gibi
Bu, 2 ile çarpmak gibi (oh my, sonuç taraflı) ve sonra 2'yi "düzeltmek" için bölmek gibi.
Bir şekilde bu tam olarak eşdeğer değil
başlangıç noktasındaki gradyan, bu şeylerin başlangıç değerleri için ve ardından ilk parametre güncellemesi için kullanılır
(elbette güncelleme kuralını değiştirerek aynı forma dönüştürülebilir (cevabın güncellenmesine bakınız) ve bu çizginin temel olarak önyargı getirmenin gereksizliğini göstermeyi amaçladığına inanıyorum, ancak belki de farkı fark etmeye değer)
Örneğin, 2. sırada düzeltilmiş ilk an
m2^=β(1−β)g1+(1−β)g21−β2=βg1+g2β+1
Kullanılıyorsa aynı güncelleştirme kural ile başlangıç değeri olarak
olan olacak önyargı doğru yerine ilk birkaç adımda.g1m2=βg1+(1−β)g2
g1
Önyargı düzeltmesi gerçekten büyük bir
mesele mi Sadece eğitimin ilk birkaç adımını etkilediğinden, çok büyük bir sorun gibi görünmüyor, birçok popüler çerçevede (örn. Keras , caffe ) sadece önyargılı tahmin uygulanmaktadır.
Deneyimlerime dayanarak, önyargılı tahmin bazen kaybın düşmeyeceği istenmeyen durumlara yol açar (bunu tam olarak test etmedim, bu yüzden bunun önyargılı tahmin veya başka bir şeyden kaynaklanıp kaynaklanmadığından tam olarak emin değilim) ve bir hile kullandığım ilk adım boyutlarını denetlemek için daha büyük bir kullanıyor .ϵ
Güncelleme
Özyinelemeli güncelleme kurallarını açarsanız, esasen degradelerin ağırlıklı ortalamasıdır,
Payda geometrik toplam formülü ile hesaplanabilir, bu nedenle aşağıdaki güncellemeye eşdeğerdir kural (bir önyargı terimi içermez) m^t
m^t=βt−1g1+βt−2g2+...+gtβt−1+βt−2+...+1
m1←g1
yakınsama yaparken do (ağırlıklı toplam) (ağırlıklı ortalama)
mt←βmt+gt
m^t←(1−β)mt1−βt
Bu nedenle muhtemelen bir önyargı terimi girmeden ve düzeltmeden yapılabilir. Bence kağıt diğer algoritmalarla (örneğin RmsProp) karşılaştırmak için önyargı düzeltme formuna koydu.