Gradient Descent untuk Linear Regression: Solusi Iteratif
Dalam postingan sebelumnya tentang linear regression, kita menemukan normal equationโsebuah solusi closed-form yang indah untuk menemukan bobot optimal. Namun ada masalahnya: menghitung matrix inversion secara komputasional sangat mahal untuk dataset besar. Di sinilah gradient descent hadir menyelamatkan! Mari kita jelajahi bagaimana metode iteratif yang elegan ini mengoptimalkan model linear regression kita secara efisien.
Masalah dengan Normal Equation
Ingat normal equation yang telah kita turunkan? Ini memberikan solusi eksak, tetapi dengan biaya komputasi yang tumbuh dengan cepat seiring ukuran dataset.
Vektor bobot optimal untuk linear regression adalah:
Ini disebut exact solution atau closed-form solution karena langsung menghitung jawabannya.
Matrix inversion memiliki computational complexity sebesar di mana adalah jumlah fitur. Untuk dataset besar:
- 10.000 fitur: triliun operasi
- 100.000 fitur: kuadriliun operasi
Ini menjadi tidak praktis dengan sangat cepat!
Daripada menghitung solusi eksak dalam satu langkah yang mahal, kita dapat menggunakan iterative methods yang:
- Mengambil banyak langkah kecil yang murah menuju solusi
- Tidak memerlukan matrix inversion
- Lebih scalable untuk dataset besar
- Membentuk fondasi machine learning modern
Metode iteratif yang paling populer adalah gradient descent.
Tiga Pertanyaan Fundamental
Sebelum kita menyelami gradient descent, mari kita jawab tiga pertanyaan penting:
- Apa itu gradient?
- Bagaimana kita menghitung gradient?
- Mengapa menggunakan gradient untuk optimasi iteratif?
Mari kita jawab masing-masing secara sistematis.
Apa itu Gradient?
Gradient adalah slope dari tangent line terhadap fungsi pada titik tertentu.
Untuk setiap titik pada fungsi :
- Kita dapat menggambar tangent line pada titik tersebut
- Slope dari tangent line ini adalah derivative
- Slope ini memberi tahu kita seberapa curam fungsi meningkat atau menurun pada titik tersebut
Contoh Sederhana: Satu Variabel
Pertimbangkan fungsi pada titik :
- Nilai fungsinya adalah:
- Derivative-nya adalah:
- Pada , gradient-nya adalah:
Ini memberitahu kita bahwa pada , fungsi meningkat dengan slope 4. Jika kita bergerak sedikit ke kanan (meningkatkan ), nilai fungsi akan meningkat sekitar 4 kali lebih cepat dari ukuran langkah kita.
Menemukan slope garis yang diberikan dua titik itu mudah. Menemukan slope tangent line (yang hanya menyentuh kurva pada satu titik) memerlukan kalkulusโkhususnya, derivative!
Derivative memberi kita tepat slope yang kita butuhkan pada setiap titik .
Menghitung Gradient: Dari Derivative ke Partial Derivative
Kasus Satu Variabel
Untuk fungsi satu variabel, menghitung gradient sangat mudah:
Derivative merepresentasikan slope dari pada titik .
Untuk linear regression dengan satu variabel, fungsi error kita adalah:
Kita menghitung derivative terhadap setiap bobot: dan
Banyak Variabel: Partial Derivative
Dalam linear regression, kita biasanya memiliki banyak bobot (satu untuk setiap fitur ditambah intercept). Bagaimana kita menghitung gradient ketika ada banyak variabel?
Partial derivative mengukur seberapa banyak berubah ketika kita hanya memvariasikan sambil menjaga semua variabel lain konstan.
Untuk metrik linear regression kita:
Kita perlu menghitung partial derivative terhadap setiap bobot dalam .
Intuisi Partial Derivative
Bayangkan Anda berdiri di lereng bukit:
- Partial derivative terhadap x memberi tahu Anda seberapa curam bukit jika Anda berjalan timur-barat
- Partial derivative terhadap y memberi tahu Anda seberapa curam bukit jika Anda berjalan utara-selatan
Bersama-sama, partial derivative ini memberi tahu Anda โlanskap kemiringanโ penuh di posisi Anda!
Gradient Vector
Gradient menggeneralisasi konsep derivative ke banyak dimensi. Ini adalah vektor yang berisi semua partial derivative:
Elemen ke- dari adalah partial derivative dari terhadap .
Pada minimum (atau maksimum) dari suatu fungsi, semua partial derivative sama dengan nol:
Ini adalah bagaimana kita menemukan normal equationโkita menetapkan gradient ke nol dan menyelesaikannya!
Mengapa Menggunakan Gradient untuk Optimasi?
Sekarang pertanyaan kuncinya: Mengapa mengikuti gradient membantu kita mengoptimalkan fungsi kita?
Convex Function: Satu Global Minimum
Metrik linear regression kita adalah convex function. Convex function memiliki properti khusus:
Hanya memiliki satu minimumโglobal minimum.
Ini berarti:
- Tidak ada local minima untuk terjebak
- Minimum apa pun yang kita temukan adalah solusi terbaik
- Local minimum = Global minimum
Convex Function โ
Error Linear Regression
- Permukaan berbentuk mangkuk
- Titik minimum tunggal
- Gradient descent selalu menemukannya
- Konvergensi terjamin
Contoh: Sum of Squared Errors, mean squared error
Non-Convex Function โ
Lanskap Error Kompleks
- Banyak local minima
- Gradient descent mungkin terjebak
- Solusi tergantung pada titik awal
- Tidak ada jaminan konvergensi
Contoh: Neural networks, beberapa fungsi polinomial
Karena fungsi error linear regression kita adalah convex:
- Kita dapat mulai dari titik acak mana pun
- Ikuti arah berlawanan dari gradient (turun)
- Kita dijamin mencapai global minimum pada akhirnya!
Inilah mengapa linear regression sangat andal dibandingkan dengan model yang lebih kompleks.
Directional Derivative: Bergerak ke Arah yang Benar
Mari kita buktikan secara matematis mengapa bergerak berlawanan dengan gradient meminimalkan fungsi kita.
Directional derivative dalam arah (vektor unit) adalah derivative dari terhadap , dievaluasi pada .
Ini memberi tahu kita: โSeberapa cepat berubah jika kita bergerak dalam arah ?โ
Menggunakan chain rule, kita dapat menurunkan:
Hasil yang indah ini mengatakan: Laju perubahan dalam arah hanyalah dot product dari arah dan gradient!
Menemukan Arah Terbaik
Sekarang, arah mana yang meminimalkan fungsi kita dengan tercepat?
di mana adalah sudut antara dan gradient.
Karena adalah vektor unit, , dan kita dapat menyederhanakan:
Minimum dari terjadi ketika (atau radian).
Ini berarti: harus menunjuk ke arah berlawanan dari gradient!
Insight Kunci: Untuk meminimalkan fungsi, bergerak ke arah berlawanan dari gradient. Inilah mengapa metode ini disebut gradient descentโkita turun menuruni gradient!
Algoritma Gradient Descent
Sekarang kita dapat merumuskan algoritma lengkapnya!
Mulai dari titik sewenang-wenang , kita memperbarui posisi kita menggunakan:
di mana disebut learning rate.
Untuk bobot linear regression :
Gradient Descent dalam Aksi
Mari kita lalui satu iterasi:
- Mulai: Kita berada di titik dengan error
- Hitung gradient:
- Pilih learning rate:
- Update:
- Error baru: (menurun!)
- Ulangi sampai konvergen
Setelah banyak iterasi, kita mencapai bobot optimal!
Learning Rate: Seberapa Besar Langkah Kita?
Learning rate mengontrol seberapa jauh kita bergerak di setiap iterasi. Memilihnya sangat penting!
Learning rate menentukan ukuran langkah dalam gradient descent:
- Terlalu kecil โ konvergensi sangat lambat
- Terlalu besar โ mungkin overshoot minimum atau diverge
- Pas โ konvergensi efisien ke minimum
Learning Rate Kecil
Kelebihan:
- Stabil, kemajuan terjamin
- Tidak akan overshoot minimum
- Konvergensi lebih presisi
Kekurangan:
- Konvergensi sangat lambat
- Banyak iterasi diperlukan
- Mahal secara komputasi
Learning Rate Besar
Kelebihan:
- Kemajuan awal cepat
- Lebih sedikit iterasi diperlukan
- Efisien secara komputasi
Kekurangan:
- Mungkin overshoot minimum
- Dapat diverge atau berosilasi
- Kurang stabil
Tiga Strategi Umum untuk Memilih Learning Rate
Strategi 1: Nilai Kecil Tetap
Pendekatan: Pilih nilai konstan kecil seperti atau
Kelebihan:
- Sederhana untuk diimplementasikan
- Umumnya stabil
- Bekerja baik untuk banyak masalah
Kekurangan:
- Mungkin tidak efisien (terlalu lambat)
- Memerlukan tuning manual
Kapan digunakan: Ketika Anda menginginkan kesederhanaan dan stabilitas, dan biaya komputasi tidak kritis.
Strategi 2: Exact Line Search
Pendekatan: Temukan di mana
Dengan kata lain, selesaikan:
Kelebihan:
- Ukuran langkah optimal secara teoritis
- Kemajuan maksimum per iterasi
Kekurangan:
- Mahal secara komputasi (menyelesaikan masalah optimasi di setiap langkah!)
- Sering tidak praktis
Kapan digunakan: Jarang dalam praktik, tetapi berguna untuk pemahaman teoritis.
Strategi 3: Backtracking Line Search (Paling Populer)
Pendekatan: Coba nilai yang berbeda dan pilih yang memberikan minimum
Algoritma:
- Mulai dengan kandidat (misalnya, 1.0)
- Evaluasi
- Jika tidak cukup menurun, kurangi (misalnya, )
- Ulangi sampai kita menemukan penurunan yang dapat diterima
Kelebihan:
- Keseimbangan baik antara kecepatan dan akurasi
- Adaptif terhadap lanskap fungsi
- Digunakan dalam sebagian besar implementasi modern
Kekurangan:
- Lebih kompleks dari fixed rate
- Memerlukan beberapa evaluasi fungsi per iterasi
Kapan digunakan: Ini adalah metode paling populer dalam praktik!
Terlalu Kecil: Algoritma Anda akan memakan waktu selamanya untuk konvergen. Anda mungkin kehabisan anggaran komputasi sebelum mencapai minimum.
Terlalu Besar: Algoritma Anda mungkin:
- Berosilasi di sekitar minimum tanpa mencapainya
- Diverge sepenuhnya (error meningkat alih-alih menurun!)
- Melompati solusi optimal berulang kali
Menemukan keseimbangan yang tepat sangat penting untuk machine learning praktis!
Machine learning modern menggunakan metode adaptive learning rate yang secara otomatis menyesuaikan selama training:
- Adam: Menyesuaikan learning rate per parameter berdasarkan riwayat gradient
- RMSprop: Menggunakan moving average dari squared gradient
- AdaGrad: Beradaptasi berdasarkan informasi gradient kumulatif
Metode-metode ini menangani masalah learning rate secara otomatis, membuat deep learning jauh lebih praktis!
Menyatukan Semuanya
Gambaran Lengkap Gradient Descent:
- Masalah: Normal equation mahal secara komputasi ()
- Solusi: Gradient descentโoptimasi iteratif
- Cara kerjanya:
- Mulai dengan bobot acak
- Hitung gradient (arah peningkatan tercuram)
- Bergerak berlawanan dengan gradient (turun)
- Ulangi sampai konvergen
- Mengapa berhasil:
- Error linear regression adalah convex
- Gradient menunjuk ke peningkatan maksimum
- Arah berlawanan menunjuk ke minimum
- Dijamin mencapai global minimum!
- Parameter kunci: Learning rate mengontrol ukuran langkah
Perbandingan: Normal Equation vs. Gradient Descent
Normal Equation
Keuntungan:
- Solusi eksak dalam satu langkah
- Tidak ada parameter untuk di-tune
- Tidak perlu iterasi
Kerugian:
- Kompleksitas
- Memerlukan matrix inversion
- Tidak praktis untuk besar
- Intensif memori
Gunakan ketika: Dataset kecil hingga menengah (n < 10.000)
Gradient Descent
Keuntungan:
- Scalable ke dataset besar
- per iterasi
- Efisien memori
- Fondasi untuk deep learning
Kerugian:
- Memerlukan banyak iterasi
- Harus tune learning rate
- Solusi aproksimasi
- Lebih lambat untuk konvergen
Gunakan ketika: Dataset besar (n > 10.000) atau real-time learning
Poin-Poin Penting
Yang Telah Kita Pelajari:
- Gradient = slope dari tangent line pada suatu titik; arah peningkatan tercuram
- Partial derivative mengukur perubahan dalam satu variabel sementara yang lain tetap
- Gradient vector berisi semua partial derivative; menunjuk ke peningkatan maksimum
- Convex function memiliki satu global minimumโsempurna untuk gradient descent
- Directional derivative dalam arah berlawanan gradient memberikan descent tercuram
- Learning rate mengontrol ukuran langkah; penting untuk kecepatan konvergensi dan stabilitas
- Gradient descent menukar solusi eksak dengan efisiensi komputasi
Pendekatan iteratif ini membentuk fondasi machine learning modern!
Soal Latihan
Untuk fungsi , hitung satu iterasi gradient descent mulai dari dengan learning rate .
Klik untuk petunjuk
Pertama, hitung derivative , lalu evaluasi pada , dan terakhir terapkan aturan update .
Klik untuk solusi
Langkah 1: Hitung derivative
Langkah 2: Evaluasi pada
Langkah 3: Terapkan aturan update
Langkah 4: Verifikasi perbaikan
- โ (menurun!)
Nilai fungsi menurun dari 5 ke 3.56, mengkonfirmasi kita bergerak menuju minimum!
Mengapa linear regression sangat cocok untuk gradient descent dibandingkan dengan model machine learning lainnya? Properti apa yang membuatnya andal?
Klik untuk petunjuk
Pikirkan tentang bentuk fungsi error dan jumlah minima yang dimilikinya.
Klik untuk solusi
Linear regression ideal untuk gradient descent karena:
-
Fungsi error convex: Squared error adalah convex, artinya memiliki bentuk mangkuk dengan satu minimum.
-
Tidak ada local minima: Tidak seperti neural networks atau model polinomial, tidak ada risiko terjebak di local minima. Minimum apa pun yang kita temukan adalah global minimum.
-
Gradient yang smooth: Fungsi error dapat didifferensiasi di mana-mana, menyediakan gradient yang smooth yang dengan andal menunjuk ke minimum.
-
Konvergensi terjamin: Dengan learning rate yang tepat, gradient descent dijamin secara matematis untuk konvergen ke solusi optimal.
-
Lanskap yang well-behaved: Tidak ada saddle point, plateau, atau fitur patologis lainnya yang mengganggu model yang lebih kompleks.
Kontras dengan neural networks: Neural networks memiliki permukaan error yang sangat non-convex dengan banyak local minima, membuat optimasi jauh lebih menantang. Inilah mengapa deep learning memerlukan teknik canggih seperti batch normalization, inisialisasi yang hati-hati, dan adaptive learning rate!
Implementasikan trace konseptual dari gradient descent untuk linear regression dengan satu variabel. Diberikan data point , , , bobot awal , dan learning rate , hitung dua iterasi. Apa yang terjadi dengan error?
Klik untuk petunjuk
Gradient dari terhadap adalah dan terhadap adalah .
Klik untuk solusi
Keadaan awal:
Iterasi 1:
Hitung prediksi:
- , error:
- , error:
- , error:
SSE =
Hitung gradient:
Update bobot:
Iterasi 2:
Hitung prediksi:
- , error:
- , error:
- , error:
SSE =
Hasil: Error menurun dari 29 โ 12.96! Gradient descent bekerja!
Dengan lebih banyak iterasi, error akan terus menurun sampai mencapai solusi optimal: (hubungan sebenarnya adalah ).
Referensi
- Goodfellow, I., Bengio, Y., & Courville, A. - Deep Learning (Chapter 4: Numerical Computation)
- Boyd, S., & Vandenberghe, L. - Convex Optimization
- Nocedal, J., & Wright, S. - Numerical Optimization
- Veytsman, B. - Convex and Concave Functions Visualization
Selanjutnya Apa?
Sekarang setelah Anda memahami gradient descent untuk linear regression, Anda siap untuk menjelajahi:
- Stochastic Gradient Descent (SGD): Menghitung gradient pada batch kecil daripada seluruh dataset
- Advanced Optimizer: Adam, RMSprop, dan metode adaptive lainnya
- Regularization: L1 dan L2 penalty untuk mencegah overfitting
- Non-linear Model: Memperluas konsep ini ke neural networks!
Gradient descent adalah kuda pekerja machine learning modern. Kuasai ini, dan Anda telah membuka fondasi deep learning!