Paul'un belirttiği gibi, daha fazla bilgi olmadan, varsayımlar olmadan tavsiye vermek zordur.
10-20 değişken ve pahalı fonksiyon değerlendirmeleri ile eğilim, türevsiz optimizasyon algoritmalarını önerme eğilimindedir. Paul'ün tavsiyelerine kesinlikle katılmayacağım: bir tür özel yöntem kullanmıyorsanız genellikle bir makine hassasiyeti gradyanına ihtiyacınız var (örneğin, makine öğreniminde stokastik degrade iniş, makul bulmak için hedefin şeklini kullanacaktır. gradyan tahminleri).
Her bir yarı Newton adımı şu şekildedir:
H~(xk)dk=−∇f(xk),
burada , Hessian matrisine biraz yakındır, d k arama yönüdür, x k geçerli yinelemedeki karar değişkenlerinin değeridir, f hedef işlevinizdir ve ∇ f hedefinizin gradyanıdır ve karar değişkenleri x k + 1 = x k + α k d k gibi güncellenir , burada α kH~dkxkf∇fxk+1=xk+αkdkαkbazı şekillerde (çizgi araması gibi) belirlenen bir adım boyutudur. Hessian'a belirli şekillerde yaklaşmaktan kurtulabilirsiniz ve yinelemeler bir araya gelecektir, ancak Hessian'ın kesin degradelerle sonlu fark yaklaşımları gibi bir şey kullanırsanız, kötü koşullandırma nedeniyle sorunlardan muzdarip olabilirsiniz. Tipik olarak, Hessian, gradyan kullanılarak yaklaşıklaştırılır (örneğin, Hessian'da rütbe-1 güncellemelerine sahip BFGS tipi yöntemler).
Hessian ve degradenin hem sonlu farklarla yaklaşılması, birkaç nedenden dolayı kötü bir fikirdir:
- degradede hata yapacaksınız, bu yüzden uyguladığınız yarı Newton yöntemi gürültülü bir fonksiyonun kökünü bulmaya benzer
- NN
- Gradyanda hata varsa, Hessian'ınızda daha fazla hataya sahip olursunuz, bu da doğrusal sistemin koşullandırılması açısından büyük bir sorundur
- ... ve mal olacakN2
Yani, yarı Newton'un kötü bir tekrarı elde etmek için, değerlendirme başına 30 dakikada 420 işlev değerlendirmesi gibi bir şey yapıyorsunuz, yani her bir yineleme için bir süre bekleyeceksiniz veya sadece fonksiyon değerlendirmeleri için büyük bir kümeye ihtiyaç vardır. Gerçek doğrusal çözücüler 20 x 20 matris olacaktır (en fazla!), Bu yüzden bunları paralelleştirmek için bir neden yoktur. Örneğin, bitişik bir sorunu çözerek degrade bilgileri alabiliyorsanız, daha değerli olabilir, bu durumda Nocedal & Wright gibi bir kitaba bakmaya değer olabilir.
Paralel olarak çok sayıda işlev değerlendirmesi yapacaksanız, bunun yerine vekil modelleme yaklaşımlarına veya yarı Newton yaklaşımlarını düşünmeden önce set arama yöntemleri üretmeye bakmalısınız. Klasik derleme makaleleri, Rios ve Sahinidis tarafından 2012 yılında yayınlanan ve gerçekten iyi ve geniş bir karşılaştırma sağlayan türevsiz yöntemlerle ilgili makaledir ; 2009'dan More ve Wild'ın kıyaslama makalesi ; Conn, Scheinberg ve Vicente'nin 2009 "Türevsiz Optimizasyona Giriş" ders kitabı; ve 2003'ten Kolda, Lewis ve Torczon tarafından küme arama yöntemlerinin oluşturulmasına ilişkin inceleme makalesi .
Yukarıda bağlandığı gibi, DAKOTA yazılım paketi bu yöntemlerden bazılarını uygulayacak ve DIRECT'i uygulayan NLOPT ve birkaç Powell'ın vekil modelleme yöntemlerini uygulayacaktır. Ayrıca bir göz sürebilir MCS ; MATLAB'de yazılmıştır, ancak MATLAB uygulamasını istediğiniz dile taşıyabilirsiniz. DAKOTA'nın temelde pahalı simülasyonunuzu çalıştırmak ve optimizasyon algoritmaları için veri toplamak için kullanabileceğiniz bir komut dosyası koleksiyonu ve NLOPT'nin çok sayıda dilde arayüzleri vardır, bu nedenle programlama dilinin seçimi her iki yazılım paketini kullanırken büyük bir sorun olmamalıdır; DAKOTA'nın öğrenmesi biraz zaman alır ve gözden geçirmek için çok miktarda belge vardır.