Çeşitli sinir ağı optimizasyon algoritmalarını anlamak için bir makale: gradyan inişinden Adam yöntemine

Wang Xiaoxin Medium'dan derlendi

Qubit Üretildi | Genel Hesap QbitAI

Modelin ağırlık ve önyargı parametrelerini güncelleme şeklini ayarlarken, hangi optimizasyon algoritmasının modelin daha iyi ve daha hızlı sonuçlar üretmesini sağlayabileceğini düşündünüz mü? Gradyan inişi, stokastik gradyan inişi veya Adam'ın yöntemini kullanmalı mıyım?

Bu makale, farklı optimizasyon algoritmaları arasındaki temel farkları ve en iyi optimizasyon yönteminin nasıl seçileceğini açıklamaktadır.

Optimizasyon algoritması nedir?

Optimizasyon algoritmasının işlevi, eğitim yöntemini geliştirerek kayıp işlevini E (x) en aza indirmektir (veya maksimize etmektir).

Model içerisinde test setindeki hedef değer Y'nin gerçek değeri ile tahmin edilen değeri arasındaki sapma derecesini hesaplamak için kullanılan bazı parametreler bulunmaktadır.Bu parametrelere göre kayıp fonksiyonu E (x) oluşturulur.

Örneğin, ağırlık (W) ve sapma (b), genellikle çıktı değerlerini hesaplamak için kullanılan ve sinir ağı modellerini eğitmede önemli bir rol oynayan bu tür dahili parametrelerdir.

Modeli etkin bir şekilde eğitirken ve doğru sonuçlar üretirken, modelin iç parametreleri çok önemli bir rol oynar. Bu nedenle, model eğitimini ve model çıktısını etkileyen ağ parametrelerini güncellemek ve hesaplamak için çeşitli optimizasyon stratejileri ve algoritmaları kullanmalıyız.

Optimizasyon algoritmaları iki kategoriye ayrılır:

1. Birinci dereceden optimizasyon algoritması

Bu algoritma, E (x) kayıp fonksiyonunu en aza indirmek veya maksimize etmek için her parametrenin gradyan değerini kullanır. En yaygın kullanılan birinci dereceden optimizasyon algoritması gradyan inişidir.

Fonksiyon gradyanı: dy / dx türevinin çok değişkenli bir ifadesi, y'nin x'e göre anlık değişim oranını ifade etmek için kullanılır. Çoğunlukla, çok değişkenli bir fonksiyonun türevini hesaplamak için, türev yerine gradyan kullanılır ve gradyan hesaplamak için kısmi türev kullanılır. Gradyan ve türev arasındaki temel farklardan biri, fonksiyonun gradyanının bir vektör alanı oluşturmasıdır.

Bu nedenle, tek değişkenli fonksiyonlar için, türev analiz için kullanılır ve gradyan çok değişkenli fonksiyonlara göre oluşturulur. Daha fazla teorik ayrıntı burada ayrıntılı olarak açıklanmayacaktır.

2. İkinci derece optimizasyon algoritması

İkinci dereceden optimizasyon algoritması ikinci türevi kullanır (aynı zamanda Hessen yöntemi ) Kayıp işlevini en aza indirmek veya maksimize etmek için. İkinci türevin yüksek hesaplama maliyeti nedeniyle, bu yöntem yaygın olarak kullanılmamaktadır.

Çeşitli sinir ağı optimizasyon algoritmalarının ayrıntılı açıklaması

Dereceli alçalma

Akıllı sistemleri eğitirken ve optimize ederken, gradyan iniş en önemli tekniklerden ve temellerden biridir. Gradyan iniş işlevi şudur:

Minimum değeri bularak, varyansı kontrol ederek ve model parametrelerini güncelleyerek model nihayet yakınlaşır.

Ağ güncelleme parametrelerinin formülü şöyledir: = × () .J (), burada öğrenme hızıdır ve () .J (), J () kayıp fonksiyonunun gradyanıdır.

Bu, sinir ağlarında en sık kullanılan optimizasyon algoritmasıdır.

Günümüzde gradyan inişi esas olarak sinir ağı modellerinde ağırlıkları güncellemek, yani kayıp fonksiyonunu en aza indirmek için modelin parametrelerini tek yönde güncellemek ve ayarlamak için kullanılmaktadır.

