Üstel çürüme ile Adam optimizer


53

Tensorflow kodlarının çoğunda, Adam Optimizer’ın sabit bir Öğrenme Hızı 1e-4(yani 0.0001) ile kullanıldığını gördüm . Kod genellikle aşağıdakilere bakar:

...build the model...
# Add the optimizer
train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# Add the ops to initialize variables.  These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
  sess.run(train_op)

Adam optimizer kullanırken üstel bozulma kullanmanın yararlı olup olmadığını merak ediyorum, yani aşağıdaki kodu kullanın:

...build the model...
# Add the optimizer
step = tf.Variable(0, trainable=False)
rate = tf.train.exponential_decay(0.15, step, 1, 0.9999)
optimizer = tf.train.AdamOptimizer(rate).minimize(cross_entropy, global_step=step)
# Add the ops to initialize variables.  These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
  sess.run(train_op)

Genellikle, insanlar bir tür öğrenme hızı azalması kullanırlar, çünkü Adam çok nadir görünüyor. Bunun teorik bir nedeni var mı? Adam optimizer'ı çürüme ile birleştirmek faydalı olabilir mi?


Her yinelemede güncelleme yapmak için Değişken adımını nasıl alırsınız?
perrohunter

@ perrohunter: global_stepparametresini kullanın minimize. Düzenlemeye bakınız.
Charles Staats

9
Not: 1e-4= 0.0001değil 0.0004.
Cliff AB

Gördüğüm gibi "global_step = step" ama "step" değişkeninin nasıl güncellendiğini göremiyorum ... lütfen açıklığa kavuşturur musunuz?
Diego,

@Diego: geç cevap ama: global_step parametresi olarak en aza indirgemek için adım değişkeninin kullanılması, minimize etme işlevinin her küçültme çağrısında global_step parametresini artırmasını sağlar. Küçültmek için belgelere bakın. Bunun, küçük gruplar yaparken, adım değişkeninin yalnızca her dönem için değil, her küçük parti için güncellendiğini unutmayın.
dimpol

Yanıtlar:


37

Ampirik olarak konuşursak: kesinlikle deneyin, çok yararlı bazı eğitim bulguları bulabilirsiniz, bu durumda lütfen paylaşın!

Genellikle insanlar bir tür çürüme kullanırlar, çünkü Adam çok nadir görünüyor. Bunun teorik bir nedeni var mı? Adam optimizer'ı çürüme ile birleştirmek faydalı olabilir mi?

Bunun doğru olup olmadığını söylemek için ADAM optimizer’ı kullanan yeterince insan kodu görmedim. Eğer doğruysa, belki de ADAM'ın nispeten yeni olması ve öğrenme oranının azalması "en iyi uygulamalar" henüz kurulmamıştır.

αt=α/t

Basitçe söylemek gerekirse: Teoride hiçbir şeyin ADAM ile öğrenme hızı bozulma kurallarını kullanarak cesaretini kırmadığını düşünüyorum. İnsanların ADAM'ı kullanarak bazı iyi sonuçlar verdiğini ve bazı iyi eğitim sezgisellerini bulmanın inanılmaz derecede değerli olacağını gördüm.


12

Çoğu insanın Adam'la öğrenme oranı azalmasını kullanmamasının nedeni algoritmanın kendisinin aşağıdaki şekilde bir öğrenme hızı azalması yapmasıdır:

t <- t + 1
lr_t <- learning_rate * sqrt(1 - beta2^t) / (1 - beta1^t)

t0ilk zamanlama noktası nerede ve lr_tkullanılan yeni öğrenme oranı.


4
Durumun bu olup olmadığından emin değilim. Faktör sqrt(1 - beta2^t) / (1 - beta1^t)bozulmaz. Birinci ve ikinci an tahminlerinin başlatılmasının telafi ettiği görülmektedir.
Thijs

25
Bu cevap yanlış. Bu faktör 1.0'a sonsuzluğa giderken yaklaşır. Yan not: burada learning_rate sabittir . T-1 zamanındaki öğrenme oranı değil.
rd11

8

Adam, güncellemeleri uyarlanırken, başlangıçtaki öğrenme oranını veya orijinal makalenin terminolojisine göre adım boyutunu kullanır. Adım ebadı ayrıca güncellemeler için yaklaşık bir sınır verir. Bu bakımdan, eğitimin sonuna doğru adım boyutunu küçültmenin iyi bir fikir olduğunu düşünüyorum. Bu, NIPS 2017'nin son tarihli çalışmalarıyla da desteklenir: Makine Öğreniminde Uyarlamalı Gradyan Yöntemlerinin Marjinal Değeri .

4. Bölümdeki son satır: Derin Öğrenme Deneyleri

Her ne kadar geleneksel bilgelik Adam'ın ayarlama gerektirmediğini öne sürse de, Adam'ın başlangıç ​​öğrenme oranını ve çürüme düzenini ayarlamanın, her durumda varsayılan ayarları üzerinde önemli gelişmeler sağladığını görüyoruz.

Son fakat en az değil, makale zaten SGD kullandığımızı gösteriyor.


2

@Indie AI'nın görüşüne katılıyorum, burada başka bilgiler de vereceğim:

Gönderen CS231n :

... Bu yöntemlerin birçoğu hala başka hiperparametre ayarları gerektirebilir, ancak argüman onların ham öğrenme oranından daha geniş bir hiperparametre değerleri aralığı için iyi davranış gösterdiğidir. ...

Ve ayrıca, Bilgisayarla Görme İçin Başlama Mimarisini Yeniden Düşünen Makale Bölüm 8:

... en iyi modellerimiz 0.9 ve using = 1.0 olan RMSProp [21] kullanılarak elde edildi. 0.045'lik bir öğrenme oranı kullandık, her iki çağda üstel bir 0.94 oranı kullanarak çürüdük. ...


2

Bir kişinin şişman olup olmadığı, boy ve kilo olarak algılandığı takdirde, bmi hesaplama verisi yaratan ve 27 yaşın üzerinde ise kişinin yağ olduğunu gösteren gerçek kolay veri içeren bir veri seti yetiştirdim. Çok kolay temel veri. Adam'ı en iyi duruma getirici olarak kullanırken ve öğrenme hızı 0.001 olduğunda, doğruluk beni 5 epokoc için% 85 civarında alacaktır, test edilen 100'den fazla epokot ile maksimum% 90'lık bir artış elde edeceğim.

Fakat yine de% 85'te yeniden yükleme ve 0.0001 öğrenme oranı yaparken, doğruluk% 95-99 arasında 3 epocu ve% 10-% 100 daha fazla 10 epok üzerinde olacaktır. Öğrenme oranı 4.0001'in 4 basamağın altına düşüp düşmediğinden emin değilim, ancak modeli tekrar yüklerken ve 0.00001'i kullanırken, aktüatör% 99.20 - 100 arasında değişecek ve aşağı düşmeyecektir. Yine, öğrenme oranının 0 olarak kabul edilip edilmeyeceğinden emin değilim, ama yine de elimde olan şey ...

Bunların hepsi kategorik_crossentropy kullanıyor, ancak mean_square de bu yöntemi yaparak% 99-100 alıyor. AdaDelta, AdaGrad, Nesterov not almak için% 65’in üzerinde hassasiyet elde edemedi.

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.