Menghentikan kriteria untuk Nelder Mead


11

Saya mencoba menerapkan algoritma Nelder-Mead untuk mengoptimalkan fungsi. The wikipedia Halaman tentang Nelder-Mead adalah mengejutkan jelas tentang seluruh algoritma, kecuali untuk kriteria penghentian. Di sana dikatakan dengan sedih:

Periksa konvergensi [klarifikasi diperlukan] .

Saya mencoba dan menguji beberapa kriteria sendiri:

  • Berhenti jika mana kecil dan di mana adalah th titik dari simplex, memerintahkan dari rendah ( ) ke tinggi ( ) nilai fungsi. Dengan kata lain, ketika nilai maksimum simpleks hampir sama dengan nilai minimum. Saya menemukan ini tidak berfungsi dengan baik, karena ini tidak memberikan jaminan tentang apa fungsi tidak di dalam simpleks. Contoh, pertimbangkan fungsi: Ini tentu saja sepele untuk dioptimalkan, tetapi katakanlah kita melakukan ini dengan NM, dan biarkan dua titik simpleks kita menjadi danf(xN+1)f(x1)<ϵϵxiif(x1)f(xN+1)

    f(x)=x2
    x1=1x2=1. Algoritma akan bertemu di sini tanpa menemukan yang optimal.
  • Opsi kedua melibatkan mengevaluasi centroid simpleks: berhenti jika . Ini mengasumsikan bahwa jika titik terendah simpleks dan centroid memiliki nilai yang sama, simpleks cukup kecil untuk memanggil konvergensi.|f(x1)f(xc)|<ϵ

Apakah ini cara yang tepat untuk memeriksa konvergensi? Atau adakah cara yang mapan untuk memeriksa ini? Saya tidak dapat menemukan sumber apa pun tentang ini, karena sebagian besar pencarian-hit berfokus pada kompleksitas algoritma.


1. Tidak jelas bagi saya mengapa Anda membandingkan apa yang terjadi di dengan ; tentunya Anda ingin membandingkannya dengan apa yang terjadi di . 2. pemeriksaan konvergensi adalah bidang yang sangat rumit dalam banyak optimasi; Anda membutuhkan bahwa fungsi tidak banyak berubah, tetapi jika argumen berubah dengan cepat (bahkan jika fungsi tersebut hampir tidak berubah) Anda mungkin belum konvergen, jadi orang sering menggunakan kriteria yang melihat keduanya. Ada juga masalah apakah Anda menggunakan kriteria relatif atau absolut (keduanya tidak cukup - mis. Tes relatif ketika Anda sangat dekat dengan 0 tidak akan terpicu)xN+1x1xN
Glen_b -Reinstate Monica

3
Kriteria berhenti terbaik untuk Nelder Mead adalah sebelum Anda mulai.
Mark L. Stone

Hanya untuk menghindari notasi kebingungan dalam komentar @ Glen_b ... Saya percaya subskrip di sini merujuk pada simpul simpleks, bukan iterasi dari algoritma. Sehingga kriteria konvergensi pertama yang diajukan dalam pertanyaan ini, membandingkan nilai fungsi terendah dan tertinggi dari simpul dalam ruang parameter dimensi ... itu tidak secara eksplisit dinyatakan dalam pertanyaan, tetapi deskripsi algoritma pada halaman wikipedia tertaut ( dan dalam kertas asli) pesan simpul dari nilai fungsi terendah ke tertinggi. NN+1
Nate Pope

@NatePope Itu maksud saya ya, saya akan menambahkan klarifikasi untuk pertanyaan. \
JAD

Jawaban:


6

Akun "algoritma downhill simplex" ini dalam versi asli Numerical Recipes sangat jelas dan bermanfaat. Karena itu saya akan mengutip bagian yang relevan dari itu. Inilah latar belakangnya:

Dalam minimalisasi satu dimensi, dimungkinkan untuk mengurung minimum .... Sayang! Tidak ada prosedur analog dalam ruang multidimensi. ... Yang terbaik yang bisa kita lakukan adalah memberikan algoritma perkiraan awal kita; yaitu, vektor- variabel independen sebagai titik pertama untuk mencoba. Algoritme kemudian seharusnya membuat jalannya sendiri menurun melalui kompleksitas topografi dimensi yang tidak terbayangkan sampai bertemu dengan minimum (setidaknya lokal).NN