2006'da tanıtılan geri yayılma teknolojisi, derin sinir ağlarını eğitmeyi mümkün kıldı. Geri yayılma tekniği, önce giriş sinyalinin ürününü ve buna karşılık gelen ağırlığını ileri yayılımda hesaplar ve ardından aktivasyon fonksiyonunu bu ürünlerin toplamına uygular. Giriş sinyallerini çıkış sinyallerine dönüştürmenin bu yolu, karmaşık doğrusal olmayan işlevleri modellemek için önemli bir yöntemdir ve doğrusal olmayan bir etkinleştirme işlevi sunar, böylece model hemen hemen her tür işlev eşlemesini öğrenebilir. Daha sonra ağın geri yayılma sürecinde ilgili hata döndürülür ve gradyan inişi kullanılarak ağırlık değeri güncellenir.Ağırlık parametresi, ağırlık parametresi W'ye göre hata fonksiyonu E'nin gradyanı hesaplanarak kayıp fonksiyonu gradyanının ters yönünde güncellenir.

Şekil 1: Ağırlık güncelleme yönü gradyan yönünün tersidir

Şekil 1, ağırlık güncelleme işleminin, U şeklindeki eğrinin gradyan olduğu gradyan vektörü hatasının ters yönünde olduğunu gösterir. Ağırlık değeri W çok küçük veya çok büyük olduğunda büyük bir hata olacağına dikkat edilmelidir.Ağırlığın uygun bir değere dönüştürülmesi için güncellenmesi ve optimize edilmesi gerekir, bu nedenle degradenin tersi yönde yerel bir optimal değer bulmaya çalışırız. .

Gradyan iniş varyantı

Geleneksel toplu gradyan inişi, tüm veri setinin gradyanını hesaplayacaktır, ancak yalnızca bir kez güncellenecektir, bu nedenle, büyük veri setlerini işlerken kontrol edilmesi çok yavaş ve zordur ve hatta bellek taşmasına neden olur.

Ağırlık güncellemesinin hızı öğrenme oranı tarafından belirlenir ve dışbükey hata yüzeyinde küresel optimal değere yakınlaşabilir ve dışbükey olmayan yüzeyde yerel optimal değere yönelebilir.

Toplu gradyan inişinin standart biçimini kullanmanın bir başka sorunu, büyük veri kümelerini eğitirken fazladan ağırlık güncellemelerinin olmasıdır.

Yukarıda belirtilen standart gradyan iniş problemleri, stokastik gradyan iniş yönteminde çözülür.

1. Stokastik Gradyan İniş (SDG)

Stokastik gradyan inişi (SGD), her eğitim örneğinin parametrelerini günceller ve her yürütüldüğünde güncellenir ve yürütme hızı daha hızlıdır.

= () × J (; x (i); y (i)), burada x (i) ve y (i) eğitim örnekleridir.

Sık yapılan güncellemeler, parametrelerin yüksek varyansa sahip olmasını sağlar ve kayıp işlevi farklı yoğunluklarda dalgalanır. Bu aslında iyi bir şey, çünkü yeni ve muhtemelen daha iyi yerel minimumlar keşfetmemize yardımcı olurken, standart gradyan inişi yalnızca yerel bir optimal değere yakınlaşacaktır.

Ancak SGD ile ilgili sorun, sık güncellemeler ve dalgalanmalar nedeniyle eninde sonunda minimuma yaklaşması ve sık dalgalanmalar nedeniyle aşımların yaşanmasıdır.

Öğrenme oranı yavaşça azaldığında, standart gradyan inişinin yakınsama modunun SGD'ninkiyle aynı olduğu gösterilmiş olmasına rağmen.

şekil 2: Her eğitim örneğindeki yüksek varyanslı parametre güncellemesi, kayıp fonksiyonunun büyük ölçüde dalgalanmasına neden olur, bu nedenle kayıp fonksiyonunun minimum değerini elde edemeyebiliriz.

"Mini yığın gradyan inişi" olarak adlandırılan başka bir değişken, yüksek varyanslı parametre güncellemesi ve kararsız yakınsama sorunlarını çözebilir.

2. Mini toplu gradyan inişi

