Çok pahalı objektif işlevli bir problem için paralel optimizasyon algoritmaları


15

10-20 değişkenlik bir fonksiyonu optimize ediyorum. Kötü haber, her bir fonksiyon değerlendirmesinin pahalı, yaklaşık 30 dakikalık seri hesaplama olmasıdır. İyi haber şu ki, elimde birkaç düzine hesaplama düğümü olan bir kümem var.

Böylece soru: tüm bu hesaplama gücünü verimli kullanmama izin verecek optimizasyon algoritmaları var mı?

Spektrumun bir tarafında kapsamlı bir arama olacaktır: tüm arama alanını ince bir ızgaraya bölün ve işlevi her ızgara noktasında bağımsız olarak hesaplayın. Bu kesinlikle çok paralel bir hesaplamadır, ancak algoritma korkunç derecede verimsizdir.

Spektrumun diğer tarafında yarı Newton algoritmaları olurdu: önceki geçmişe dayanarak parametrelerin bir sonraki tahminini akıllıca güncelleyin. Bu etkili bir algoritma, ama ben paralel hale nasıl bilmiyorum: "Önceki geçmişe dayalı parametrelerin tahmini" kavramı bir seri hesaplama gibi geliyor.

İkinci dereceden algoritmalar ortada bir yerde gibi görünmektedir: biri paralel bir dizi değeri hesaplayarak ilk "vekil modeli" oluşturabilir, ancak kalan iterasyonların paralelleştirilip birleştirilemeyeceğini bilmiyorum.

Herhangi bir gradyan içermeyen optimizasyon yönteminin bir kümede iyi performans göstereceğine dair herhangi bir öneriniz var mı? Ayrıca, şu anda mevcut olan optimizasyon algoritmalarının paralel uygulamaları var mı?


1
Degradeyi her zaman paralel olarak hesaplayabilir (sonlu farklar kullanan yarı Newton yöntemleri için) ve parametre sayısıyla orantılı bir hızlanma elde edebilirsiniz, yani 10x-20x.
stali

@stali: Optimizasyonda yarı Newton yöntemleri için Hessian'a ihtiyacınız var. Hessian'ı fonksiyon değerlendirmelerinin sonlu farklılıklarıyla hesaplamak gerçekten iyi bir fikir değildir. Optimizasyon için degradenin sonlu fark yaklaşımlarının hesaplanması da genellikle iyi bir fikir değildir.
Geoff Oxberry

BFGS gibi birçok yarı Newton yöntemi Hessian'ı açıkça gerektirmez. Degradeleri kullanarak, L-BFGS ile birlikte OP istediğini çabucak başarabilir.
stali

@stali: Degradeye sonlu fark yaklaşımı kullanmanın cevabımda neden kötü bir fikir olacağını belirttim. Yarı Newton yinelemesinin sağ tarafına hata vererek yakınsamayı bozar. Ayrıca, eski değerlendirmeleri tekrar kullanma fırsatı olmadığından (vekil yöntemlerin aksine), işlev değerlendirmelerini boşa harcar. BFGS kullanmak, önerilen yaklaşımınızla ilgili sorunların yalnızca yarısını giderir.
Geoff Oxberry

Bu daha uygun bir yorum, cevap değil. Ama başka seçeneğim yok, çünkü yorum gönderecek kadar temsilcim yok. Michael, çok benzer bir sorunum var: bir kümede çalışan karmaşık simülasyonları içeren pahalı işlev değerlendirmeleri. İşlev değerlendirmesi bir kümede simülasyon içerdiğinde, optimizasyonu çalıştırmak için uygun bir kod buldunuz mu?
MoonMan

Yanıtlar:


16

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~dkxkffxk+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.


2
Tamamen yanlış olmak ve süreçte yeni ve kullanışlı bir şey öğrenmek benim için bir zevk :).
Paul

Teşekkürler! Sadece bir açıklama daha: bu algoritmalardan hangileri işlev değerlendirmelerini paralel olarak yapabilir? Örneğin, yalnızca yineleme 1, ..., n? Den elde edilen bilgilere dayanarak n + 1, ..., n + k yineleme gerçekleştiren k yönlü ızgarada
Michael

k

3

Belki de vekil tabanlı optimizasyon algoritmaları aradığınız şeydir. Bu algoritmalar, optimizasyon işlemi sırasında gerçek hesaplamalı olarak pahalı modellerin yerini almak için vekil modeller kullanır ve hesaplanabilir pahalı modellerin mümkün olduğunca az değerlendirmesini kullanarak uygun bir çözüm elde etmeye çalışır.

