Penurunan gradien adalah teknik matematika yang secara berulang menemukan bobot dan bias yang menghasilkan model dengan kerugian terendah. Gradient descent menemukan bobot dan bias terbaik dengan mengulangi proses berikut untuk sejumlah iterasi yang ditentukan pengguna.
Model memulai pelatihan dengan bobot acak dan bias mendekati nol, lalu mengulangi langkah-langkah berikut:
Hitung kerugian dengan bobot dan bias saat ini.
Tentukan arah untuk memindahkan bobot dan bias yang mengurangi kerugian.
Pindahkan nilai bobot dan bias sedikit ke arah yang mengurangi kerugian.
Kembali ke langkah satu dan ulangi prosesnya hingga model tidak dapat mengurangi kerugian lebih lanjut.
Diagram di bawah ini menguraikan langkah-langkah iteratif yang dilakukan penurunan gradien untuk menemukan bobot dan bias yang menghasilkan model dengan kerugian terendah.
Gambar 12. Penurunan gradien adalah proses iteratif yang menemukan bobot dan bias yang menghasilkan model dengan kerugian terendah.
Klik ikon plus untuk mempelajari lebih lanjut matematika di balik penurunan gradien.
Pada tingkat konkret, kita dapat membahas langkah-langkah gradient descent menggunakan set data kecil dengan tujuh contoh untuk berat mobil dalam pound dan rating mil per galonnya:
Pound dalam ribuan (fitur) | Mil per galon (label) |
---|---|
3,5 | 18 |
3,69 | 15 |
3,44 | 18 |
3,43 | 16 |
4,34 | 15 |
4,42 | 14 |
2,37 | 24 |
- Model memulai pelatihan dengan menetapkan bobot dan bias ke nol:
- Hitung kerugian MSE dengan parameter model saat ini:
- Hitung kemiringan tangen terhadap fungsi kerugian di setiap bobot dan bias:
- Pindahkan sedikit ke arah kemiringan negatif untuk mendapatkan bobot dan bias berikutnya. Untuk saat ini, kita akan menentukan "jumlah kecil" secara sewenang-wenang sebagai 0,01:
Klik ikon plus untuk mempelajari cara menghitung kemiringan.
Untuk mendapatkan kemiringan garis yang bersinggungan dengan bobot dan bias, kita mengambil turunan fungsi kerugian dengan memperhatikan bobot dan bias, lalu menyelesaikan persamaan.
Kita akan menulis persamaan untuk membuat prediksi sebagai:
$ f_{w,b}(x) = (w*x)+b $.
Kita akan menulis nilai sebenarnya sebagai: $ y $.
Kita akan menghitung MSE menggunakan:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
dengan $i$ mewakili contoh pelatihan $i$ dan $M$ mewakili
jumlah contoh.
Turunan fungsi loss sehubungan dengan bobot ditulis sebagai:
$ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
dan dievaluasi menjadi:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $
Pertama, kita menjumlahkan setiap nilai prediksi dikurangi nilai sebenarnya, lalu mengalikan dengan dua kali nilai fitur. Kemudian, kita membagi jumlah dengan jumlah contoh. Hasilnya adalah kemiringan garis yang bersinggungan dengan nilai bobot.
Jika kita menyelesaikan persamaan ini dengan bobot dan bias yang sama dengan nol, kita mendapatkan -119,7 untuk kemiringan garis.
Turunan bias
Turunan fungsi kerugian sehubungan dengan
bias ditulis sebagai:
$ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
dan dievaluasi menjadi:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $
Pertama, kita menjumlahkan setiap nilai prediksi dikurangi nilai sebenarnya, lalu mengalikan dengan dua. Kemudian, kita bagi jumlahnya dengan jumlah contoh. Hasilnya adalah kemiringan garis yang sejajar dengan nilai bias.
Jika kita menyelesaikan persamaan ini dengan bobot dan bias yang sama dengan nol, kita mendapatkan -34,3 untuk kemiringan garis.
Gunakan bobot dan bias baru untuk menghitung kerugian dan ulangi. Dengan menyelesaikan proses selama enam iterasi, kita akan mendapatkan bobot, bias, dan kerugian berikut:
Iterasi | Berat | Bias | Kerugian (MSE) |
---|---|---|---|
1 | 0 | 0 | 303,71 |
2 | 1,2 | 0,34 | 170,67 |
3 | 2,75 | 0,59 | 67,3 |
4 | 3,17 | 0,72 | 50,63 |
5 | 3,47 | 0,82 | 42,1 |
6 | 3,68 | 0,9 | 37,74 |
Anda dapat melihat bahwa kerugian menjadi lebih rendah dengan setiap bobot dan bias yang diperbarui. Dalam contoh ini, kami berhenti setelah enam iterasi. Dalam praktiknya, model dilatih hingga berkonvergensi. Saat model berkonvergensi, iterasi tambahan tidak mengurangi lebih banyak kerugian karena penurunan gradien telah menemukan bobot dan bias yang hampir meminimalkan kerugian.
Jika model terus dilatih setelah konvergensi, kerugian mulai berfluktuasi dalam jumlah kecil karena model terus memperbarui parameter di sekitar nilai terendah. Hal ini dapat mempersulit verifikasi bahwa model telah benar-benar dikonvergensi. Untuk mengonfirmasi bahwa model telah berkonvergensi, Anda harus melanjutkan pelatihan hingga loss stabil.
Kurva konvergensi dan penyimpangan model
Saat melatih model, Anda akan sering melihat kurva kerugian untuk menentukan apakah model telah konvergensi. Kurva kerugian menunjukkan perubahan kerugian saat model dilatih. Berikut adalah tampilan kurva kerugian pada umumnya. Kerugian berada pada sumbu y dan iterasi berada pada sumbu x:
Gambar 13. Kurva kerugian yang menunjukkan model yang konvergen di sekitar tanda iterasi ke-1.000.
Anda dapat melihat bahwa kerugian menurun secara drastis selama beberapa iterasi pertama, lalu menurun secara bertahap sebelum mendatar di sekitar tanda iterasi ke-1.000. Setelah 1.000 iterasi, kita dapat yakin bahwa model telah berkonvergensi.
Pada gambar berikut, kita menggambar model pada tiga titik selama proses pelatihan: awal, tengah, dan akhir. Memvisualisasikan status model pada snapshot selama proses pelatihan akan memperkuat hubungan antara pembaruan bobot dan bias, mengurangi kerugian, dan konvergensi model.
Dalam gambar, kita menggunakan bobot dan bias turunan pada iterasi tertentu untuk mewakili model. Pada grafik dengan titik data dan snapshot model, garis kerugian biru dari model ke titik data menunjukkan jumlah kerugian. Semakin panjang garis, semakin besar kerugian.
Pada gambar berikut, kita dapat melihat bahwa sekitar iterasi kedua, model tidak akan bagus dalam membuat prediksi karena banyaknya kerugian.
Gambar 14. Kurva kerugian dan snapshot model di awal proses pelatihan.
Pada sekitar iterasi ke-400, kita dapat melihat bahwa gradien menurun telah menemukan bobot dan bias yang menghasilkan model yang lebih baik.
Gambar 15. Kurva kerugian dan snapshot model sekitar pertengahan pelatihan.
Dan pada sekitar iterasi ke-1.000, kita dapat melihat bahwa model telah berkonvergensi, menghasilkan model dengan kerugian serendah mungkin.
Gambar 16. Kurva kerugian dan snapshot model di dekat akhir proses pelatihan.
Latihan: Periksa pemahaman Anda
Fungsi konvergensi dan konveks
Fungsi kerugian untuk model linear selalu menghasilkan permukaan konveks. Sebagai hasil dari properti ini, saat model regresi linear berkonvergensi, kita tahu bahwa model telah menemukan bobot dan bias yang menghasilkan kerugian terendah.
Jika membuat grafik permukaan kerugian untuk model dengan satu fitur, kita dapat melihat bentuknya yang cembung. Berikut ini adalah permukaan kerugian dari set data mil per galon yang digunakan dalam contoh sebelumnya. Bobot berada pada sumbu x, bias berada pada sumbu y, dan kerugian berada pada sumbu z:
Gambar 17. Permukaan kerugian yang menunjukkan bentuknya yang cembung.
Dalam contoh ini, bobot -5,44 dan bias 35,94 menghasilkan loss terendah sebesar 5,54:
Gambar 18. Permukaan kerugian yang menunjukkan nilai bobot dan bias yang menghasilkan kerugian terendah.
Model linear akan berkonvergensi saat menemukan kerugian minimum. Oleh karena itu, iterasi tambahan hanya menyebabkan gradien menurun untuk memindahkan nilai bobot dan bias dalam jumlah yang sangat kecil di sekitar minimum. Jika kita membuat grafik bobot dan titik bias selama gradien menurun, titik-titik tersebut akan terlihat seperti bola yang menggelinding menuruni bukit, dan akhirnya berhenti di titik saat tidak ada lagi kemiringan menurun.
Gambar 19. Grafik kerugian yang menunjukkan titik penurunan gradien yang berhenti di titik terendah pada grafik.
Perhatikan bahwa titik kerugian hitam membuat bentuk kurva kerugian yang tepat: menurun tajam sebelum menurun secara bertahap hingga mencapai titik terendah di permukaan kerugian.
Perlu diperhatikan bahwa model hampir tidak pernah menemukan minimum yang tepat untuk setiap bobot dan bias, tetapi menemukan nilai yang sangat mendekatinya. Penting juga untuk diperhatikan bahwa nilai minimum untuk bobot dan bias tidak sesuai dengan kerugian nol, hanya nilai yang menghasilkan kerugian terendah untuk parameter tersebut.
Dengan menggunakan nilai bobot dan bias yang menghasilkan kerugian terendah—dalam hal ini bobot -5,44 dan bias 35,94—kita dapat membuat grafik model untuk melihat seberapa baik model tersebut sesuai dengan data:
Gambar 20. Model digambarkan menggunakan nilai bobot dan bias yang menghasilkan kerugian terendah.
Ini akan menjadi model terbaik untuk set data ini karena tidak ada nilai bobot dan bias lain yang menghasilkan model dengan kerugian yang lebih rendah.