SGD ve standart gradyan inişindeki sorunları önlemek için, geliştirilmiş bir yöntem Mini Toplu Gradyan İnişidir, çünkü bu yöntem her partide n eğitim numunesi için yalnızca bir güncelleme gerçekleştirir.

Mini toplu gradyan iniş kullanmanın avantajları şunlardır:

1) Parametre güncellemesindeki dalgalanmayı azaltabilir ve nihayet daha iyi ve daha kararlı bir yakınsama elde edebilir.

2) Küçük toplu verilerin gradyanının hesaplanmasını daha verimli hale getirmek için en son derin öğrenme kitaplığındaki genel matris optimizasyon yöntemini de kullanabilirsiniz.

3) Genel olarak konuşursak, küçük parti numunelerinin boyut aralığı, gerçek soruna göre farklı olabilen 50 ila 256 arasındadır.

4) Bir sinir ağını eğitirken, mini toplu gradyan iniş algoritması genellikle seçilir.

Bu yöntem bazen SGD olarak adlandırılır.

Gradyan iniş ve varyantlarını kullanırken karşılaşılan zorluklar

1. Uygun bir öğrenme oranı seçmek zordur. Çok küçük bir öğrenme hızı, ağın çok yavaş yakınsamasına neden olurken, çok büyük bir öğrenme hızı yakınsamayı etkileyebilir ve kayıp fonksiyonunun minimum değerde dalgalanmasına ve hatta gradyan sapmasına neden olabilir.

2. Ek olarak, aynı öğrenme hızı tüm parametre güncellemeleri için geçerli değildir. Eğitim seti verileri çok seyrekse ve özellik frekansları çok farklıysa, bunlar aynı ölçüde güncellenmemelidir, ancak nadiren görünen özellikler için daha büyük bir güncelleme hızı kullanılmalıdır.

3. Sinir ağlarında, dışbükey olmayan hata fonksiyonlarının en aza indirilmesindeki bir diğer önemli zorluk, birden çok başka yerel minimumda yakalanmayı önlemektir. Aslında sorun yerel minimumdan değil, eyer noktasından, bir boyutun yukarı ve diğer boyutun aşağı doğru eğim yaptığı noktadan kaynaklanmaktadır. Bu eyer noktaları genellikle aynı hata değerine sahip düzlemlerle çevrilidir, bu da SGD algoritmasının kaçmasını zorlaştırır, çünkü gradyan tüm boyutlarda sıfıra yakındır.

Gradyan inişini daha da optimize edin

Şimdi degrade inişin daha fazla optimizasyonu için çeşitli algoritmaları tartışacağız.

1. Momentum

SGD yöntemindeki yüksek varyans salınımı, ağın kararlı bir şekilde yakınsamasını zorlaştırır, bu nedenle bazı araştırmacılar Momentum adlı bir teknik önerdiler. İlgili yönlerde eğitimi optimize ederek ve ilgisiz yönlerdeki salınımları zayıflatarak SGD eğitimini hızlandırın . Başka bir deyişle, bu yeni yöntem, önceki adımdaki güncelleme vektörünün bileşenini 'o' mevcut güncelleme vektörüne ekler.

V (t) = V (t 1) + (). J ()

Son olarak, parametreler = V (t) ile güncellenir.

Momentum terimi genellikle 0,9 veya benzer bir değere ayarlanır.

Buradaki momentum, klasik fizikteki momentum ile tutarlıdır, tıpkı bir dağdan bir top fırlatmak, düşüş sırasında momentum toplamak gibi ve topun hızı artmaya devam ediyor.

Parametre güncelleme sürecinde prensip benzerdir:

1) Ağı daha iyi ve daha kararlı yakınsama yapın;

2) Salınım sürecini azaltın.

Gradyan gerçek hareket yönünü gösterdiğinde, momentum terimi artar; gradyan gerçek hareket yönünün tersi olduğunda azalır. Bu yaklaşım, momentum teriminin yalnızca ilgili örneklerin parametrelerini güncellemesi, gereksiz parametre güncellemelerini azaltması, daha hızlı ve kararlı yakınsama ile sonuçlanması ve salınım sürecini azaltması anlamına gelir.

2. Nesterov gradyan hızlandırma yöntemi

Yurii Nesterov adlı bir araştırmacı, momentum yöntemiyle ilgili bir sorun olduğuna inanıyor:

