


Perbandingan pengoptimuman hiperparameter: carian grid, carian rawak dan pengoptimuman Bayesian
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 1 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 :
- 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.
dari sklearn.model_selection import RandomizedSearchCV
dari scipy.stats import randint# Buat objek RandomizedSearchCVoptimizerCV 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.
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.
- Tentukan "sebelumnya", yang merupakan model kebarangkalian
- penilaian kepercayaan kita tentang gabungan hiperparameter yang paling mungkin untuk mengoptimumkan fungsi objektif pada satu ketika Model masa Sampel Hiperparameter
- 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
- 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 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%.
Jadual 2 - Jadual perbandingan prestasi kaedah
Dua kesimpulan utama dalam jadual perbandingan di atas:
- Kecekapan : Kita boleh melihat bagaimana kaedah pembelajaran seperti pengoptimuman Bayesian boleh mencari set hiperparameter yang dioptimumkan dalam masa yang singkat.
- 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!

Memanfaatkan kuasa AI di peranti: Membina CLI Chatbot Peribadi Pada masa lalu, konsep pembantu AI peribadi kelihatan seperti fiksyen sains. Bayangkan Alex, seorang peminat teknologi, bermimpi seorang sahabat AI yang pintar, yang tidak bergantung

Pelancaran AI4MH mereka berlaku pada 15 April, 2025, dan Luminary Dr. Tom Insel, M.D., pakar psikiatri yang terkenal dan pakar neurosains, berkhidmat sebagai penceramah kick-off. Dr. Insel terkenal dengan kerja cemerlangnya dalam penyelidikan kesihatan mental dan techno

"Kami mahu memastikan bahawa WNBA kekal sebagai ruang di mana semua orang, pemain, peminat dan rakan kongsi korporat, berasa selamat, dihargai dan diberi kuasa," kata Engelbert, menangani apa yang telah menjadi salah satu cabaran sukan wanita yang paling merosakkan. Anno

Pengenalan Python cemerlang sebagai bahasa pengaturcaraan, terutamanya dalam sains data dan AI generatif. Manipulasi data yang cekap (penyimpanan, pengurusan, dan akses) adalah penting apabila berurusan dengan dataset yang besar. Kami pernah meliputi nombor dan st

Sebelum menyelam, kaveat penting: Prestasi AI adalah spesifik yang tidak ditentukan dan sangat digunakan. Dalam istilah yang lebih mudah, perbatuan anda mungkin berbeza -beza. Jangan ambil artikel ini (atau lain -lain) sebagai perkataan akhir -sebaliknya, uji model ini pada senario anda sendiri

Membina portfolio AI/ML yang menonjol: Panduan untuk Pemula dan Profesional Mewujudkan portfolio yang menarik adalah penting untuk mendapatkan peranan dalam kecerdasan buatan (AI) dan pembelajaran mesin (ML). Panduan ini memberi nasihat untuk membina portfolio

Hasilnya? Pembakaran, ketidakcekapan, dan jurang yang melebar antara pengesanan dan tindakan. Tak satu pun dari ini harus datang sebagai kejutan kepada sesiapa yang bekerja dalam keselamatan siber. Janji Agentic AI telah muncul sebagai titik perubahan yang berpotensi. Kelas baru ini

Impak segera berbanding perkongsian jangka panjang? Dua minggu yang lalu Openai melangkah ke hadapan dengan tawaran jangka pendek yang kuat, memberikan akses kepada pelajar A.S. dan Kanada.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.