Optimizasyon hataları nasıl ayıklanabilir ve azaltılabilir?
Özet: Modelde optimizasyon zorlukları yaşanıyorsa, başka adımları denemeden önce bunları düzeltmek önemlidir. Eğitimdeki başarısızlıkların teşhis edilmesi ve düzeltilmesi aktif bir araştırma alanıdır.
Şekil 4 ile ilgili olarak aşağıdakilere dikkat edin:
- Adımları değiştirmek, düşük öğrenme hızlarında performansı düşürmez.
- Kararsızlık nedeniyle yüksek öğrenim oranları artık iyi eğitilmemektedir.
- 1.000 adımlı öğrenme hızı ısınması uygulandığında bu kararsızlık durumu ortadan kalkar ve maksimum öğrenme hızı 0, 1 olan eğitime istikrar sağlanır.
Kararsız iş yüklerini tanımlama
Öğrenme hızı çok büyük olursa tüm iş yükleri kararsız hale gelir. Kararsızlık ancak sizi çok düşük bir öğrenme hızı kullanmaya zorladığında ortaya çıkar. Eğitimdeki en az iki tür istikrarsızlığı ayırt etmeye değer:
- Başlatma sırasında veya eğitimin başlarında kararsızlık.
- Eğitimin ortasında aniden yaşanan istikrarsızlık.
Aşağıdakileri yaparak iş akışınızdaki kararlılık sorunlarını tanımlamak için sistematik bir yaklaşım uygulayabilirsiniz:
- Bir öğrenme hızı taraması yapın ve en iyi öğrenme hızını bulun*.
- lr* üzerindeki öğrenme oranları için eğitim kaybı eğrilerini çizin.
- Öğrenme oranları > lr*, istikrarsızlık kaybı gösteriyorsa (eğitim dönemlerinde kayıp düşmüyorsa) bu kararsızlığı düzeltmek genellikle eğitimi iyileştirir.
Aykırı değerler eğitimin ortasında sahte istikrarsızlığa neden olabileceğinden eğitim sırasında tam kayıp gradyanının L2 normunu kaydedin. Bu, gradyanların veya ağırlık güncellemelerinin ne kadar agresif bir şekilde kırpılacağını bildirebilir.
NOT: Bazı modeller çok erken aşamada kararsızlık gösterir, ardından kurtarma yavaş ama kararlı eğitime yol açar. Yaygın değerlendirme programları, yeterince sık değerlendirme yapmadığınız için bu sorunların gözden kaçmasına neden olabilir.
Bunu kontrol etmek için lr = 2 * current best
kullanarak yaklaşık 500 adımdan oluşan kısaltılmış bir koşuyu uygulayabilirsiniz ancak her adımı değerlendirin.
Yaygın kararsızlık kalıpları için olası düzeltmeler
Yaygın kararsızlık kalıpları için aşağıdaki olası düzeltmeleri göz önünde bulundurun:
- Öğrenme hızı ısınma işlemini uygulayın. Bu, eğitimdeki istikrarsızlıkların erken aşamaları için en iyi seçenektir.
- Gradyan kırpma uygulayın. Bu, eğitimin başında ve ortasındaki istikrarsızlıklar için faydalıdır ve ısınma işleminin başarısız olduğu bazı kötü başlatmaları düzeltebilir.
- Yeni bir optimize ediciyi deneyin. Adam bazen Momentum'un kaldıramayacağı değişkenlikleri idare edebilir. Bu, aktif bir araştırma alanıdır.
- Model mimariniz için en iyi uygulamaları ve en iyi başlatmaları kullandığınızdan emin olun (izlenecek örnekler). Modelde halihazırda yoksa artık bağlantıları ve normalleştirmeyi ekleyin.
- Kalan değerden önceki son işlem olarak normalleştir. Örneğin:
x + Norm(f(x))
.Norm(x + f(x))
uygulamasının sorunlara neden olabileceğini unutmayın. - Kalan dalları 0 olarak başlatmayı deneyin. (İhtiyacınız Olan Tek Şey ReZero: Geniş Derinlikte Hızlı Kaynaşma bölümüne bakın.)
- Öğrenme hızını düşürün. Bu son çaredir.
Öğrenme hızı ısınma
Öğrenme hızı ısınması ne zaman uygulanır?
Şekil 7a'da, en iyi öğrenme hızı kararsızlığın sınırında olduğu için optimizasyon kararsızlığı yaşayan bir modeli gösteren hiperparametre eksen grafiği gösterilmektedir.
Şekil 7b'de, öğrenme hızı bu zirve değerinden 5 kat veya 10 kat daha büyük olan bir modelin eğitim kaybı incelenerek bunun nasıl tekrar kontrol edilebileceği gösterilmektedir. Bu grafik, sabit bir düşüşten sonra kayıpta ani bir artış gösterirse (ör.yukarıdaki şekilde ~10. 000 adımda) model muhtemelen optimizasyon kararsızlığından muzdarip olur.
Öğrenme hızı ısınma işlemini uygulama
Önceki prosedürü kullanarak, modelin kararsız hale geldiği öğrenme hızı unstable_base_learning_rate
olsun.
Isınma sürecinde, öğrenme hızını 0'dan 0'dan sabit bir base_learning_rate
seviyesine yükselten bir öğrenme hızı programı hazırlanır. Bu plan, unstable_base_learning_rate
değerinden en az bir büyüklük sırasına göre belirlenir.
Varsayılan değer, 10 kat unstable_base_learning_rate
değerinde bir base_learning_rate
denemesidir. Ancak bu prosedürün tamamını 100 kat gibi bir değer için tekrarlamanın mümkün olduğunu unutmayın.
unstable_base_learning_rate
. Özel zaman çizelgesi:
- Isınma_adımları üzerinden 0'dan base_learning_rate'ye yükselin.
- post_warmup_steps için sabit bir hızda eğitim yapın.
Hedefiniz, unstable_base_learning_rate
seviyesinin çok üzerinde olan en yüksek öğrenme oranlarına erişmenizi sağlayacak en kısa warmup_steps
sayısını bulmaktır.
Yani her base_learning_rate
için warmup_steps
ve post_warmup_steps
ayarlarını yapmanız gerekir. post_warmup_steps
değerinin 2*warmup_steps
olarak ayarlanması genellikle sorun oluşturmaz.
Isınma, mevcut bir azalma programından bağımsız olarak ayarlanabilir. warmup_steps
, birkaç farklı büyüklük sırasına göre süpürülmelidir. Örneğin, örnek bir çalışmada [10, 1000, 10,000, 100,000]
denenebilir. Uygun en büyük nokta, max_train_steps
değerinin% 10'undan fazla olmamalıdır.
base_learning_rate
için eğitimin her adımını tamamlamayan bir warmup_steps
oluşturulduktan sonra temel modele uygulanması gerekir.
Esasen, bu programı mevcut programın başına ekleyin ve bu denemeyi referans değerle karşılaştırmak için yukarıda açıklanan en uygun kontrol noktası seçimini kullanın. Örneğin, başlangıçta 10.000 max_train_steps
kullanıcımız varsa ve 1.000 adım için warmup_steps
işlemi gerçekleştirdiysek yeni eğitim prosedürü toplam 11.000 adımdan oluşur.
Kararlı eğitim için uzun warmup_steps
gerekliyse (max_train_steps
'ın% 5'inden fazla) bunu hesaba katmak için max_train_steps
değerini artırmanız gerekebilir.
Tüm iş yükleri aralığında aslında "tipik" bir değer yoktur. Bazı modeller yalnızca 100 adıma ihtiyaç duyarken diğerleri (özellikle dönüştürücüler) 40.000'den fazla adıma ihtiyaç duyabilir.
Gradyan kırpma
Gradyan kırpma en çok büyük veya aykırı değerlerde gradyan sorunları oluştuğunda yararlıdır. Gradyan Kırpma aşağıdaki sorunlardan birini düzeltebilir:
- Erken eğitim kararsızlığı (erken büyük gradyan standardı)
- Eğitim sırasında yaşanan istikrarsızlıklar (eğitimin ortasında gradyan ani artışları).
Bazen uzun ısınma dönemleri, kırpmanın sağlamadığı dengesizlikleri düzeltebilir. Ayrıntılar için Öğrenme hızı ısınma bölümüne bakın.
🤖 Isınma sırasında kırpmak nasıl olur?
İdeal klip eşikleri, "tipik" gradyan standardının hemen üzerindedir.
Aşağıda, gradyan kırpmanın nasıl yapılabileceğine ilişkin bir örnek verilmiştir:
- $\left | g \right |$ gradyanının normu $\lambda$ gradyan kırpma eşiğinden büyükse ${g}'= \lambda \times \frac{g}{\left | g \right |}$ burada ${g}'$ yeni renk geçişini belirtmektedir.
Eğitim sırasında kırpılmamış gradyan normunu kaydedin. Varsayılan olarak şu oluşturun:
- Gradyan normu ve adım grafiğini
- Tüm adımlarda toplanan gradyan normlarının histogramı
Renk geçişi normlarının 90. yüzdelik dilimine göre bir gradyan kırpma eşiği seçin. Eşik, iş yüküne bağlıdır ancak% 90 iyi bir başlangıç noktasıdır. %90 çalışmazsa bu eşiği ayarlayabilirsiniz.
🤖 Bir tür uyarlanabilir stratejiye ne dersiniz?
Gradyan kırpmayı denediğinizde kararsızlık sorunları devam ederse bunu daha fazla deneyebilirsiniz; yani eşiği küçültebilirsiniz.
Son derece agresif bir gradyan kırpma yöntemi (yani güncellemelerin% 50'sinden fazlası kırpılıyor), özünde öğrenme hızını düşürmenin garip bir yoludur. Kırpma işlemini çok agresif bir şekilde kullanıyorsanız bunun yerine öğrenme hızını azaltmanız gerekir.
Öğrenme hızı ve diğer optimizasyon parametrelerine neden hiperparametre diyoruz? Bunlar, önceki herhangi bir dağılımın parametreleri değildir.
"Hiperparametre" teriminin Bayes makine öğreniminde kesin bir anlamı vardır. Bu nedenle, öğrenme hızına ve diğer ayarlanabilir derin öğrenme parametrelerinin çoğuna "hiperparametreler" olarak atıfta bulunulması muhtemelen terminolojinin kötüye kullanımıdır. Öğrenme oranları, mimari parametreler ve derin öğrenme ile ilgili diğer tüm incelenebilir öğeler için "metaparameter" terimini kullanmayı tercih ederiz. Çünkü metaparametre, "hiperparametre" kelimesinin yanlış kullanımından kaynaklanan karışıklık potansiyelini önler. Bu karışıklığın, olasılıksal yanıt yüzeyi modellerinin kendi gerçek hiperparametrelerinin olduğu Bayes optimizasyonundan bahsederken özellikle olasıdır.
Maalesef "hiperparametre" terimi kafa karıştırıcı olsa da derin öğrenme topluluğunda son derece yaygın bir şekilde kullanılmaktadır. Bu nedenle, bu teknik bilgiden haberdar olma ihtimali olmayan pek çok kişinin yer aldığı geniş bir kitleye yönelik olan bu belgede, alandaki karışıklıklardan birine neden olan bir kaynağa katkıda bulunmayı ve diğerini önlemeyi umarak katkıda bulunmaya karar verdik. Bununla birlikte, bir araştırma makalesini yayınlarken farklı bir seçim yapabiliriz ve diğerlerini çoğu bağlamda bunun yerine "metaparametre" kullanmaya teşvik ederiz.
Grup boyutu, doğrulama grubu performansını doğrudan iyileştirmek için neden ayarlanmamalıdır?
Eğitim ardışık düzeninin diğer ayrıntılarını değiştirmeden grup boyutunun değiştirilmesi, genellikle doğrulama grubu performansını etkiler. Ancak eğitim ardışık düzeni her toplu iş boyutu için bağımsız olarak optimize edilirse iki grup boyutu arasındaki doğrulama grubu performansındaki fark genellikle ortadan kalkar.
Grup boyutuyla en güçlü şekilde etkileşime giren ve dolayısıyla her grup boyutu için ayrı ayrı ayar yapılması en önemli olan hiperparametreler, optimize edici hiperparametreleri (örneğin, öğrenme hızı, momentum) ve normalleştirme hiperparametreleridir. Daha küçük grup boyutları, örneklem varyansı nedeniyle eğitim algoritmasına daha fazla gürültü getirir. Bu sesin normalleşme bir etkisi olabilir. Bu nedenle, büyük parti boyutları fazla eşleştirmeye daha yatkın olabilir ve daha güçlü normalleştirme ve/veya ek normalleştirme teknikleri gerektirebilir. Ayrıca, toplu boyutu değiştirirken eğitim adımlarının sayısını da ayarlamanız gerekebilir.
Tüm bu etkiler dikkate alındıktan sonra, grup boyutunun ulaşılabilir maksimum doğrulama performansını etkilediğine dair ikna edici bir kanıt yoktur. Ayrıntılar için Shallue ve diğerleri 2018 sayfasına bakın.
Tüm popüler optimizasyon algoritmaları için güncelleme kuralları nelerdir?
Bu bölümde, çeşitli popüler optimizasyon algoritmaları için güncelleme kuralları yer almaktadır.
Stokastik gradyan azalma (SGD)
\[\theta_{t+1} = \theta_{t} - \eta_t \nabla \mathcal{l}(\theta_t)\]
Burada $\eta_t$, $t$ adımındaki öğrenme hızıdır.
İlgiyi Artırma
\[v_0 = 0\]
\[v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t)\]
\[\theta_{t+1} = \theta_{t} - \eta_t v_{t+1}\]
Burada $\eta_t$, $t$ adımındaki öğrenme hızı, $\gamma$ ise momentum katsayısıdır.
Nesterov
\[v_0 = 0\]
\[v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t)\]
\[\theta_{t+1} = \theta_{t} - \eta_t ( \gamma v_{t+1} + \nabla \mathcal{l}(\theta_{t}) )\]
Burada $\eta_t$, $t$ adımındaki öğrenme hızı, $\gamma$ ise momentum katsayısıdır.
RMSProp
\[v_0 = 1 \text{, } m_0 = 0\]
\[v_{t+1} = \rho v_{t} + (1 - \rho) \nabla \mathcal{l}(\theta_t)^2\]
\[m_{t+1} = \gamma m_{t} + \frac{\eta_t}{\sqrt{v_{t+1} + \epsilon}}\nabla \mathcal{l}(\theta_t)\]
\[\theta_{t+1} = \theta_{t} - m_{t+1}\]
ADAM
\[m_0 = 0 \text{, } v_0 = 0\]
\[m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)\]
\[v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l}(\theta_t)^2\]
\[b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}}\]
\[\theta_{t+1} = \theta_{t} - \alpha_t \frac{m_{t+1}}{\sqrt{v_{t+1}} + \epsilon} b_{t+1}\]
NADAM (NADAM)
\[m_0 = 0 \text{, } v_0 = 0\]
\[m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)\]
\[v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l} (\theta_t)^2\]
\[b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}}\]
\[\theta_{t+1} = \theta_{t} - \alpha_t \frac{\beta_1 m_{t+1} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)}{\sqrt{v_{t+1}} + \epsilon} b_{t+1}\]