Bir yamaçtan aşağı yuvarlanan bir top körü körüne yokuştan aşağı kayıyorsa, bu çok uygunsuzdur. Daha akıllı bir top nereye gittiğine dikkat etmelidir, bu nedenle top tekrar yokuş yukarı eğildiğinde yavaşlamalıdır.

Aslında, top eğrinin en alt noktasına ulaştığında, momentum oldukça yüksektir. Yüksek momentum, minimumu tamamen ıskalamasına neden olabileceğinden, top ne zaman yavaşlayacağını bilemez, bu nedenle yukarı doğru hareket etmeye devam eder.

Yurii Nesterov, 1983'te momentum problemini çözme üzerine bir makale yayınladı. Bu nedenle, bu yönteme Nestrov gradyan hızlandırma yöntemi diyoruz.

Bu yöntemde, önceki momentuma dayalı olarak büyük bir sıçrama yapmayı ve ardından parametre güncellemesini gerçekleştirmek için düzeltme gradyanını hesaplamayı önerdi. Bu ön güncelleme yöntemi, büyük salınımları önleyebilir, minimum değeri kaçırmaz ve parametre güncellemelerine karşı daha duyarlı olur.

Nesterov Gradyan Hızlandırma Yöntemi (NAG), parametresini değiştirmek için momentum terimi V (t 1) kullanarak momentum terimi öngörülebilirliği veren bir yöntemdir. V (t 1) hesaplanarak, bir sonraki pozisyondaki parametrenin yaklaşık değeri elde edilir Buradaki parametre kaba bir kavramdır. bu nedenle Mevcut parametrenin gradyan değerini hesaplamıyoruz , ancak geleceği etkili bir şekilde tahmin etmek için ilgili parametrenin gelecekteki yaklaşık konumunu kullanıyoruz :

V (t) = V (t 1) + () J ( V (t 1)) ve ardından parametreleri güncellemek için = V (t) kullanın.

Şimdi, ağ güncellemesini hata fonksiyonunun eğimine uyarlayarak ve sırayla SGD'yi hızlandırarak, daha büyük veya daha küçük bir güncelleme aralığı gerçekleştirmek için ilgili parametreleri her parametrenin önemine göre ayarlayabilir ve güncelleyebiliriz.

3. Adagrad yöntemi

Adagrad yöntemi, parametreler aracılığıyla uygun öğrenme oranını ayarlar ve parametreleri seyrekleştirmek için büyük güncellemeler ve sık parametrelere küçük güncellemeler gerçekleştirir. Bu nedenle, Adagrad yöntemi seyrek verileri işlemek için çok uygundur.

Zaman adımında, Adagrad yöntemi, her bir parametre tarafından hesaplanan geçmiş gradyana dayalı olarak farklı parametreler için farklı öğrenme hızları ayarlar.

Önceden, her parametre (i) aynı öğrenme oranını kullanıyordu ve tüm parametreler her seferinde güncelleniyordu. Her t zaman adımında, Adagrad yöntemi her parameter parametresi için farklı bir öğrenme hızı seçer, ilgili parametreleri günceller ve ardından vektörleştirir. Basitlik uğruna, t zamanında (i) parametresinin kayıp fonksiyonu gradyanını g (t, i) olarak ayarladık.

resim 3: Parametre güncelleme formülü

Adagrad yöntemi, geçmişte hesaplanan parametre gradyanına göre her bir zaman adımında her bir (i) parametresi için karşılık gelen öğrenme oranını değiştirmektir.

Adagrad yönteminin temel avantajı, öğrenme oranının manuel olarak ayarlanmasını gerektirmemesidir. Çoğu parametre varsayılan değer olan 0,01'i kullandı ve değişmeden kaldı.

Adagrad yönteminin ana dezavantajı, öğrenme oranının her zaman azalması ve zayıflamasıdır.

Her ek terim pozitif olduğu için, paydada çoklu kare gradyan değerleri toplanır, bu nedenle birikmiş toplam eğitim sırasında artmaya devam eder. Bu da öğrenme oranının çok küçük bir büyüklük sırasına düşmesine neden oldu.Model öğrenmeyi tamamen durdurdu ve yeni ek bilgiler edinmeyi bıraktı.

