Penurunan gradien stokastik (SGD) adalah algoritma optimasi yang biasa digunakan untuk meningkatkan kinerja model machine learning. Ini adalah varian dari algoritma penurunan gradien tradisional dengan modifikasi kunci: alih-alih mengandalkan seluruh kumpulan data untuk menghitung gradien pada setiap langkah, SGD menggunakan sampel data tunggal pada satu waktu.
Penurunan gradien (GD) adalah algoritma pengoptimalan yang meminimalkan fungsi tujuan secara berulang. Dalam konteks machine learning (ML), penurunan gradien sangat penting untuk meningkatkan kinerja model pembelajaran diawasi selama fase pelatihan mereka. Model pembelajaran mesin, seperti neural networks, bersifat kompleks, nonlinier, dan berdimensi tinggi. Oleh karena itu, tidak ada persamaan normal untuk model seperti itu yang dapat menghitung bobot optimal, tidak seperti dalam regresi linier. Sebagai gantinya, metode perkiraan seperti varian dari penurunan gradien, antara lain metode Newton dan maksimisasi ekspektasi dapat digunakan.
Setiap model memiliki fungsi kesalahan, terkadang disebut fungsi biaya. Fungsi ini mengukur seberapa jauh prediksi model dari titik data sebenarnya. Bayangkan ini sebagai ukuran seberapa “salah” prediksi model. Misalnya, rata-rata kesalahan kuadrat sering berfungsi sebagai fungsi kesalahan dalam masalah regresi. Fase pelatihan model dirancang untuk menemukan nilai parameter yang meminimalkan kesalahan ini. Penurunan gradien sering kali merupakan teknik pengoptimalan yang digunakan dalam pelatihan karena alasan ini. Algoritma menghitung gradien, atau kemiringan, dari kesalahan sehubungan dengan parameter model. Dengan gradien algoritma mengambil langkah ke arah yang berlawanan untuk mengurangi kesalahan. Tingkat pembelajaran (juga disebut sebagai ukuran langkah atau alfa) adalah ukuran langkah dan bersifat tetap untuk semua parameter model. Proses ini berulang sampai model mencapai konvergensi mendekati minimum.
Konvergensi idealnya terjadi pada minimum global. Dalam visualisasi berikut, Anda dapat melihat bahwa nilai kesalahan lebih rendah pada minimum lokal dibandingkan dengan area sekitarnya, tetapi belum tentu merupakan nilai terendah secara keseluruhan. Minimum global adalah nilai terendah absolut dari fungsi kesalahan di seluruh domainnya, menunjukkan solusi terbaik untuk masalah tersebut.
Jika tingkat pembelajaran tidak cukup kecil, algoritma akan sering bertemu pada minimum lokal. Tingkat yang dipilih dengan baik sangat penting untuk meminimalkan fungsi kerugian dan mencapai konvergensi pada minimum global.
Visualisasi ini menggambarkan efek tingkat pembelajaran pada konvergensi. Laju pembelajaran yang kecil akan menghasilkan konvergensi yang lambat namun stabil (kiri), sedangkan laju pembelajaran yang besar dapat menyebabkan pelampauan dan ketidakstabilan (kanan).
Perbedaan utama antara penurunan gradien tradisional dan penurunan gradien stokastik adalah bahwa SGD memperbarui bobot model dengan menggunakan satu contoh pelatihan pada satu waktu. Contoh dipilih secara acak pada setiap iterasi.1 Penurunan gradien menggunakan seluruh kumpulan data pelatihan untuk menghitung gradien sebelum setiap pembaruan parameter. Perbedaan dalam penggunaan data inilah yang membuat SGD jauh lebih murah secara komputasi dan lebih mudah untuk diskalakan bagi kumpulan data yang besar. Atau, perilaku konvergensi SGD lebih tidak akurat daripada ketidakakuratan GD karena satu titik data contoh mungkin bukan representasi yang baik dari kumpulan data. Penyajian yang salah ini memperbarui poin ke arah yang agak “salah”. Namun, keacakan inilah yang membuat SGD lebih cepat dan terkadang lebih baik untuk masalah pengoptimalan bukan konveks karena dapat menghindari minimum lokal dangkal atau titik pelana.
Sebenarnya, SGD pada awalnya didefinisikan untuk memperbarui parameter dengan menggunakan tepat satu sampel pelatihan pada satu waktu. Dalam penggunaan modern, istilah "SGD" digunakan secara longgar yang berarti "penurunan gradien batch kecil," sebuah varian dari GD di mana sejumlah kecil data pelatihan digunakan pada satu waktu. Keuntungan utama menggunakan bagian data daripada sampel tunggal adalah tingkat ketidakakuratan yang lebih rendah, karena gradiennya sama dengan rata-rata kesalahan dari batch kecil. Karena alasan inilah penurunan gradien batch kecil merupakan default dalam pembelajaran mendalam. Sebaliknya, SGD ketat jarang digunakan dalam praktik. Semua istilah ini bahkan dirancukan oleh sebagian besar machine learning seperti PyTorch dan TensorFlow; pengoptimal sering disebut "SGD," meskipun mereka biasanya menggunakan batch mini.
Ilustrasi berikut ini memberikan gambaran yang lebih jelas mengenai bagaimana meningkatkan ukuran sampel data pelatihan akan mengurangi osilasi dan "ketidakakuratan".
Ada beberapa varian lain dari GD yang dibangun di atas penurunan gradien dasar dengan menambahkan mekanisme untuk meningkatkan kecepatan, stabilitas, dan konvergensi.
Dengan mengakumulasi momentum dalam dimensi dengan gradien yang konsisten dan meredam pembaruan dalam dimensi dengan gradien yang berubah-ubah, momentum membantu SGD menyatu lebih cepat dan dengan lebih sedikit osilasi.2
Metode laju pembelajaran adaptif, seperti AdaGrad dan RMSProp, memiliki keunikan tersendiri karena mengadaptasi laju pembelajaran untuk setiap parameter secara terpisah. Pendekatan ini berbeda dengan metode SGD yang menggunakan tingkat pembelajaran tetap untuk semua parameter.
AdaGrad (algoritma gradien adaptif): Mengadaptasi laju pembelajaran untuk setiap parameter berdasarkan gradien sebelumnya. Fitur yang muncul lebih jarang menerima tingkat pembelajaran yang lebih tinggi dan fitur yang sering muncul menerima tarif yang lebih rendah. Pendekatan ini berarti bahwa fitur yang jarang muncul dipelajari lebih cepat daripada SGD. Laju pembelajaran adaptif ini berarti merupakan metode yang bagus untuk pemrosesan bahasa alami (NLP) dan sistem rekomendasi dengan data yang jarang, yang memiliki perbedaan besar dalam frekuensi fitur.2
RMSProp (Root Mean Square Propagation): Teknik optimasi laju pembelajaran adaptif lainnya yang menskalakan laju pembelajaran untuk setiap parameter dengan menggunakan rata-rata bergerak dari gradien kuadrat terbaru. Pengetahuan gradien masa lalu dibuang dan hanya pengetahuan gradien saat ini yang dipertahankan.4 Laju pembelajaran menjadi lebih besar untuk parameter dengan gradien kecil dan lebih kecil untuk parameter dengan gradien besar. Metode ini menghilangkan masalah laju pembelajaran yang berkurang dengan AdaGrad. RMSProp membantu menjaga pelatihan tetap stabil dalam pembelajaran mendalam, terutama untuk model seperti recurrent neural networks (RNN) dan bekerja dengan baik pada masalah di mana tujuannya terus berubah, seperti dalam pembelajaran penguatan.
SGD dan varian GD lainnya berguna ketika waktu pelatihan merupakan hambatan.5
| Varian | Data yang digunakan per langkah | Fitur utama | Penggunaan umum |
|---|---|---|---|
| GD | Semua data | Stabil tapi lambat | Kumpulan data kecil |
| SGD | 1 sampel untuk SGD klasik | Tidak akurat tapi cepat | Pembelajaran online |
| GD Batch Mini | Beberapa sampel | Seimbang dan dapat diskalakan | Pembelajaran Mendalam |
| Momentum | Batch/batch mini | Mempercepat ke arah yang benar | Jaring neural |
| NAG | Batch/batch mini | Momentum antisipatif | Konvergensi lebih cepat |
| AdaGrad | Batch mini | Laju pembelajaran adaptif | Data yang jarang |
| RMSProp | Batch mini | Perbaikan penurunan AdaGrad | RNN, jaring dalam |
| Adam | Batch mini | Momentum + RMSProp | Pilihan default hari ini |
Tujuan SGD adalah untuk menemukan parameter yang membuat prediksi model kita sedekat mungkin dengan nilai sebenarnya . Dengan kata lain, kita ingin meminimalkan fungsi kesalahan, .
Dalam kasus regresi linier, parameter tersebut adalah (bobot) dan (bias). Jadi dalam hal ini, meminimalkan sama dengan meminimalkan .
Analogi yang umum digunakan saat mengajarkan penurunan gradien adalah bahwa GD seperti berjalan menuruni bukit di pegunungan hingga mencapai lembah (kesalahan minimum). Bayangkan gradien fungsi kesalahan, , menunjuk ke atas dan untuk menuruni bukit, kita harus melangkah ke arah yang berlawanan.
Aturan pembaruan umum untuk parameter adalah:
di mana adalah tingkat pembelajaran dan adalah gradien kesalahan sehubungan dengan .
SGD hanya menggunakan satu sampel yang dipilih secara acak untuk memperkirakan gradien:
Catatan, huruf kecil menunjukkan kesalahan dari satu contoh pelatihan. Sedangkan huruf besar adalah fungsi kesalahan keseluruhan (rata-rata semua kesalahan di seluruh kumpulan data). Kesalahan global ini adalah apa yang benar-benar kita coba minimalkan dalam pelatihan.
Mari kita telusuri contoh regresi linier dengan SGD hingga selesai.
Untuk satu sampel , prediksinya adalah:
Kesalahan lokal adalah kesalahan kuadrat untuk satu sampel:
Sekarang selama propagasi balik, parameter model diperbarui dengan menggunakan aturan rantai yang menghitung gradien fungsi kesalahan sehubungan dengan setiap parameter.5 Gradien (turunan) adalah:
Dengan SGD, kita memperbarui setiap parameter ini, dan , dengan menggunakan aturan berikut:
Alih-alih menghitung gradien rata-rata yang berat di seluruh kumpulan data, SGD menggunakan perkiraan acak yang ringan.
Saat bekerja dengan kerangka kerja machine learning, ada kelas pengoptimal SGD bawaan yang dapat digunakan. Misalnya,
Untuk tujuan pembelajaran, mari kita bahas implementasi sederhana SGD di Python dari awal.
Untuk mengulanginya, tujuan kami adalah menemukan parameter terbaik (bobot model) yang meminimalkan fungsi kerugian (ukuran seberapa salah prediksi kita). Kita akan memperbarui satu sampel pada satu waktu atau ukuran batch yang sangat kecil.
Untuk memulai, kita dapat menginisialisasi nilai parameter (bobot) secara acak. Selanjutnya, kita dapat memilih titik data acak . Dari sana, kita akan menghitung prediksi dan kesalahan. Untuk demonstrasi sederhana ini, mari kita coba menyesuaikan satu baris sederhana: . Langkah selanjutnya dalam proses ini adalah propagasi balik, di mana gradien fungsi kesalahan dihitung sehubungan dengan parameter. Gradien ini (turunan) kemudian digunakan untuk memperbarui parameter selama proses pengoptimalan SGD. Karena gradien menunjukkan arah kenaikan fungsi kesalahan, SGD mengurangi setiap gradien dari nilai parameter saat ini yang relevan. Kita dapat menganggapnya sebagai bergerak ke arah yang berlawanan dari gradien untuk mengurangi fungsi kesalahan. Inilah asal istilah “penurunan” dalam penurunan gradien stokastik. Kita mengulangi langkah-langkah ini sampai sejumlah periode tetap tercapai atau setelah nilai kesalahan kurang dari toleransi. Yang disebutkan belakangan berarti bahwa kesalahan hampir tidak berubah dan kita tidak lagi meningkatkan fungsi objektif. Dengan kata lain, kita berhenti begitu algoritma bersatu.
SGD adalah metode pengoptimalan yang paling umum untuk melatih neural networks dalam. Dalam pembelajaran mendalam, bagian dari machine learning dalam bidang ilmu data yang lebih luas, tujuannya adalah agar komputer dapat menyimulasikan kekuatan pengambilan keputusan yang kompleks dari otak manusia. Model ML tradisional menggunakan neural networks sederhana yang terdiri dari satu atau dua lapisan. Sedangkan model pembelajaran mendalam menggunakan tiga lapisan atau lebih. Biasanya, ratusan atau ribuan lapisan diperlukan untuk melatih model. Mengingat kemudahan SGD dalam untuk menskalakan kumpulan pelatihan besar, ini sering menjadi pendekatan yang dipilih untuk melatih neural networks mendalam. Aplikasi lain dari pelatihan SGD termasuk regresi ridge, regresi logistik teregulasi, dan optimalisasi fungsi kesalahan hinge (hinge lost) yang digunakan dalam support vector machine (SVM) dengan kernel linier.
SGD adalah varian dari GD yang meminimalkan fungsi kesalahan model machine learning dengan menggunakan satu sampel data pada satu waktu. Pendekatan ini tidak seperti GD yang bergantung pada seluruh kumpulan data di setiap langkah untuk menghitung gradien. Ada beberapa varian GD lain yang dapat dikelompokkan sebagai metode pembelajaran berbasis momentum atau adaptif. Penurunan gradien momentum dan gradien dipercepat Nesterov adalah contoh pembelajaran berbasis momentum. Metode ini memanfaatkan momentum yang terakumulasi dalam dimensi dengan gradien yang konsisten dan meredam pembaruan dalam dimensi dengan gradien yang berubah-ubah. Dengan demikian hal ini membantu SGD menyatu lebih cepat dengan osilasi yang lebih sedikit. Metode laju pembelajaran adaptif seperti AdaGrad dan RMSProp mengadaptasi laju pembelajaran untuk setiap parameter secara terpisah, tidak seperti SGD tradisional yang menggunakan laju pembelajaran tetap. Selain itu, metode hybrid seperti Adam menawarkan alternatif yang efisien dengan menggabungkan kekuatan GD berbasis momentum dan RMSProp.
Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.
Gunakan AI di bisnis Anda dalam perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.
Temukan kembali alur kerja dan operasi yang penting dengan menambahkan AI untuk memaksimalkan pengalaman, pengambilan keputusan secara real-time, dan nilai bisnis.
1 Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient Descent. Lechevallier, Y., Saporta, G. (eds) Proceedings of COMPSTAT’2010. Physica-Verlag HD.
2 Ruder, S. (2016). An overview of gradient descent optimization algorithms.
3 Tian, Y., Zhang, Y., & Zhang, H. (2023). Recent Advances in Stochastic Gradient Descent in Deep Learning. Mathematics, 11(3), 682.
4 Haji, S. H., & Abdulazeez, A. M. (2021). Comparison of optimization techniques based on gradient descent algorithm: A review. PalArch’s Journal of Archaeology of Egypt/Egyptology, 18(4), 2715-2743.
5 Bottou, L. (2012). Stochastic Gradient Descent Tricks. Montavon, G., Orr, G.B., Müller, KR. (eds) Neural Networks: Tricks of the Trade. Lecture Notes in Computer Science, vol 7700. Springer, Berlin, Heidelberg.