Metode gradien umumnya bekerja lebih baik mengoptimalkan daripada karena gradien dari umumnya lebih baik skala . Artinya, ia memiliki ukuran yang secara konsisten dan bermanfaat mencerminkan geometri fungsi tujuan, membuatnya lebih mudah untuk memilih ukuran langkah yang tepat dan mencapai optimal dalam langkah-langkah yang lebih sedikit.logp(x)p(x)logp(x)
Untuk melihat apa yang saya maksud, bandingkan proses optimasi gradien untuk dan . Pada setiap titik , gradien dari adalahJika kita kalikan dengan , kita mendapatkan ukuran langkah tepat yang diperlukan untuk mencapai global optimal pada titik asal, tidak peduli apap(x)=exp(−x2)f(x)=logp(x)=−x2xf(x)
f′(x)=−2x.
1/2xaku s. Ini berarti bahwa kita tidak perlu bekerja terlalu keras untuk mendapatkan ukuran langkah yang baik (atau "tingkat pembelajaran" dalam jargon ML). Tidak peduli di mana titik awal kami, kami hanya mengatur langkah kami untuk setengah gradien dan kami akan berada di titik asal dalam satu langkah. Dan jika kita tidak tahu faktor pasti yang diperlukan, kita bisa memilih ukuran langkah sekitar 1, melakukan sedikit pencarian garis, dan kita akan menemukan ukuran langkah besar dengan sangat cepat, yang bekerja dengan baik di mana pun adalah. Properti ini tangguh untuk terjemahan dan penskalaan . Sementara penskalaan akan menyebabkan penskalaan langkah optimal berbeda dari 1/2, setidaknya penskalaan langkah akan sama tidak peduli apa , jadi kita hanya perlu menemukan satu parameter untuk mendapatkan optimalisasi berbasis gradien yang efisien skema.
xf(x)f(x)x
Sebaliknya, gradien memiliki sifat global yang sangat buruk untuk optimisasi. Kami memilikiIni mengalikan gradien yang sangat bagus, berperilaku baik dengan faktor yang meluruh (lebih cepat dari) secara eksponensial dengan meningkatnya . Pada , kita sudah memiliki , jadi langkah sepanjang vektor gradien sekitar kali terlalu kecil. Untuk mendapatkan ukuran langkah yang masuk akal menuju optimal, kita harus skala gradien dengan kebalikannya, konstanta yang sangat besarp(x)
p′(x)=f′(x)p(x)=−2xexp(−x2).
−2xexp(−x2)xx=5exp(−x2)=1.4⋅10−1110−11∼1011. Gradien berskala buruk seperti itu lebih buruk daripada tidak berguna untuk tujuan optimisasi - kami akan lebih baik hanya mencoba langkah satuan dalam arah menanjak daripada mengatur langkah kami dengan penskalaan terhadap ! (Dalam banyak variabel menjadi sedikit lebih berguna karena kita setidaknya mendapatkan informasi terarah dari gradien, tetapi masalah penskalaan tetap ada.)
p′(x)p′(x)
Secara umum tidak ada jaminan bahwa akan memiliki sifat penskalaan gradien yang besar seperti contoh mainan ini, terutama ketika kita memiliki lebih dari satu variabel. Namun, untuk hampir semua masalah nontrivial, akan menjadi cara, jauh lebih baik daripada . Ini karena kemungkinannya adalah produk besar dengan banyak istilah, dan log mengubah produk itu menjadi jumlah, sebagaimana dicatat dalam beberapa jawaban lainnya. Asalkan persyaratan dalam kemungkinan berperilaku baik dari sudut pandang optimasi, log mereka umumnya berperilaku baik, dan jumlah fungsi berperilaku baik. Dengan berperilaku baik maksudkulogp(x)logp(x)p(x)f′′(x)tidak berubah terlalu banyak atau terlalu cepat, mengarah ke fungsi yang hampir kuadratik yang mudah dioptimalkan dengan metode gradien. Jumlah turunan adalah turunan dari jumlah, tidak peduli apa pun urutan turunannya, yang membantu memastikan bahwa tumpukan besar jumlah penjumlahan memiliki turunan kedua yang sangat masuk akal!