Sementara pilihan fungsi aktivasi untuk lapisan tersembunyi cukup jelas (kebanyakan sigmoid atau tanh), saya bertanya-tanya bagaimana cara memutuskan fungsi aktivasi untuk lapisan output. Pilihan umum adalah fungsi linier, fungsi sigmoid dan fungsi softmax. Namun, kapan saya harus menggunakan yang mana?
neural-networks
Julian
sumber
sumber
Jawaban:
Gunakan sigmoid sederhana hanya jika output Anda menerima beberapa jawaban "benar", misalnya, jaringan yang memeriksa keberadaan berbagai objek dalam suatu gambar. Dengan kata lain, output bukan distribusi probabilitas (tidak perlu dijumlahkan menjadi 1).
sumber
Saya mungkin terlambat ke pesta, tetapi tampaknya ada beberapa hal yang perlu diselesaikan di sini.
Pertama-tama: fungsi aktivasi pada layer output seringkali tergantung pada fungsi biaya Anda . Hal ini dilakukan untuk membuat turunan dari fungsi biaya sehubungan dengan input pada lapisan terakhir mudah untuk dihitung.g(x) ∂C∂z C z
Sebagai contoh , kita bisa menggunakan rata-rata hilangnya kesalahan kuadrat dalam pengaturan regresi. Dengan menyetel (fungsi aktivasi linier), kami menemukan turunan Anda mendapatkan ekspresi yang sama dan mudah untuk jika Anda menggabungkan kehilangan lintas-entropi dengan fungsi aktivasi sigmoid logistik atau softmax.C(y,g(z))=12(y−g(z))2 g(x)=x ∂C(y,g(z))∂z=∂C(y,g(z))∂g(z)⋅∂g(z)∂z=∂∂g(z)(12(y−g(z))2)⋅∂∂z(z)=−(y−g(z))⋅1=g(z)−y ∂C∂z
Ini adalah alasan mengapa aktivasi linier sering digunakan untuk regresi dan aktivasi logistik / softmax untuk klasifikasi biner / multi-kelas. Namun, tidak ada yang menghalangi Anda untuk mencoba kombinasi yang berbeda. Meskipun ekspresi untuk mungkin tidak terlalu bagus, itu tidak berarti bahwa fungsi aktivasi Anda akan berkinerja lebih buruk.∂C∂z
Kedua, saya ingin menambahkan bahwa ada banyak fungsi aktivasi yang dapat digunakan untuk lapisan tersembunyi. Sigmoids (seperti fungsi logistik dan garis singgung hiperbolik) telah terbukti bekerja dengan baik, tetapi seperti yang ditunjukkan oleh Jatin , ini menderita gradien yang hilang ketika jaringan Anda menjadi terlalu dalam. Dalam hal ini ReLU menjadi populer. Yang ingin saya tekankan adalah bahwa ada lebih banyak fungsi aktivasi yang tersedia dan peneliti yang berbeda terus mencari yang baru (misalnya Unit Linear Eksponensial (ELU), Gaussian Error Linear Unit (GELUs, ...) dengan berbagai properti yang lebih baik
Untuk menyimpulkan: Saat mencari fungsi aktivasi terbaik, cukup kreatif saja. Cobalah berbagai hal dan lihat kombinasi apa yang menghasilkan kinerja terbaik.
Tambahan: Untuk lebih banyak pasangan fungsi dan aktivasi kehilangan, Anda mungkin ingin mencari fungsi tautan (kanonik)
sumber
Sigmoid dan tanh tidak boleh digunakan sebagai fungsi aktivasi untuk lapisan tersembunyi. Ini karena masalah gradien menghilang, yaitu, jika input Anda berada di sisi yang lebih tinggi (di mana sigmoid menjadi datar) maka gradien akan mendekati nol. Ini akan menyebabkan pembelajaran sangat lambat atau tidak ada selama backpropagation karena bobot akan diperbarui dengan nilai yang sangat kecil.
Penjelasan terperinci di sini: http://cs231n.github.io/neural-networks-1/#actfun
Fungsi terbaik untuk lapisan tersembunyi adalah ReLu.
sumber
Output Softmax menghasilkan vektor yang non-negatif dan berjumlah 1. Ini berguna ketika Anda memiliki kategori yang saling eksklusif ("gambar ini hanya berisi kucing atau anjing, bukan keduanya"). Anda dapat menggunakan softmax jika Anda memiliki label yang saling eksklusif .2,3,4,5,...
Menggunakan output sigmoid menghasilkan vektor di mana setiap elemen adalah probabilitas. Ini berguna ketika Anda memiliki kategori yang tidak saling eksklusif ("gambar-gambar ini dapat berisi kucing, anjing, atau kucing dan anjing bersama-sama"). Anda menggunakan neuron sigmoid sebanyak yang Anda kategorikan, dan label Anda tidak boleh saling eksklusif.2,3,4,...
Trik yang lucu adalah bahwa Anda juga dapat menggunakan unit sigmoid tunggal jika Anda memiliki masalah biner yang saling eksklusif; karena satu unit sigmoid dapat digunakan untuk memperkirakan , aksioma Kolmogorov menyiratkan bahwa .p(y=1) 1−p(y=1)=p(y=0)
Menggunakan fungsi identitas sebagai output dapat membantu ketika output Anda tidak terikat. Untung atau rugi beberapa perusahaan untuk seperempat bisa tidak terikat di kedua sisi.
Unit ReLU atau varian serupa dapat membantu ketika output dibatasi di atas atau di bawah. Jika output hanya dibatasi menjadi non-negatif, masuk akal untuk menggunakan aktivasi ReLU sebagai fungsi output.
Demikian juga, jika output entah bagaimana dibatasi untuk berada di , tanh bisa masuk akal.[−1,1]
Hal yang menyenangkan tentang jaringan saraf adalah mereka sangat fleksibel.
sumber