Degrade tabanlı bir optimize ediciye yaklaşık degradeler sağlamak işe yaramaz mı?


9

Yalnızca sayısal bir degrade sağlayabiliyorsanız, degrade tabanlı eniyileme algoritmaları kullanmak anlamsız mıdır? Değilse, optimizasyon kitaplığının kendisi için sonlu farklılaştırma yapmak önemsizse neden ilk etapta sayısal bir gradyan sağlasın?

[DÜZENLE]

  • Açıklığa kavuşturmak gerekirse, sorum gerçekten belirli bir uygulamadan daha genel anlamda. Her ne kadar benim uygulama alanım çeşitli istatistiksel çerçeveler altında olasılık optimizasyonu olarak gerçekleşse de

  • Otomatik farklılaşma ile ilgili sorunum, her zaman bir yakalama gibi görünüyor. AD kitaplığı harici kitaplık çağrılarına (BLAS gibi) yayılamaz veya iş akışınızı o kadar şiddetli bir şekilde yeniden işlemeniz gerekir ki, özellikle de hassas dillerle çalışıyorsanız ... AD ile olan ilişkilerim tamamen ayrı bir konudur. Ama inanmak istiyorum!

  • Sanırım sorumu daha iyi formüle etmeliyim ama kötü bir iş yapıyorum. Bir türevsiz optimizasyon algoritması ya da sadece sayısal bir gradyan verebileceğim uyarı ile türev tabanlı bir optimizasyon algoritması kullanma seçeneğiniz varsa, hangisinin daha üstün olacağı?


2
Sonlu farklar kullanarak sadece yaklaşık bir tane hesaplamak yerine neden analitik bir degrade sağlayacağınızı sormaya mı çalışıyorsunuz?
spektr

1
Benim sorum, başka bir şekilde ifade edersek, denklemlerinizin analitik degradeleri hesaplamak için çok fazla dahil olduğunu varsayalım, gradyan bağımlı optimizasyon algoritmaları hala degradeleri gerektirmeyenlerden daha üstün olabilir mi?
profesör bigglesworth

Bu, yukarıda sorduğunuzdan farklı bir soru. Sayısal türevleri, örneğin sonlu elemanlar gibi başka yollarla hesaplayabilirsiniz.
nicoguaro

1
@nicoguaro Evet, kısmi diferansiyel denklemlerle optimizasyon bağlamında, bu kesinlikle böyledir (ve bu benim araştırma alanlarımızdan biri, bu benim de ilk düşüncemdi). Ama soru bu yönde hiçbir şeyden bahsetmiyor (ve bu genellikte daha kullanışlı. Bence).
Christian Clason

1
Ayrıca, bu durumda bile, makul bir soru: PDE'leriniz (sisteminiz) o kadar karmaşıksa, gradyanı elde etmek için sayısal olarak çözülecek bir bitişik denklem elde edemezseniz ne olur? (Özellikle standart dışı sınır koşulları söz konusuysa, bu şeyler oldukça kötü olabilir.)
Christian Clason

Yanıtlar:


11

