Kutu kısıtlamalı doğrusal olmayan en küçük kareler


10

Kutu kısıtlamaları l o j < = p j < = h i j olan doğrusal olmayan en küçük kareler, min yapmanın önerilen yolları nelerdir ? Bana öyle geliyor ki (aptallar acele ediyor) kutu kısıtlamalarını karesel hale getirebilir ve i e r r i ( p ) 2 + C j t u b ( p j , l oerri(p)2loj<=pj<=hij

ierri(p)2+Cjtub(pj,loj,hij)2
buradatub(x,lo,hi) , \ ___ /, şeklinde şekillendirilmiş "küvet işlevi" dirmax(lox,0,xhi) .
Bu teoride çalışıyor mu, pratikte çalışıyor mu?
(NLS + hakkında birçok teorik makale var gibi görünüyor, ancak ilgim pratik -
gerçek veya gerçekçi test senaryoları yöntemler arasından seçim yapmama yardımcı olacak.)

(Uzmanlar, lütfen etiketler ekleyin: "en küçük kareler"?)


5
Katı kısıtlamaların ceza işlevleriyle değiştirilmesi sayısal optimizasyonda yaygın bir tekniktir. Öyle görünüyor ki, teklif ettiğiniz şey bu değiştirmenin belirli bir formu. Benzer tekniklerle ilgili her şeyi burada okuyabilirsiniz, örneğin: stanford.edu/~boyd/cvxbook
David Ketcheson

ppi=min(max(loj,pj),hij)

Yanıtlar:


11

Kısıtlamalardan kurtulmak için kare ceza terimlerinin eklenmesi, yalnızca sipariş 1 / ceza faktörünün doğruluğunu veren basit bir yaklaşımdır. Bu nedenle, hesaplama sırasında cezanın sonsuza çıkmasına izin vermediğiniz sürece yüksek doğruluk için önerilmez. Ancak yüksek bir ceza faktörü, Hessian'ı çok koşulsuz hale getirir, bu da kısıtlamaları açıkça hesaba katmadan ulaşılabilir toplam doğruluğu sınırlar.

Sınırlı kısıtlamaların ele alınmasının genel kısıtlamalardan çok daha kolay olduğunu ve neredeyse hiçbir zaman cezalara dönüştürülmediğini unutmayın.

Çözücü L-BFGS-B (yaklaşık 5 boyutlu bir geçmişle kullanılır) her iki düşük yüksek boyutta sınırlı kısıtlı problemleri genellikle çok güvenilir ve hızlı bir şekilde çözer. İstisnalar, bir iniş yöntemi ile sıkışıp kalmanın kolay olduğu çözümlerden çok düz hale gelebilecek problemler üzerinde yanlış uyumdur.

Global optimizasyon yazılımımızın bir parçası olarak çok sağlam bir kısıtlamalı çözücüye ihtiyaç duyduğumuz için, birçok farklı çözücü ile çok farklı boyutlarda çok çeşitli fonksiyonlar üzerinde birçok deney yaptık. L-BFGS-B açıkça genel amaçlı bir yöntem olarak göze çarpmaktadır, ancak elbette bazı problemler daha iyi performans gösterir. Bu nedenle, L-BFGS-B'yi ilk seçenek olarak tavsiye ederim ve L-BFGS-B'nin belirli problem sınıfınızı kötü ele alması durumunda alternatif teknikleri denerim.


L-BFGS IPOPT'ta mevcut, cevabımı gözden geçirdim.
Ali

5

Ben sadece genel amaçlı NLP çözücü IPOPT kullanın . Denediğimler arasında en sağlam çözücü.

Bazı çok özel gereksinimleriniz olmadığı sürece, yalnızca kutu kısıtlamalı NLS için çalışan soruna özel bir çözücü üzerinde ısrar etmeniz için hiçbir neden yoktur.

Gereksinimlerdeki bir değişiklik (örn. Doğrusal olmayan kısıtlamalar eklemek) soruna özgü bir çözücü ile büyük bir baş ağrısına neden olacaktır. Genel amaçlı IPOPT kullanırsanız böyle bir sorununuz olmaz.


GÜNCELLEME: L-BFGS'yi IPOPT ile deneyebilirsiniz , belgelerdeki Quasi-Newton bölümüne bakın.

Çözüm prosedürü, IPOPT'nin olağanüstü sağlamlığını bozma pahasına daha hızlı olabilir. Bence , eğer varsa, tam türevleri kullanın. Yalnızca kanıtlanmış performans sorunlarım olsaydı (L-BFGS gibi) yaklaşımlarla uğraşmaya başlardım.


IPOPT'un ne kadar iyi çalıştığını bilmiyorum, ancak öneriniz bana yokuş aşağı simpleks yönteminin savunucuları tarafından benzer ifadeleri hatırlatıyor. Doğrusal olmayan en küçük kareler yaygın bir sorun sınıfı olduğundan, mevcut NLS çözücülerinden birini kullanarak açıkça reddetmek benim için biraz şüpheli görünüyor.
Thomas Klimpel

@ThomasKlimpel Peki, denis bize daha fazla ayrıntı vermeli, o zaman doğru çözücüyü seçmesine yardımcı olabiliriz. :) Ya da kendisi için kontrol edebilir ve hangisinin ihtiyaçlarına en uygun olduğunu bulabilir. IPOPT başlangıç ​​için iyi bir çözümleyici gibi görünüyor.
Ali

