Ketika kita dapat membedakan fungsi biaya dan menemukan parameter dengan menyelesaikan persamaan yang diperoleh melalui diferensiasi parsial sehubungan dengan setiap parameter dan mencari tahu di mana fungsi biaya minimum. Juga saya pikir mungkin untuk menemukan banyak tempat di mana turunannya nol, dengan demikian kita dapat memeriksa semua tempat tersebut dan dapat menemukan minimum global
mengapa gradient descent dilakukan sebagai gantinya?
machine-learning
computational-statistics
Niranjan Kotha
sumber
sumber
Jawaban:
Bahkan dalam kasus, katakanlah, model linier, di mana Anda memiliki solusi analitis, mungkin masih lebih baik menggunakan pemecah iteratif seperti itu.
Sebagai contoh, jika kita mempertimbangkan regresi linier, solusi eksplisit membutuhkan pembalikan matriks yang memiliki kompleksitas . Ini menjadi penghalang dalam konteks big data.O(N3)
Juga, banyak masalah dalam pembelajaran mesin adalah cembung, jadi menggunakan gradien memastikan bahwa kita akan sampai ke ekstrem.
Seperti yang telah ditunjukkan, masih ada masalah non-cembung yang relevan, seperti jaringan saraf, di mana metode gradien (backpropagation) menyediakan pemecah yang efisien. Sekali lagi ini sangat relevan untuk kasus pembelajaran mendalam.
sumber
Keturunan gradien tidak diperlukan. Ternyata penurunan gradien seringkali merupakan algoritma optimasi yang sangat tidak efisien! Untuk metode berulang, sering kali mungkin untuk menemukan arah yang lebih baik untuk bergerak daripada kemiringan terjal.
Tapi itu sedikit jawaban yang terbalik. Pertanyaan Anda seharusnya, "mengapa kita membutuhkan metode berulang?" Misalnya. mengapa tidak langsung menuju solusi jika masalahnya cembung, kondisi Slater berlaku, dan kondisi urutan pertama diperlukan dan kondisi yang memadai untuk optimal? Artinya, ketika solusinya dapat digambarkan sebagai solusi untuk sistem persamaan, mengapa tidak hanya memecahkan sistem? Jawabannya adalah:
sumber
Dalam kalkulus 101 kita belajar tentang bagaimana mengoptimalkan suatu fungsi menggunakan "metode analitik": kita hanya perlu mendapatkan turunan dari fungsi biaya dan mengatur turunan ke 0 lalu menyelesaikan persamaannya. Ini benar-benar masalah mainan dan hampir tidak akan pernah terjadi di dunia nyata.
Dalam dunia nyata, banyak fungsi biaya tidak memiliki turunan di mana-mana (Selanjutnya, fungsi biaya mungkin terpisah dan tidak memiliki turunan sama sekali). Selain itu, bahkan Anda dapat menghitung turunannya, Anda tidak bisa menyelesaikan persamaannya secara analitis (misalnya, pikirkan tentang bagaimana menyelesaikan analitik? Saya dapat memberi tahu Anda jawaban numerik adalah , tetapi tidak tahu solusi analitis). Kita harus menggunakan beberapa metode numerik (periksa mengapa di sini pada kasus polinomial Abel Ruffin Theorem ).x7+x3−52+ex+log(x+x2)+1/x=0 x=1.4786
Metode berulang sangat bagus untuk digunakan, dan sangat intuitif untuk dipahami. Misalkan Anda ingin mengoptimalkan satu fungsi, alih-alih menyelesaikan persamaan dan mendapatkan jawabannya, Anda mencoba meningkatkan jawaban Anda dengan jumlah iterasi / langkah-langkah setelah iterasi yang cukup, Anda akan mendapatkan jawaban yang dekat dengan "jawaban yang benar". Katakanlah jika Anda menggunakan kalkulus untuk meminimalkan , Anda langsung mendapatkan , tetapi menggunakan metode numerik, Anda mungkin mendapatkan .f(x)=x2 x=0 x=1.1234×10−20
Sekarang, penting untuk memahami bagaimana metode berulang ini bekerja. Konsep kuncinya adalah mengetahui cara memperbarui parameter input Anda untuk mendapatkan solusi yang lebih baik. Misalkan Anda ingin meminimalkan(perhatikan fungsi biaya ini tidak dapat dibedakan di mana-mana, tetapi dapat dibedakan ada di "sebagian besar tempat", ini cukup baik bagi kami, karena kami tahu cara memperbarui di "sebagian besar tempat".), saat ini Anda berada di , dan biayanya , sekarang Anda ingin memperbarui untuk membuat fungsi objektif lebih kecil. Bagaimana Anda akan melakukannya? Anda mungkin mengatakan saya ingin mengurangi keduanya , tetapi mengapa? Bahkan Anda menggunakan implisitf(x1,x2)=x21+x22+|x1+x2| (1,1) 4.0 (x1,x2) x1 x2 konsep gradien "mengubah sejumlah kecil , apa yang akan terjadi pada ". x y . Dalam , turunannya adalah , jadi gradien negatif dikali laju pembelajaran katakan , adalah , jadi kami memperbarui solusi kami dari hingga yang mana biayanya lebih baik.(1,1) (3,3) α=0.001 1 , 1 ( 0,997 , 0,997 )(−0.003,−0.003) 1,1 (0.997,0.997)
sumber
Pendekatan yang Anda sebutkan hanya dapat digunakan untuk menyelesaikan satu set persamaan linear misalnya dalam kasus regresi linier, tetapi katakan untuk menyelesaikan satu set persamaan non linear, dalam kasus seperti jaringan saraf dengan aktivasi sigmoid, gradient descent adalah pendekatan pergi untuk. Jadi Gradient Descent adalah pendekatan yang lebih umum.
Bahkan untuk persamaan linear, ukuran matriks yang diberikan oleh himpunan persamaan linear sangat besar, dan bisa sulit untuk membatasi kebutuhan memori.
sumber