Di sebagian besar tugas pembelajaran mesin di mana Anda dapat merumuskan beberapa probabilitas yang harus dimaksimalkan, kami sebenarnya akan mengoptimalkan probabilitas alih-alih probabilitas untuk beberapa parameter . Misalnya dalam pelatihan kemungkinan maksimum, biasanya log-kemungkinan. Ketika melakukan ini dengan beberapa metode gradien, ini melibatkan faktor:
Lihat di sini atau di sini untuk beberapa contoh.
Tentu saja, optimasi adalah setara, tetapi gradien akan berbeda, sehingga metode berbasis gradien akan berperilaku berbeda (terutama metode gradien stokastik). Apakah ada justifikasi bahwa gradien bekerja lebih baik daripada gradien ?
Jawaban:
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)=−x2 x f(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)
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!
sumber
Underflow
Komputer menggunakan representasi pecahan titik mengambang angka terbatas, mengalikan begitu banyak probabilitas dijamin sangat mendekati nol.
Dengan , kami tidak memiliki masalah ini.log
sumber
Logaritma probabilitas probabilitas gabungan ganda disederhanakan menjadi jumlah logaritma probabilitas individual (dan aturan penjumlahan lebih mudah daripada aturan produk untuk diferensiasi)
Logaritma dari anggota keluarga distribusi probabilitas eksponensial (yang termasuk normal di mana-mana) adalah polinomial dalam parameter (yaitu kemungkinan maksimum direduksi menjadi kuadrat-terkecil untuk distribusi normal)
Bentuk yang terakhir lebih stabil secara numerik dan secara simbolis lebih mudah dibedakan daripada yang sebelumnya.
Terakhir tetapi tidak kalah pentingnya, logaritma adalah transformasi monoton yang menjaga lokasi ekstrem (khususnya, parameter yang diestimasikan dalam kemungkinan maksimum identik untuk formulasi asli dan formulasi log-transformasi)
sumber
Jauh lebih mudah untuk mengambil turunan dari jumlah logaritma daripada mengambil turunan dari produk, yang mengandung, katakanlah, 100 pengganda.
sumber
Sebagai aturan umum, masalah optimisasi yang paling mendasar dan mudah adalah mengoptimalkan fungsi kuadratik. Anda dapat dengan mudah menemukan fungsi yang optimal di mana pun Anda mulai. Bagaimana ini memanifestasikan tergantung pada metode spesifik tetapi semakin dekat fungsi Anda ke kuadrat, semakin baik.
Seperti dicatat oleh TemplateRex, dalam berbagai masalah, probabilitas yang masuk ke dalam menghitung fungsi kemungkinan berasal dari distribusi normal, atau diperkirakan oleh itu. Jadi jika Anda bekerja pada log, Anda mendapatkan fungsi kuadratik yang bagus. Sedangkan jika Anda bekerja pada probabilitas, Anda memiliki fungsi itu
Fungsi mana yang lebih Anda optimalkan, ini , atau ini ?
(Ini sebenarnya yang mudah; dalam aplikasi praktis pencarian Anda dapat memulai sejauh ini dari yang optimal sehingga nilai-nilai fungsi dan gradien, bahkan jika Anda dapat menghitungnya secara numerik, akan dapat dibedakan dari 0 dan tidak berguna untuk keperluan optimasi algoritma. Tapi mengubah ke fungsi kuadrat membuat ini sepotong kue.)
Perhatikan bahwa ini sepenuhnya konsisten dengan masalah stabilitas numerik yang telah disebutkan. Skala log alasan diperlukan untuk bekerja dengan fungsi ini, persis alasan yang sama bahwa probabilitas log berperilaku jauh lebih baik (untuk optimasi dan tujuan lain) daripada yang asli.
Anda juga bisa mendekati ini dengan cara lain. Bahkan jika tidak ada keuntungan pada log (yang ada) - kita akan tetap menggunakan skala log untuk derivasi dan perhitungan, jadi alasan apa yang ada untuk menerapkan transformasi exp hanya untuk menghitung gradien? Kami mungkin tetap konsisten dengan log.
sumber
Dengan menggunakan kami meningkatkan jangkauan dinamis dari algoritma optimasi. The dalam aplikasi biasanya produk dari fungsi. Misalnya, dalam estimasi kemungkinan maksimum itu adalah produk dari bentuk , di mana Adalah fungsi kerapatan, yang dapat berupa lebih besar atau kurang dari 1, btw.lnp p L(x|θ)=Πni=1f(xi|θ) f(.)
Jadi, ketika sangat besar, yaitu sampel yang besar, fungsi kemungkinan Anda biasanya jauh dari 1: itu sangat kecil atau sangat besar, karena itu fungsi kekuasaan .n L(.) L∼f(.)n
Dengan mengambil log, kami cukup meningkatkan rentang dinamis dari setiap algoritma optimasi, memungkinkannya bekerja dengan nilai yang sangat besar atau kecil dengan cara yang sama.
sumber
Beberapa jawaban yang bagus telah diberikan. Tetapi baru-baru ini saya menemukan yang baru:
Seringkali, Anda diberikan set data pelatihan besar , dan Anda mendefinisikan beberapa model probabilistik , dan Anda ingin memaksimalkan kemungkinan untuk . Mereka dianggap independen, yaitu Anda memiliki Sekarang, Anda sering melakukan semacam pelatihan berbasis gradien stokastik (batch), yaitu di setiap langkah, untuk kerugian Anda , Anda mengoptimalkan untuk , yaituX p(x|θ) x∈X p(X|θ)=∏x∈Xp(x|θ). L L(X′|θ) X′⊂X θ′:=θ−∂∑x∈X′L(x|θ)∂θ.
Sekarang, langkah-langkah stokastik ini diakumulasikan secara aditif. Karena itu, Anda menginginkan properti yang secara umum
Ini adalah kasus untuk
L(X|θ)=∑x∈XL(x|θ). L(x|θ)=−logp(x|θ).
sumber