Sorunu çözmek için Mode Pursuing Sampling yönteminin kullanılabileceğini düşünüyorum . Bu algoritma, pahalı objektif fonksiyona yaklaşmak için RBF vekil modelini kullanır ve doğrusal olmayan kısıtlamaları kaldırabilir. Daha da önemlisi, pahalı fonksiyon değerlendirmelerini yapmak için birden fazla aday seçerek arama sürecini daha da hızlandırmak için bu adayları paralel hesaplama için dağıtabilirsiniz. Kod açık kaynak kodlu ve MATLAB dilinde yazılmıştır.

Referans

Wang, L., Shan, S. ve Wang, GG (2004). Pahalı kara kutu işlevlerinde küresel optimizasyon için mod takibi örnekleme yöntemi. Mühendislik Optimizasyonu, 36 (4), 419-438.


2

Paralel bir algoritmanın gerçekten aradığınız şey olduğundan emin değilim. Çok pahalı olan fonksiyon değerlendirmeleriniz. Yapmak istediğiniz şey, optimizasyon algoritması değil, işlevin kendisini paralelleştirmektir.

Bunu yapamazsanız, kapsamlı arama ve Newton algoritması arasında bir orta yol var, bu Monte Carlo yöntemleri. Bir grup farklı çekirdek / düğüm üzerinde, yerel optima'ya (yarı-Newton algoritmaları diyelim) düşmeye eğilimli olan aynı algoritmayı başlatabilirsiniz, ancak hepsi rastgele başlangıç ​​koşullarındadır. O zaman gerçek optima için en iyi tahmininiz minimumların minimumudur. Paralel hale getirmek önemsizdir ve herhangi bir yöntemi genişletmek için kullanılabilir. Mükemmel derecede verimli olmasa da, elinizde yeterli bilgi işlem gücüne sahipseniz, programlama verimliliğine karşı algoritma performans savaşını kazanabilirsiniz (çok fazla bilgi işlem gücüne sahipseniz, daha ince bir algoritma yapmayı bitirmeden önce bu bitebilir).


0

Optimizasyon algoritmasının seçimi (ve dolayısıyla paralelleştirilmesi) büyük ölçüde objektif fonksiyonun ve kısıtlamaların özelliklerine bağlıdır. Sorun hakkında daha fazla bilgi sahibi olmadan, her türlü anlamlı tavsiye vermek zordur.

Ancak newton yöntemleri konusundaki düşüncelerinizden, objektif işlevinizin farklılaşabileceğini düşünüyorum. Mümkünse, probleminiz fonksiyon değerlendirmesini paralelleştirmekten büyük fayda sağlayacaktır. Mümkün değilse, kesin degradeleri / kendirleri sonlu fark yaklaşımlarıyla değiştiren kesin olmayan bir newton yöntemini de düşünebilirsiniz. Daha sonra, @stali'nin önerdiği gibi, jacobian'ın sıfır olmayan her öğesini hesaplamak için tüm bu işlemcileri kullanabilirsiniz.

Daha fazla bilgi için Nocedal & Wright'ın Sayısal Optimizasyonu, Bölüm 7 . Bunu paralel olarak uygulayan birçok optimizasyon yazılım paketi vardır. En yaygın kullanılan ücretsiz yazılımlar arasında DAKOTA yazılım paketi (Sandia National Labs) bulunmaktadır .


5
N

-2

İşte sorununuza bir çözüm .

Bu makalede matematiksel bir yöntemin açıklaması verilmektedir .


3
SciComp.SE'ye hoş geldiniz. Makalede açıklanan ve yazılımda uygulanan yaklaşım hakkında ayrıntılı bilgi verebilir misiniz? Kullanılan yöntem nedir? Bu neden iyi? Bu yaklaşımda diğer cevapların kapsamadığı şeyler nelerdir?
nicoguaro

2
Ayrıca, bu sizin kendi işiniz gibi görünüyor. Bu doğruysa, lütfen cevabınızı açıkça belirtin.
nicoguaro

@nicoguaro: teşekkür ederim, ancak bağlantıları nasıl tıklayacağımı biliyorum.
Michael

3
@Michael, bu senin için değil. Bu sitenin felsefesi bir cevap koleksiyonu olmaktır. Bugün cevabınızı alıyorsunuz, ancak gelecekte başka birinin de aynı yardıma ihtiyacı olabilir. Bu nedenle, iyi bir cevabın ne olduğuna ilişkin standartlar vardır .
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.