Dalam kursus Neural Networks dan Deep Learning Andrew Ng di Coursera ia mengatakan bahwa menggunakan hampir selalu lebih disukai daripada menggunakan .
Alasan yang dia berikan adalah bahwa output menggunakan pusat sekitar 0 daripada 's 0,5, dan ini "membuat belajar untuk lapisan berikutnya sedikit lebih mudah".
Mengapa memusatkan pembelajaran kecepatan keluaran aktivasi? Saya berasumsi dia merujuk ke lapisan sebelumnya sebagai pembelajaran terjadi selama backprop?
Apakah ada fitur lain yang membuat lebih disukai? Akankah gradien yang lebih curam menunda gradien yang hilang?
Apakah ada situasi di mana akan lebih?
Matematika-ringan, jawaban intuitif lebih disukai.
Jawaban:
Yan LeCun dan yang lainnya berdebat dalam BackProp Efisien itu
Inilah sebabnya mengapa Anda harus menormalkan input Anda sehingga rata-rata adalah nol.
Logika yang sama berlaku untuk lapisan tengah:
Postscript @craq menegaskan bahwa kutipan ini tidak masuk akal untuk ReLU (x) = maks (0, x) yang telah menjadi fungsi aktivasi yang sangat populer. Sementara ReLU menghindari masalah zigzag pertama yang disebutkan oleh LeCun, itu tidak menyelesaikan poin kedua ini oleh LeCun yang mengatakan penting untuk mendorong rata-rata ke nol. Saya ingin tahu apa yang dikatakan LeCun tentang ini. Bagaimanapun, ada makalah yang disebut Batch Normalisasi , yang dibangun di atas karya LeCun dan menawarkan cara untuk mengatasi masalah ini:
Omong-omong, video ini oleh Siraj menjelaskan banyak tentang fungsi aktivasi dalam 10 menit yang menyenangkan.
@elkout mengatakan, "Alasan sebenarnya mengapa tanh lebih disukai dibandingkan dengan sigmoid (...) adalah bahwa turunan dari tanh lebih besar daripada turunan dari sigmoid."
Saya pikir ini bukan masalah. Saya tidak pernah melihat ini menjadi masalah dalam literatur. Jika itu mengganggu Anda bahwa satu turunan lebih kecil dari yang lain, Anda bisa mengukurnya.
Fungsi logistik memiliki bentukσ(x)=11+e−kx . Biasanya, kami menggunakank=1 , tetapi tidak ada yang melarang Anda menggunakan nilai lain untukk untuk membuat turunan Anda lebih luas, jika itu masalah Anda.
Nitpick: tanh juga merupakan fungsi sigmoid . Setiap fungsi dengan bentuk S adalah sigmoid. Apa yang kalian sebut sigmoid adalah fungsi logistik. Alasan mengapa fungsi logistik lebih populer adalah alasan historis. Ini telah digunakan untuk waktu yang lebih lama oleh ahli statistik. Selain itu, beberapa merasa lebih masuk akal secara biologis.
sumber
Bukan berarti itu lebih baik daripada . Dengan kata lain, bukan pusat fungsinya aktivasi yang membuatnya lebih baik. Dan ide di balik kedua fungsi itu sama, dan mereka juga berbagi "tren" yang sama. Tidak perlu dikatakan bahwa fungsi tanh disebut versi bergeser dari fungsi sigmoid .sigmoid tanh sigmoid
Alasan sebenarnya mengapa lebih disukai dibandingkan dengan sigmoid , terutama ketika datang ke data besar ketika Anda biasanya berjuang untuk menemukan dengan cepat minimum lokal (atau global), adalah bahwa turunan dari tanh lebih besar daripada turunan dari sigmoid . Dengan kata lain, Anda meminimalkan fungsi biaya Anda lebih cepat jika Anda menggunakan tanh sebagai fungsi aktivasi.tanh sigmoid tanh sigmoid tanh
Tetapi mengapa tangen hiperbolik memiliki turunan yang lebih besar? Hanya untuk memberi Anda intuisi yang sangat sederhana, Anda dapat mengamati grafik berikut:
Fakta bahwa jangkauannya antara -1 dan 1 dibandingkan dengan 0 dan 1, membuat fungsinya menjadi lebih nyaman untuk jaringan saraf. Terlepas dari itu, jika saya menggunakan beberapa matematika, saya dapat membuktikan bahwa:
sumber
sigmoid(x) - 0.5
tanh
Menjawab bagian dari pertanyaan sejauh ini belum terselesaikan:
Andrew Ng mengatakan bahwa menggunakan fungsi logistik (umumnya dikenal sebagai sigmoid) benar-benar hanya masuk akal di lapisan akhir dari jaringan klasifikasi biner.
sumber
Itu semua pada dasarnya tergantung pada turunan dari fungsi aktivasi, masalah utama dengan fungsi sigmoid adalah bahwa nilai maksimum turunannya adalah 0,25, ini berarti bahwa pembaruan nilai W dan b akan menjadi kecil.
Fungsi tanh di sisi lain, memiliki turunan hingga 1,0, membuat pembaruan W dan b jauh lebih besar.
Ini membuat fungsi tanh hampir selalu lebih baik sebagai fungsi aktivasi (untuk lapisan tersembunyi) daripada fungsi sigmoid.
Untuk membuktikannya sendiri (setidaknya dalam kasus sederhana), saya membuat kode jaringan saraf sederhana dan menggunakan sigmoid, tanh dan relu sebagai fungsi aktivasi, kemudian saya memplot bagaimana nilai kesalahan berkembang dan inilah yang saya dapatkan.
Notebook lengkap yang saya tulis ada di sini https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning
Jika ini membantu, berikut adalah grafik turunan dari fungsi tanh dan yang sigmoid (perhatikan sumbu vertikal!)
sumber