Degrade iniş için sonlandırma koşulu nasıl tanımlanır?


24

Aslında, size gradyan inişi için sonlandırma koşulunu nasıl tanımlayabileceğimi sormak istiyorum.

Yineleme sayısına dayanarak, yani 100 yineleme için parametre değerlerini dikkate alarak durdurabilir miyim?

Yoksa 'new' ve 'old' iki parametresindeki farklılığın, diyelim sırasına göre çok küçük olmasını beklemeli miyim ? Bu kesinlikle çok zaman alacaktır.10-6

En iyi yol nedir? Benim durumumda bir yineleme bile zaman alır. Bu durumda 2. durumu beklersem, sanırım haftalar sürebilir.

Öyleyse hangi yaklaşımı kullanmalıyım. Bu senaryo ile nasıl baş edilir?


1
Açıkça belirtilmemiştir, ancak bir MLE bulmaya çalıştığınızı farz ediyorum. Sonucunuz tamamen tamamen parametre alanınıza, olabilirlik fonksiyonunuza ve ihtiyaçlarınıza bağlıdır (aka, en iyisi iyi tanımlanmamış). Sadece asimptotik verimlilik gibi teorik bir gerekçe arıyorsanız; Le'Cam koşulları altında sadece bir adımlık MLE'yi kullanabilirsiniz (Daha ileri varsayımlara göre, Newton Metodu'nu ve gradyan inişiniz için puanlama fonksiyonunu kullanıyorsunuzdur). Bu, başlangıç ​​değerinizin, olasılıkla olmasını gerektirir. n1/2θ^0θ
Jonathan Lisic

öyleyse bekleyin, "yeni" - "eski" yeterince küçükse, degrade iniş için yanlış bir sonlandırma koşulu mu? (Teoremler gibi sabit noktalar geçerliyse, bu koşul iyi olmalı mı?)
Charlie Parker

Bunlardan biri işlev değerlerinden veya gradyanlar veya parametreleri , göreceli veya mutlak hareket etmeyi durduruyor gibi göründüğünde durabilir. Fakat pratikte parametresi .. çok fazla, katlandığından çok, ama her program bunu farklı şekilde yapıyor. Bkz Mathworks toleransları ve durdurma kriterleri bir resim için. fbenfbenxben3x2ftolabs ftolrelxtolabs
denis,

Yanıtlar:


19

Güzel soru. Literatürde pek çok durma kuralı gördüm ve bağlama bağlı olarak her birinin avantaj ve dezavantajları var. optimR fonksiyonu, örneğin, en az üç farklı durma kuralları vardır:

  • maxit, yani önceden belirlenmiş bir azami yineleme sayısı. Literatürde gördüğüm bir başka benzer alternatif zaman aşımına uğramadan önce maksimum saniye sayısıdır. Tek ihtiyacınız olan yaklaşık bir çözüm ise, bu çok makul olabilir. Aslında, erken durmanın parametre değerlerinizi önceden bir Gauss koymaya benzer olduğu sınıflar (özellikle doğrusal modeller) vardır. Bir sık ​​görüşmeci bir öncekinden ziyade bir "L2 normuna" sahip olduğunu söylerdi, ancak bunu makul bir şey olarak göreceklerini söylediler. Ben sadece bu yazıyı inceledim , ancak erken durma ve düzenlileşme arasındaki ilişkiden bahsediyor ve daha fazla bilgi edinmenize yardımcı olabilir. Ancak kısa versiyon, evet, erken durmak, ne yaptığınıza bağlı olarak, tamamen saygın bir şey olabilir.

  • abstolyani, fonksiyon sıfıra "yeterince yaklaştığında" durur. Bu sizin için alakalı olmayabilir (sıfır bekliyormuşsunuz gibi gelmiyor), bu yüzden atlayacağım.

  • reltolikinci öneriniz gibi - iyileştirme eşiğin altına düştüğünde durun. Aslında bu konuda ne kadar teori olduğunu bilmiyorum, ama küçük bir azami yinelemeden çok daha düşük bir minima elde edersiniz. Bu sizin için önemliyse, daha fazla yineleme için kodu çalıştırmaya değer olabilir.

Durma kurallarının bir diğer ailesi, eğitim verilerinden ziyade bir doğrulama veri setinde (veya çapraz doğrulama ile) bir maliyet fonksiyonunu optimize etmekle ilgilidir. Modelinizi ne için kullanmak istediğinize bağlı olarak, egzersiz verileriniz üzerinde yerel asgari seviyeye ulaşmadan önce durmak isteyebilirsiniz, çünkü bu fazladan takma gerektirebilir. Trevor Hastie'nin bunu yapmanın iyi yolları hakkında yazdığından eminim ama alıntıyı hatırlayamıyorum.

Daha düşük minimayı makul bir sürede bulmak için diğer olası seçenekler şunları içerebilir:

  • Stokastik gradyan inişi, sadece bir seferde verilerinizin küçük bir kısmı için degradelerin tahmin edilmesini gerektirir (örneğin, "saf" SGD veya küçük mini gruplar için bir veri noktası).

  • Daha iyi yönlere işaret etmek ve yokuş aşağı ilerlerken daha iyi adım boyutları almak için objektif fonksiyonunuzun eğriliği hakkında bilgi kullanan daha gelişmiş optimizasyon fonksiyonları (örn. Newton tipi metotlar veya Konjugat Gradient).

  • Güncelleme kuralınızdaki "momentum" terimi, optimize edicinizin, hedef fonksiyonunuzdaki kanyon duvarlarını kapatmak yerine, yokuş aşağı yuvarlanma işini daha iyi yapmasını sağlar.

Bu yaklaşımların tümü çevrimiçi bulduğum ders notlarında tartışılmaktadır .

Bu yardımcı olur umarım!

Düzenleme oh, ayrıca daha iyi başlangıç ​​değerleri almaya çalışabilirsiniz (örneğin, sorunun daha basit bir versiyonunu çözerek), böylece "sıcak başlangıç" durumunuzdan optimum seviyeye yaklaşmanız daha az yineleme gerektirir.


Sabit sayıda yinelemenin seçilmesiyle ilgili sorun, eğer maliyet eğrinizi açıkça belirleyemiyorsanız (ve küçük bir gürültüsü varsa), özellikle optimizasyon işlevi karmaşıksa ve kim bilirse, kaç yinelemenin çok fazla olduğunu bilmek zordur. Ne kadar yerel minimum değere sahipseniz ve eğer başlatmayı randomize ettiyseniz, bu, konuyu daha da kötüleştirmiştir, çünkü iyi bir "küçük" sayıdaki yinelemenin ne olduğunu tahmin etmeyi zorlaştırmaktadır. Erken durmayı gerçekten kullanmak istiyorsanız, gerçekte bu sorunları nasıl ele alıyorsunuz? Aşırı ateş etmediğinizden veya çok fazla alttan çıkarmadığınızdan nasıl emin olabilirsiniz?
Charlie Parker

Ne demek istediğini reltol(yani "iyileştirme" olmayı bıraktığında) ne anlama geldiğini açıklamak istiyorum . İlk gelişme, maliyet fonksiyonunun azalması demektir. Yani, demek istediğin, maliyet fonksiyonu yeterince azalmayı bıraktığında (veya artmaya başladığında) birinin durduğunu kabul edeceğim, değil mi? Biri aslında "| old - new |" yapmaz güncelleme kuralı türü değil mi?
Charlie Parker

1
abstolEğer maliyet fonksiyonu, değil maliyet fonksiyonu kendisinin eğim toleransı alıyorsun eğer parametre sadece mantıklı. Yerel bir optimize edicide, degradenin değeri sıfırdır; ancak fonksiyonun değeri değil.
Mario Becerra

"sıcak başlangıç" çok zekice bir numara! teşekkürler
Mehdi LAMRANI
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.