Rumah  >  Artikel  >  Peranti teknologi  >  Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

WBOY
WBOYke hadapan
2023-04-04 12:05:082044semak imbas

Artikel ini akan memperkenalkan secara terperinci kaedah pengoptimuman hiperparameter yang paling biasa digunakan untuk meningkatkan hasil pembelajaran mesin.

Penterjemah |. Zhu Xianzhong​

Pengulas |. orang fikir ialah Penyelesaiannya ialah menambah lebih banyak data latihan. Data tambahan selalunya membantu (kecuali dalam keadaan tertentu), tetapi menjana data berkualiti tinggi boleh menjadi sangat mahal. Pengoptimuman hiperparameter menjimatkan masa dan sumber kami dengan menggunakan data sedia ada untuk mendapatkan prestasi model terbaik. ​

Seperti namanya, pengoptimuman hiperparameter ialah proses menentukan gabungan hiperparameter terbaik untuk model pembelajaran mesin untuk memenuhi fungsi pengoptimuman (iaitu, memaksimumkan prestasi model berdasarkan set data yang dikaji) . Dalam erti kata lain, setiap model menyediakan berbilang "butang" pilihan yang boleh kami ubah sehingga kami mencapai gabungan hiperparameter yang optimum untuk model kami. Beberapa contoh parameter yang boleh kita ubah semasa pengoptimuman hiperparameter boleh menjadi kadar pembelajaran, seni bina rangkaian saraf (cth., bilangan lapisan tersembunyi), regularisasi, dsb. ​

Dalam artikel ini, kami akan memperkenalkan secara konseptual tiga kaedah pengoptimuman hiperparameter yang paling biasa, iaitu carian grid, carian rawak dan pengoptimuman Bayesian, dan kemudian melaksanakannya satu demi satu. ​

Saya akan menyediakan jadual perbandingan peringkat tinggi pada permulaan artikel untuk rujukan pembaca, dan kemudian meneroka, menerangkan dan melaksanakan setiap item dalam jadual perbandingan sepanjang artikel yang lain. ​

Jadual 1: Perbandingan kaedah pengoptimuman hiperparameter ​

Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian1 Algoritma carian grid ​

Carian grid mungkin super Paling mudah dan kaedah pengoptimuman parameter yang paling intuitif, yang melibatkan carian menyeluruh untuk gabungan hiperparameter terbaik dalam ruang carian yang ditentukan. "Ruang carian" dalam konteks ini ialah keseluruhan hiperparameter dan nilai hiperparameter tersebut dipertimbangkan semasa pengoptimuman. Mari kita memahami carian grid dengan lebih baik dengan contoh. ​

Andaikan kita mempunyai model pembelajaran mesin dengan hanya tiga parameter Setiap parameter boleh mengambil nilai yang disediakan dalam jadual: ​

parameter_1 = [1 , 2, 3]​

parameter_2 = [a, b, c]​

parameter_3 = [x, y, z]​

Kami tidak tahu gabungan parameter ini yang akan mengoptimumkan fungsi Pengoptimuman kami daripada model (iaitu menyediakan output terbaik untuk model pembelajaran mesin kami). Dalam carian grid, kami hanya mencuba setiap gabungan parameter ini, mengukur prestasi model untuk setiap parameter dan hanya memilih gabungan yang menghasilkan prestasi terbaik! Dalam contoh ini, parameter 1 boleh mengambil 3 nilai (iaitu 1, 2, atau 3), parameter 2 boleh mengambil 3 nilai (iaitu a, b, dan c), dan parameter 3 boleh mengambil 3 nilai (iaitu x, y, dan z). Dalam erti kata lain, terdapat 3*3*3=27 gabungan kesemuanya. Carian grid dalam contoh ini akan melibatkan 27 pusingan menilai prestasi model pembelajaran mesin untuk mencari kombinasi berprestasi terbaik. ​

Seperti yang anda lihat, kaedah ini sangat mudah (serupa dengan tugas percubaan dan ralat), tetapi ia juga mempunyai beberapa had. Mari kita ringkaskan kelebihan dan kekurangan kaedah ini. ​

