Mengapa menggunakan gradient descent untuk regresi linier, ketika solusi matematika bentuk-tertutup tersedia?

74

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.

Purus
sumber
5
Anda tidak perlu gradient descent untuk memperkirakan koefisien regresi linier.
Pasang kembali Monica
8
@ Scorax "tidak perlu" adalah pernyataan yang kuat. Metode berulang mungkin berguna untuk data yang sangat besar. Katakanlah matriks data sangat besar yang tidak dapat ditampung dalam memori.
Haitao Du
8
@ hxd1011 Terima kasih telah menjelaskan dimensi praktis ini untuk masalahnya. Saya berpikir dalam hal matematika murni.
Pasang kembali Monica

Jawaban:

90

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

β=(XX)1XY
XXXXK×K matrix - ini mahal.

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.

Aksakal
sumber
17
Tapi Ng adalah orang ilmu komputer.
Amoeba berkata Reinstate Monica
21
Mengenai Komentar Anda: Sebagai ahli matematika, saya dulu setuju. Tetapi pemahaman saya sekarang adalah bahwa dalam pembelajaran mesin modern, metode optimasi secara inheren terkait dengan tujuan yang dioptimalkan. Beberapa bentuk regularisasi, seperti putus sekolah, lebih jelas diungkapkan dalam hal algoritme daripada tujuan. Singkatnya: jika Anda mengambil jaring yang dalam, mempertahankan fungsi objektif tetapi mengubah metode pengoptimalan, Anda mungkin mendapatkan kinerja yang sangat berbeda. Bahkan, kadang-kadang pengoptimal yang lebih baik menghasilkan hasil yang lebih buruk dalam praktik ...
A. Rex
14
Nitpick kecil: Anda tentu saja tidak akan membalik ; alih-alih, Anda akan menyelesaikan sistem persamaan linear untuk . Secara abstrak, itu sama, tetapi secara numerik, jauh lebih stabil, dan bahkan berpotensi lebih murah. X X β = X y βXXXXβ=Xyβ
S. Kolassa - Reinstate Monica
3
Solusi @AnderBiguri dengan faktorisasi QR, di sisi lain, adalah stabil mundur, sehingga memberikan solusi yang seakurat mungkin mengingat ketidakpastian dalam data input.
Federico Poloni
7
Saya pikir kita semua harus berhenti menulis dan hanya menulis sepanjang waktu. X t X β = X t yβ=(XtX)1XtyXtXβ=Xty
Matthew Drury
21

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 linear

minimize Axb2
2AT(Axb)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=ATbminimize Axb2

Dibandingkan dengan metode langsung (Katakanlah Penguraian QR / LU ). Metode berulang memiliki beberapa keunggulan ketika kita memiliki sejumlah besar data atau data yang sangat 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.

Haitao Du
sumber
Anda benar sekali. SGD sangat membantu saat menangani sejumlah besar data. Metode yang ditunjukkan Prof Ng adalah yang paling klasik dan murni. Orang harus mulai dari titik itu untuk memiliki gagasan yang jelas. Jika seseorang dapat memahami moto itu maka seluruh estimasi linier akan menjadi sangat jelas baginya.
Sandipan Karmakar
1
Ukuran maxtrix data sebenarnya bukan masalah, menggunakan hubungan ; Anda dapat menghitung dan satu pengamatan pada satu waktu. Ini sebenarnya bagaimana hal itu dilakukan di SAS kembali pada hari-hari ketika memori komputer jauh lebih terbatas daripada hari ini. Jumlah kolom dalam itulah faktor pembatas. XTX=xixiTXTXXTyX
jbowman
6

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.

Tim Atreides
sumber
2
Untuk pernyataan overfitting, dapatkah Anda memberikan tautannya? Apakah menambahkan istilah regularisasi lebih baik daripada membatasi jumlah iterasi?
Haitao Du
Anda bisa melihat Bab 7 Pembelajaran Jauh oleh Goodfellow et al, yang menyebutkan penghentian dini untuk mencegah overfitting dalam jaring saraf.
Batman
2
Regularisasi dengan penghentian dini sama sekali bukan teknik baru; itu adalah teknik yang terkenal di, katakanlah, iterasi Landweber: en.wikipedia.org/wiki/Landweber_iteration
cfh
3

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)NXX

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.

Sandipan Karmakar
sumber
5
"Membalikkan matriks" sangat TIDAK dianjurkan. QR lebih stabil secara numerik untuk menyelesaikan sistem linear.
Haitao Du
1
Saya setuju dengan argumen komputasi. Namun, kelebihan atau kekurangan tidak ada hubungannya dengan menggunakan GD vs persamaan Normal, melainkan dengan kompleksitas model (regresi). Kedua metode (GD jika berfungsi dengan benar) menemukan solusi kuadrat-terkecil yang sama (jika ada), dan karena itu akan kelebihan atau kekurangan data dengan jumlah yang sama.
Ruben van Bergen
2

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.)

Timothy Teräväinen
sumber
2

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.

Sanyo Mn
sumber