Saya mengikuti kursus Machine Learning online dan belajar tentang Gradient Descent untuk menghitung nilai optimal dalam hipotesis.
h(x) = B0 + B1X
mengapa kita perlu menggunakan Gradient Descent jika kita dapat dengan mudah menemukan nilai dengan rumus di bawah ini? Ini terlihat lurus ke depan dan juga mudah. tetapi GD membutuhkan beberapa iterasi untuk mendapatkan nilai.
B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)
B0 = Mean(Y) – B1 * Mean(X)
CATATAN: Diambil dalam https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regress-tutorial
Saya memang memeriksa pertanyaan-pertanyaan di bawah ini dan bagi saya itu tidak jelas untuk dipahami.
Mengapa gradient descent diperlukan?
Mengapa optimasi diselesaikan dengan gradient descent daripada dengan solusi analitik?
Jawaban di atas membandingkan GD vs menggunakan turunan.
Jawaban:
Alasan utama mengapa gradient descent digunakan untuk regresi linier adalah kompleksitas komputasi: ini lebih murah secara komputasi (lebih cepat) untuk menemukan solusi menggunakan gradient descent dalam beberapa kasus.
Rumus yang Anda tulis terlihat sangat sederhana, bahkan secara komputasi, karena hanya berfungsi untuk kasus univariat, yaitu ketika Anda hanya memiliki satu variabel. Dalam kasus multivarian, ketika Anda memiliki banyak variabel, rumusnya sedikit lebih rumit di atas kertas dan memerlukan lebih banyak perhitungan saat Anda menerapkannya dalam perangkat lunak: Di sini, Anda perlu menghitung matriks kemudian membalikkannya (lihat catatan di bawah). Ini perhitungan yang mahal. Untuk referensi Anda, matriks (desain) X memiliki kolom K + 1 di mana K adalah jumlah prediktor dan N baris pengamatan. Dalam algoritma pembelajaran mesin, Anda bisa mendapatkan K> 1000 dan N> 1.000.000. The matriks itu sendiri memerlukan sedikit waktu untuk menghitung, maka Anda harus membalikkanX ′ X X ′ X K × K
Jadi, gradient descent memungkinkan untuk menghemat banyak waktu dalam perhitungan. Selain itu, cara itu dilakukan memungkinkan untuk paralelisasi sepele, yaitu mendistribusikan perhitungan di beberapa prosesor atau mesin. Solusi aljabar linier juga dapat diparalelkan tetapi lebih rumit dan masih mahal.
Selain itu, ada versi gradient descent ketika Anda hanya menyimpan sepotong data di memori, menurunkan persyaratan untuk memori komputer. Secara keseluruhan, untuk masalah ekstra besar, ini lebih efisien daripada solusi aljabar linier.
Ini menjadi lebih penting ketika dimensi meningkat, ketika Anda memiliki ribuan variabel seperti dalam pembelajaran mesin.
Komentar . Saya terkejut dengan betapa banyak perhatian diberikan pada gradient descent dalam kuliah Ng. Dia menghabiskan banyak waktu untuk membicarakannya, mungkin 20% dari keseluruhan saja. Bagi saya ini hanya detail implementasi, ini tepatnya bagaimana Anda menemukan yang optimal. Kuncinya adalah dalam merumuskan masalah optimisasi, dan bagaimana tepatnya Anda menemukannya tidak penting. Saya tidak akan terlalu khawatir tentang itu. Serahkan pada orang-orang ilmu komputer, dan fokus pada apa yang penting bagi Anda sebagai ahli statistik.
Setelah mengatakan ini saya harus memenuhi syarat dengan mengatakan bahwa memang penting untuk memahami dengan kompleksitas komputasi dan stabilitas numerik dari algoritma solusi. Saya masih tidak berpikir Anda harus tahu detail implementasi dan kode algoritma. Ini bukan penggunaan waktu terbaik Anda sebagai ahli statistik.
Catatan 1 . Saya menulis bahwa Anda harus membalikkan matriks untuk tujuan didaktik dan bukan bagaimana biasanya Anda menyelesaikan persamaan. Dalam praktiknya, masalah aljabar linier diselesaikan dengan menggunakan beberapa jenis faktorisasi seperti QR, di mana Anda tidak secara langsung membalikkan matriks tetapi melakukan beberapa manipulasi yang setara secara matematis lainnya untuk mendapatkan jawaban. Anda melakukan ini karena inversi matriks adalah operasi yang mahal dan tidak stabil dalam banyak kasus.
Ini memunculkan sedikit keuntungan lain dari algoritma gradient descent sebagai efek samping: ia bekerja bahkan ketika matriks desain memiliki masalah collinearity. Jalur aljabar linier biasa akan meledak dan gradient descent akan terus berjalan bahkan untuk prediktor collinear.
sumber
Pertama, saya sangat menyarankan Anda membaca dua posting berikut (jika tidak duplikat)
Silakan periksa jawaban JM di
Algoritma apa yang digunakan dalam regresi linier?
Silakan periksa jawaban Mark (dari sudut pandang stabilitas numerik) di
Apakah kita memerlukan gradient descent untuk menemukan koefisien model regresi linier?
Singkatnya, misalkan kita ingin menyelesaikan masalah regresi linier dengan kerugian kuadrat Kita dapat mengatur turunan ke , dan itu sedang menyelesaikan sistem linearminimize ∥Ax−b∥2 2AT(Ax−b) 0 ATAx=ATb
Di level tinggi, ada dua cara untuk menyelesaikan sistem linear. Metode langsung dan metode berulang. Catatan metode langsung adalah menyelesaikan , dan gradient descent (salah satu contoh metode iteratif) secara langsung menyelesaikan .ATAx=ATb minimize ∥Ax−b∥2
Dibandingkan dengan metode langsung (Katakanlah Penguraian QR / LU ). Metode berulang memiliki beberapa keunggulan ketika kita memiliki sejumlah besar data atau data yang sangat jarang.
Misalkan matriks data kami sangat besar dan tidak mungkin untuk muat dalam memori, keturunan gradien stokastik dapat digunakan. Saya punya jawaban untuk menjelaskan mengapa Bagaimana penurunan gradien stokastik dapat menghemat waktu dibandingkan dengan penurunan gradien standar?A
Untuk data jarang, lihat buku bagus Metode Iteratif untuk Sistem Linier Jarang
Di sisi lain, saya percaya salah satu alasan Andrew Ng menekankan itu karena itu adalah metode generik (metode yang paling banyak digunakan dalam pembelajaran mesin) dan dapat digunakan dalam model lain seperti regresi logistik atau jaringan saraf.
sumber
Sycorax benar bahwa Anda tidak perlu gradient descent ketika memperkirakan regresi linier. Kursus Anda mungkin menggunakan contoh sederhana untuk mengajari Anda gradient descent untuk kata pengantar versi yang lebih rumit.
Satu hal yang rapi yang ingin saya tambahkan adalah bahwa saat ini ada ceruk penelitian kecil yang melibatkan penghentian gradient descent lebih awal untuk mencegah overfitting suatu model.
sumber
Jika saya tidak salah, saya pikir Anda menunjuk ke arah MOOC yang ditawarkan oleh Prof Andrew Ng. Untuk menemukan koefisien regresi yang optimal, tersedia dua metode. Salah satunya adalah dengan menggunakan Persamaan Normal yaitu dengan hanya mencari tahu dan yang kedua adalah dengan meminimalkan paling sedikit kriteria kuadrat yang berasal dari hipotesis yang telah Anda kutip. By the way, metode pertama yaitu persamaan Normal adalah produk dari metode kedua yaitu metode optimasi.(XTX)−1XTy
Metode yang telah Anda sebutkan yaitu menggunakan korelasi, itu berlaku untuk satu prediktor dan satu kuantitas intersepsi saja. Hanya memperhatikan formulir. Jadi, ketika jumlah prediktor lebih dari satu jumlahnya, lalu apa jalan keluarnya? Maka kita harus menggunakan metode lain yaitu persamaan normal atau optimasi.
Sekarang mengapa optimasi (di sini Gradient Descent) walaupun persamaan normal langsung tersedia. Perhatikan bahwa dalam persamaan normal kita harus membalikkan sebuah matriks. Sekarang pembalikan sebuah matriks biaya untuk perhitungan di mana adalah jumlah baris dalam matriks yaitu pengamatan. Selain itu, jika tidak dikondisikan maka akan membuat kesalahan perhitungan dalam estimasi. Jadi, ini adalah jenis algoritma optimasi Gradient Descent yang dapat menyelamatkan kita dari jenis masalah ini. Masalah lain adalah overfitting dan underfitting dalam estimasi koefisien regresi.O(N3) N X X
Saran saya kepada Anda adalah jangan hanya menyelesaikan masalah. Cobalah untuk memahami teorinya. Prof Ng adalah salah satu Profesor terbaik di dunia ini yang dengan ramah mengajarkan Machine Learning dalam MOOC. Jadi, ketika dia mengajar dengan cara ini maka pasti ada niat laten. Saya harap Anda tidak akan keberatan dengan kata-kata saya.
Semua yang terbaik.
sumber
Pertama, ya, alasan sebenarnya adalah alasan yang diberikan oleh Tim Atreides; ini adalah latihan pedagogis.
Namun, adalah mungkin, meskipun tidak mungkin, bahwa seseorang ingin melakukan regresi linier pada, katakanlah, beberapa triliun titik data yang dialirkan dari soket jaringan. Dalam hal ini, evaluasi naif dari solusi analitik tidak mungkin dilakukan, sementara beberapa varian penurunan stokastik / gradien adaptif akan menyatu dengan solusi yang benar dengan overhead memori minimal.
(Seseorang dapat, untuk regresi linier, merumuskan kembali solusi analitik sebagai sistem pengulangan, tetapi ini bukan teknik umum.)
sumber
Salah satu alasan lainnya adalah bahwa gradient descent adalah metode yang lebih umum. Untuk banyak masalah pembelajaran mesin, fungsi biaya tidak cembung (misalnya, faktorisasi matriks, jaringan saraf) sehingga Anda tidak dapat menggunakan solusi bentuk tertutup. Dalam kasus tersebut, gradient descent digunakan untuk menemukan beberapa titik optimal lokal yang baik. Atau jika Anda ingin menerapkan versi online dari lagi, Anda harus menggunakan algoritma berbasis gradient descent.
sumber