Metode simpleks menurun harus dimulai tidak hanya dengan satu titik, tetapi dengan poin, mendefinisikan simpleks awal. [Anda dapat menganggap titik-titik ini sebagai titik awal awal bersama dengan] mana adalah vektor satuan dan di mana adalah konstanta yang merupakan tebakan Anda dari skala panjang karakteristik masalah. ...N+1P0

(10.4.1)Pi=P0+λei
eiNλ

Sebagian besar langkah hanya [memindahkan] titik simpleks di mana fungsi terbesar ("titik tertinggi") melalui wajah simpleks berlawanan ke titik yang lebih rendah. ...

Sekarang untuk masalah yang ada, mengakhiri algoritma. Perhatikan umum dari account: penulis memberikan saran intuitif dan berguna untuk mengakhiri setiap optimizer multidimensi dan kemudian menunjukkan khusus bagaimana itu berlaku untuk algoritma tertentu. Paragraf pertama menjawab pertanyaan di depan kita:

Kriteria pengakhiran bisa rumit .... Kami biasanya dapat mengidentifikasi satu "siklus" atau "langkah" dari algoritma multidimensi kami. Maka dimungkinkan untuk mengakhiri ketika jarak vektor bergerak dalam langkah itu fraksional lebih kecil dalam besarnya daripada beberapa toleransi TOL. Sebagai alternatif, kita dapat mensyaratkan bahwa penurunan nilai fungsi pada langkah terminasi lebih kecil dari toleransi FTOL. ...

Catat dengan baik bahwa salah satu kriteria di atas mungkin tertipu oleh satu langkah anomali yang, karena satu dan lain alasan, gagal mencapai mana pun. Oleh karena itu, sering kali merupakan ide yang baik untuk memulai kembali rutin minimalisasi multidimensi pada titik di mana ia mengklaim telah menemukan minimum. Untuk memulai ulang ini, Anda harus menginisialisasi ulang jumlah input tambahan. Dalam metode menurun bukit, misalnya, Anda harus menginisialisasi ulang dari simpul simpleks lagi dengan persamaan , dengan menjadi salah satu simpul dari minimum yang diklaim.NN+1(10.4.1)P0

Mulai ulang seharusnya tidak terlalu mahal; Algoritme Anda, setelah semua, konvergen ke titik restart sekali, dan sekarang Anda sudah memulai algoritma.

[Halaman 290-292.]

Kode yang menyertai teks ini dalam Numerical Recipes mengklarifikasi arti "fraksional lebih kecil": perbedaan antara nilai dan (baik nilai argumen atau nilai fungsi) adalah "fraksional lebih kecil" daripada ambang batas saatxyT>0

(1)|x||y|f(x,y)=2|x||y||x|+|y|<T

dengan .f(x,y)=(|x|+|y|)/2

Sisi kiri kadang-kadang dikenal sebagai "perbedaan absolut relatif." Di beberapa bidang itu dinyatakan sebagai persen, di mana ia disebut "kesalahan relatif persen." Lihat artikel Wikipedia tentang perubahan dan perbedaan relatif untuk lebih banyak opsi dan terminologi.(1)

Referensi

William H. Press et al. , Resep Numerik: Seni Komputasi Ilmiah. Cambridge University Press (1986). Kunjungi http://numerical.recipes/ untuk edisi terbaru.


1
Terima kasih atas wawasan tentang memulai kembali. Saya pikir ini hanya menjalankan algoritma dari titik awal yang berbeda, tetapi sebenarnya ada lebih dari itu.
JAD

Saya belum pernah berpikir tentang kemungkinan arti "memulai kembali." Dalam konteks saat ini, saya mungkin menggunakan istilah seperti "memoles" untuk "restart," tapi mungkin itu juga tidak tepat. Jenis "restart" yang dianjurkan untuk metode simpleks mungkin agak istimewa.
whuber

9

Bukan jawaban yang lengkap, tetapi terlalu lama untuk komentar dan mungkin menempatkan Anda di jalur yang benar.

Topik ini dibahas secara singkat pada halaman 171 dari "Metode Numerik Ringkas untuk Komputer" 2nd Ed., Oleh John C. Nash. Dan kebetulan menjadi referensi yang dikutip untuk rutin Nelder-Mead diimplementasikan dalam optim()fungsi R. Mengutip bagian yang relevan:

