Saya sedang melakukan penelitian tentang teknik optimasi untuk pembelajaran mesin, tetapi saya terkejut menemukan sejumlah besar algoritma optimasi didefinisikan dalam hal masalah optimasi lainnya. Saya menggambarkan beberapa contoh berikut ini.
Misalnya https://arxiv.org/pdf/1511.05133v1.pdf
Semuanya terlihat bagus dan bagus tapi kemudian ada dalam .... jadi apa algoritma yang memecahkan untuk ? Kami tidak tahu, dan tidak dikatakan. Jadi secara ajaib kita akan menyelesaikan masalah optimisasi lain yaitu menemukan vektor minimalisasi sehingga produk dalam minimal - bagaimana ini bisa dilakukan?
Ambil contoh lain: https://arxiv.org/pdf/1609.05713v1.pdf
Semuanya terlihat bagus dan bagus sampai Anda menekan operator proksimal di tengah algoritma, dan apa definisi operator itu?
Sekarang doakan, bagaimana kita menyelesaikan ini di operator proksimal? Tidak dikatakan. Bagaimanapun, masalah optimasi itu terlihat sulit (NP HARD) tergantung pada apa .
Dapatkah seseorang tolong beri tahu saya tentang:
- Mengapa begitu banyak algoritma pengoptimalan yang didefinisikan dalam hal masalah pengoptimalan lainnya?
(Bukankah ini semacam masalah ayam dan telur: untuk menyelesaikan masalah 1, Anda harus menyelesaikan masalah 2, menggunakan metode penyelesaian masalah 3, yang bergantung pada pemecahan masalah ....)
Bagaimana Anda mengatasi masalah pengoptimalan yang tertanam dalam algoritma ini? Misalnya, , bagaimana menemukan minimizer di sisi kanan?
Pada akhirnya, saya bingung bagaimana algoritma ini dapat diimplementasikan secara numerik. Saya tahu bahwa menambahkan dan mengalikan vektor adalah operasi yang mudah dengan python, tetapi bagaimana dengan , apakah ada beberapa fungsi (skrip) yang secara ajaib memberi Anda minimizer ke suatu fungsi?
(Bounty: adakah yang bisa referensi makalah yang penulis membuat jelas algoritma untuk sub-masalah yang tertanam dalam algoritma optimasi tingkat tinggi?)
sumber
Jawaban:
Anda melihat diagram alir algoritma tingkat atas. Beberapa langkah individu dalam bagan alur mungkin pantas bagan alur terperinci mereka sendiri. Namun, dalam makalah yang diterbitkan memiliki penekanan pada singkatnya, banyak detail sering dihilangkan. Detail untuk masalah optimisasi internal standar, yang dianggap sebagai "topi lama" mungkin tidak disediakan sama sekali.
Gagasan umum adalah bahwa algoritma pengoptimalan mungkin memerlukan solusi dari serangkaian masalah pengoptimalan yang umumnya lebih mudah. Tidak jarang memiliki 3 atau bahkan 4 level algoritma optimasi dalam algoritma level atas, meskipun beberapa dari mereka internal ke pengoptimal standar.
Bahkan memutuskan kapan harus menghentikan suatu algoritma (pada salah satu level hierarki) mungkin memerlukan penyelesaian masalah optimasi sisi. Misalnya, masalah linear kuadrat non-negatif terbatas mungkin diselesaikan untuk menentukan pengganda Lagrange yang digunakan untuk mengevaluasi skor optimalitas KKT yang digunakan untuk memutuskan kapan harus menyatakan optimalitas.
Jika masalah optimisasi bersifat stokastik atau dinamis, mungkin masih ada tingkat optimasi hirarki tambahan.
Ini sebuah contoh. Sequential Quadratic Programming (SQP). Masalah optimisasi awal ditangani dengan secara iteratif menyelesaikan kondisi optimalitas Karush-Kuhn-Tucker, mulai dari titik awal dengan tujuan yang merupakan pendekatan kuadratik dari Lagrangian masalah, dan linierisasi kendala. Program Quadratic (QP) yang dihasilkan terpecahkan. QP yang diselesaikan baik memiliki kendala wilayah kepercayaan, atau pencarian garis dilakukan dari iterate saat ini ke solusi QP, yang merupakan masalah optimasi, untuk menemukan iterate berikutnya. Jika metode Quasi-Newton digunakan, masalah optimisasi harus dipecahkan untuk menentukan pembaruan Quasi-Newton ke Hessian dari Lagrangian - biasanya ini adalah optimasi bentuk tertutup menggunakan rumus formulir tertutup seperti BFGS atau SR1, tetapi itu bisa menjadi optimasi numerik. Kemudian QP baru diselesaikan, dll. Jika QP tidak mungkin, termasuk untuk memulai, masalah optimasi diselesaikan untuk menemukan titik yang layak. Sementara itu, mungkin ada satu atau dua tingkat masalah optimisasi internal yang disebut di dalam QP solver. Pada akhir setiap iterasi, masalah kuadrat linier non-negatif yang mungkin diselesaikan untuk menentukan skor optimalitas. Dll
Jika ini adalah masalah integer campuran, maka seluruh shebang ini mungkin dilakukan pada setiap node bercabang, sebagai bagian dari algoritma level yang lebih tinggi. Demikian pula untuk pengoptimal global - masalah pengoptimalan lokal digunakan untuk menghasilkan batas atas pada solusi optimal global, maka pelonggaran beberapa kendala dilakukan untuk menghasilkan masalah pengoptimalan batas bawah. Ribuan atau bahkan jutaan masalah optimisasi "mudah" dari cabang dan terikat mungkin diselesaikan untuk menyelesaikan satu bilangan bulat campuran atau masalah optimisasi global.
Ini akan mulai memberi Anda ide.
Sunting : Menanggapi pertanyaan ayam dan telur yang ditambahkan ke pertanyaan setelah jawaban saya: Jika ada masalah ayam dan telur, maka itu bukan algoritma praktis yang terdefinisi dengan baik. Dalam contoh yang saya berikan, tidak ada ayam dan telur. Langkah-langkah algoritma tingkat yang lebih tinggi memanggil pemecah optimisasi, yang didefinisikan atau sudah ada. SQP secara iteratif memanggil solver QP untuk menyelesaikan sub-masalah, tetapi solver QP memecahkan masalah yang lebih mudah, QP, daripada masalah aslinya. Jika ada algoritma optimisasi global tingkat yang lebih tinggi, itu mungkin memanggil solver SQP untuk menyelesaikan subproblem optimasi nonlinier lokal, dan solver SQP pada gilirannya memanggil solver QP untuk menyelesaikan subproblem QP. Tanpa chiicken dan telur.
Catatan: Peluang optimasi "di mana-mana". Pakar pengoptimalan, seperti yang mengembangkan algoritme pengoptimalan, lebih cenderung melihat peluang pengoptimalan ini, dan memandangnya demikian, daripada rata-rata Joe atau Jane. Dan karena cenderung algoritmik, secara alami mereka melihat peluang untuk membangun algoritme optimasi dari algoritme optimasi tingkat rendah. Perumusan dan solusi masalah optimasi berfungsi sebagai blok bangunan untuk algoritma optimasi (tingkat yang lebih tinggi) lainnya.
Sunting 2 : Menanggapi permintaan karunia yang baru saja ditambahkan oleh OP. Makalah yang menjelaskan SNOPT pengoptimal-linier SQP https://web.stanford.edu/group/SOL/reports/snopt.pdf secara khusus menyebutkan pemecah QP SQOPT, yang didokumentasikan secara terpisah, yang digunakan untuk menyelesaikan subproblem QP di SNOPT.
sumber
Saya suka jawaban Mark, tapi saya pikir saya akan menyebutkan "Simulasi Annealing", yang pada dasarnya dapat berjalan di atas semua algoritma optimasi. Pada tingkat tinggi berfungsi seperti ini:
Ini memiliki parameter "suhu" yang mulai panas. Sementara panas itu langkah-langkah sering menjauh dan (dan lebih jauh lagi) dari tempat algoritma optimasi bawahan menunjuk. Ketika dingin, ia mengikuti saran dari algoritma bawahan lebih dekat, dan pada nol ia mengikutinya ke apa pun optimum lokal itu kemudian berakhir pada.
Intinya adalah bahwa ia akan mencari ruang secara luas di awal, mencari "tempat yang lebih baik" untuk mencari yang optimal.
Kami tahu tidak ada solusi umum nyata untuk masalah optimal lokal / global. Setiap algoritma akan memiliki titik buta, tetapi hibrida seperti ini tampaknya memberikan hasil yang lebih baik dalam banyak kasus.
sumber
Saya pikir referensi bahwa saya memuaskan keinginan Anda ada di sini . Pergi ke bagian 4 - Optimalisasi dalam Komputasi Bayesian Modern.
TL; DR -mereka membahas metode proksimal. Salah satu keuntungan dari metode tersebut adalah pemecahan - Anda dapat menemukan solusi dengan mengoptimalkan masalah yang lebih mudah. Banyak kali (atau, setidaknya, kadang-kadang) Anda mungkin menemukan dalam literatur suatu algoritma khusus untuk mengevaluasi fungsi proksimal tertentu. Dalam contoh mereka, mereka melakukan denoising gambar. Salah satu langkah adalah algoritma yang sangat sukses dan sangat dikutip oleh Chambolle.
sumber
Ini cukup umum di banyak makalah optimisasi dan ada hubungannya dengan generalisasi. Para penulis biasanya menulis algoritma dengan cara ini untuk menunjukkan bahwa mereka secara teknis bekerja untuk fungsi apa pun f. Namun, dalam praktiknya, mereka hanya berguna untuk fungsi yang sangat spesifik di mana sub-masalah ini dapat diselesaikan secara efisien.
Sebagai contoh, dan sekarang saya sedang berbicara tentang algoritma kedua saja, setiap kali Anda melihat operator proksimal (yang seperti yang Anda catat itu masalah optimasi lain yang memang bisa sangat sulit dipecahkan) biasanya tersirat bahwa ia memiliki solusi bentuk tertutup di Agar algoritma menjadi efisien. Hal ini berlaku untuk banyak fungsi yang menarik dalam pembelajaran mesin seperti norma-l1, norma-norma kelompok, dan sebagainya. Dalam kasus tersebut Anda akan mengganti sub-masalah untuk rumus eksplisit dari operator proksimal, dan tidak perlu algoritma untuk menyelesaikan masalah itu.
Mengenai mengapa mereka ditulis dengan cara ini, catat saja bahwa jika Anda menemukan fungsi lain dan ingin menerapkan algoritma itu, Anda akan memeriksa, pertama, jika proksimal memiliki solusi bentuk tertutup atau dapat dihitung secara efisien. Dalam hal ini Anda cukup memasukkan rumus ke dalam algoritma dan Anda baik untuk pergi. Seperti yang disebutkan sebelumnya, ini menjamin bahwa algoritma tersebut cukup umum yang dapat diterapkan pada fungsi masa depan yang mungkin muncul setelah algoritma pertama kali diterbitkan, bersama dengan ekspresi proksimal dari algoritma efisien untuk menghitungnya.
Akhirnya, sebagai contoh, ambil kertas asli algoritma FISTA klasik. Mereka menurunkan algoritma untuk dua fungsi yang sangat spesifik, kerugian kuadrat dan norma-l1. Namun, mereka mencatat bahwa itu dapat diterapkan tidak ada fungsi selama mereka memenuhi beberapa prasyarat, salah satunya adalah bahwa proksimal yang diatur dapat dihitung secara efisien. Ini bukan persyaratan teoretis tetapi persyaratan praktis.
Kompartisasi ini tidak hanya membuat algoritma umum tetapi juga lebih mudah untuk dianalisis: selama ada algoritma untuk sub-masalah yang memiliki sifat ini, maka algoritma yang diusulkan akan memiliki tingkat konvergensi ini atau apa pun.
sumber