Değerlendirilmesi maliyetli olan pürüzsüz, sınırlı, dışbükey olmayan bir 2B işlevinin küresel bir minimumunu bulmak


17

Minimum bulmak istiyorum sınırlı dışbükey olmayan bir 2-D işlevi var. Fonksiyon oldukça pürüzsüz. Bunu değerlendirmek maliyetlidir. Kabul edilebilir bir hata, her eksendeki işlevin etki alanının yaklaşık% 3'üdür.

DIRECT algoritmasının uygulanmasını NLOPT kütüphanesinde çalıştırmayı denedim, ancak gerekli doğruluk için gerekli fonksiyon değerlendirme miktarı açısından kaba kuvvet arama üzerinde önemli bir gelişme sağlamadı ve bazı aykırı değerler vardı.

Başka hangi global optimizasyon çözümleyicilerini dikkate almalıyım?


Degradeleri hesaplayabilir misiniz, yoksa fark bölümlerine göre yaklaşık olarak tahmin etmeniz mi gerekir?
Arnold Neumaier

Onları fark bölümlerine göre tahmin etmem gerekiyor.
Victor Mayıs

Bu durumda, sayısal ikinci türevler sayısal olarak çok dengesiz olduğundan ve güvenli bir şekilde çalışmak için ayarlanması zor olduğundan Newton'un yöntemi önerilemez.
Arnold Neumaier

@Victor Mayıs, neyle sonuçlandın? (Sizinkine benzer bir işlev gönderebilirseniz, bu gerçekten insanların farklı algoritmaları karşılaştırmasına ve ayarlamasına yardımcı olur.)
denis

@Denis, videodaki bir nesneyi izlemek için bir algoritmadan daha fazla hız almaya çalışıyordum. Algoritmanın çıktısı, her görüntü konumu için izlenen nesneyi içerme olasılığı tahminidir. Bu olabilirlik tahminlerini içeren görüntü, optimize etmeye çalıştığım işlevdir. Sonunda birkaç çözünürlük adımında kaba zorlama ile sonuçlandım. Söz konusu izleme algoritması hakkında daha fazla bilgi için "İntegral Histogramı Kullanarak Sağlam Parça Bazlı İzleme" başlıklı makaleyi okuyun.
Victor,

Yanıtlar:


12

@Barron dolaylı olarak aynı şeyi tartışmış olsa da, diğer cevaplara kıyasla biraz farklı bir yaklaşım önermek istiyorum.