Oleh karena itu, pertanyaan paling sulit mengenai algoritma minimisasi harus diatasi: kapan minimum telah ditemukan? Nelder dan Mead menyarankan 'kesalahan standar' dari nilai fungsi: Di mana

test=[(i=1n+1[S(bi)S¯]2)/n]1/2
S¯=i=1n+1S(bi)/(n+1).

Saya akan menyela untuk memperjelas bahwa Adalah fungsi yang diperkecil, adalah titik yang menentukan simpleks -dimensi; titik dengan nilai fungsi tertinggi adalah dan titik dengan nilai fungsi terendah adalah . Nash melanjutkan:S(.)bn+1nbHbL

Prosedur dianggap konvergen ketika nilai tes jatuh di bawah toleransi yang ditentukan sebelumnya. Dalam aplikasi statistik yang menarik perhatian Nelder dan Mead, pendekatan ini masuk akal. Namun, penulis telah menemukan bahwa kriteria ini dapat menyebabkan penghentian prematur prosedur pada masalah dengan area yang cukup datar pada permukaan fungsi. Dalam konteks statistik orang mungkin ingin berhenti jika daerah seperti itu ditemui, tetapi dengan asumsi minimum dicari, tampaknya logis untuk menggunakan tes sederhana untuk kesetaraan antara dan , yaitu, a uji untuk ketinggian yang sama dari semua titik di simpleks.S ( b H )S(bL)S(bH)

Pandangan cepat pada sumber optim()mengindikasikan bahwa ia menggunakan perbedaan antara nilai fungsi tertinggi dan terendah (dari titik yang mendefinisikan simpleks) untuk menentukan konvergensi: if (VH <= VL + convtol || VL <= abstol) break;Di mana VHnilai tinggi dan VLnilai rendah. Ini datang dengan peringatan bahwa saya melihat sumbernya dengan sangat cepat, dan saya mungkin kehilangan sesuatu.

Sekarang, pilihan Anda (1) tampaknya merupakan pendekatan kedua yang dianjurkan oleh Nash. Dia juga membahas masalah yang Anda temui:

Akhirnya, masih mungkin untuk menyatu pada titik yang bukan minimum. Jika, misalnya, titik simpleks semuanya dalam satu bidang (yang merupakan garis dalam dua dimensi), simpleks hanya dapat bergerak dalam arah dalam ruang dimensi dan mungkin tidak dapat melanjutkan ke minimum. O'Neill (1971), dalam implementasi FORTRAN dari gagasan Nelder-Mead, menguji nilai fungsi di kedua sisi dari minimum yang seharusnya di sepanjang masing-masing sumbu parameter. Jika ada nilai fungsi yang ditemukan lebih rendah dari yang seharusnya minimum, maka prosedur dimulai kembali.( n - 1 ) n(n+1)(n1)n

Referensi asli yang dirujuk Nash di sini adalah:

Nelder JA, Mead R. 1965. Metode simpleks untuk meminimalkan fungsi. Jurnal Komputer 7: 308-313.

O'Neill R. 1971. Algoritma AS 47: Minimalisasi fungsi menggunakan prosedur simpleks. Statistik Terapan 20: 338-345.


3

Seorang lelaki: melacak hanya sudut terendah dengan aturan berhenti "sabar" :

fmin(t)minall corners f(Xi,t)
# stop when you run out of patience, no improvement for say 10 iterations in a row:
if t > tbest + patience:
    message = "iter %d: f %g >= fbest %g" ...
    return message, fbest, xbest

Memantau semua sudut jelas berguna dalam memeriksa skala koordinat yang masuk akal, kendala, simpleks awal NM. Apakah melacak semua sudut dapat meningkatkan kombinasin+1

  1. masalahnya: medan yang kasar, mungkin dengan penskalaan yang buruk atau kendala konyol
  2. algoritma, penjelajahan penjelajahan dan pemindahan (dan kompleksitas perangkat lunak)
  3. aturan penghentian yang tepat

masih harus dilihat - kasus uji nyata diterima.

(Kelas nyata Stopitermemiliki banyak kondisi berhenti, di samping patience; paling sederhana adalah waktu jam dinding.)

Lihat juga:
NLopt : banyak algoritma termasuk Nelder-Mead, mudah untuk dibandingkan. Lihat terutama catatan tentang Membandingkan algoritma
Downhill : kesabaran berhentimin_improvement

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.