Çünkü öğrenme hızı küçüldükçe modelin öğrenme yeteneği hızla azalır ve yakınsama hızı çok yavaştır, yani uzun bir eğitim ve öğrenme gerektirir. Yavaş öğrenme hızı .

Adadelta adı verilen bir başka algoritma, öğrenme oranının düşmesi sorununu iyileştiriyor.

4. AdaDelta yöntemi

Bu, AdaGrad'ın öğrenme hızı düşüşü problemini çözme eğiliminde olan bir uzantısıdır. Adadelta, önceki tüm kare gradyanları biriktirmez, ancak önceki gradyanların birikme penceresini sabit bir w boyutuyla sınırlar.

Daha önce etkisiz olarak saklanan önceki kare gradyanından farklı olarak, gradyanların toplamı, önceki kare gradyanların tümünün zayıflatılmış ortalaması olarak yinelemeli olarak tanımlanır. Momentum terimine benzer bir puan olarak, t zamanındaki hareketli ortalama Eg² yalnızca önceki ortalamaya ve mevcut gradyan değerine bağlıdır.

Eg² = .Eg² + (1 ) .g² (t), burada momentum terimine yakın bir değere, yaklaşık 0,9'a ayarlanır.

(t) = - g (t, i).

(t + 1) = (t) + (t)

Şekil 4: Parametre güncellemesi için son formül

AdaDelta yönteminin diğer bir avantajı, varsayılan bir öğrenme oranı ayarlamaya gerek olmamasıdır.

Şimdiye kadar tamamlanan iyileştirmeler

1) Her parametre için farklı öğrenme hızlarını hesaplayın;

2) Momentum terimi de hesaplanır;

3) önlemek Öğrenme oranının bozulması veya gradyanın kaybolması Sorunların ortaya çıkmasını bekleyin.

Neler geliştirilebilir?

Önceki yöntemde, her parametrenin karşılık gelen öğrenme oranı hesaplanır, ancak neden her parametrenin karşılık gelen momentum değişikliğini hesaplayıp bağımsız olarak saklamayasınız? Adam algoritması tarafından önerilen gelişme noktası budur.

Adam algoritması

Adam algoritması Yani, uyarlanabilir moment tahmin yöntemi (Uyarlanabilir Moment Tahmini) , Her parametrenin uyarlanabilir öğrenme oranını hesaplayabilir. Bu yöntem sadece AdaDelta'nın önceki kare gradyanının üssel bozulma ortalamasını saklamakla kalmaz, aynı zamanda momentuma benzer bir önceki M (t) gradyanının üssel bozulma ortalamasını da korur:

M (t), ilk seferde gradyanın ortalama değeridir ve V (t), ikinci seferde gradyanın merkezi olmayan varyans değeridir.

Şekil 5: İki formül, renk geçişinin ilk andaki ortalama değeri ve ikinci zamanındaki varyanstır.

Parametre güncellemesinin son formülü şudur:

Resim 6: Parametre güncellemesi için son formül

Bunlar arasında 10,9'a, 20,9999'a ve 10-8'e ayarlanmıştır.

Pratik uygulamalarda Adam yöntemi iyi çalışır. Diğer uyarlanabilir öğrenme hızı algoritmalarıyla karşılaştırıldığında, yakınsama hızı daha hızlıdır, öğrenme etkisi daha etkilidir ve öğrenme hızı kaybı, yavaş yakınsama veya yüksek varyans parametre güncellemeleri gibi diğer optimizasyon tekniklerindeki sorunları düzeltebilir. Büyük fonksiyon dalgalanmaları gibi sorunlar.

Optimizasyon algoritmalarını görselleştirin

Şekil 8: Eyer noktaları için SGD optimizasyonu

Yukarıdaki animasyondan da görülebileceği gibi, uyarlanabilir algoritma hızlı bir şekilde yakınsayabilir ve parametre güncellemesinde doğru hedef yönü hızlıca bulabilir; standart SGD, NAG ve momentum terimi yöntemleri yavaşça birleşirken doğru yönü bulmak zordur.

sonuç olarak

Hangi optimize ediciyi kullanmalıyız?

Sinir ağı modelini oluştururken, kayıp işlevini en aza indirmek için dahili parametreleri ayarlarken hızlı bir şekilde yakınsamak ve doğru öğrenmek için en iyi optimize ediciyi seçin.

