10 gradyan iniş optimizasyon algoritması + hile sayfası

Orijinal Başlık | 10 Gradyan İniş Optimizasyon Algoritması + Hile Sayfası

Yazar | Veri Bilimine Doğru Raimi Karim

Çevirmen | Stephen Ergouzi (Shenyang Kimya Teknolojisi Üniversitesi), intelLigenJ (Algoritma Mühendisi), Cuma, Wright Norton, Canghai Yisheng

Bu makaleyi düzenleyin: Wang Liyu

Orijinal İngilizce: https://towardsdatascience.com/10-gradient-descent-optimisation-algorithms-86989510b5e9

Gradyan iniş, bir fonksiyonun minimum değerini bulmak için bir optimizasyon yöntemidir.Genellikle derin öğrenme modellerinde, geri yayılma sırasında sinir ağlarının ağırlıklarını güncellemek için kullanılır.

Bu makalede, mevcut popüler derin öğrenme çerçevelerinde kullanılan yaygın gradyan iniş algoritmalarını (TensorFlow, Keras, PyTorch, Caffe gibi) özetleyeceğim. Bu yazının amacı, bu içeriklerin anlaşılmasını ve anlaşılmasını kolaylaştırmaktır çünkü bunun dışında çok fazla özet yoktur ve sıfırdan başlamanız için bir "kopya kağıdı" olarak kullanılabilir.

Doğrusal bir regresyon probleminde, gradyan iniş kullanarak SGD, momentum, Nesterov, RMSprop ve Adam'ı uyguladım. Kodu alın (JavaScript)

Gradyan iniş optimizasyon algoritmasının işlevi nedir?

Gradyan inişi sayesinde, optimizasyon algoritması aşağıdaki üç ana hususta rol oynayabilir:

1. Öğrenme oranı bileşenini değiştirin, veya

2. L / w gradyan bileşenini değiştirin

3. Veya her ikisi

Aşağıdaki denklem 1'i düşünün:

Denklem 1: Stokastik gradyan inişinde çeşitli miktarlar

Öğrenme hızı planlayıcısı ile gradyan iniş optimizasyonu arasındaki temel fark, gradyan iniş optimizasyonunun, öğrenme hızı bileşenini ayarlamak için gradyanın bir fonksiyonu olan bir faktör ile öğrenme oranını çarpmasıdır, ancak öğrenme hızı programlayıcısı, öğrenme oranını bir sabit ile çarpmasıdır. Öğrenme oranını güncellemek için zaman adımının bir sabit veya bir fonksiyon faktörüdür.

İlk yöntem, öğrenme oranını 0 ile 1 arasındaki bir faktörle (RMSprop gibi) çarparak öğrenme oranını düşürür. İkinci yöntem genellikle alçalma yönünü belirlemek için saf gradyan yerine gradyan hareketli ortalama ("momentum" olarak da adlandırılır) kullanır. Üçüncü yöntem, Adam ve AMSGrad gibi ikisini birleştirmektir.

Şekil 2: Çeşitli gradyan iniş optimizasyon algoritmaları, yayın yılı ve kullanılan temel fikirler.

Şekil 3, bu optimizasyon algoritmalarının en basit saf gradyan inişinden (SGD), yukarıdan aşağıya Adam'ın çeşitli varyantlarına nasıl evrimleştiğini göstermektedir. SGD başlangıçta iki yönde gelişti.Bir tür AdaGrad'dır ve bu temelde öğrenme oranını ayarlamak içindir. Diğeri, ağırlıklı olarak degradenin bileşenlerini ayarlayan Momentum'dur (Ek Açıklama: Orijinal metin burada ters çevrilmiştir). Evrim ilerledikçe, Momentum ve RMSprop birleşti ve "Adam" doğdu. Kuruluşumun itirazları olduğunu düşünebilirsiniz, ama ben bunu hep bu şekilde anladım.

Şekil 3: Çeşitli optimizasyon algoritmalarının evrim diyagramı (özet)