Antaranya, kelebihannya termasuklah: ​

Mudah difahami dan dilaksanakan ​

Mudah disejajarkan ​
  • Sesuai untuk kedua-dua diskret dan ruang berterusan​ Kelemahan utama ialah: ​
  • Mahal dalam model besar dan/atau kompleks dengan bilangan hiperparameter yang besar (kerana semua kombinasi mesti dicuba dan dinilai) ​
  • Tiada memori – tiada pembelajaran dari masa lalu Pembelajaran melalui Pemerhatian
  • Jika ruang carian terlalu besar, anda mungkin tidak dapat mencari kombinasi terbaik Cadangan saya ialah jika anda mempunyai model ringkas dengan ruang carian kecil, gunakan carian grid; jika tidak, adalah disyorkan untuk meneruskan Baca untuk mencari penyelesaian yang lebih sesuai untuk ruang carian yang lebih besar.
  • Sekarang, mari kita laksanakan carian grid menggunakan contoh sebenar.
  • 1.1. Pelaksanaan algoritma carian grid
  • Untuk melaksanakan carian grid, kami akan menggunakan set data Iris dalam scikit-lear untuk mencipta model klasifikasi hutan rawak. Set data ini termasuk 3 kelopak iris dan panjang sepal yang berbeza dan akan digunakan untuk latihan pengelasan ini. Dalam makalah ini, pembangunan model adalah sekunder kerana matlamatnya adalah untuk membandingkan prestasi pelbagai strategi pengoptimuman hiperparameter. Saya menggalakkan anda menumpukan pada keputusan penilaian model dan masa yang diperlukan untuk setiap kaedah pengoptimuman hiperparameter untuk mencapai set hiperparameter yang dipilih. Saya akan menerangkan keputusan larian dan kemudian menyediakan jadual perbandingan ringkasan untuk tiga kaedah yang digunakan dalam artikel ini. ​

Ruang carian merangkumi semua nilai hiperparameter, ditakrifkan seperti berikut: ​

ruang_carian = {'n_estimators': [10, 100, 500, 1000],​

'max_depth' : [2, 10, 25, 50, 100],​

'min_samples_split': [2, 5, 10],​

'min_samples_leaf': [1, 5, 10]}​


Ruang carian di atas terdiri daripada gabungan jumlah 4*5*3*3=180 hiperparameter. Kami akan menggunakan carian grid untuk mencari gabungan yang mengoptimumkan fungsi objektif seperti berikut:

# Import perpustakaan​
daripada sklearn.model_selection import GridSearchCV​
daripada sklearn.datasets import load_iris​
daripada sklearn.ensemble import RandomForestClassifier_model​
f. masa import​
# Muatkan set data Iris​
iris = load_iris()​
X, y = iris.data, iris.target​
#Define hyperparameter search space​
search_space = {'n_estimators': [10, 100, 500, 1000],​
'max_depth': [2, 10, 25, 50, 100],​
'min_samples_split': [2, 5, 10 ] ,​
'min_samples_leaf': [1, 5, 10]}​
#Define Random Forest Classifier​
clf = RandomForestClassifier(random_state=1234)​
#Jana objek pengoptimum​
pengoptimum = GridSearchCV(clf, search_space, cv=5, scoring='acuracy')​
#Simpan masa mula supaya ia boleh digunakan untuk mengira jumlah masa yang dibelanjakan
start_time = time.time()​
# Pengoptimum pada pemadanan data ​
optimizer.fit(X, y)​
# Simpan masa tamat supaya ia boleh digunakan untuk mengira jumlah masa yang memakan
end_time = time.time ( )​
# Cetak set hiperparameter terbaik dan skor yang sepadan​
print(f"selected hyperparameters:")​
print(optimizer.best_params_)​
print("")​
print(f"best_score: {optimizer.best_score_}")​
print(f"elapsed_time: {round(end_time-start_time, 1)}")​
Output kod di atas adalah seperti berikut :

Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