Bunun yerine bir dizi nokta adresinden değerlendirerek yani doğrudan fonksiyonunu optimize bir (yerel) optimuma (umarım) yakınsama, sen kavramını kullanabileceği puan vekil modelleme olan tarif ettiğiniz tipteki problemler için çok uygundur (yüksek maliyet, pürüzsüz, sınırlı, düşük boyutlu yani 20'den az bilinmeyen).x1,x2,,xksurrogate modelling

Özellikle, vekil modelleme bir model işlevi kurarak çalışır gerçek fonksiyonunun f R dR . Anahtar, c'nin f'yi mükemmel bir şekilde temsil etmemesine rağmen, değerlendirmenin çok daha ucuz olmasıdır.cRdRfRdRcf

Dolayısıyla, tipik bir optimizasyon süreci aşağıdaki gibi olacaktır:

  1. Değerlendirmede bir set j başlangıç noktaları x 1 , x 2 , ... , x j . Türevlere gerek olmadığını unutmayın. Ayrıca, bu noktaların Latin Latin Hiperküp Örneklemesi veya benzer bir boşluk doldurma tasarımı gibi arama alanı boyunca eşit olarak dağıtılması gerektiğini unutmayın.fjx1,x2,,xj
  2. Bu orijinal veri kümesini temel alarak bir model işlevi oluşturun . Modelinizi doğrulamak için çapraz doğrulamayı kullanabilirsiniz (yani c oluşturmak için orijinal j noktalarının yalnızca bir alt kümesini kullanın ve sonra c'nin bu değerleri ne kadar iyi tahmin ettiğini kontrol etmek için veri kümesinin geri kalanını kullanın )cjcc
  3. Öğrenmek için bu Beklenen İyileşme (El) kriter olarak bir kriter kullanım olup, daha fazla örnekleri 'dolum' yapmak için 'için örnekleyerek daha doğru f . Bu aslında teorik olarak göründüğünden çok daha iyi incelenmiştir ve EI kriteri çok iyi araştırılmıştır. EI kriteri de açgözlü bir kriter değildir, bu nedenle her ikisi de modelin doğruluğunu genel olarak iyi bir şekilde iyileştirirken, potansiyel optima'nın yakınında doğruluğa öncelik verirsiniz.cf
  4. Modeliniz yeterince doğru değilse, 3. adımı tekrarlayın, aksi takdirde değerlendirmek için çok ucuz olacak optimumunu bulmak için favori optimizasyon rutininizi kullanın (böylece istediğiniz herhangi bir rutini, hatta türev gerektirenleri bile kullanabilirsiniz işlevi ince bir ağda değerlendirir).c

Genel olarak, @barron'un önerdiği gibi, EGO, Efficient Global Optimization (EGO) tarafından kastedilen budur. Uygulamanız için bunun mükemmel bir şekilde uygun olduğunu vurgulamak isterim - nispeten az değerlendirmesine dayanan şaşırtıcı derecede doğru bir model elde edersiniz ve daha sonra istediğiniz herhangi bir optimizasyon algoritmasını kullanabilirsiniz. Sıklıkla ilginç olan şey, şimdi c'yi bir kafes üzerinde değerlendirip çizebileceğiniz ve böylece f'nin genel görünümü hakkında fikir edinebilmenizdir . Bir başka ilginç nokta, çoğu vekil modelleme tekniğinin istatistiksel hata tahminleri sağlaması ve böylece belirsizlik tahminine izin vermesidir.fcf

Nasıl inşa etmek kursu açık bir soru, ama çoğu zaman Kriging veya sözde uzay-haritalama modelleri kullanılmaktadır.c

Tabii ki, bunların hepsi biraz kodlama işi, ancak birçok insan çok iyi uygulamalar yaptı. Matlab'da sadece DACE yazılım araç kutusunun ücretsiz olduğunu biliyorum . TOMLAB ayrıca bir Matlab paketi de sunabilir, ancak maliyetlidir - ancak, C ++ ile de çalıştığına ve DACE'nin sahip olacağından çok daha fazla yeteneğe sahip olduğuna inanıyorum. (Not: Yakında piyasaya sürülecek olan ve EGO için ek destek sunacak olan yeni DACE sürümünün geliştiricilerinden biriyim.)

Bu kaba genel bakışın size yardımcı olduğunu umuyoruz, daha net hale getirilebilecek noktalar veya kaçırdığım şeyler varsa veya konuyla ilgili daha fazla materyal istiyorsanız lütfen soru sorun.


Google surrogate-modeli olan Fwiw, Ghent Üniversitesi'nde bir Surrogate Modelleme Laboratuvarı ve Surrogate Modeling , 2008 228p 0470770791 ile Mühendislik Tasarımı adlı bir kitap getiriyor. daha gerçek test fonksiyonları.
denis


3

Düzgün bir işlev için, Verimli Global Optimizasyon yöntemi DIRECT'ten oldukça iyi performans göstermeli ve çok daha verimli olmalıdır. Uygulamalar mevcuttur TOMLAB ve (kendim kullanmadıysanız) DAKOTA (Ben bazı başarı elde ettik ki).


1

İşlev düzgün olduğundan, Newton'un yöntemi minimum bulmak için çok etkili bir yöntem olacaktır. İşlev dışbükey olmadığından Newton'un yöntemini yakınlaştırmak için genel hileler uygulamanız gerekir (küreselleşmek için Levenberg-Marquardt modifikasyonu, satır arama veya güven bölgesi). İşlevinizin türevlerini alamıyorsanız ya sonlu farklarla hesaplamayı ya da bir BFGS güncellemesi kullanmayı deneyin. Sorunun birden fazla yerel minimum değerinden şüphelendiğinizde, Newton'un yöntemini rastgele veya çok rastgele seçilmiş olmayan bir noktadan başlatacak ve nerede birleştiklerini göreceksiniz.


Benim sorunum gerçekten yerel minima var. Başlangıç ​​noktalarını seçmek için hangi yöntemler var?
Victor Mayıs

1
Sorun hakkında bir şey bilmediğiniz sürece, istatistiksel örnekleme aslında tek seçeneğinizdir.
Wolfgang Bangerth

@Wolfgang: "İstatistiksel örnekleme" ye nasıl yaklaşılacağı hakkında bir fikriniz var mı? Sadece 10, 100, ... rastgele ilk tahminleri dene? "Daha titiz" yaklaşımlar var mı? Soruyorum, çünkü aşağı yukarı benzer bir sorunum var (bkz. Scicomp.stackexchange.com/q/4708/1789 )
André

Her şey işlev hakkında bildiklerinize bağlıdır. İşleviniz için yerel ekstremin ne kadar ayrılacağına dair bir gösterge verecek "tipik uzunluk ölçeği" gibi bir şey biliyorsanız. Bu aynı zamanda kaç puanla başlamanız gerekebileceğini ve birbirlerinden ne kadar ayrı seçilmeleri gerektiğini gösterecektir.
Wolfgang Bangerth

0

Değerlendirmeleriniz pahalı olduğu için, sevaral işlev değerlendirmelerini paralel olarak çalıştırmanızdan yararlanmanız gerekir.

Bu koda bir göz atmanızı tavsiye ederim . Arkasındaki matematik burada açıklanmaktadır .


1
bu kod ve makale sizin tarafınızdan yazılıyor mu? Öyleyse, cevabınızda açıkça söyleyebilir misiniz? Ayrıca, şu anda, önerinizi açıklayarak cevabı geliştirebilirsiniz.
nicoguaro
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.