Banyak tutorial bicara online tentang gradient descent dan hampir semuanya menggunakan ukuran langkah tetap (tingkat pembelajaran ). Mengapa tidak ada penggunaan pencarian baris (seperti pencarian garis backtracking atau pencarian baris yang tepat)?
Banyak tutorial bicara online tentang gradient descent dan hampir semuanya menggunakan ukuran langkah tetap (tingkat pembelajaran ). Mengapa tidak ada penggunaan pencarian baris (seperti pencarian garis backtracking atau pencarian baris yang tepat)?
Jawaban:
Turunan gradien vanilla dapat dibuat lebih andal menggunakan pencarian garis; Saya sudah menulis algoritma yang melakukan ini dan itu membuat algoritma yang sangat stabil (walaupun tidak harus cepat).
Namun, hampir tidak masuk akal untuk melakukan pencarian garis untuk metode gradien stokastik . Alasan saya mengatakan ini adalah bahwa jika kita melakukan pencarian garis berdasarkan meminimalkan fungsi kerugian penuh, kita segera kehilangan salah satu motivasi utama untuk melakukan metode stokastik; kita sekarang perlu menghitung fungsi kerugian penuh untuk setiap pembaruan, yang biasanya memiliki biaya komputasi yang sebanding dengan menghitung turunan penuh pertama. Mengingat bahwa kami ingin menghindari komputasi gradien penuh karena biaya komputasi, tampaknya sangat tidak mungkin bahwa kami ingin baik-baik saja dengan menghitung fungsi kerugian penuh.
Atau, Anda mungkin berpikir untuk melakukan sesuatu seperti pencarian garis berdasarkan pada titik data sampel acak Anda. Namun, ini juga bukan ide yang baik; ini tidak akan memberi tahu Anda apakah Anda telah melangkah terlalu jauh (yang merupakan manfaat utama dari pencarian baris). Misalnya, anggap Anda sedang melakukan regresi logistik. Maka setiap hasil hanyalah 0 atau 1, dan untuk setiap sampel tunggal, kami secara sepele mendapatkan pemisahan sempurna sehingga solusi optimal untuk parameter regresi kami berdasarkan sampel 1 adalah sepele atau ∞ oleh efek Hauck Donner. Itu tidak baik.
EDIT
@DeltaIV menunjukkan bahwa ini juga berlaku untuk mini-batch, bukan hanya sampel individual.
Tutorial berbicara tentang gradient descent mungkin karena itu adalah salah satu algoritma paling sederhana yang digunakan untuk optimasi, sehingga mudah untuk dijelaskan. Karena sebagian besar tutorial semacam itu agak singkat, mereka fokus pada hal-hal sederhana. Setidaknya ada beberapa algoritma optimasi populer di luar keturunan gradien sederhana yang digunakan untuk pembelajaran mendalam. Sebenarnya orang sering menggunakan algoritma yang berbeda dari gradient descent karena mereka biasanya lebih cepat konvergen. Beberapa dari mereka memiliki tingkat belajar yang tidak konstan (misalnya menurun dari waktu ke waktu). Untuk ulasan tentang algoritma tersebut, Anda dapat memeriksa ikhtisar tentang algoritme optimasi penurunan gradien yang dikirim oleh Sebastian Ruder (atau makalah arXived ).