Penurunan gradien adalah matematis yang secara berulang menemukan bobot dan bias yang menghasilkan model dengan kerugian terendah. Penurunan gradien 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 berat dan bias saat ini.
Tentukan arah untuk memindahkan bobot dan bias yang mengurangi kerugian.
Pindahkan nilai bobot dan bias dalam jumlah kecil ke arah yang mengurangi kerugian.
Kembali ke langkah pertama dan ulangi proses sampai model tidak dapat mengurangi kerugian lebih lanjut.
Diagram di bawah ini menguraikan langkah-langkah berulang yang dilakukan penurunan gradien untuk menemukan bobot dan bias yang menghasilkan model dengan kerugian terendah.
Gambar 12. Penurunan gradien adalah proses berulang 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 berjalan melalui langkah-langkah penurunan gradien menggunakan {i>dataset<i} kecil dengan tujuh contoh berat mobil dalam pound dan peringkat mil per galonnya:
Pound dalam 1000-an (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:
- Menghitung kemiringan tangen terhadap fungsi kerugian di setiap bobot dan biasnya:
- Gerakkan sedikit ke arah kemiringan negatif untuk mendapatkan bobot dan bias berikutnya. Untuk saat ini, kita akan secara bebas menentukan "sedikit" sebagai 0,01:
Klik ikon plus untuk mempelajari cara menghitung kemiringan.
Untuk mendapatkan kemiringan garis yang bersinggungan dengan bobot dan bias, kita mengambil turunan dari fungsi kerugian dengan terhadap bobot dan bias, dan kemudian memecahkan yang sama.
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 $
di mana $i$ mewakili contoh pelatihan $ith$ dan $M$ mewakili
jumlah contoh.
Turunan dari fungsi kerugian yang terkait dengan bobot ditulis sebagai:
$ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
dan mengevaluasi ke:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $
Pertama, kita jumlahkan setiap nilai prediksi dikurangi nilai sebenarnya lalu kalikan dengan dua kali nilai fitur. Kemudian kita bagi jumlahnya dengan jumlah contoh. Hasilnya adalah kemiringan garis singgung pada nilai dari bobot.
Jika kita menyelesaikan persamaan ini dengan bobot dan bias yang sama dengan nol, kita mendapatkan -119,7 untuk kemiringan garis.
Turunan bias
Turunan dari 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 mengevaluasi ke:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $
Pertama, kita jumlahkan setiap nilai prediksi dikurangi nilai sebenarnya dan kemudian kalikan dengan dua. Kemudian kita bagi jumlahnya dengan jumlah contoh. Hasilnya adalah kemiringan garis bersinggungan dengan nilai bias.
Jika kita menyelesaikan persamaan ini dengan bobot dan bias yang sama dengan nol, kita mendapatkan -34,3 untuk kemiringan garis.
Menggunakan bobot dan bias baru untuk menghitung kerugian dan pengulangan. Menyelesaikan proses untuk enam iterasi, kita akan mendapatkan bobot, bias, dan kerugian:
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 penurunan menjadi lebih rendah dengan setiap bobot dan bias yang diperbarui. Dalam contoh ini, kami berhenti setelah enam iterasi. Dalam praktiknya, sebuah model kereta sampai konvergensi. Saat model konvergensi, iterasi tambahan tidak mengurangi kerugian karena penurunan gradien telah menemukan bobot dan bias yang hampir meminimalkan kerugian.
Jika model terus melatih konvergensi masa lalu, kerugian mulai berfluktuasi dalam jumlah kecil karena model terus mengupdate parameter di sekitar nilai terendahnya. Hal ini dapat menyulitkan untuk memverifikasi bahwa model telah benar-benar dikonvergensi. Untuk mengonfirmasi model telah dikonvergensi, Anda harus melanjutkan pelatihan sampai kerugiannya distabilkan.
Konvergensi model dan kurva kerugian
Saat melatih model, Anda akan sering melihat kerugian kurva untuk menentukan apakah model memiliki konvergensi. Kurva kerugian menunjukkan bagaimana kerugian berubah saat model dilatih. Berikut ini adalah kerugian seperti itu. Kerugian berada pada sumbu y dan iterasinya pada sumbu x:
Gambar 13. Kurva kerugian yang menunjukkan konvergensi model di sekitar Tanda iterasi ke-1.000.
Anda dapat melihat bahwa kerugian menurun secara dramatis selama beberapa iterasi pertama, kemudian secara bertahap menurun sebelum merata di sekitar iterasi ke-1.000 tanda. Setelah 1.000 iterasi, kita bisa sangat yakin bahwa model tersebut telah terkonvergensi.
Dalam gambar berikut, kita menggambar model pada tiga titik selama pelatihan proses: bagian awal, tengah, dan akhir. Memvisualisasikan status model secara singkat selama proses pelatihan memperkuat tautan antara pembaruan bobot dan bias, mengurangi loss, dan konvergensi model.
Dalam gambar, kita menggunakan bobot turunan dan bias pada iterasi tertentu untuk yang mewakili model. Pada grafik dengan titik data dan snapshot model, garis kerugian berwarna biru dari model ke titik data menunjukkan jumlah kerugian. Tujuan semakin panjang garis, semakin banyak kerugian yang terjadi.
Pada gambar berikut, kita bisa melihat bahwa sekitar iterasi kedua model tidak akan baik dalam membuat prediksi karena jumlah kerugian yang tinggi.
Gambar 14. Kurva kehilangan dan snapshot model di awal proses pelatihan Anda.
Pada iterasi ke-400, kita dapat melihat bahwa penurunan gradien bobot dan bias yang menghasilkan model yang lebih baik.
Gambar 15. Kurva kehilangan dan snapshot model sekitar pertengahan pelatihan.
Dan sekitar iterasi ke-1000, kita bisa melihat bahwa model telah terkonvergensi, dan menghasilkan model dengan kerugian serendah mungkin.
Gambar 16. Kurva kehilangan dan snapshot model menjelang akhir pelatihan {i>checkout<i}.
Latihan: Memeriksa pemahaman Anda
Fungsi konvergensi dan konveks
Fungsi kerugian untuk model linear selalu menghasilkan permukaan cembung. Sebagai hasil dari ketika model regresi linear dikonvergensi, kita tahu model tersebut memiliki menemukan bobot dan bias yang menghasilkan kerugian terendah.
Jika kita membuat grafik permukaan kerugian untuk model dengan satu fitur, kita dapat melihat bentuk cembung. Berikut ini adalah permukaan kerugian dari {i>dataset<i} mil per galon yang digunakan dalam contoh sebelumnya. Bobot berada pada sumbu x, bias berada pada sumbu y, dan loss berada di sumbu z:
Gambar 17. Permukaan penurunan yang menunjukkan bentuk cembungnya.
Dalam contoh ini, bobot -5,44 dan bias 35,94 menghasilkan loss terendah pada 5,54:
Gambar 18. Permukaan penurunan yang menunjukkan bobot dan nilai bias yang menghasilkan kerugian yang paling rendah.
Model linear konvergensi ketika ditemukan kerugian minimum. Oleh karena itu, iterasi hanya menyebabkan penurunan gradien untuk memindahkan bobot dan nilai bias jumlah yang sangat kecil di sekitar minimum. Jika kita membuat grafik bobot dan titik bias selama penurunan gradien, titik-titiknya akan terlihat seperti bola yang menggelinding ke bawah bukit, akhirnya berhenti di titik di mana tidak ada lagi kemiringan ke bawah.
Gambar 19. Grafik penurunan yang menunjukkan titik penurunan gradien yang berhenti di titik terendah titik tertentu pada grafik.
Perhatikan bahwa titik kehilangan hitam membuat bentuk yang tepat dari kurva kerugian: a penurunan tajam sebelum menurun secara bertahap hingga mencapai titik terendah pada permukaan kerugian.
Perlu diperhatikan bahwa model ini hampir tidak pernah menemukan minimum untuk setiap bobot dan bias, tetapi justru menemukan nilai yang sangat dekat dengannya. Penting juga untuk dicatat bahwa nilai minimum untuk bobot dan bias tidak bersesuaian dengan kerugian nol, yaitu nilai yang menghasilkan kerugian terendah untuk .
Menggunakan nilai bobot dan bias yang menghasilkan kerugian terendah—dalam hal ini dengan bobot -5,44 dan bias 35,94—kita dapat membuat grafik model untuk melihat sudah sesuai dengan data:
Gambar 20. Model yang digambarkan menggunakan nilai bobot dan bias yang menghasilkan kerugian yang paling rendah.
Ini akan menjadi model terbaik untuk {i>dataset<i} ini karena tidak ada bobot dan bias lainnya menghasilkan model dengan kerugian yang lebih rendah.