@Ali, lütfen bazı "gerçek veya gerçekçi test vakalarına" işaret edebilir misiniz?
denis

@denis yapabildim ama bunu yapmaya niyetim yok, seni pistten atacaktı. Önemli olan tek şey IPOPT'un sorununuzu nasıl ele aldığıdır . Bazı çok özel gereksinimleriniz yoksa, güzel bir şekilde çözmelidir. IPOPT'un MATLAB, C ++, C, Fortran, R, AMPL, CUTEr ile arayüzleri vardır. Bir arayüz seçin ve probleminizle ne olduğunu test edin :) Bir soruna özel çözücüyü test etmek de daha kolay olmayacaktır.
Ali

@Thomas Klimpel, sanırım net değildim: Reddetmiyorum, paketleri sormuyorum, ancak içgörüler veya test senaryoları soruyorum: bu önemsiz yöntem neden işe yaramayabilir?
denis

1

R minpack.lm CRAN paket kutu kısıtlamalarıyla bir Levenberg-Marquardt uygulamasını sağlar.

Genel olarak, Levenberg-Marquardt, en küçük kareler problemleri için L-BFGS-B'den çok daha uygundur. Zorlu problemlerde (çok) daha iyi bir araya gelecektir. Aynı zamanda, doğrusal olmayan en küçük kareler problemlerine göre ayarlandığından, genel amaçlı IPOPT'den çok daha hızlı olacaktır.

R paketi, kısıtlamaları uygulamak için çok basit bir projeksiyon yaklaşımı seçer ( kaynak koduna bakın ). Kullandığınız LM uygulamasına bağlı olarak, dahil edilmesi basit olabilir.

Şimdi, bir dönüşüm kullanma yorumlarındaki öneri, (örneğin, scipy'deki gibi sinüs dönüşümü), kısıtlanmamış LM algoritmanızı kısıtlanmış bir algoritmaya dönüştürmek için iyi ve basit bir alternatiftir. Eğer Jacobian analitik ise, dönüşümü Jacobian'a dahil etmeniz gerekecektir.


0

(Yıllar sonra) kutu kısıtlamalarını ele alan iki çözücü:

  • Scipy least_squares , kapsamlı doc ile 3 yöntem içerir:

    1. 'trf': Güven Bölgesi Yansıtıcı
    2. 'Dogbox'
    3. 'lm': kutu kısıtlamaları olmayan MINPACK için eski bir paketleyici.
  • ceres

1
Scipy, Levenberg-Marquardt algoritmasının kutu kısıtlamalarını kaldıramayacağını açıkça söylüyor.
tholy
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.