Adam, diğer uyarlanabilir teknolojileri geride bırakarak pratik uygulamalarda iyi çalışıyor.

Giriş veri seti seyrekse, SGD, NAG ve momentum terimi gibi yöntemler iyi çalışmayabilir. Bu nedenle, seyrek veri kümeleri için uyarlanabilir bir öğrenme hızı yöntemi kullanılmalıdır ve diğer bir avantaj, öğrenme oranını manuel olarak ayarlamaya gerek olmaması ve varsayılan parametreleri kullanarak optimum değeri elde etmenin mümkün olmasıdır.

Eğitim derin ağ modelinin hızlı bir şekilde yakınlaşmasını istiyorsanız veya yerleşik sinir ağının daha karmaşık olması durumunda, Adam veya diğer uyarlanabilir öğrenme hızı yöntemlerini kullanmalısınız. Çünkü bu yöntemlerin gerçek etkisi daha iyidir.

Farklı optimizasyon algoritmaları arasındaki özellik farklılıklarını iyi anlamak için bu makaleyi kullanabileceğinizi umuyoruz.

İlgili Bağlantılar:

İkinci dereceden optimizasyon algoritması:

https://web.stanford.edu/class/msande311/lecture13.pdf

Nesterov gradyan hızlandırma yöntemi:

Bitiş

Bir uyarı

Qubit'ler, otonom sürüşle ilgili alanlarda çalışan öğrenciler veya ön saflardaki mühendisler için otonom bir sürüş teknolojisi grubu oluşturuyor. Herkese qubit WeChat (qbitbot) eklemeye hoş geldiniz, ha'ya katılmak için başvurmak için "otomatik sürüş" diyor ~

İşe Alım

Qubit, editörleri, muhabirleri, operasyonları, ürünleri ve diğer pozisyonları işe alıyor ve çalışma yeri Pekin, Zhongguancun'da bulunuyor. İlgili ayrıntılar için lütfen şu yanıtı verin: resmi hesabın diyalog arayüzünde "İşe Alım".

Kobe, Harden'in şampiyonluğu kazanamayacağını açıkça belirtti ve Harden, işaret ettiği üç eksikliği de fark etti!
önceki
Dalian Yifang neden küme düştü? Çin Süper Ligi'nin "kötü adamı" maçtan sonra gözlerinde yaşlarla oyunun her yerinde oynadı
Sonraki
Garantiyi uzatmak kraldır, çözmek sadece an meselesidir. 12 Şubat'ta görüşmek üzere.
LOL Kıtalararası Finalleri: Mlxg çılgınca SKT'yi yakalamak için bir şeyler arıyor, Faker, demir adamın güçsüzlüğünü feda ediyor
Antrenör, Zhou Qi'nin NBA'e dönmeden önce bu 4 golü tamamlama planını açıkladı!
Dalian'ı savunun! İki Çin Süper Ligi "kötü adam" başlıyor, bir taraf Yatai'ye karşı ilk maçı
10 yuan, 50 yuan ve 100 yuan madeni para burada! Gel de neye benzediğini gördün mü? nasıl alınır?
Kaplan yüzlü dişlere sahip orta büyüklükte bir 7 koltuklu SUV konumlandıran Chery Tiggo 8, agresif bir şekilde geliyor
LOL Kıtalararası Finalleri: KT God BP, IG'yi yener, Çaylak Tianxiu'yu kurtarmak zor, LPL önce bir puan kaybeder
Tangshen KD, kimi seçmesi gereken tek bir savaşçı bırakır? 4 karşılaştırma boşluğu ortaya koyuyor, cevap biraz beklenmedik
Profesör Li, Süper Lig'in performansına veda etti, Luneng Xinhe 60 puanlık mücadele çağrısı yaptı! Wu Jingui'nin sözü boş muydu?
FAW-Volkswagen Audi ev sahibinden üç kart aldı
Mavi delik sunucusu da patates kullanıyor mu? PlayerUnknown's Battlegrounds çapa eğlence oyunu sunucu sorunları nedeniyle askıya alındı
Morey neden Knight'ı göndermedi? 4 koşuldan sadece 2'si düzeltildi ve hepsi Rocket'lerin çok güçlü olması!
To Top