Brian'ın mükemmel cevabını tamamlamak için biraz (editöryal) geçmiş vereyim. Türevsiz optimizasyon yöntemleri sadece fonksiyon değerlendirmelerini kullanan ve temel olarak "kabul edilebilir seti az çok sistematik olarak örnekleme ve en iyi fonksiyon değerini kaydetme" nin tüm varyasyonlarıdır - bilgi verildiğinde yapabileceğiniz tek şey budur. Bu yöntemler kabaca alt bölümlere ayrılabilir

  1. Numune seçiminin temelde rastgele olduğu stokastik yöntemler (rastgelelığın çok önemli bir bileşen olduğu anlamına gelir; başka, deterministik bileşenler olabilir). Bu yöntemler genellikle fiziksel veya biyolojik süreçler tarafından motive edilir ve "simüle tavlama", "genetik algoritmalar" veya "parçacık sürüsü / ateş böceği / karınca yuvası yöntemi" gibi karşılık gelen isimlere sahiptir. Bunun ötesinde nadiren herhangi bir yakınsama teorisi vardır "1"(Yani gerçekleşip gerçekleşmeyeceğini - Herhangi bir olasılık ile - evrenin ısı ölümü ... başka bir konudur öncesi) Bir matematikçi olarak, son çare olarak bu yöntemleri ele alacak: Eğer bilmiyorsanız bir şey hakkında sizin fonksiyon, tüm yapabileceğiniz bu ve şanslı olabilirsiniz.

  2. Örneklerin seçiminin rastgele olmadığı deterministik yöntemler , yani sadece önceki fonksiyon değerlendirmelerine dayanarak. En ünlü örnek muhtemelen Nelder - Mead simpleks yöntemidir; diğerleri ise küme arama yöntemleri üretiyor . Bunun, ancak fonksiyonun farklı noktalardaki değeri (yani, fonksiyonun bir miktar düzgünlüğü) arasında herhangi bir (sömürülebilir) ilişki varsa işe yarayabileceğini bilmek önemlidir. Aslında, örneğin Nelder - Mead yöntemi için yakınsama teorisi, muntazam olmayan bir yapı oluşturmaya dayanır.simpleksin köşelerindeki fonksiyon değerlerine dayanarak ve simpleks bir noktaya büzüştükçe hem tam degradeye hem de sıfıra yakınlaştığını gösteren gradyanın sonlu farklar yaklaşımı. (Standart sonlu farklar yaklaşımına dayanan değişkene pusula arama denir .)

  3. Fonksiyon değerlerinin, işlevin yerel bir modelini oluşturmak için kullanıldığı (örn. Enterpolasyon yoluyla) model tabanlı yöntemler , daha sonra standart (gradyan- / Hessian tabanlı) yöntemler kullanılarak en aza indirilir. Sonlu fark yaklaşımı bir polinom aradeğerlemesinin tam türevine eşdeğer olduğundan, klasik "sayısal gradyan" yaklaşımı da bu sınıfa girer.

Gördüğünüz gibi, bu sınıflar arasındaki sınırlar akışkandır ve genellikle sadece bir yorum meselesidir. Ancak ahlaki açık olmalıdır: Küçültmekte olduğunuz işlev hakkında mevcut tüm bilgileri kullandığınızdan emin olun. Cornelius Lanczos'u alıntılamak için:

Bilgi eksikliği, herhangi bir matematik hilesi ile giderilemez.

Sonuçta, işleviniz hakkında hiçbir şey bilmiyorsanız , tamamen rastgele olabilir ve rastgele bir değeri en aza indirmek aptalın işidir ...


17

Hedefiniz pürüzsüzse, türevin sonlu fark yaklaşımlarını kullanmak, genellikle bir türev serbest optimizasyon algoritması kullanmaktan daha etkilidir. Türevleri tam olarak hesaplayan bir kodunuz varsa, sonlu fark yaklaşımları kullanmak yerine normalde bu kodu kullanmak en iyisidir.

Bazı optimizasyon kütüphaneleri, adım boyutu parametrelerini belirlemek için sezgisel tarama yöntemini kullanarak sizin için otomatik olarak sonlu fark yaklaşımlarını hesaplasa da, uygun adım boyutları hakkında daha iyi bilgiye sahip olduğunuz için veya Kodunuzdan yararlanabileceğiniz özel yapı.

Genellikle değerli olan bir diğer seçenek, objektif fonksiyonun kendisini hesaplamak için kaynak koddan analitik türevleri hesaplayan bir alt rutin üretmek için otomatik farklılaştırma tekniklerini kullanmaktır.


3
Otomatik farklılaştırma için +1 . Bu genellikle gradyan için a priori sembolik bir ifadeden veya sonlu farklar yaklaşımından çok daha iyidir.
leftaroundabout

Ayrıca otomatik farklılaştırmayı kullanmanızı da öneririm. Fortran için, kaynak dönüşümüne dayanan INRIA Sophia-Antipolis'ten tapenade'i deneyin. C / C ++ için adol-c, adept, sacado (Trilinos'un bir parçası) gibi daha fazla seçenek var. Bunların tümü, çok büyük sorunlar için çok verimli olmasa da, operatörün aşırı yüklenmesi ve kullanımı daha kolaydır.
cfdlab

Otomatik farklılaşmanın (AD) uygulanmasının zor olabileceği bazı durumlar da vardır, ancak bazen AD ile hemen hemen aynı şeyle sonuçlanabilecek karmaşık adım farklılaşması (ters mod ile bir kerede tüm bir degradeyi hesaplayabilmenin dışında) AD) uygulanabilir ve nispeten kolay uygulanabilir.
Mark L. Stone