Di sini kita boleh melihat nilai hiperparameter yang dipilih menggunakan carian grid. Antaranya, best_score menerangkan hasil penilaian menggunakan set hiperparameter yang dipilih, dan elapsed_time menerangkan masa yang diambil untuk komputer riba tempatan saya untuk melaksanakan strategi pengoptimuman hiperparameter ini. Semasa anda meneruskan ke kaedah seterusnya, simpan keputusan penilaian dan masa berlalu dalam fikiran untuk perbandingan. Sekarang, mari kita masuk ke perbincangan tentang carian rawak. ​

2. Algoritma carian rawak ​

Seperti namanya, carian rawak ialah proses pensampelan hiperparameter secara rawak daripada ruang carian yang ditentukan. Tidak seperti carian grid, carian rawak hanya memilih subset rawak nilai hiperparameter untuk bilangan lelaran yang telah ditetapkan (bergantung pada sumber yang tersedia seperti masa, belanjawan, matlamat, dll.) dan mengira model pembelajaran mesin untuk setiap prestasi hiperparameter, dan kemudian pilih nilai hiperparameter terbaik. ​

Berdasarkan pendekatan di atas, anda boleh bayangkan bahawa carian rawak lebih murah daripada carian grid penuh, tetapi masih mempunyai kelebihan dan kekurangannya sendiri, seperti berikut: ​

Kelebihan: ​

    Mudah difahami dan dilaksanakan Carian murah​
  • Lebih berkemungkinan menumpu kepada carian optimum daripada grid dengan bilangan percubaan yang sama Kelemahan: ​
  • Tiada memori – tidak belajar daripada pemerhatian lepas​
  • Memandangkan pemilihan rawak, nilai hiperparameter penting mungkin terlepas
  • Dalam kaedah seterusnya, kami akan menyelesaikan masalah grid dan "tanpa ingatan" carian rawak melalui pengoptimuman Bayesian "shortcoming. Tetapi sebelum membincangkan kaedah ini, mari kita laksanakan carian rawak. ​
  • 2.1. Pelaksanaan algoritma carian rawak
  • Menggunakan coretan kod di bawah, kami akan melaksanakan pengoptimuman hiperparameter carian rawak untuk masalah yang sama yang diterangkan dalam pelaksanaan carian grid. ​
# Import perpustakaan​

dari sklearn.model_selection import RandomizedSearchCV​

dari scipy.stats import randint​

# Buat objek RandomizedSearchCV​

optimizerCV Randomized clf, param_distributinotallow=search_space,​

n_iter=50, cv=5, scoring='accuracy',​

random_state=1234)​

# Simpan masa mula untuk mengira jumlah masa berjalan ​
masa_mula = time.time()​

# Pasangkan pengoptimum pada data
optimizer.fit(X, y)​

# Simpan masa tamat untuk hitung jumlah masa Berjalan​
akhir_masa = masa.masa()​

# Cetak set hiperparameter optimum dan skor sepadan​
cetak(f"hiperparameter terpilih:")​
cetak (pengoptimum .best_params_)​
print("")​
print(f"best_score: {optimizer.best_score_}")​
print(f"elapsed_time: {round(end_time-start_time, 1) }" )​

Hasil keluaran kod di atas adalah seperti berikut: ​




Hasil carian rawak​

Berbanding dengan hasil carian grid, Keputusan ini sangat menarik. best_score kekal sama, tetapi elapsed_time berkurangan daripada 352.0 saat kepada 75.5 saat! Sungguh mengagumkan! Dalam erti kata lain, algoritma carian rawak berjaya mencari satu set hiperparameter yang berfungsi sama seperti carian grid dalam kira-kira 21% masa yang diperlukan oleh carian grid! Walau bagaimanapun, kecekapan di sini jauh lebih tinggi. ​

Seterusnya, mari kita beralih kepada kaedah seterusnya, yang dipanggil Pengoptimuman Bayesian, yang belajar daripada setiap percubaan dalam proses pengoptimuman. Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

3. Pengoptimuman Bayesian

Pengoptimuman Bayesian ialah kaedah pengoptimuman hiperparameter yang menggunakan model kebarangkalian untuk "belajar" daripada percubaan sebelumnya dan mengarahkan carian ke hiperparameter dalam ruang carian fungsi objektif model pembelajaran mesin. ​

