Memahami Gradient Descent

Gradient Descent adalah sebuah topik fundamental yang sangat penting untuk dipahami dalam bidang Machine Learning maupun Deep Learning. Dengan memahami metode ini, bukan hanya sekedar paham rumus dan cara kerjanya, namun dengan memahami bagaimana intuisinya. Saya mengartikan visualisasi disini sebagai pemahaman terhadap bagaimana proses, impact dan intuisi dari algoritma ini.

Secara definisi menurut Wikipedia[1] adalah “a first-order iterative optimization algorithm for finding a local minimum of a differentiable function” atau sebuah algoritma optimalisasi yang bersifat iteratif untuk menemukan fungsi minimum melalui penurunan sebuah fungsi”. Namun dalam bahasa sederhana Gradient Descent dapat diartikan Sebuah teknik iteratif yang bertujuan untuk mencari/menemukan sekumpulan parameter atau koefisien terbaik dari sebuah model, data dan loss function, dimulai dari sebuah nilai awal yang biasanya berasal dari tebakan acak”.

Apa tujuan Gradient Descent?

Jawabannya jelas yaitu untuk menemukan Nilai Global Minimum sebuah fungsi. Dalam ilmu matematika kita telah sering menghadapai masalah ini. Biasanya kita melakukan analisa terhadap fungsi tersebut. Sebagai contoh kita memiliki sebuah fungsi f(x) seperti pada gambar berikut

Gambar 1. Ilustrasi f(x) dan gradiennya (df(x)/dx ) (sumber: [2])

Untuk menemukan nilai Global mimimum tersebut maka setidaknya ada beberapa hal yang harus dilakukan diantaranya:

  1. Menghitung turunan dari f(x) terhadap x ; \frac{d f(x)}{dx}, sehingga didapatlah garis abu-abu pada gambar 1
  2. Selanjutnya, titix akan berada pada nilai minim jika \frac{d f(x)}{dx} =0

Sebagai contoh misalnya kita memiliki sebuah fungsi dengan nilai f(x) = x^2, maka turunan dari fungsi f(x) adalah 2x, maka nilai minimum akan berada pada 2x=0 yaitu ketika x bernilai 0

Namun ada beberapa kondisi dimana kita akan kesulitan untuk menemukan nilai minimumnya, misal pada fungsi f(x) = sin(x) dimana turuannya adalah cos(x). Pada fungsi ini bersifat periodik sehingga bisa ditemukan beberapa nilai minimum. Pada machine learning, atau deep learning biasanya kita hanya ingin menemukan nilai minimum pada batasan tertentu atau berdasarkan data tertentu. Kita tidak selalu ingin menemukan nilai global minimum.

Intuisi Sebuah Gradient

Sebuah Gradient dalam bahasa Indonesia sering disebut kemiringan atau kecondongan suatu garis yang membandingkan antara komponen y (ordinat) dengan komponen x (absis). Secara matematis, gradient dapat digambarkan sebagai turunan parsial dari serangkaian parameter terhadap inputnya. Semakin banyak gradient maka semakin curam lerengnya [3]. Oleh karena itu, ia sering disamakan dengan turunan, namun secara konsep berbeda.

Sebuah Gradient adalah sebuah vektor bukan fungsi, yang berarti Gradien memiliki arah. Sebagai contoh, gradien yang bernilai -1 berarti memiliki arah ke kiri dan gradien yang benilai 1 memiliki arah ke kanan. perhatikan gambar 2 berikut ini

Gambar 2. Ilustrasi Gradient (sumber: [2])

Jadi, semakin besar (positif) atau semakin negatif nilai gradien maka semakin jauh dari nilai minimum. Jadi Goal utama dari algoritma ini adalah memperkecil nilai tersebut (menjadi 0 atau mendekati 0).

Sifat Gradient

Gradien adalah turunan parsial dari sebuah fungsi. Sebuah fungsi dapat memiliki beberapa variabel didalamnya. Sebagai contoh:

  • Fungsi f(x) memiliki satu variabel dan turunannya turunan tunggal yaitu \frac{df}{dx}. Pada kasus ini gradien \frac{df}{dx} menunjukkan seberapa banyak perubahan pada fungsi f akibat dari perubahan variabel x
  • Fungsi f(x, y, z) memiliki tiga variabel dan turunannya ada tiga yaitu yaitu \frac{df}{dx} , \frac{df}{dy}, \frac{df}{dz}.
    Pada kasus multi variabel ini ada 3 komponen gradien yang memiliki arah yang berbeda \frac{df}{dx} menunjukkan laju perubahan f akibat perubahan x, \frac{df}{dy} menunjukkan laju perubahan f akibat perubahan y dan \frac{df}{dz} menunjukkan laju perubahan f akibat perubahan z

Gradien dari sebuah fungsi multivariabel memiliki sebuah komponen gradien untuk setiap variabelnya

\displaystyle{\text{gradient fungsi } f(x,y,z) = \nabla f(x,y,z) = (\frac{df}{dx},\frac{df}{dy},\frac{df}{dz})}

Sebagai contoh, perhatikan model berikut ini yang memiliki 3 variabel yaitu:

\displaystyle{F(x,y,z) = x + y^2 + z^3 }

Maka gradient dari fungsi F adalah

\displaystyle{\nabla F(x,y,z) = (\frac{dF}{dx},\frac{dF}{dy},\frac{dF}{dz}) = (1, 2y, 3z^2)}

Jika kita ingin menemukan gradien atau arah perpindahan maka kita tinggal mensubtitusi nilai tersebut misalnya nilainya adalah 1,2,5 ke gradien sehingga mendapatkan nilai arah:

\displaystyle{\text{direction} = (1, 2(2), 3(5)^2) = (1, 4, 75)}

Jadi, vektor baru ini (1, 4, 75) akan menjadi arah yang akan kita tuju untuk meningkatkan nilai fungsi kita. Dalam hal ini, komponen x kita tidak banyak menambah nilai fungsi: turunan parsial selalu 1 sedangkan z memiliki pengaruh yang sangat besar.

Daftar Pustaka
[1] https://en.wikipedia.org/wiki/Gradient_descent

Write a Comment

Your email address will not be published. Required fields are marked *

four + 20 =