Jumat, 16 September 2022

, ,

Perhitungan Manual Optimasi Menggunakan Gradient Descent


Optimasi
pada Neural Network merupakan algoritma yang dapat mencari nilai optimal, baik itu dengan meminimalkan ataupun memaksimalkan fungsi objektif (fungsi kesalahan). Sederhananya, output dari semua proses perhitungan dalam Neural Network dipelajari dan diperbarui kearah solusi yang optimal, yaitu dengan meminimalkan kerugian dengan proses Training.

Pada umumnya, optimasi dibagi menjadi 2 kategori yaitu algoritma optimasi orde pertama yaitu menggunakan nilai Gradient dan algoritma optimasi orde selanjutnya yang menggunakan Hessian.

Perbandingan dari kedua jenis tersebut adalah pada teknik optimasi orde pertama mudah untuk dihitung, lebih sedikit memakan waktu dan cukup cepat dalam memproses dataset yang besar. Sedangkan pada teknik optimasi orde kedua lebih cepat hanya jika derifativ parsial kedua diketahui, namun teknik ini selalu lebih lambat dan mahal untuk diproses dalam hal waktu dan memori.

Pada tulisan ini, saya hanya akan membahas algoritma optimasi yang menggunakan nilai Gradient.

Gradient Descent

Gradient merupakan nilai kemiringan atau kecondongan suatu garis yang membandingkan antara komponen y (ordinat) dengan komponen x (absis). Gradient disini merupakan nilai kemiringan suatu fungsi, yaitu tingkat perubahan parameter terhadap jumlah parameter lain. Secara matematis, gradient dapat digambarkan sebagai turunan parsial dari serangkaian parameter terhadap inputnya. Semakin banyak gradient maka semakin curam lerengnya.

Gradient Descent juga digambarkan sebagai iterasi yang digunakan untuk menemukan nilai optimal dari parameter dengan menggunakan kalkulus untuk menemukan nilai minimum. Gradient Descent digunakan untuk pembaruan bobot dalam Neural Network dengan cara meminimalkan loss function. Proses Gradient Descent ini terjadi pada fase backpropagation.

"Gradient Descent adalah proses yang terjadi pada fase backpropagation di mana tujuannya adalah untuk secara terus-menerus mengubah gradien parameter model dalam arah yang berlawanan berdasarkan bobot w, memperbarui secara konsisten hingga kami mencapai fungsi global minimum J (w)".

 Ilustrasi Proses Gradient Descent

Dari ilustrasi di atas, dapat dilihat bahwa terdapat proses pembaruan bobot dalam proses balik dari Gradient pada bobot. Kurva berbentuk U merupakan Gradient. Seperti dalam ilustrasi, jika bobot terlalu besar ataupun terlalu kecil maka model akan memiliki nilai error yang besar. Jadi, untuk mendapatkan kesalahan minimum maka harus terus dihitung update parameter sampai mendapatkan error yang minimum.

Berikut merupakan formula dari update parameter menggunakan Gradient Descent:

Update Bobot Menggunakan Gradient 

Dimana θ merupakan bobot (weight) yang dibawa dari Neural Network. η merupakan learning rate yang telah diset sebelumnya. ∇𝔦 merupakan Gradient Descent terhadap bobot.

Contoh Perhitungan

Agar kita lebih memahami proses update bobot menggunakan Gradient Descent. Saya akan menjelaskannya melalui sebuah contoh. Anggaplah kita mempunyai dataset berupa harga ikan louhan dilihat dari ukuran tonjolan pada dahinya (jenongnya). Tugas dari model yang akan kita buat adalah untuk memprediksi harga berdasarkan ukuran jenong dari ikan louhan.

    Dataset

 Inisialisasi ukuran sebagai X, dan harga sebagai Y. Selanjutnya, konversi dataset ke dalam min-max standardization dengan rumus:

Min-Max Standardization

Berikut merupakan hasil konversi dari dataset menjadi Min-Max Standardization.

Hasil Konversi ke Nilai Min-Max Standardization

Selanjutnya, untuk memulai proses perhitungan, kita awali dengan bobot random (a, b) dan hitung kesalahan prediksi, pada tulisan ini kita coba menggunakan Sum Of Squared Errors (SSE) dengan rumus:

Persamaan SSE

 Adapun hasil perhitungan dapat dilihat pada tabel berikut:

Langkah selanjutnya adalah dengan menghitung error Gradient pada bobot dengan menggunakan persamaan :

Persamaan Gradient
 

Kedua persamaan diatas adalah Gradient yang memberikan arah pergerakan bobot (a, b) ke kesalahan prediksi (SSE). Adapun hasil dari perhitungannya adalah sebagai berikut:

Tabel Hasil Perhitungan Gradient
 
Selanjutnya update bobot awal yang sebelumnya kita atur secara random menggunakan rumus yang telah disebutkan di atas. Sehingga persamaanya akan menjadi seperti berikut:
 

Pada tulisan ini, kita atur learning rate(η) dengan nilai 0,01 sebagai proses penyesuaian bobot. Selanjutnya prediksi kembali dan hitung juga total errornya menggunakan nilai bobot yang baru. Sehingga didapat hasil sebagai berikut:
Hasil Prediksi dan Total Error Menggunakan Bobot Baru

Dari tabel di atas, dapat dilihat penurunan nilai error dari 0,331 pada bobot sebelumnya menjadi 0,295 dengan bobot baru. Dengan demikian akurasi prediksi mengalami peningkatan. Terus ulangi langkah di atas hingga tidak ada penurunan nilai error yang signifikan. Saat tidak ada penurunan error yang signifikan berarti bobot telah mencapai nilai optimalnya dengan akurasi prediksi yang tertinggi.

Demikian algoritma Gradient Descent untuk update bobot dengan cara meminimalkan fungsi error. Perlu diketahui bahwa terdapat banyak algoritma lain yang dapat digunakan untuk optimasi Neural Network, Gradient Descent hanyalah salah satunya. Gradient Descent pun mempunyai beberapa tipe seperti Batch Gradient Descent, Stochastic Gradien Descent, Mini Batch Gradient Descent dan lain sebagainya. Mungkin itu semua akan dibahas pada tulisan saya selanjutnya.

Sekian pembahasan mengenai perhitungan manual optimasi menggunakan gradient descent. Dengan tulisan ini diharapkan kita dapat lebih mengerti lagi mengenai proses optimasi. Semoga bermanfaat.

Referensi :

[1] https://towardsdatascience.com/types-of-optimization-algorithms-used-in-neural-networks-and-ways-to-optimize-gradient-95ae5d39529f

[2] https://www.geeksforgeeks.org/ml-stochastic-gradient-descent-sgd/

[3] https://www.kdnuggets.com/2017/04/simple-understand-gradient-descent-algorithm.html

[4] https://towardsdatascience.com/gradient-descent-3a7db7520711


 

 

0 komentar: