Derin Öğrenme için Adam optimizatörü için bir önyargı düzeltme terimi eklemek neden önemlidir?


15

Derin Öğrenme için Adam optimizer hakkında okuyordum ve Begnio, Goodfellow ve Courtville'in yeni Deep Learning kitabında şu cümle ile karşılaştım:

Adam, başlangıç ​​noktasındaki başlangıçlarını hesaplamak için hem birinci dereceden momentlerin (momentum terimi) hem de (merkezsiz) ikinci dereceden momentlerin tahminlerine önyargı düzeltmeleri içerir.

bu önyargı düzeltme terimlerini dahil etmenin temel nedeni, bir şekilde ve başlatma önyargılarını kaldırmasıdır .mt=0vt=0

  • Bunun ne anlama geldiğinden% 100 emin değilim ama bana göre muhtemelen 1. ve 2. anın sıfırdan başlaması ve bir şekilde sıfırdan başlaması, haksız (veya yararlı) bir eğitim için sıfıra yakın değerleri sıfırlamak anlamına geliyor. ?
  • Yine de bunun ne anlama geldiğini ve öğrenmeye nasıl zarar verdiğini bilmek isterim. Özellikle, optimize edicinin sapmasının optimizasyon açısından ne gibi avantajları vardır?
  • Bu derin öğrenme modellerinin eğitimine nasıl yardımcı olur?
  • Ayrıca, tarafsız olduğunda ne anlama geliyor? Tarafsız standart sapmanın ne anlama geldiğini biliyorum, ancak bu bağlamda ne anlama geldiğini net değil.
  • Önyargı düzeltmesi gerçekten büyük bir sorun mu yoksa Adam optimizer gazetesinde bir şey mi abartılıyor?

Sadece insanlar orijinal kağıdı anlamak için çok uğraştığımı biliyorlar ama orijinal kağıdı okumaktan ve yeniden okumaktan çok az şey aldım. Bu soruların bazılarının orada yanıtlanabileceğini varsayıyorum ama cevapları ayrıştıramıyorum.


2
Bağlantı: arxiv.org/pdf/1412.6980v8.pdf 1. ve 2. moment gradyan tahminleri hareketli ortalama ile güncellenir ve her iki tahmin de sıfır ile başlar, dolayısıyla gerçek değerin sıfır olmadığı ilk değerler sonuçlara ağırlık verir , çünkü sıfırın ilk tahminleri yavaş yavaş ölüyor. Ne anlamıyorum neden ilk noktada degrade bu şeylerin ilk değerleri ve sonra ilk parametre güncelleştirmesi için kullanılmıyor olmasıdır. Daha sonra, geri alınması gereken ilk sıfır değerleri ile kontaminasyon olmazdı, bu yüzden önyargı düzeltmesine gerek kalmazdı.
Mark L. Stone

1
Öyleyse, yazarlar ilk iterasyon için özel bir koda sahip olmak yerine, bir önyargı olacağını ve sonra onu geri alarak matematiksel olarak eşdeğer bir şey yapmaya karar verdiler. Bu, tüm yinelemelerde hızlı, ancak gereksiz hesaplamalar ekler. Bunu yaparken, tüm iterasyonlarda aynı görünen bir kod saflığını korudular. Bunun yerine ilk degrade değerlendirmesiyle yeni başlamış olurum ve degrade moment güncelleme formülü yalnızca 2. yinelemede başlar.
Mark L. Stone

@ MarkL.Stone yazarlar, önyargı düzeltmesini o kadar çok vurguladılar ki, makalelerinde yeni veya önemli olan şey bana geldi. Yani "önyargıları düzeltmediler" ve aynı algoritmaya sahip olabilirler miydi? Eğer bu doğruysa, adam'ın neden bu kadar önemli bir optimize edici olduğunu ya da büyük anlaşmanın ne olduğunu göremiyorum. Her zaman önyargı düzeltmesi olduğunu düşündüm.
Charlie Parker

4
Bir önyargı ortaya koyuyorlar ve sonra düzeltiyorlar, benim için iyi bir neden yok. Bu, 2 ile çarpmak gibi (oh my, sonuç taraflı) ve sonra 2'yi "düzeltmek" için bölmek gibi. Önyargı tanıtımı ve kaldırılmasıyla ilgili her şey gereksiz bir yan gösteri gibi görünüyor. Belki kağıt bunu yapmadan yeterince uzun değildi, bu yüzden daha uzun yapmak için bu spiel'i eklediler :) Adem'in esası olabilir, ancak önerdiğim gibi yapmaları aynı olurdu. Yazarların buraya gelip açıklamasını isterim. Belki ince bir noktayı kaçırıyorum ya da bir şeyi yanlış anlıyorum.
Mark L. Stone

Yanıtlar:


17

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.

resim açıklamasını buraya girin

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.001gt2m1/(v1+ϵ)

Öte yandan önyargı düzeltmeli tahmin, ve , terimi ve karşı daha az duyarlıdır .m1^=g1v1^=g12mt^/(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=βmt1+(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.g1

m2=β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=βt1g1+βt2g2+...+gtβt1+βt2+...+1

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


1
Soru hakkındaki 2. yorumuma katılıyor musunuz? Bana göre, sonuçta bu. 2 ile çarpma ve bölme ile ilgili şeyin, sadece eldeki maddede kullanılan matematik değil, "anlaşılması daha kolay" bir benzetme olması gerekiyordu. bakmadığım, aynı mekanizma ile bir önyargı getiren, ADAM durumunda tamamen önlenebilir görünüyor, ancak düzeltmediyse, o zaman tamamen STUPID (eğer bir şekilde önyargı yoksa) algoritmanın performansına yardımcı oldu).
Mark L. Stone

@ MarkL.Stone evet! Aslında ben, İngilizce benim için üzgünüm. ve yanlılığı düzeltmeyen algoritmanın rmsprop olduğunu düşünüyorum, ancak adam rmsprop'ın aksine önyargı ile iyi çalışıyor.
dontloo

@dontloo, cevabınız Mark L. Stone'un önyargı düzeltmesinin neden gereksiz göründüğüne dair yorumunu içeriyor mu? (Sanırım oldukça önemli, belki de orijinal makalenin söylediklerini açıklamaktan daha fazlası).
Charlie Parker

@CharlieParker, önyargı düzeltmesinin neden gereksiz olduğunu veya yazarın neden gereksiz görünmesini sağladığını kastediyorsunuz?
dontloo

@dontloo Yazarların gereksiz olduğunu sanmıyorum. Gerçekten ihtiyaçları olduğunu düşündüm (özel koşulları göz önüne alındığında). Ancak Mark'ın önerisine göre bunun gerekli olmadığını düşündüm. Sanırım şu anda yorumlar bölümündeki sorumu gerçekten düzeltme terimine ihtiyaçları olup olmadığı.
Charlie Parker
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.