Adam stokastik gradyan iniş yöntemi nasıl çalışır?


44

Sinir ağlarını eğitmek için temel degrade iniş algoritmalarına aşinayım. Adam: ADAM: STOKASTİK OPTİMİZASYON İÇİN BİR YÖNTEM öneren makaleyi okudum .

Kesinlikle en azından bazı görüşlere sahip olmama rağmen , kağıt benim için genel olarak çok yüksek görünüyor. Örneğin, bir maliyet fonksiyonu çoğu zaman birçok farklı fonksiyonun toplamıdır, bu nedenle değerini optimize etmek için çok miktarda hesaplama yapılması gerekir; Stokastik gradyan iner - konuyu anladığım kadarıyla - bu fonksiyonların bir alt kümesi için optimizasyonu hesaplar. Bana göre, Adam bunu nasıl yapıyor ve bunun neden J'nin ( θ ) tamamı için azaltılmış bir eğitim hatasıyla sonuçlandığı belli değil .J(θ)J(θ)

Bence Adam, önceki gradyanı dikkate alarak gradyanını güncelliyor. Buna momentum kullanmak gibi bir şey mi diyorlar? Bu momentum tam olarak nedir? Makalede ikinci sayfadaki algoritmaya göre, "normal" degradenin ilk ve ikinci momentlerinin tahminleri gibi bir tür hareketli ortalamadır.

Pratik olarak, Adam'ın gradyanı azaltmak için daha büyük ve etkili adım boyutları kullanmasına izin verdiğinden şüpheleniyorum ve bu nedenle de eğitim hatası stokastik yaklaşımla birlikte. Bu nedenle, sonuçtaki güncelleme vektörü, normal gradyan iniş algoritmaları gibi bir eğri tanımlamak yerine, uzaysal boyutlarda daha fazla "atlamalı" olmalıdır.

Birisi Adam'ın nasıl çalıştığını gizleyebilir mi? Özellikle nasıl birleşir, özellikle de Adam'ın metodu neden işe yarıyor ve tam olarak faydası ne?


1
Sorunuz için daha iyi bir başlık vermelisiniz. Adam hakkında tam olarak ne sormak istiyorsun? Genel olarak olsa bile, biraz daha aranabilir hale getirmeye çalışın.
Charlie Parker,

Yanıtlar:


39

Adam, “birçok nesnel işlev, farklı veri örneklerinde değerlendirilen bir dizi alt işlevden oluşur; bu durumda, bireysel alt işlevlere göre degrade adımlar atılarak optimizasyon daha verimli hale getirilebilir ...” Amaç, işlevin eğitim örnekleri üzerindeki hataların toplamı olduğu ve eğitimin bireysel örnekler ya da minibatchler üzerinde yapılabileceği anlamına geliyor. Bu, parametre güncellemelerinin daha sık olması nedeniyle büyük ölçekli problemler için toplu eğitimden daha etkili olan stokastik gradyan inişinde (SGD) aynıdır.

Adam'ın neden çalıştığına gelince, birkaç püf noktası kullanıyor.

Bu numaralardan biri, daha hızlı yakınsama sağlayabilen momentumdur. Kademeli olarak minimuma eğimli, uzun ve dar bir kanyon şeklinde olan nesnel bir işlev hayal edin. Diyelim ki bu işlevi degrade iniş kullanarak en aza indirmek istiyoruz. Kanyon duvarındaki bir noktadan başlarsak, negatif gradyan en dik iniş yönünü, yani çoğunlukla kanyon tabanını işaret eder. Bunun nedeni, kanyon duvarlarının, kanyonun minimuma doğru kademeli eğiminden çok daha dik olmasıdır. Öğrenme hızı (adım adımı) küçükse kanyon tabanına inebilir, ardından minimum seviyeye doğru takip edebiliriz. Ancak, ilerleme yavaş olacaktır. Öğrenme oranını artırabiliriz, ancak bu adımların yönünü değiştirmez. Bu durumda, kanyonun tabanını aştık ve diğer duvara dayadık. Daha sonra asgari düzeyde yavaş ilerlerken, duvardan duvara salınan bu deseni tekrarlardık. Momentum bu durumda yardımcı olabilir.

Momentum basitçe önceki güncellemenin bir kısmının geçerli güncellemeye eklendiğini, böylece belirli bir yön bileşiminde tekrarlanan güncellemeleri; Bu yönde daha hızlı ve daha hızlı hareket ederek, momentum oluştururuz. Kanyon söz konusu olduğunda, tüm güncellemeler o yönde bir bileşene sahip olduğu için minimum yönde momentum oluştururuz. Buna karşılık, kanyonun duvarları arasında ileri geri hareket etmek sürekli ters yön içerir, bu nedenle momentum bu salınımları bu yönlerde azaltmaya yardımcı olur.

Adam'ın kullandığı bir başka püf noktası da her parametre için uyarlamalı olarak ayrı bir öğrenme oranı seçmektir. Normalde daha küçük veya daha az sıklıkta güncelleme alacak parametreler Adam ile daha büyük güncellemeler alır (bunun tersi de geçerlidir). Bu, uygun öğrenme oranlarının parametrelere göre değiştiği durumlarda öğrenmeyi hızlandırır. Örneğin, derin ağlarda gradyanlar erken katmanlarda küçük olabilir ve karşılık gelen parametreler için öğrenme oranlarını artırmak mantıklıdır. Bu yaklaşımın bir başka yararı da, öğrenme oranlarının otomatik olarak ayarlanması nedeniyle, manuel ayarlamanın daha az önemli hale gelmesidir. Standart SGD, öğrenme oranlarının dikkatli bir şekilde ayarlanması (ve muhtemelen çevrimiçi ayarlanması) gerektirir, ancak bu Adam ve ilgili yöntemlerde daha az geçerlidir. Hiperparametreleri seçmek hala gerekli.

İlgili yöntemler :

Momentum genellikle standart SGD ile kullanılır. Geliştirilmiş bir sürüm Nesterov momentum veya Nesterov hızlandırılmış gradyan denir. Her parametre için otomatik olarak ayarlanmış öğrenme oranlarını kullanan diğer yöntemler şunlardır: Adagrad, RMSprop ve Adadelta. RMSprop ve Adadelta, Adagrad ile öğrenmenin durmasına neden olabilecek bir sorunu çözüyor. Adam momentum ile RMSprop'a benzer. Nadam, Adam'ı klasik momentum yerine Nesterov momentum kullanacak şekilde değiştirir.

Kaynaklar :

Kingma ve Ba (2014) . Adam: Stokastik Optimizasyon Yöntemi.

Goodfellow ve diğ. (2016) . Derin öğrenme, bölüm 8.

Geoff Hinton'ın kursundan slaytlar

Dozat (2016) . Nesterov Momentum'u Adam'a dahil etmek.


2
(+1) Adam'ın yakınlaşmasının kanıtları ve "Adem ve Ötesinin Birleşmesi Üzerine
Monica

2
Thanks @Sycorax, biraz zaman bulduğumda güncelleme yapmaya çalışacağım
user20160

1
w

Son yorumuma devam eden bu cevap , Adem'in momentum benzeri davranışının olağan momentum benzeri davranıştan ne kadar farklı olduğuna odaklanarak, Adam ve momentum ile rmsprop arasındaki farkları açıklar. (Bu cevap, farklı yöntemlerin nasıl davrandığını benzetmek ve grafik olarak göstermek için Python kodunu da içerir.)
Oren Milman
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.