Fungsi aktivasi mana untuk lapisan output?

44

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?

Julian
sumber
3
Baru-baru ini ReLU menjadi populer sebagai fungsi aktivasi untuk unit tersembunyi.
ijuneja

Jawaban:

39
  • Regresi: linear (karena nilai tidak terikat)
  • Klasifikasi: softmax (sigmoid sederhana juga berfungsi tetapi softmax berfungsi lebih baik)

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).

rcpinto
sumber
2
Softmax juga penting jika Anda memiliki beberapa grup untuk klasifikasi
cdeterman
15
Saya pikir itu salah untuk mengatakan bahwa softmax bekerja "lebih baik" daripada sigmoid, tetapi Anda dapat menggunakan softmax dalam kasus di mana Anda tidak dapat menggunakan sigmoid. Untuk klasifikasi biner, fungsi logistik (a sigmoid) dan softmax akan berkinerja sama baiknya, tetapi fungsi logistik secara matematis lebih sederhana dan karenanya merupakan pilihan alami. Ketika Anda memiliki lebih dari dua kelas, Anda tidak dapat menggunakan fungsi skalar seperti fungsi logistik karena Anda membutuhkan lebih dari satu output untuk mengetahui probabilitas untuk semua kelas, maka Anda menggunakan softmax.
HelloGoodbye
1
Saya tidak berpikir softmax adalah aktivasi. Secara umum, Anda harus mengaktifkannya sebelum Anda menormalkan (softmax) itu.
Aaron
23

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)CzCz

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(yg(z))2g(x)=x

C(y,g(z))z=C(y,g(z))g(z)g(z)z=g(z)(12(yg(z))2)z(z)=(yg(z))1=g(z)y
Cz

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.Cz

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)

Tuan Tsjolder
sumber
mengapa ini bukan jawaban terbaik? cukup intuitif intuitif dan sepenuhnya ilmiah
Vikram Murthy
13

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.

Jatin
sumber
11
Pertanyaannya adalah meminta lapisan keluaran. -1
Euler_Salter
1
Sepakat. Menambahkan jawaban berdasarkan pertanyaan pertama. Mungkin ini seharusnya komentar dan bukan jawaban.
Jatin
Nah, tapi bukankah Anda juga akan mendapatkan "masalah neuron ReLU mati?" Plus, masalah gradien vanishijg dapat "diselesaikan" dengan normalisasi batch. Jika Anda masih ingin "menonaktifkan" beberapa neuron seperti yang dilakukan aktivasi ReLU, maka Anda bisa mematikan neuron secara acak dengan drop out. Jadi saya pikir pada akhirnya, semuanya tergantung pada masalah dan hanya menggunakan apa yang paling berhasil
Kevvy Kim
5

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)1p(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.

Pasang kembali Monica
sumber