Penyesuaian hyperparameter memanfaatkan infrastruktur pemrosesan Google Cloud untuk menguji berbagai konfigurasi hyperparameter saat melatih model Anda. Penyesuaian ini dapat memberi Anda nilai yang dioptimalkan untuk hyperparameter, yang memaksimalkan akurasi prediktif model Anda.
Apa itu hyperparameter?
Hyperparameter berisi data yang mengatur proses pelatihan itu sendiri.
Aplikasi pelatihan Anda menangani tiga kategori data saat melatih model Anda:
Data input Anda (juga disebut data pelatihan) adalah kumpulan data individu (instance) yang berisi fitur yang penting untuk masalah machine learning Anda. Data ini digunakan selama pelatihan untuk mengonfigurasi model Anda agar dapat secara akurat membuat prediksi tentang instance baru dari data serupa. Namun, nilai dalam data input tidak pernah langsung menjadi bagian dari model Anda.
Parameter model Anda adalah variabel yang digunakan teknik machine learning pilihan Anda untuk menyesuaikan dengan data Anda. Misalnya, jaringan neural dalam (DNN) terdiri dari node pemrosesan (neuron), masing-masing dengan operasi yang dilakukan pada data saat berpindah melalui jaringan. Saat DNN dilatih, setiap node memiliki nilai bobot yang memberi tahu model Anda seberapa besar dampak model tersebut terhadap prediksi akhir. Bobot tersebut adalah contoh parameter model Anda. Dalam banyak hal, parameter model Anda adalah model—parameter inilah yang membedakan model tertentu dari model lain dengan jenis sama yang bekerja pada data serupa.
Hyperparameter Anda adalah variabel yang mengatur proses pelatihan itu sendiri. Misalnya, bagian dari mendesain DNN adalah menentukan jumlah lapisan node tersembunyi yang digunakan di antara lapisan input dan output, serta jumlah node yang harus digunakan setiap lapisan tersembunyi. Variabel ini tidak berkaitan langsung dengan data pelatihan. Variabel ini adalah variabel konfigurasi. Perhatikan bahwa parameter berubah selama tugas pelatihan, sedangkan hyperparameter biasanya bersifat konstan selama tugas.
Parameter model dioptimalkan (Anda bisa mengatakan "disesuaikan") oleh proses pelatihan: Anda menjalankan data melalui operasi model, membandingkan prediksi yang dihasilkan dengan nilai aktual untuk setiap instance data, mengevaluasi keakuratannya, dan menyesuaikannya hingga Anda menemukan nilai terbaik. Hyperparameter disesuaikan dengan menjalankan seluruh tugas pelatihan, melihat akurasi agregat, dan menyesuaikannya. Di kedua kasus tersebut, Anda memodifikasi komposisi model guna menemukan kombinasi terbaik untuk menangani masalah.
Tanpa teknologi otomatis seperti penyesuaian hyperparameter Vertex AI, Anda perlu melakukan penyesuaian manual terhadap hyperparameter selama berbagai pelatihan yang dijalankan untuk mendapatkan nilai yang optimal. Penyesuaian hyperparameter membuat proses penentuan setelan hyperparameter terbaik menjadi lebih mudah dan tidak melelahkan.
Cara kerja penyesuaian hyperparameter
Penyesuaian hyperparameter berfungsi dengan menjalankan beberapa uji coba aplikasi pelatihan Anda dengan nilai untuk hyperparameter yang dipilih, yang ditetapkan dalam batas yang Anda tentukan. Vertex AI melacak hasil dari setiap uji coba dan melakukan penyesuaian untuk uji coba berikutnya. Saat tugas selesai, Anda dapat mendapatkan ringkasan semua uji coba beserta konfigurasi nilai yang paling efektif sesuai dengan kriteria yang Anda tentukan.
Penyesuaian hyperparameter memerlukan komunikasi eksplisit antara Vertex AI dan aplikasi pelatihan Anda. Aplikasi pelatihan Anda menentukan semua informasi yang dibutuhkan model Anda. Anda menentukan hyperparameter (variabel) yang ingin Anda sesuaikan, dan menargetkan variabel yang digunakan untuk mengevaluasi setiap uji coba.
Pelajari lebih lanjut pengoptimalan Bayesian untuk penyesuaian hyperparameter.
Selain pengoptimalan Bayesian, Vertex AI juga mengoptimalkan di seluruh tugas penyesuaian hyperparameter. Jika Anda melakukan penyesuaian hyperparameter terhadap model serupa, dengan mengubah fungsi objektif saja atau menambah kolom input baru, Vertex AI dapat meningkat seiring waktu dan membuat penyesuaian hyperparameter menjadi lebih efisien.
Hal-hal yang dioptimalkan oleh penyesuaian hyperparameter
Penyesuaian hyperparameter mengoptimalkan variabel target yang Anda tentukan, yang disebut metrik hyperparameter. Akurasi model, yang dihitung dari tahap evaluasi, merupakan metrik yang umum. Metrik harus bersifat numerik.
Saat mengonfigurasi tugas penyesuaian hyperparameter, Anda menentukan nama dan sasaran setiap metrik. Sasaran tersebut menentukan apakah Anda ingin menyesuaikan model untuk memaksimalkan atau meminimalkan nilai metrik tersebut.
Cara Vertex AI mendapatkan metrik
Gunakan paket Python cloudml-hypertune
untuk meneruskan
metrik ke Vertex AI. Library ini menyediakan fungsi bantuan untuk
melaporkan metrik ke Vertex AI.
Pelajari lebih lanjut metrik hyperparameter pelaporan.
Alur nilai hyperparameter
Tanpa penyesuaian hyperparameter, Anda dapat menetapkan hyperparameter menggunakan alat apa pun sesuai keinginan Anda dalam aplikasi pelatihan Anda. Misalnya, Anda dapat mengonfigurasi hyperparameter dengan meneruskan argumen command line ke modul aplikasi utama, atau menyertakannya ke aplikasi Anda dalam file konfigurasi.
Saat menggunakan penyesuaian hyperparameter, Anda harus menggunakan prosedur berikut untuk menetapkan nilai hyperparameter yang Anda gunakan untuk penyesuaian:
Tentukan argumen command line dalam modul pelatihan utama untuk setiap hyperparameter yang disesuaikan.
Gunakan nilai yang diteruskan dalam argumen tersebut untuk menetapkan hyperparameter yang sesuai dalam kode aplikasi Anda.
Saat mengonfigurasi tugas penyesuaian hyperparameter, Anda menentukan setiap hyperparameter yang akan disesuaikan, jenis datanya, serta rentang nilai yang akan dicoba. Anda mengidentifikasi setiap hyperparameter menggunakan nama yang sama dengan nama argumen yang sesuai yang Anda tentukan dalam modul utama. Layanan pelatihan menyertakan argumen command line menggunakan nama tersebut saat menjalankan aplikasi Anda.
Pelajari lebih lanjut persyaratan untuk mengurai argumen command line.
Memilih hyperparameter yang akan disesuaikan
Ada sedikit saran universal yang dapat diberikan terkait cara memilih hyperparameter mana yang harus Anda sesuaikan. Jika Anda sudah berpengalaman dengan teknik machine learning yang digunakan, Anda mungkin memiliki insight tentang perilaku hyperparameternya. Anda juga dapat menemukan saran dari komunitas machine learning.
Apa pun yang Anda pilih, Anda harus memahami implikasinya. Setiap hyperparameter yang Anda pilih untuk disesuaikan memiliki potensi untuk meningkatkan jumlah uji coba yang diperlukan agar tugas penyesuaian berhasil. Saat Anda menjalankan tugas penyesuaian hyperparameter di Vertex AI, jumlah yang dikenakan biaya akan didasarkan pada durasi uji coba yang dimulai oleh tugas penyesuaian hyperparameter Anda. Dengan secara cermat memilih hyperparameter yang akan disesuaikan, Anda dapat menghemat waktu dan biaya untuk tugas penyesuaian hyperparameter.
Jenis data hyperparameter
Di objek ParameterSpec, Anda menentukan jenis data hyperparameter sebagai instance dari spesifikasi nilai parameter. Tabel berikut mencantumkan spesifikasi nilai parameter yang didukung.
Jenis | Jenis data | Rentang nilai | Data nilai |
---|---|---|---|
DoubleValueSpec |
DOUBLE |
minValue & maxValue |
Nilai floating point |
IntegerValueSpec |
INTEGER |
minValue & maxValue |
Nilai bilangan bulat |
CategoricalValueSpec |
CATEGORICAL |
categoricalValues |
Daftar string kategori |
DiscreteValueSpec |
DISCRETE |
discreteValues |
Daftar nilai dalam urutan menaik |
Menskalakan hyperparameter
Di objek ParameterSpec
, Anda dapat menentukan bahwa penskalaan
harus dilakukan pada hyperparameter ini. Penskalaan direkomendasikan untuk
jenis data GANDA dan BILANGAN BULAT. Jenis penskalaan yang tersedia adalah:
SCALE_TYPE_UNSPECIFIED
: Tidak ada penskalaan yang diterapkan ke hyperparameter ini.UNIT_LINEAR_SCALE
: Menskalakan ruang yang dimungkinkan secara linear 0 hingga 1.UNIT_LOG_SCALE
: Menskalakan ruang yang dimungkinkan secara logaritmik 0 hingga 1. Seluruh ruang yang dimungkinkan harus benar-benar positif.UNIT_REVERSE_LOG_SCALE
: Menskalakan ruang yang dimungkinkan "secara terbalik" secara logaritmik 0 hingga 1. Hasilnya adalah nilai yang dekat dengan bagian atas ruang yang diizinkan akan lebih tersebar daripada titik yang dekat dengan bagian bawah. Seluruh ruang yang dimungkinkan harus benar-benar positif.
Hyperparameter bersyarat
Dengan objek ConditionalParameterSpec
, Anda dapat menambah
hyperparameter ke uji coba saat nilai hyperparameter induknya sesuai
dengan kondisi yang Anda tentukan.
Misalnya, Anda dapat menentukan tugas penyesuaian hyperparameter untuk
menemukan model yang optimal menggunakan regresi linear atau jaringan neural
dalam (DNN). Agar tugas penyesuaian Anda dapat menentukan
metode pelatihan, Anda harus menentukan hyperparameter kategoris bernama training_method
dengan opsi berikut:
LINEAR_REGRESSION
dan DNN
. Jika training_method
adalah
LINEAR_REGRESSION
, tugas penyesuaian Anda harus menentukan hyperparameter untuk
kecepatan pembelajaran. Jika training_method
adalah DNN
, tugas penyesuaian Anda
harus menentukan parameter untuk kecepatan pembelajaran dan
jumlah lapisan tersembunyi.
Karena jumlah lapisan tersembunyi hanya berlaku jika training_method
uji coba
adalah DNN
, Anda menentukan parameter bersyarat yang menambahkan
hyperparameter bernama num_hidden_layers
jika training_method
adalah DNN
.
Karena kecepatan pembelajaran digunakan oleh kedua opsi training_method
, Anda harus
memutuskan apakah hyperparameter bersayarat ini harus dibagikan. Jika
hyperparameter dibagikan, tugas penyesuaian akan menggunakan apa yang telah dipelajarinya dari
uji coba LINEAR_REGRESSION
dan DNN
untuk menyesuaikan kecepatan pembelajaran. Dalam hal ini,
lebih masuk akal memiliki kecepatan pembelajaran terpisah untuk setiap training_method
karena kecepatan pembelajaran untuk melatih model menggunakan LINEAR_REGRESSION
tidak
akan memengaruhi kecepatan pembelajaran untuk pelatihan model menggunakan DNN
. Jadi, Anda menentukan
hyperparameter bersyarat berikut:
- Hyperparameter bernama
learning_rate
yang ditambahkan saattraining_method
adalahLINEAR_REGRESSION
. - Hyperparameter bernama
learning_rate
yang ditambahkan saattraining_method
adalahDNN
.
Dengan hyperparameter bersyarat, Anda dapat menentukan hyperparameter untuk tugas penyesuaian sebagai grafik. Dengan begitu, Anda dapat menyesuaikan proses pelatihan menggunakan teknik pelatihan yang berbeda, masing-masing dengan dependensi hyperparameternya sendiri.
Algoritma penelusuran
Anda dapat menentukan algoritma penelusuran di objek StudySpec
.
Jika tidak menentukan algoritma, tugas Anda akan menggunakan algoritma
default Vertex AI. Algoritma default menerapkan pengoptimalan
Bayesian untuk mendapatkan solusi optimal dengan penelusuran yang lebih efektif
pada ruang parameter.
Nilai yang tersedia di antaranya:
ALGORITHM_UNSPECIFIED
: Sama seperti jika algoritma tidak ditentukan. Vertex AI memilih algoritma penelusuran terbaik antara bandit proses Gaussian, penelusuran kombinasi linear, atau variannya.GRID_SEARCH
: Penelusuran petak sederhana dalam ruang yang dimungkinkan. Opsi ini sangat berguna jika Anda ingin menentukan jumlah uji coba yang lebih besar dari jumlah titik dalam ruang yang dimungkinkan. Dalam kasus semacam ini, jika Anda tidak menentukan penelusuran petak, algoritma default Vertex AI dapat menghasilkan saran duplikat. Untuk menggunakan penelusuran petak, semua parameter harus berjenisINTEGER
,CATEGORICAL
, atauDISCRETE
.RANDOM_SEARCH
: Penelusuran acak sederhana dalam ruang yang dimungkinkan.
Langkah selanjutnya
- Mempelajari cara mengimplementasikan penyesuaian hyperparameter untuk tugas pelatihan
- Membaca postingan blog tentang pengoptimalan Bayesian dan penyesuaian hyperparameter.