Strategi hyperparameter adalah rencana kerja untuk menala parameter yang tidak dipelajari oleh gradien, dan nilainya ditentukan oleh eksperimen pada data validasi. Topik ini mengurutkan hyperparameter menurut dampaknya, menetapkan urutan penalaan yang hemat anggaran, dan mendemonstrasikan pencarian kisi kecil yang dapat dijalankan penuh. Setelah selesai, penalaan berhenti menjadi percobaan acak dan menjadi prosedur yang anggarannya dapat dihitung.
Mengurutkan hyperparameter menurut dampak#
Tidak semua hyperparameter sederajat, dan kesalahan anggaran terbesar adalah menala semuanya sekaligus. Urutan dampak yang dipakai sepanjang jalur ini dimulai dari learning rate beserta jadwalnya, karena tak ada hyperparameter lain yang memutahkan pelatihan meledak atau mati secepat itu. Posisi kedua diisi kapasitas model berupa jumlah layer dan lebar, yang menentukan batas atas kinerja dan biaya komputasi. Posisi ketiga diisi regularisasi berupa weight decay dan dropout, yang menyeimbangkan kesenjangan train-validasi yang terlihat setelah dua posisi pertama teratasi. Sisanya, termasuk ukuran batch dan detail augmentasi, menempati posisi terakhir karena dampaknya lebih halus.
Alasan pengurutan ini bersifat mekanis. Learning rate yang salah satu tingkat besar membuat hyperparameter lain terlihat buruk meskipun sebenarnya baik, sehingga menala di bawahnya sia-sia. Kapasitas yang salah satu tingkat besar membuat regularisasi tak berarti, karena model yang terlalu kecil tidak overfit sebagaimana model yang terlalu besar tidak underfit. Urutan ini memastikan setiap penalaan dilakukan pada lantai yang sudah rapi.
Urutan kerja penalaan#
Prosedur kerjanya lima langkah dan berjalan dari yang paling murah. Pertama, jalankan baseline dengan nilai bawaan yang wajar, misalnya lr 0,001 untuk Adam atau 0,1 dengan momentum untuk SGD, tanpa penalaan apa pun, dan catat kurva train-validasinya. Kedua, pindai learning rate dengan faktor kelipatan tiga atau sepuluh, misalnya 0,1, 0,03, 0,01, dan 0,003, pada pelatihan singkat yang panjangnya cukup untuk memisahkan calon. Ketiga, tetapkan kapasitas berdasarkan apakah baseline underfit atau overfit, dan tahan keinginan menambah layer sebelum diagnosisnya jelas.
Keempat, tala regularisasi pada konfigurasi terbaik, dengan membaca kesenjangan kurva sebagaimana diajarkan modul Disiplin pelatihan. Kelima, kembalikan pelatihan penuh dengan jadwal learning rate yang lengkap, dan hanya pada tahap ini pencarian yang lebih mahal seperti kisi atau acak dibenarkan bila masalahnya bernilai. Setiap langkah mengubah satu kelompok hyperparameter, karena perubahan serentak membuat kausalitasnya tak terbaca.
Pencarian kisi kecil yang dapat dijalankan#
Pencarian kisi (grid search) menilai semua kombinasi dari sekumpulan nilai, dan biayanya tumbuh sebagai hasil kali ukuran setiap sumbu. Kode berikut menjalankan kisi dua dimensi kecil, yaitu learning rate dan weight decay pada dua nilai masing-masing, atas regresi sintetis dengan pelatihan dua ratus langkah per kombinasi, lalu mengurutkan hasilnya pada validasi.
import torch
import torch.nn as nn
torch.manual_seed(0)
X = torch.randn(256, 4)
t = X @ torch.tensor([2.0, -1.0, 0.5, 0.0]) + 0.1 * torch.randn(256)
X_val, t_val = X[192:], t[192:]
X, t = X[:192], t[:192]
hasil = []
for lr in (0.01, 0.1):
for wd in (0.0, 1e-2):
torch.manual_seed(0)
model = nn.Linear(4, 1)
opt = torch.optim.SGD(model.parameters(), lr=lr, weight_decay=wd)
for _ in range(200):
opt.zero_grad()
((model(X).squeeze(1) - t) ** 2).mean().backward()
opt.step()
with torch.no_grad():
val = float(((model(X_val).squeeze(1) - t_val) ** 2).mean())
hasil.append((val, lr, wd))
hasil.sort()
for val, lr, wd in hasil:
print(f"lr={lr} wd={wd}: val mse = {val:.5f}")lr=0.1 wd=0.01: val mse = 0.01354
lr=0.1 wd=0.0: val mse = 0.01390
lr=0.01 wd=0.0: val mse = 0.02033
lr=0.01 wd=0.01: val mse = 0.02222Empat kombinasi dievaluasi dengan benih yang sama sehingga perbandingannya adil, dan kombinasi dengan lr 0,1 memberi hasil terbaik pada validasi pada masalah ini. Dua hal menjadikan contoh ini contoh yang jujur, yaitu setiap kombinasi memakai benih dan data yang identik sehingga selisihnya murni milik hyperparameter, dan ukuran kisi tetap kecil karena setiap tambahan sumbu menggandakan biayanya.
Anggaran, keacakan, dan kaidah pelaporan#
Anggaran pencarian dihitung sebagai hasil kali jumlah kombinasi dengan biaya satu pelatihan, dan aturan penghematannya tiga. Pertama, pelatihan singkat dengan jadwal yang sama untuk semua kandidat menyaring sebagian besar calon, dan hanya finalis yang diberi pelatihan penuh. Kedua, setiap kandidat diuji dengan benih yang sama agar variansi keacakan tidak menutupi perbedaan hyperparameter, dan pada masalah yang bising, beberapa benihtambahan untuk finalis memberi gambaran variansinya. Ketiga, pencarian acak mengungguli kisi ketika sumbunya banyak, karena tidak semua hyperparameter sama pentingnya dan sampel acak menjangkau kombinasi yang tidak dikunjungi kisi.
Pelaporan yang baik mencatat tiga hal untuk setiap eksperimen, yaitu konfigurasi penuh termasuk benih, metrik validasi beserta kurvanya, dan konfigurasi yang menang beserta alasannya. Catatan ini menjadi bahan mentah topik Pelacakan eksperimen pada modul Production, dan tanpa catatan tersebut, penalaan ulang enam bulan kemudian berarti mengulang seluruh pencarian dari nol.
Ringkasan#
- Hyperparameter ditala menurut urutan dampak, yaitu learning rate, kapasitas, regularisasi, dan selebihnya.
- Prosedur kerjanya lima langkah dari baseline, pemindaian learning rate, kapasitas, regularisasi, hingga pelatihan penuh, dengan satu kelompok per perubahan.
- Kisi kecil dengan benih dan data yang identik membuat perbandingan adil, dan biaya kisi tumbuh hasil kali ukuran setiap sumbunya.
- Pelatihan singkat menyaring kandidat, pelatihan penuh hanya untuk finalis, dan setiap eksperimen dilaporkan dengan konfigurasi, benih, serta kurvanya.
Referensi#
- Hyperparameter Optimization — Dive into Deep Learning — Bab pengerjaan proyek yang memuat praktik pemilihan dan validasi hyperparameter.
- Random Search for Hyper-Parameter Optimization — JMLR — Makalah Bergstra dan Bengio yang menunjukkan keunggulan pencarian acak pada sumbu yang banyak.
- Deep Learning Tuning Playbook — Google Research — Panduan praktis yang menetapkan urutan penalaan berbasis dampak yang serupa.