Ringkasan penyesuaian hyperparameter

Dalam machine learning, penyesuaian hyperparameter mengidentifikasi sekumpulan hyperparameter yang optimal untuk suatu algoritma pembelajaran. Hyperparameter adalah argumen model yang nilainya ditetapkan sebelum proses pembelajaran dimulai. Sebaliknya, nilai parameter lain seperti koefisien model linear dipelajari.

Penyesuaian hyperparameter memungkinkan Anda menghabiskan lebih sedikit waktu untuk melakukan iterasi hyperparameter secara manual dan memberi Anda lebih banyak waktu untuk fokus dalam menjelajahi insight dari data.

Anda dapat menentukan opsi penyesuaian hyperparameter untuk jenis model berikut:

Untuk jenis model ini, penyesuaian hyperparameter akan diaktifkan saat Anda menentukan nilai untuk opsi NUM_TRIALS dalam pernyataan CREATE MODEL.

Untuk mencoba menjalankan penyesuaian hyperparameter pada model regresi linear, lihat Menggunakan penyesuaian hyperparameter BigQuery ML untuk meningkatkan performa model.

Model berikut juga mendukung penyesuaian hyperparameter, tetapi tidak mengizinkan Anda untuk menentukan nilai tertentu:

  • Model AutoML Tables memiliki penyesuaian hyperparameter otomatis yang disematkan dalam pelatihan model secara default.
  • Model ARIMA_PLUS memungkinkan Anda menetapkan argumen AUTO_ARIMA untuk melakukan penyesuaian hyperparameter menggunakan algoritma auto.ARIMA. Algoritma ini menjalankan penyesuaian hyperparameter untuk modul tren. Penyesuaian hyperparameter tidak didukung untuk seluruh pipeline pemodelan.

Untuk mengetahui informasi tentang pernyataan dan fungsi SQL yang didukung untuk setiap jenis model, lihat Perjalanan pengguna menyeluruh untuk setiap model.

Lokasi

Untuk mengetahui informasi tentang lokasi yang mendukung penyesuaian hyperparameter, lihat Lokasi BigQuery ML.

Menetapkan hyperparameter

Untuk menyesuaikan hyperparameter, Anda harus menentukan rentang nilai untuk hyperparameter yang dapat digunakan model untuk serangkaian uji coba. Anda dapat melakukannya dengan menggunakan salah satu kata kunci berikut saat menetapkan hyperparameter dalam pernyataan CREATE MODEL, bukan memberikan satu nilai:

  • HPARAM_RANGE: Nilai ARRAY(FLOAT64) dua elemen yang menentukan batas minimum dan maksimum ruang penelusuran dari nilai berkelanjutan untuk hyperparameter. Gunakan opsi ini untuk menentukan rentang nilai untuk hyperparameter, misalnya LEARN_RATE = HPARAM_RANGE(0.0001, 1.0).

  • HPARAM_CANDIDATES: Nilai ARRAY(STRUCT) yang menentukan kumpulan nilai terpisah untuk hyperparameter. Gunakan opsi ini untuk menentukan sekumpulan nilai untuk hyperparameter, misalnya OPTIMIZER = HPARAM_CANDIDATES(['ADAGRAD', 'SGD', 'FTRL']).

Hyperparameter dan tujuan

Tabel berikut mencantumkan hyperparameter dan tujuan yang didukung untuk setiap jenis model yang mendukung penyesuaian hyperparameter:

Jenis model Tujuan hyperparameter Hyperparameter Rentang valid Rentang default Jenis skala
LINEAR_REG MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR

MEAN_SQUARED_LOG_ERROR

MEDIAN_ABSOLUTE_ERROR

R2_SCORE (default)

EXPLAINED_VARIANCE
L1_REG

L2_REG
(0, ∞]

(0, ∞]
(0, 10]

(0, 10]
LOG

LOG
LOGISTIC_REG PRECISION

RECALL

ACCURACY

F1_SCORE

LOG_LOSS

ROC_AUC (default)
L1_REG

L2_REG
(0, ∞]

(0, ∞]
(0, 10]

(0, 10]
LOG

LOG
KMEANS DAVIES_BOULDIN_INDEX NUM_CLUSTERS [2, 100] [2, 10] LINEAR
MATRIX_
FACTORIZATION
(eksplisit)
MEAN_SQUARED_ERROR NUM_FACTORS

L2_REG
[2, 200]

(0, ∞)
[2, 20]

(0, 10]
LINEAR

LOG
MATRIX_
FACTORIZATION
(implisit)
MEAN_AVERAGE_PRECISION (default)

MEAN_SQUARED_ERROR

NORMALIZED_DISCOUNTED_CUMULATIVE_GAIN

AVERAGE_RANK
NUM_FACTORS

L2_REG

WALS_ALPHA
[2, 200]

(0, ∞)

[0, ∞)
[2, 20]

(0, 10]

[0, 100]
LINEAR

LOG

LINEAR
AUTOENCODER MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR (default)

MEAN_SQUARED_LOG_ERROR
LEARN_RATE

BATCH_SIZE

L1_REG

L2_REG

L1_REG_ACTIVATION

DROPOUT

HIDDEN_UNITS


OPTIMIZER



ACTIVATION_FN
[0, 1]

(0, ∞)

(0, ∞)

(0, ∞)

(0, ∞)


[0, 1)

Array [1, ∞)

{ADAM, ADAGRAD, FTRL, RMSPROP, SGD}

{RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
[0, 1]

[16, 1024]

(0, 10]

(0, 10]

(0, 10]


[0, 0.8]

T/A

{ADAM, ADAGRAD, FTRL, RMSPROP, SGD}

T/A
LOG

LOG

LOG

LOG

LOG


LINEAR

T/A

T/A



T/A
DNN_CLASSIFIER PRECISION

RECALL

ACCURACY

F1_SCORE

LOG_LOSS

ROC_AUC (default)
BATCH_SIZE

DROPOUT

HIDDEN_UNITS

LEARN_RATE

OPTIMIZER



L1_REG

L2_REG

ACTIVATION_FN
(0, ∞)

[0, 1)

Array [1, ∞)

[0, 1]

{ADAM, ADAGRAD, FTRL, RMSPROP, SGD}

(0, ∞)

(0, ∞)

{RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
[16, 1024]

[0, 0.8]

T/A

[0, 1]

{ADAM, ADAGRAD, FTRL, RMSPROP, SGD}

(0, 10]

(0, 10]

T/A
LOG

LINEAR

T/A

LINEAR

T/A



LOG

LOG

T/A
DNN_REGRESSOR MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR

MEAN_SQUARED_LOG_ERROR

MEDIAN_ABSOLUTE_ERROR

R2_SCORE (default)

EXPLAINED_VARIANCE
DNN_LINEAR_
COMBINED_
CLASSIFIER
PRECISION

RECALL

ACCURACY

F1_SCORE

LOG_LOSS

ROC_AUC (default)
BATCH_SIZE

DROPOUT

HIDDEN_UNITS

L1_REG

L2_REG

ACTIVATION_FN
(0, ∞)

[0, 1)

Array [1, ∞)

(0, ∞)

(0, ∞)

{RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
[16, 1024]

[0, 0.8]

T/A

(0, 10]

(0, 10]

T/A
LOG

LINEAR

T/A

LOG

LOG

T/A
DNN_LINEAR_
COMBINED_
REGRESSOR
MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR

MEAN_SQUARED_LOG_ERROR

MEDIAN_ABSOLUTE_ERROR

R2_SCORE (default)

EXPLAINED_VARIANCE
BOOSTED_TREE_
CLASSIFIER
PRECISION

RECALL

ACCURACY

F1_SCORE

LOG_LOSS

ROC_AUC (default)
LEARN_RATE

L1_REG

L2_REG

DROPOUT

MAX_TREE_DEPTHMAX_TREE_DEPTH

SUBSAMPLE

MIN_SPLIT_LOSS

NUM_PARALLEL_TREE

MIN_TREE_CHILD_WEIGHT

COLSAMPLE_BYTREE

COLSAMPLE_BYLEVEL

COLSAMPLE_BYNODE

BOOSTER_TYPE

DART_NORMALIZE_TYPE

TREE_METHOD
[0, ∞)

(0, ∞)

(0, ∞)

[0, 1]

[1, 20]



(0, 1]

[0, ∞)

[1, ∞)


[0, ∞)


[0, 1]


[0, 1]


[0, 1]


{GBTREE, DART}

{TREE, FOREST}

{AUTO, EXACT, APPROX, HIST}
[0, 1]

(0, 10]

(0, 10]

T/A

[1, 10]



(0, 1]

T/A

T/A


T/A


T/A


T/A


T/A


T/A

T/A

T/A
LINEAR

LOG

LOG

LINEAR

LINEAR



LINEAR

LINEAR

LINEAR


LINEAR


LINEAR


LINEAR


LINEAR


T/A

T/A

T/A
BOOSTED_TREE_
REGRESSOR






MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR

MEAN_SQUARED_LOG_ERROR

MEDIAN_ABSOLUTE_ERROR

R2_SCORE (default)

EXPLAINED_VARIANCE
RANDOM_FOREST_
CLASSIFIER
PRECISION

RECALL

ACCURACY

F1_SCORE

LOG_LOSS

ROC_AUC (default)
L1_REG

L2_REG

MAX_TREE_DEPTH

SUBSAMPLE

MIN_SPLIT_LOSS

NUM_PARALLEL_TREE

MIN_TREE_CHILD_WEIGHT

COLSAMPLE_BYTREE

COLSAMPLE_BYLEVEL

COLSAMPLE_BYNODE

TREE_METHOD
(0, ∞)

(0, ∞)

[1, 20]

(0, 1)

[0, ∞)

[2, ∞)


[0, ∞)


[0, 1]


[0, 1]


[0, 1]

{AUTO, EXACT, APPROX, HIST}
(0, 10]

(0, 10]

[1, 20]

(0, 1)

T/A

[2, 200]


T/A


T/A


T/A


T/A


T/A
LOG

LOG

LINEAR

LINEAR

LINEAR

LINEAR


LINEAR


LINEAR


LINEAR


LINEAR


T/A
RANDOM_FOREST_
REGRESSOR






MEAN_ABSOLUTE_ERROR

MEAN_SQUARED_ERROR

MEAN_SQUARED_LOG_ERROR

MEDIAN_ABSOLUTE_ERROR

R2_SCORE (default)

EXPLAINED_VARIANCE

Sebagian besar hyperparameter skala LOG menggunakan batas bawah terbuka 0. Anda masih dapat menetapkan 0 sebagai batas bawah dengan menggunakan kata kunci HPARAM_RANGE untuk menetapkan rentang hyperparameter. Misalnya, dalam model pengklasifikasi hierarki yang ditingkatkan, Anda dapat menetapkan rentang untuk hyperparameter L1_REG sebagai L1_REG = HPARAM_RANGE(0, 5). Nilai 0 akan dikonversi ke 1e-14.

Hyperparameter bersyarat didukung. Misalnya, pada model regresor hierarki yang ditingkatkan, Anda hanya dapat menyesuaikan hyperparameter DART_NORMALIZE_TYPE ketika nilai dari hyperparameter BOOSTER_TYPE adalah DART. Dalam hal ini, Anda menentukan ruang penelusuran dan kondisi akan ditangani secara otomatis, seperti ditunjukkan dalam contoh berikut:

BOOSTER_TYPE = HPARAM_CANDIDATES(['DART', 'GBTREE'])
DART_NORMALIZE_TYPE = HPARAM_CANDIDATES(['TREE', 'FOREST'])

Titik awal penelusuran

Jika Anda tidak menentukan ruang penelusuran untuk hyperparameter menggunakan HPARAM_RANGE atau HPARAM_CANDIDATES, penelusuran akan dimulai dari nilai default hyperparameter tersebut, seperti yang didokumentasikan dalam topik CREATE MODEL untuk jenis model itu. Misalnya, jika Anda menjalankan penyesuaian hyperparameter untuk model hierarki yang ditingkatkan, dan Anda tidak menetapkan nilai untuk hyperparameter L1_REG, maka pencarian akan dimulai dari 0, yang merupakan nilai defaultnya.

Jika Anda menentukan ruang penelusuran untuk hyperparameter dengan menggunakan HPARAM_RANGE atau HPARAM_CANDIDATES, titik awal penelusuran bergantung pada apakah ruang penelusuran yang ditentukan mencakup nilai default untuk hyperparameter tersebut, seperti yang didokumentasikan dalam topik CREATE MODEL untuk jenis model tersebut:

  • Jika rentang yang ditentukan berisi nilai default, di situlah penelusuran dimulai. Misalnya, jika Anda menjalankan penyesuaian hyperparameter untuk model faktorisasi matriks implisit, dan Anda menentukan nilai [20, 30, 40, 50] untuk hyperparameter WALS_ALPHA, lalu pencarian dimulai pada 40, nilai defaultnya.
  • Jika rentang yang ditentukan tidak berisi nilai default, penelusuran akan dimulai dari titik dalam rentang yang ditentukan, yang paling dekat dengan nilai default. Misalnya, jika Anda menentukan nilai [10, 20, 30] untuk hyperparameter WALS_ALPHA, penelusuran akan dimulai dari 30, yang merupakan nilai terdekat dengan nilai default 40.

Pembagian data

Saat Anda menentukan nilai untuk opsi NUM_TRIALS, layanan akan mengidentifikasi bahwa Anda melakukan penyesuaian hyperparameter dan otomatis melakukan pembagian 3 arah pada data input untuk membaginya menjadi set pelatihan, evaluasi, dan pengujian. Secara default, data input akan diacak, lalu dibagi 80% untuk pelatihan, 10% untuk evaluasi, dan 10% untuk pengujian.

Set pelatihan dan evaluasi digunakan di setiap pelatihan uji coba, sama seperti pada model yang tidak menggunakan penyesuaian hyperparameter. Saran hyperparameter uji coba dihitung berdasarkan metrik evaluasi model untuk jenis model tersebut. Di akhir setiap pelatihan uji coba, set pengujian digunakan untuk menguji uji coba dan mencatat metriknya dalam model. Hal ini akan memastikan objektivitas metrik evaluasi pelaporan akhir menggunakan data yang belum dianalisis oleh model. Data evaluasi digunakan untuk menghitung metrik perantara untuk saran hyperparameter, sedangkan data pengujian digunakan untuk menghitung metrik model objektif akhir.

Jika Anda hanya ingin menggunakan set pelatihan, tentukan NO_SPLIT untuk opsi DATA_SPLIT_METHOD dari pernyataan CREATE MODEL.

Jika Anda hanya ingin menggunakan set pelatihan dan evaluasi, tentukan 0 untuk opsi DATA_SPLIT_TEST_FRACTION dari pernyataan CREATE MODEL. Jika set pengujian kosong, set evaluasi digunakan sebagai set pengujian untuk pelaporan metrik evaluasi akhir.

Metrik dari model yang dihasilkan dari tugas pelatihan normal dan metrik dari tugas pelatihan penyesuaian hyperparameter hanya dapat dibandingkan jika fraksi pemisahan data sama. Misalnya, model berikut ini dapat dibandingkan:

  • Penyesuaian non-hyperparameter: DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2
  • Penyesuaian hyperparameter: DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2, DATA_SPLIT_TEST_FRACTION=0

Performa

Performa model saat menggunakan penyesuaian hyperparameter biasanya tidak lebih buruk dari performa model jika menggunakan ruang penelusuran default dan tidak menggunakan penyesuaian hyperparameter. Model yang menggunakan ruang penelusuran default dan tidak menggunakan penyesuaian hyperparameter selalu menggunakan hyperparameter default dalam uji coba pertama.

Guna mengonfirmasi peningkatan performa model yang disediakan oleh penyesuaian hyperparameter, bandingkan uji coba optimal untuk model penyesuaian hyperparameter dengan uji coba pertama untuk model penyesuaian non-hyperparameter.

Pemelajaran transfer

Pemelajaran transfer diaktifkan secara default saat Anda menetapkan opsi HPARAM_TUNING_ALGORITHM dalam pernyataan CREATE MODEL ke VIZIER_DEFAULT. Penyesuaian hyperparameter untuk suatu model akan bermanfaat dengan mempelajari model yang telah disesuaikan sebelumnya jika memenuhi persyaratan berikut:

  • Model ini memiliki jenis model yang sama dengan model yang disesuaikan sebelumnya.
  • Model ini berada dalam project yang sama dengan model yang disesuaikan sebelumnya.
  • Model ini menggunakan ruang penelusuran hyperparameter yang sama ATAU subset ruang penelusuran hyperparameter dari model yang disesuaikan sebelumnya. Subset menggunakan nama dan jenis hyperparameter yang sama, tetapi tidak harus memiliki rentang yang sama. Misalnya, (a:[0, 10]) dianggap sebagai subset (a:[-1, 1], b:[0, 1]).

Pemelajaran transfer tidak mengharuskan data input sama.

Pemelajaran transfer membantu memecahkan masalah cold start saat sistem melakukan eksplorasi acak selama batch uji coba pertama. Pemelajaran transfer memberi sistem beberapa pengetahuan awal tentang hyperparameter dan tujuannya. Untuk terus meningkatkan kualitas model, selalu latih model penyesuaian hyperparameter yang baru dengan hyperparameter yang sama atau suatu subset hyperparameter.

Pemelajaran transfer membantu penyesuaian hyperparameter menyatu lebih cepat, bukan membantu submodel untuk menyatu.

Penanganan error

Penyesuaian hyperparameter menangani error dengan cara berikut:

  • Pembatalan: Jika tugas pelatihan dibatalkan saat berjalan, semua uji coba yang berhasil akan tetap dapat digunakan.

  • Input tidak valid: Jika input pengguna tidak valid, layanan akan menampilkan error pengguna.

  • Hyperparameter tidak valid: Jika hyperparameter tidak valid untuk suatu uji coba, uji coba akan dilewati dan ditandai sebagai INFEASIBLE dalam output dari fungsi ML.TRIAL_INFO.

  • Error internal uji coba: Jika lebih dari 10% nilai NUM_TRIALS gagal karena INTERNAL_ERROR, tugas pelatihan akan berhenti dan menampilkan error pengguna.

  • Jika kurang dari 10% nilai NUM_TRIALS gagal karena INTERNAL_ERROR, pelatihan akan dilanjutkan dengan uji coba gagal yang ditandai sebagai FAILED di output dari fungsi ML.TRIAL_INFO.

Fungsi penyaluran model

Anda dapat menggunakan model output dari penyesuaian hyperparameter dengan sejumlah fungsi penyaluran model yang ada. Untuk menggunakan fungsi ini, ikuti aturan berikut:

  • Jika fungsi mengambil data input, hanya hasil dari satu uji coba yang ditampilkan. Secara default, ini adalah uji coba yang optimal, tetapi Anda juga dapat memilih uji coba tertentu dengan menentukan TRIAL_ID sebagai argumen untuk fungsi yang diberikan. Anda bisa mendapatkan TRIAL_ID dari output fungsi ML.TRIAL_INFO. Fungsi berikut ini didukung:

  • Jika fungsi ini tidak mengambil data input, semua hasil uji coba akan ditampilkan, dan kolom output pertama adalah TRIAL_ID. Fungsi berikut didukung:

Output dari ML.FEATURE_INFO tidak berubah, karena semua uji coba memiliki data input yang sama.

Metrik evaluasi dari ML.EVALUATE dan ML.TRIAL_INFO dapat berbeda karena cara data input dibagi. Secara default, ML.EVALUATE dijalankan terhadap data pengujian, sedangkan ML.TRIAL_INFO dijalankan pada data evaluasi. Untuk mengetahui informasi selengkapnya, lihat Pemisahan data.

Fungsi yang tidak didukung

Fungsi ML.TRAINING_INFO menampilkan informasi untuk setiap iterasi, dan hasil iterasi tidak disimpan dalam model penyesuaian hyperparameter. Hasil uji coba justru yang disimpan. Anda dapat menggunakan fungsi ML.TRIAL_INFO untuk mendapatkan informasi tentang hasil uji coba.

Ekspor model

Anda dapat mengekspor model yang dibuat dengan penyesuaian hyperparameter ke lokasi Cloud Storage menggunakan pernyataan EXPORT MODEL. Anda dapat mengekspor uji coba optimal default atau uji coba apa pun yang ditentukan.

Harga

Biaya pelatihan penyesuaian hyperparameter adalah jumlah biaya dari semua uji coba yang dijalankan. Harga uji coba konsisten dengan model harga BigQuery ML yang ada.

FAQ

Bagian ini memberikan jawaban atas beberapa pertanyaan umum (FAQ) tentang penyesuaian hyperparameter.

Berapa banyak uji coba yang saya perlukan untuk menyesuaikan model?

Sebaiknya gunakan minimal 10 uji coba untuk satu hyperparameter, sehingga total jumlah uji coba seharusnya minimal 10 * num_hyperparameters. Jika Anda menggunakan ruang penelusuran default, lihat kolom Hyperparameters di tabel Hyperparameter dan tujuan untuk mengetahui jumlah hyperparameter yang disesuaikan secara default untuk jenis model tertentu.

Bagaimana jika saya tidak melihat peningkatan performa menggunakan penyesuaian hyperparameter?

Pastikan Anda mengikuti panduan dalam dokumen ini untuk mendapatkan perbandingan yang adil. Jika Anda tetap tidak melihat peningkatan performa, itu mungkin berarti hyperparameter default sudah bekerja dengan baik untuk Anda. Anda mungkin ingin fokus pada rekayasa fitur atau mencoba jenis model lainnya sebelum mencoba putaran penyesuaian hyperparameter lainnya.

Bagaimana jika saya ingin melanjutkan penyesuaian model?

Melatih model penyesuaian hyperparameter baru dengan ruang penelusuran yang sama. Pemelajaran transfer bawaan membantu melanjutkan penyesuaian berdasarkan model yang telah disesuaikan sebelumnya.

Apakah saya perlu melatih ulang model dengan semua data dan hyperparameter yang optimal?

Hal itu bergantung pada faktor-faktor berikut:

  • Model K-means sudah menggunakan semua data sebagai data pelatihan, sehingga tidak perlu melatih ulang model.

  • Untuk model faktorisasi matriks, Anda dapat melatih ulang model dengan hyperparameter yang dipilih dan semua data input untuk cakupan pengguna dan item yang lebih baik.

  • Untuk semua jenis model lainnya, pelatihan ulang biasanya tidak diperlukan. Layanan sudah menyimpan 80% data input untuk pelatihan selama pembagian data acak default. Anda masih dapat melatih ulang model dengan lebih banyak data pelatihan dan hyperparameter yang dipilih jika set data Anda kecil, tetapi menyisakan sedikit data evaluasi untuk penghentian awal dapat memperburuk overfitting.

Langkah berikutnya

Untuk mencoba menjalankan penyesuaian hyperparameter, lihat Menggunakan penyesuaian hyperparameter BigQuery ML untuk meningkatkan performa model.