Kaedah pengoptimuman Bayesian boleh dibahagikan kepada 4 langkah, yang akan saya huraikan di bawah. Saya menggalakkan anda membaca langkah-langkah ini untuk memahami proses ini dengan lebih baik, tetapi tiada pengetahuan prasyarat diperlukan untuk menggunakan kaedah ini. ​

  1. Tentukan "sebelumnya", yang merupakan model kebarangkalian
  2. penilaian kepercayaan kita tentang gabungan hiperparameter yang paling mungkin untuk mengoptimumkan fungsi objektif pada satu ketika Model masa Sampel Hiperparameter
  3. Menggunakan pengetahuan yang diperoleh dalam Langkah 2, kemas kini model kebarangkalian dalam Langkah 1 (yang kami panggil "sebelumnya") untuk memahami hiperparameter terbaik yang kami percaya mengoptimumkan fungsi objektif . Kepercayaan kami yang dikemas kini dipanggil "posterior". Dalam erti kata lain, pengetahuan yang diperoleh dalam langkah 2 membantu kami memahami ruang carian dengan lebih baik dan membawa kami dari sebelum ke posterior, menjadikan posterior pengetahuan "terkini" kami tentang ruang carian dan fungsi objektif, seperti yang ditentukan oleh langkah 2 Sediakan maklumat​
  4. Ulang langkah 2 dan 3 sehingga prestasi model menumpu, sumber habis atau metrik pratakrif lain dipenuhi​

Jika anda berminat untuk mengetahui lebih lanjut tentang Baye Untuk maklumat terperinci tentang Si pengoptimuman, anda boleh melihat siaran berikut: ​

"Algoritma Pengoptimuman Bayesian dalam Pembelajaran Mesin", alamatnya ialah:
​​https://medium.com/@fmnobar/conceptual -overview-of -pengoptimuman-bayesian-untuk-penalaan-parameter-dalam-pembelajaran-mesin-a3b1b4b9339f. ​​​

Sekarang kita memahami cara pengoptimuman Bayesian berfungsi, mari kita lihat kelebihan dan kekurangannya. ​

Kelebihan: ​

  • Belajar daripada pemerhatian lepas dan oleh itu lebih cekap. Dalam erti kata lain, berbanding kaedah tanpa ingatan, ia dijangka mencari set hiperparameter yang lebih baik dalam lelaran yang lebih sedikit
  • yang menumpu kepada andaian tertentu yang optimum: ​
  • Sukar untuk disejajarkan​.
  • Secara pengiraan lebih besar daripada grid dan carian rawak setiap lelaran​
  • Sebelumnya dan fungsi yang digunakan dalam pengoptimuman Bayesian (cth., Pilihan taburan kebarangkalian awal untuk fungsi pemerolehan, dsb.) boleh menjejaskan dengan ketara prestasi dan keluk pembelajarannya​

Dengan perincian yang tidak diingini, mari kita laksanakan pengoptimuman Bayesian dan lihat hasilnya. ​

3.1. Pelaksanaan Algoritma Pengoptimuman Bayesian

Sama seperti bahagian sebelumnya, kami akan menggunakan coretan kod berikut untuk melaksanakan hiperparameter Bayesian untuk masalah yang sama yang diterangkan dalam pengoptimuman Pelaksanaan Carian Grid. ​

# Import perpustakaan ​
dari skopt import BayesSearchCV​

# Lakukan pengoptimuman Bayesian ​
pengoptimum = BayesSearchCV(estimator=RandomForestClassifier(),​_spacessearch =>search n_iter=10,​
cv=5,​
scoring='accuracy',​
random_state=1234)​

# Simpan masa mula untuk mengira Jumlah masa berjalan​
masa_mula = time.time()​

optimizer.fit(X, y)​

# Simpan masa tamat untuk mengira jumlah masa berjalan
masa tamat = time.time()​

# Cetak set hiperparameter terbaik dan skor yang sepadan​
print(f"selected hyperparameters:")​
print(optimizer.best_params_)​
print ("")​
print(f"best_score: {optimizer.best_score_}")​
print(f"elapsed_time: {round(end_time-start_time, 1)}")​
Output kod di atas adalah seperti berikut:

Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