Sembolik temsil

  • t-yineleme adımlarının sayısı

  • w-güncellememiz gereken ağırlıklar ve parametreler

  • -öğrenme oranı

  • L / w-w'ye göre L'nin gradyanı (kayıp fonksiyonu)

  • Bu optimizasyon algoritmalarına birleşik bir "evrim" perspektifinden bakabilmemiz için gazetede görünen Yunanca harfleri ve sembolleri birleştirdim

1. Stokastik Gradyan Azalan

En ilkel stokastik gradyan iniş algoritması, temel olarak model ağırlığını w, mevcut gradyan L / multipw'nin bir katsayı öğrenme oranı ile çarpımına dayanarak günceller.

2. Momentum algoritması (Momentum)

Momentum algoritması, w'yi güncellemek için mevcut gradyan yerine momentumlu bir gradyan (gradyanların üstel hareketli ortalaması, Polyak, 1964) kullanır. Sonraki makalelerde, bir momentum güncellemesi olarak üstel hareketli ortalamanın kullanımının neredeyse bir endüstri standardı haline geldiğini göreceksiniz.

onların arasında

Ve V'nin başlangıç değeri 0'dır. genellikle 0,9 olarak ayarlanacaktır.

Momemtum algoritmasına atıfta bulunurken birçok makalenin Ning Qian, 1999 kullandığını belirtmekte fayda var. Ancak bu algoritmanın orijinal kaynağı Sutskever ve ark. Klasik momentum algoritması Polyak tarafından 1964'te önerildi, bu nedenle Polyak'ın makalesi de yukarıda belirtilmiştir. (Bunu işaret ettiği için James'e teşekkürler)

3. Nesterov hızlandırılmış gradyan iniş yöntemi (NAG)

Polyak'ın momentum yöntemini önermesinin ardından (pun: Polyak momentum kazanıyor), Nesterov'un hızlandırılmış gradyan iniş yöntemini kullanan benzer bir güncelleme yöntemi de (Sutskever ve diğerleri, 2013) uygulandı. Bu güncelleme yöntemi, yansıtılan degradenin üstel hareketli ortalaması adını verdiğim V'yi kullanıyor.

onların arasında

Ve V, 0 olarak başlatılır.

İkinci denklemdeki son terim öngörülen bir gradyandır. Bu değer, önceki hız (Denklem 4) kullanılarak "bir adım ileri" ile elde edilebilir. Bu, bu zaman adımı t için, nihayet geri yayılımı gerçekleştirmeden önce başka bir ileri yayılma gerçekleştirmemiz gerektiği anlamına gelir. İşte adımlar:

1. Mevcut ağırlığı w projeksiyon ağırlığına w * güncellemek için önceki hızı kullanın.

(Denklem 4)

2. Projeksiyon ağırlıklarını kullanarak ileri yayılımı hesaplayın

3. L / w * projeksiyon gradyanını elde edin

4. Karşılık gelen V ve w'yi hesaplayın

Ortak varsayılan değerler:

  • = 0.9

Orijinal Nesterov hızlandırılmış gradyan inişi (Nesterov, 1983) makalesinin stokastik gradyan inişiyle ilgili olmadığını ve gradyan iniş denklemini açıkça kullanmadığını lütfen unutmayın. Bu nedenle, daha uygun bir referans, Sutskever ve diğerlerinin yukarıda bahsedilen yayınıdır. 2013 yılında, NAG'nin stokastik gradyan inişindeki uygulamasını tanımladı. (Yine, HackerNews hakkındaki yorumunda buna işaret ettiği için James'e teşekkür etmek istiyorum.)

4. Uyarlanabilir öğrenme hızı algoritması (Adagrad)

AdaGrad algoritması (Duchi ve diğerleri, 2011) olarak da bilinen uyarlanabilir gradyan algoritması, öğrenme hızını S'nin kareköküne bölerek öğrenme hızı bileşenini inceler; burada S, mevcut ve geçmiş kare gradyanların kümülatif toplamıdır (yani t zamanına kadar). SGD algoritması gibi, uyarlanabilir öğrenme hızı algoritmasındaki gradyan bileşeninin de değişmeden kaldığını lütfen unutmayın.

onların arasında,

Ve S'nin başlangıç değerini 0 olarak ayarlayın.

Burada paydaya eklendiğine dikkat edin. Keras buna bulanıklık faktörü diyor ve sıfıra bölmeyle asla karşılaşmamamızı sağlamak için küçük bir kayan nokta değeridir.

Varsayılan değer (Keras'tan):

  • = 0.01

  • = 10

5. Kök Ortalama Kare Transfer Algoritması (RMSprop)

RMSprop algoritması (Hinton ve diğerleri, 2012) olarak da bilinen kök ortalama kare aktarım algoritması, AdaGrad algoritmasında geliştirilmiş bir başka uyarlanabilir öğrenme hızı algoritmasıdır. Kümülatif kare gradyan toplamları yerine üssel ağırlıklı ortalama hesaplamaları kullanır.

onların arasında,

Ve S'nin başlangıç değerini 0 olarak ayarlayın.

Varsayılan değer (Keras'tan):

  • = 0.001

  • = 0.9 (bu makalenin yazarı tarafından önerilmektedir)

  • = 10

6. Uyarlanabilir artımlı algoritma (Adadelta)

RMSprop algoritmasına benzer şekilde, Adadelta (Zeiler, 2012), AdaGrad algoritması temelinde öğrenme oranını artıran uyarlanabilir bir algoritmadır. Adadelta, deltanın mevcut ağırlık ile yeni güncellenen ağırlık arasındaki farkı temsil ettiği "uyarlanabilir artış" ın kısaltması olmalıdır.

Adadelta algoritması ile RMSprop algoritması arasındaki fark, Adadelta algoritmasının, Adadelta algoritmasındaki orijinal öğrenme hızı parametresini değiştirmek için üssel ağırlıklı ortalama delta D'sini kullanmasıdır.

onların arasında,

Ve D ve S'nin başlangıç değerlerini 0'a ayarlayın. Ek olarak,

Varsayılan değer (Keras'tan):

  • = 0,95

  • = 10

7. Uyarlanabilir moment tahmin algoritması (Adam)

Adam algoritması (Kingma ve Ba, 2014) olarak da bilinen uyarlanabilir moment tahmin algoritması, momentum ve RMSprop'u birleştiren bir algoritmadır. Geçer

(I) V gradyan bileşenini kullanarak, gradyanın üstel hareketli ortalaması (momentum gibi) ve

(Ii) Öğrenme oranı 'yı S'nin kareköküne bölün ve kare gradyanın üstel hareketli ortalaması (RMSprop'ta olduğu gibi) öğrenme hızı bileşeni olarak çalışır.

onların arasında

Bir sapma düzeltmesi ve var

V ve S'nin başlangıç değerleri 0'a ayarlanmıştır.

Yazarın tavsiye ettiği varsayılan değer:

  • = 0.001

  • = 0.9

  • = 0,999

  • = 10

8. AdaMax algoritması

AdaMax (Kingma & Ba, 2015), sonsuz bir aralık (dolayısıyla 'maks') kullanan Adam algoritmasının orijinal yazarları tarafından optimize ediciden uyarlanan bir algoritmadır. V, gradyanın üssel ağırlıklı ortalamasıdır ve S, aşağıda gösterildiği gibi maksimum fonksiyona benzer şekilde, geçmiş p gradyanlarının üssel ağırlıklı ortalamasıdır (yakınsamanın kanıtı için kağıda bakın).

onların arasında

V'nin sapma düzeltmesi mi ve var

V ve S'nin başlangıç değerleri 0'a ayarlanmıştır.

Yazarın tavsiye ettiği varsayılan değer:

  • = 0,002

  • = 0.9

  • = 0,999

9. Nadam Algoritması

Nadam kelimesi, Nesterov ve Adam optimize edicilerin adı olan (Dozat, 2015) 'den oluşmaktadır. Nesterov bileşeninin Nadam algoritmasındaki öğrenme hızı üzerinde daha güçlü bir kısıtlaması vardır ve ayrıca gradyanın güncellenmesi üzerinde daha doğrudan bir etkisi vardır. Genel olarak, miktarı artırmak için RMSprop veya Adam kullanmak istediğinizde, daha iyi sonuçlar elde etmek için Nadam'ı kullanabilirsiniz.

Adam optimizer şu şekilde de yazılabilir:

Formula 5: Adam optimizer'ın ağırlık güncellemesi

Nadam, yukarıdaki denklemde önceki anda V_hat'i geçerli anda V_hat ile değiştirerek gradyanı bir adım önceden güncellemek için Nesterov'u kullanır:

onların arasında

Ve bir

V ve S'nin başlangıç değerleri 0'a ayarlanmıştır.

Varsayılan değer (Keras'tan alınmıştır):

  • = 0,002

  • = 0.9

  • = 0,999

  • = 10

10. AMSGrad algoritması

Adam algoritmasının bir başka çeşidi de AMSGrad algoritmasıdır (Reddi ve diğerleri, 2018). Algoritma, Adam'daki uyarlanabilir öğrenme oranı bileşenini yeniden ziyaret eder ve mevcut S'nin her zaman önceki zaman adımından daha büyük olmasını sağlamak için onu değiştirir.

onların arasında

Ek olarak

V ve S'nin başlangıç değerleri 0'a ayarlanmıştır.

Varsayılan değer (Keras'tan alınmıştır):

  • = 0.001

  • = 0.9

  • = 0,999

  • = 10

sezgi

Gradyan iniş yöntemi optimize edicisinin gradyan bölümü için üssel hareketli ortalama (EMA) ve öğrenme hızı bölümü için kök ortalama kare (RMS) neden kullandığını sizlerle paylaşmak istiyorum.

Neden gradyanın üstel hareketli ortalamasını alalım?

Ağırlıkları güncellemek için bazı değerler kullanmamız gerekiyor. Elimizdeki tek değer mevcut gradyan, bu yüzden ağırlıkları güncellemek için kullanalım.

Ancak sadece mevcut gradyan değerini almak yeterince iyi değil. Güncellememizin (model için, evet) "daha iyi rehberlik" olduğunu umuyoruz. Önceki gradyan değerini de dahil ederek (her güncellemede) düşünelim.

Mevcut gradyan değerini ve geçmiş gradyan bilgilerini birleştirmenin bir yolu, tüm geçmiş ve mevcut gradyanların basitçe ortalamasını alabilmemizdir. Ancak bu, her gradyanın ağırlığının eşit olduğu anlamına gelir. Bu sezgiye aykırıdır, çünkü uzayda minimuma yaklaşıyorsak, en yakın gradyan değeri daha etkili bilgi sağlayabilir.

Bu nedenle, en güvenli yöntem, en yakın gradyan değerinin ağırlığının (öneminin) önceki değerden daha yüksek olduğu üstel hareketli ortalama yöntemini kullanmaktır.

Öğrenme oranını neden eğimin ortalama karesine böleriz?

Amaç, öğrenme oranını ayarlamaktır. Ayar ne için? Cevap gradyan. Emin olmamız gereken şey, gradyan büyük olduğunda, güncellemenin uygun şekilde küçültülmesini istediğimizdir (aksi takdirde, büyük bir değer mevcut ağırlığı çıkaracaktır!)

Bu etkiyi elde etmek için, ayarlanmış bir öğrenme oranı elde etmek için öğrenme oranını mevcut gradyan ile bölelim.

Unutmayın, öğrenme oranı bileşeni her zaman pozitif olmalıdır (çünkü öğrenme oranı bileşeni gradyan bileşeni ile çarpıldığında ikincisi aynı işarete sahip olmalıdır). Her zaman pozitif olmasını sağlamak için mutlak değerini veya karesini alabiliriz. Mevcut gradyanın karesini aldığımızda, bu kareyi "iptal" etmek için karekökü alabiliriz.

Ancak momentum fikri gibi, sadece mevcut gradyan değerini kullanmak yeterince iyi değil. Eğitimimizdeki güncellemenin (her seferinde) daha iyi rehberlik (model) sağlayacağını umuyoruz. Bu nedenle, önceki gradyan değerini de kullanmamız gerekiyor. Yukarıda tartışıldığı gibi, geçmiş degradenin üstel hareketli ortalamasını ('ortalama kare') ve ardından 'kök ortalama kare' (RMS) olan karekökünü ('kök') alıyoruz. AdaGrad dışında (kare gradyanların kümülatif toplamını kullanarak), bu makaledeki tüm optimize ediciler öğrenme oranı bölümünü optimize edecek.

Kopya kağıdı

(Yukarıdaki noktalar)

Yanlış bir şey varsa veya bu makaledeki içerik iyileştirilebiliyorsa, lütfen benimle iletişime geçin! ?

referans

Gradyan iniş optimizasyon algoritmasına genel bakış (ruder.io)

Momentum neden gerçekten işe yarıyor Bu, momentum hakkında popüler bir hikaye: Gradyan iniş, bir dağda yürüyen bir insandır.

Ren Jie, Derek, William Tjhi, Chan Kai, Serene ve James'e bu makaledeki düşünceleri, önerileri ve düzeltmeleri için teşekkürler.

Bu makalenin ilgili bağlantılarını ve referanslarını görüntülemeye devam etmek ister misiniz? Lei Feng Ağı Lei Feng Ağı Lei Feng Ağı

Erişmek için [10 Gradyan İniş Optimizasyon Algoritmaları + Hile Sayfası] 'na tıklayın:

Ücretsiz bir kurs verilmektedir ~ "Eğlenceli Python: Veri Madenciliğinden Derin Öğrenmeye" Bu kurs Python'a girişten CV, NLP pratiği vb. Konularını kapsamaktadır. Derin öğrenme için çok iyi bir giriş kursudur, toplam 9 ders ve 32 ders saatidir ve toplam uzunluk yaklaşık 13 saattir. . AI Araştırma Enstitüsü artık bu kursu topluluk sertifikalı kullanıcılara ücretsiz olarak açıyor. Sertifikasyon sırasında açıklamalar kutusuna "Python" u doldurduğunuz sürece, sertifikayı geçtikten sonra kurs için tüm kilit açma izinlerini alabilirsiniz. Kalp, eylemden daha iyidir ~

Kurs sayfası: https://ai.yanxishe.com/page/domesticCourse/37

Kimlik doğrulama yöntemi: https://ai.yanxishe.com/page/blogDetail/11609

550 yıllık ata salonu bir ejderha botu dramını sahneledi, Dragon Boat Festivali sahnesini izleyin
önceki
Optik dalga kılavuzlarının temel ilkelerini açığa çıkarmak ve AR gözlüklerinin arkasındaki zorlukları anlamak (bölüm 2)
Sonraki
Yeniden Şekillendirme Teknolojisi ve İş Modeli "Akıllı Şehir · Görsel Zeka" Özel Oturum İncelemesi
Yanqing'de bir köy sekreteri sözleşme dolandırıcılığından 12 yıl hapis cezasına çarptırıldı
Başka bir önemli proje başlatıldı ve önümüzdeki yıl kullanıma girecek! Sanlong Körfezi'nin Güney Çin Denizi bölgesinin gelişimindeki "ivmenin" deşifresi
İki yılda binlerce saat sıkı eğitim! Uçuş görevlileri böyle "yaratıldı"
Altı En İyi Uzman, AI Finance CCF-GAIR 2019'un 6 Vadesi'ni yeniden tanımlayın
Otonom sürüşü uygulamaya yönelik adımlar açık ve 18 büyük isim akıllı ulaşım hakkında konuşuyor | CCF-GAIR 2019
Qinghai-Tibet hattındaki kart koruyucusu: her flama bir yaşam ve ölüm hikayesidir
Dört büyük bilim kentini dünyanın en büyük kongre ve sergi merkezine bağlayarak, Shenzhen-Çin Koridoru ne tür bir endüstriyel etki yaratacak?
Yurt dışında eğitim alacaksanız gökten düşen "turtalara" inanmayın
Sun Honglei bu şişman amcayı canlandırarak "Babamı Yurtdışında Okumaya Götür" yayına başlarken uzun süre mücadele etti.
JD City Zheng Yu: Yapay zeka ve büyük veri "şehri yeniden şekillendirecek" | CCF-GAIR 2019
Sınav kurumu işe alım kılavuzunda üç okulda dört değişikliği içeren düzenlemeler yaptı.
To Top