Degrade İnişe sahip öğrenme oranını Optimize Edici olarak nasıl (sistematik olarak) ayarlayabilirsiniz?


12

ML / DL alanından bir yabancı; Tensorflow'a dayanan Udacity Derin Öğrenme kursuna başladı; ödev 3 problemini yapmak 4; öğrenme hızını aşağıdaki yapılandırma ile ayarlamaya çalışmak:

  • Parti büyüklüğü 128
  • Adım sayısı: 2 dönemi doldurmak için yeterli
  • Gizli katmanların boyutları: 1024, 305, 75
  • Ağırlık başlatma: std ile normal kesildi. sqrt (2 / n) sapması; burada n, önceki katmanın boyutudur
  • Bırakma olasılığı olasılığı: 0.75
  • Düzenleme: uygulanmadı
  • Öğrenme Oranı algoritması: üstel bozunma

öğrenme hızı parametreleri ile oynanan; çoğu durumda etkili görünmüyorlar; burada kod ; Sonuçlar:

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • Öğrenme hızını sistematik olarak nasıl ayarlamalıyım?
  • Öğrenme oranı adım sayısı ile nasıl ilişkilidir?

1
tpot otomatik ML ayar boru hatları sağlar
denfromufa

Yanıtlar:


4

Degrade iniş optimize edici kullanın. Bu çok iyi bir genel bakış.

Kod ile ilgili olarak, bu eğiticiye bir göz atın . Bu ve bu bazı örnekler.

Şahsen ben ADAM veya RMSprop kullanmanızı öneririm. Hala ayarlanacak bazı hiperparametreler var, ancak zamanın% 99'unda çalışan bazı "standart" olanlar var. ADAM için, bakabilirsiniz onun kağıt ile ve RMSprop için bu slaytlar .

DÜZENLE

Tamam, zaten bir degrade optimize edici kullanıyorsunuz. Ardından, en iyi öğrenme oranını seçmek için bazı hiperparametreler optimizasyonu yapabilirsiniz. Son zamanlarda, otomatik bir yaklaşım önerilmiştir . Ayrıca, otomatik hiperparametrelerin ayarlanması konusunda Frank Hutter tarafından umut verici birçok çalışma var .

Daha genel olarak, ekiplerin kaynak kodlarını da bulabileceğiniz AutoML Mücadelesine bir göz atın . Bu zorlukta amaç, hiperparametrelerin ayarlanması dahil olmak üzere makine öğrenmesini otomatikleştirmektir.

Son olarak, LeCun bu kağıt ve DeepMin bu çok yeni öğretici (çek Bölüm 8) Sorunuza kullanışlı olabilecek bazı bilgiler vermek.

Her neyse, (özellikle kolay problemler için), bir degrade iniş optimize edici kullanırken öğrenme oranının öğrenmeyi fazla etkilememesi normaldir. Genellikle, bu optimize ediciler çok güvenilirdir ve farklı parametrelerle çalışırlar.


Zaten kodda Gradient Descent Optimizer kullanıyorum. Bağlantılar için teşekkürler!
Thoran

@Thoran Ok, şu kodu okumadı: D (ve soru bir optimize ediciden bahsetmiyor). Sana biraz daha yardım etmek için cevabımı düzenledim :)
Simon

Güzel gelişmeler, <gibi yabancılar için işi kolaylaştırır. Basamak sayısı ve öğrenme hızının ne kadar ilişkili olduğunu biliyor musunuz? Bağırsam bana daha fazla adım olursa öğrenme sürecinin daha yavaş olması gerektiğini söylüyor.
Thoran

@Thoran Genellikle evet, adım sayısı arttıkça işlem yavaşlar (aynı zamanda daha kararlıdır). Ayrıca, hiperparametreleri elle ayarlamak için yararlı olabilecek bazı "numaralar" için bazı referanslar ekleyerek cevabımı düzenledim.
Simon

çok güzel şeyler, sindirmek benim için biraz zaman alacak: D
Thoran

1

Bir çok makine öğrenme algoritmasının kendisinde hiper parametrelerin ayarlanmasını veya sadece Gradient Descent optimizer yani öğrenme hızı için hiperparametreleri otomatikleştirebilirsiniz.

Bunu yapmak için popüler olan bir kütüphane nane.

https://github.com/JasperSnoek/spearmint


1

Hipergradyan İniş ile Çevrimiçi Öğrenme Oranı Adaptasyonunda çok yeni bir otomatik öğrenme oranı ayarlayıcısı verilir

Bu yöntemin uygulanması çok basittir, SGD için temel sonuç şu şekilde verilir:

αt=αt-1+βf(θt-1)Tf(θt-2)

βÖrneğinf(θt-2)α

βα0


0

Hiperparametreleri ayarlamak için (öğrenme hızı, bozulma hızı, düzenlenme veya başka bir şey olsun), bir heldout veri kümesi oluşturmanız gerekir; bu veri kümesi, eğitim veri kümenizden ayrılır. Farklı konfigürasyonlara sahip birkaç modeli ayarladıktan sonra (burada bir yapılandırma = her bir hiperparametrenin belirli bir seçimi), heldout doğruluğunu en üst düzeye çıkaran modeli seçerek yapılandırmayı seçersiniz.


Heldout veri kümesinin test veya doğrulama veri kümesinden farkı nedir?
Thoran

heldout, doğrulama için başka bir addır. Temel olarak üç ayrık veri kümeniz vardır: tren, heldout ve test. Tren sadece model ağırlıklarını öğrenmek için kullanılır (örn. Gradyan iniş kullanmak). Heldout, model parametrelerini ayarlamak için kullanılır. Test sadece genelleme performansını ölçmek için kullanılır (yani modelimin görünmeyen veriler üzerinde nasıl performans göstermesini bekleyebilirim)
Alireza

Alireza'yı açıklamak için zaman ayırdığınız için teşekkürler. Zaten doğrulama veri kümesini kullanıyorum. Ve test olmadan, doğruluğu ölçmek mümkün değildir!
Thoran

Orijinal sorunuz, öğrenme oranını belirleme ile ilgiliydi: orijinal yayınınızdaki ilk sütun heldout (eğitim değil) doğruysa, 0,5'in 0,1'den daha iyi olduğunu söyleyebilirsiniz (yine de değerler> 0,5'i denemeye devam etmelisiniz). [not: denemelerinizi yeniden yaparsanız, test için bazı verileri bölümlere
Alireza
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.