Hasil pengoptimuman Bayesian​

Satu lagi set hasil yang menarik! Skor_terbaik adalah konsisten dengan hasil yang kami perolehi dengan carian grid dan rawak, tetapi keputusan itu hanya mengambil masa 23.1 saat berbanding 75.5 saat untuk carian rawak dan 352.0 saat untuk carian grid! Dalam erti kata lain, menggunakan pengoptimuman Bayesian mengambil masa kira-kira 93% kurang daripada carian grid. Ini merupakan rangsangan produktiviti yang besar yang menjadi lebih bermakna dalam model dan ruang carian yang lebih besar dan lebih kompleks. ​

Perhatikan bahawa pengoptimuman Bayesian hanya menggunakan 10 lelaran untuk mendapatkan hasil ini kerana ia boleh belajar daripada lelaran sebelumnya (berbanding dengan carian rawak dan grid).

Perbandingan Keputusan

Jadual di bawah membandingkan keputusan tiga kaedah yang dibincangkan setakat ini. Lajur "Metodologi" menerangkan kaedah pengoptimuman hiperparameter yang digunakan. Ini diikuti oleh hiperparameter yang dipilih menggunakan setiap kaedah. "Skor Terbaik" ialah skor yang diperoleh menggunakan kaedah tertentu, dan kemudian "Masa Berlalu" mewakili tempoh masa yang diambil untuk strategi pengoptimuman dijalankan pada komputer riba tempatan saya. Lajur terakhir, Kecekapan Diperolehi, menganggap carian grid sebagai garis dasar dan kemudian mengira kecekapan yang diperoleh oleh setiap satu daripada dua kaedah lain berbanding carian grid (menggunakan masa berlalu). Sebagai contoh, memandangkan carian rawak mengambil masa 75.5 saat dan carian grid mengambil masa 352.0 saat, kecekapan carian rawak berbanding garis dasar carian grid dikira sebagai 1–75.5/352.0=78.5%. ​

Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian

Jadual 2 - Jadual perbandingan prestasi kaedah ​

Dua kesimpulan utama dalam jadual perbandingan di atas: ​

  1. Kecekapan : Kita boleh melihat bagaimana kaedah pembelajaran seperti pengoptimuman Bayesian boleh mencari set hiperparameter yang dioptimumkan dalam masa yang singkat. ​
  2. Pemilihan parameter: Terdapat berbilang jawapan yang betul. Sebagai contoh, parameter yang dipilih untuk pengoptimuman Bayesian adalah berbeza daripada parameter untuk grid dan carian rawak, walaupun metrik penilaian (iaitu best_score) kekal sama. Ini lebih penting lagi dalam persekitaran yang lebih besar dan lebih kompleks. ​

Kesimpulan

Dalam artikel ini, kami membincangkan apa itu pengoptimuman hiperparameter dan memperkenalkan tiga kaedah paling biasa digunakan untuk latihan pengoptimuman ini. Kami kemudian memperkenalkan setiap tiga kaedah ini secara terperinci dan melaksanakannya dalam latihan pengelasan. Akhir sekali, kami membandingkan hasil pelaksanaan ketiga-tiga kaedah tersebut. Kami mendapati bahawa kaedah seperti pengoptimuman Bayesian yang dipelajari daripada percubaan sebelumnya boleh meningkatkan kecekapan dengan ketara, yang boleh menjadi faktor penting dalam model kompleks besar seperti rangkaian saraf dalam, di mana kecekapan boleh menjadi faktor penentu. ​

Pengenalan penterjemah

Zhu Xianzhong, editor komuniti 51CTO, blogger pakar 51CTO, pensyarah, guru komputer di sebuah universiti di Weifang dan seorang veteran dalam industri pengaturcaraan bebas. ​

Tajuk asal: ​​Pengoptimuman Hiperparameter — Pengenalan dan Pelaksanaan Carian Grid, Carian Rawak dan Pengoptimuman Bayesian​​, pengarang: Farzad Mahmoodinobar​



Atas ialah kandungan terperinci Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam