Masalah pembelajaran adalah masalah peminimuman (minimization) loss terhadap parameter model, dan seluruh mesin pelatihan pada jalur ini tidak pernah keluar dari bentuk masalah itu. Topik ini menuliskannya secara formal, memperkenalkan permukaan loss sebagai cara melihat masalahnya, dan menunjukkan apa yang dapat serta tidak dapat diselesaikan oleh peminaan. Setelah selesai, modul Mekanika pelatihan yang memuat algoritma penyelesaiannya memiliki dasar yang jelas.
Definisi formal yang dipakai selama jalur ini#
Model dengan parameter memetakan masukan ke prediksi , dan kualitasnya diukur loss rata-rata di atas data pelatihan :
Pembelajaran didefinisikan sebagai pencarian . Definisi ini kelihatannya sederhana, tetapi dua kata di dalamnya memuat seluruh kesulitan praktis. Kata pertama adalah , yang pada jaringan modern berisi jutaan bilangan sekaligus sehingga tidak mungkin dicoba satu per satu. Kata kedua adalah , yang permukaannya bergelombang dan tidak diketahui bentuk globalnya sebelum dihitung.
Perhatikan pula bahwa definisi ini hanya menyebut data pelatihan. Model yang meminaikan loss pelatihan sempurna belum tentu berguna, karena tujuan sesungguhnya adalah kinerja pada data baru, dan kesenjangan keduanya menjadi inti topik Disiplin pelatihan. Untuk modul ini, sasaran tetap dipusatkan pada agar mekanikanya murni.
Melihat permukaan loss pada dua parameter#
Permukaan loss dapat dilukis bila parameternya hanya dua, dan lukisan mental itu layak dibangun karena intuisinya membawa ke dimensi tinggi. Contoh berikut memakai model linier tanpa bias pada data kecil, lalu menghitung MSE pada kisi nilai dan yang rapat.
import numpy as np
rng = np.random.default_rng(0)
X = rng.normal(size=(50, 2))
t = 3.0 * X[:, 0] - 1.5 * X[:, 1]
w1_grid = np.linspace(-1, 5, 13)
w2_grid = np.linspace(-4, 2, 13)
L = np.zeros((13, 13))
for i, w1 in enumerate(w1_grid):
for j, w2 in enumerate(w2_grid):
pred = w1 * X[:, 0] + w2 * X[:, 1]
L[i, j] = float(np.mean((pred - t) ** 2))
i, j = np.unravel_index(L.argmin(), L.shape)
print("w1 terbaik pada kisi:", round(float(w1_grid[i]), 2))
print("w2 terbaik pada kisi:", round(float(w2_grid[j]), 2))
print("loss minimum :", round(float(L.min()), 5))w1 terbaik pada kisi: 3.0
w2 terbaik pada kisi: -1.5
loss minimum : 0.0Keluaran tersebut menemukan bobot yang mendekati nilai pembangkit data, yaitu 3 dan , hanya dengan menimbang seluruh kisi. Cara ini tidak terlaksana pada jutaan parameter karena biayanya tumbuh eksponensial, dan itulah alasan modul Mekanika pelatihan membangun algoritma yang mencari lembah tanpa melihat seluruh permukaan. Yang penting dibawa adalah gambarannya, yaitu permukaan loss yang menurun menuju lembah, dan tugas pelatihan adalah berjalan turun ke dalamnya.
Pada jaringan saraf sungguhan, permukaan itu berdimensi jutaan dan mengandung banyak lembah yang sama baiknya, ditambah titik pelana yang gradiennya nyaris nol. Kabar baiknya, penelitian bertahun-tahun menunjukkan bahwa lembah-lembah yang dicapai metode turun-gradien pada jaringan dalam umumnya sama baik untuk generalisasi, sehingga takut pada lembah lokal bukan alasan menolak metode ini.
Apa yang tidak diselesaikan peminaan#
Peminimuman loss pelatihan menyelesaikan satu hal saja, yaitu menurunkan kekeliruan pada data yang dilihatnya. Ia tidak menjamin tiga hal yang menjadi tanggung jawab desainer. Pertama, kinerja pada data baru, karena peminimuman tidak pernah melihat data tersebut. Kedua, keadilan antar kelompok data, karena loss rata-rata menyembunyikan kekeliruan yang menumpuk pada kelompok kecil. Ketiga, kepraktisan komputasi, karena model terbaik yang tidak muat memori atau terlalu lambat untuk inference tetap tidak terpakai.
Ketiga celah itulah yang menjelaskan mengapa jalur ini memuat modul regularisasi, evaluasi, dan deployment alih-alih berhenti pada pelatihan. Peta besarnya seperti ini: mekanika pelatihan menurunkan , disiplin pelatihan memastikan penurunan itu bukan hafalan, dan sisa jalur memastikan modelnya berguna di luar notebook.
Dari masalah ke algoritma#
Menemukan menuntut arah bergerak pada setiap titik permukaan, dan arah itu diberikan oleh gradien , yaitu vektor turunan parsial loss terhadap setiap parameter. Aturan bergeraknya, yang dipelajari pada topik Gradient descent, adalah melangkah berlawanan arah gradien sejauh yang diizinkan learning rate. Sementara cara menghitung gradien pada jaringan berlapis, yang sesungguhnya adalah penerapan berlapis aturan rantai, menjadi isi topik Backpropagation dengan tangan.
Tiga topik itu membentuk rantai yang utuh dari masalah pembelajaran ke algoritma siap pakai. Apabila definisi di awal topik ini masih terasa abstrak, kembalilah ke contoh kisi dua parameter, karena seluruh kerumitan jaringan besar hanyalah contoh itu yang digandakan jutaan kali.
Ringkasan#
- Pembelajaran adalah dengan loss rata-rata di atas data pelatihan, dan seluruh algoritma pelatihan melayani bentuk masalah ini.
- Permukaan loss dua parameter dapat diimbau lewat kisi, tetapi pemindaian kisi tidak terlaksana pada jutaan parameter.
- Peminaan loss pelatihan tidak otomatis menjamin generalisasi, keadilan antar kelompok, maupun kelayakan komputasi.
- Gradien memberi arah turun, dan dua topik berikutnya membangun cara menghitung serta memakainya.
Referensi#
- Deep Learning — MIT Press — Bab Machine Learning Basics yang mendefinisikan pembelajaran sebagai peminaan fungsi objektif.
- Deep Learning — MIT Press — Bab Numerical Computation yang memuat bentuk permukaan loss dan tantangan optimasinya.
- Linear Regression — Dive into Deep Learning — Bab yang memperkenalkan fungsi objektif MSE pada model linier.