Gözden geçirilmiş soruya yanıt olarak: Hedefiniz düzgünse (eğer değilse türev tabanlı bir optimizasyon algoritması kullanmanın anlamı yoktur) ve değişken sayısı makul olarak azsa (sonlu fark türevleri yapmak PDE kısıtlı optimizasyonda işe yaramazsa) ), büyük olasılıkla bir DFO tekniği kullanmak yerine sonlu fark yaklaşımları ile türev tabanlı bir optimizasyon yöntemi kullanmak daha iyi olacaktır.
Brian Borchers

4

Sorunuz gradyan tabanlı optimize ediciler hakkında soruyor, bu yüzden Brian'ın doğru olduğunu düşünüyorum. Şu anda kendimle, bazı sorunlarla mücadele ettiğim için sadece paylaşırdım.

Sonlu farkla ilgili problemler 1) performanstır, çünkü her boyut için işlevi tekrar değerlendirmeniz gerekir ve 2) iyi bir adım boyutu seçmek zor olabilir. Adım çok büyükse, işlevin doğrusallığı varsayımı geçerli olmayabilir. Adım çok küçükse, türevler gürültüyü arttırdığı için fonksiyonun kendisindeki gürültüye karışabilir. Eğer fonksiyon diferansiyel denklemleri çözmeyi içeriyorsa ikincisi gerçek bir problem olabilir. Degradeleri analitik olarak veya duyarlılık denklemleri kullanarak hesaplamak mümkünse, kesinlikle daha doğru ve belki daha hızlı olacaktır.

Zaten yazılıma çok fazla yatırım yapmadıysanız deneyebileceğiniz başka bir yaklaşım var ve bu karmaşık aritmetik ile çalıştırmaktır. Buna karmaşık adım farklılaşması denir . Temel fikir, fonksiyonu değerlendirdiğinizde, X parametresine göre degradesini istiyorsanız, X'in hayali kısmını çok küçük bir sayı eps'ye ayarlarsınız . Hesaplamayı yaptıktan sonra, işlevin değerinin eps'ye bölünen hayali kısmı, X'e göre gradyantır. Y'ye göre gradyanı istediğinizde, elbette hepsini tekrar yapmanız gerekir. Bu konuda ilginç olan epsçok küçük yapılabilir. Çalışmasının nedeni, diferansiyel hesabın normal kurallarının karmaşık aritmetik kurallarına tam olarak yansıtılmasıdır.

Bununla birlikte, bunu her derde deva olarak görmüyorum , çünkü karmaşık aritmetikte karmaşık bir işlev yapmak her zaman kolay değildir, degradenin analitik olarak hesaplanabilmesi ve fark denklemleri durumunda hassasiyet denklemlerine tam olarak eşdeğer olması buna değmez. ki bunu gerektiği gibi yapıyorum.


Bence en önemli faydalarından biri, bu karmaşık sonlu fark formülünde herhangi bir çıkarma yapmamanızdır. Bir süre önce bu yöntem için türevlerden bahsederken bir makale okuduğumda, bu, diğer sonlu fark formüllerine kıyasla deneysel olarak doğruladıkları noktalardan biriydi. Bu fark, yuvarlama hataları bir sorun haline gelmeden önce daha küçük adım boyutlarının seçilmesine izin verdi.
spektr

@choward: Doğru. Bu konuda güzel olan şey bu. Yine de şüpheliydim. Bazı meslektaşlarım bunun sihirli bir kurşun olduğunu düşünüyor gibiydi. Duyarlılık denklemlerine eşdeğer olduğundan şüphelendim ve uygulamalı bir matematikçi olan iş arkadaşlarımdan biri bunu kanıtladı.
Mike Dunlavey

Duyarlılık denklemi için harika. Bu ilginç bir yaklaşımdır ama kesinlikle uygulama ödünleri verebilir. Kullanmak istediğinizi varsayarsak, işlevlerinizin karmaşık sürümlerini tanımlamanız ve ardından her bir işlev değerlendirmesini daha uzun hale getiren ek karmaşık değişken cebir / hesaplamalar yapmanız gerekir. Daha yavaş fonksiyon değerlendirmesinin eklenen türev doğruluğuna değip değmeyeceğini anlamanız gereken şeylerden biridir.
spektr

@choward: Bu, geldiğim sonuç, artı genellikle bir vektörü optimize ediyoruz, bu da tekrarlayan değerlendirme anlamına geliyor. Elbette alternatif, duyarlılık denklemlerinin türetilmesinin zor olabileceğidir. Sembolik farklılaşma kullanıyorum ve hala zorlar. Tüm konu biraz mayın tarlası.
Mike Dunlavey
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.