Jaringan Neural: Matlab menggunakan fungsi aktivasi yang berbeda untuk lapisan yang berbeda - mengapa?
Saya telah dilatih pada matlab sebuah Artificial Neural Network dengan satu lapisan input, satu lapisan tersembunyi dan satu lapisan output (output saya adalah nilai antara nol dan satu, yang saya berubah menjadi 0 atau 1 sesuai dengan treshold 0,5).
Saya perhatikan bahwa, secara default , matlab menggunakan fungsi transfer 'tansig' untuk lapisan tersembunyi dan kemudian fungsi transfer 'logsig' untuk lapisan keluaran . Adakah yang bisa memberi saya penjelasan untuk ini?
Terima kasih sebelumnya!
Jawaban
Gagasan besarnya adalah tidak ada persyaratan khusus bahwa semua lapisan jaringan neural menggunakan fungsi aktivasi yang sama. Anda bisa mencampur-dan-mencocokkan sesuai keinginan. Meskipun demikian, ada beberapa alasan untuk memilih menggunakan$\tanh$ sebagai fungsi aktivasi dari lapisan tersembunyi dan $\sigma$ sebagai fungsi keluaran.
Itu $\tanh(x)=\frac{\exp(x)-\exp(-x)}{\exp(x)+\exp(-x)}$fungsi adalah fungsi aktivasi standar. Menggunakannya di jaringan saraf tidak lebih mengejutkan daripada menggunakan kuadrat terkecil sebagai fungsi tujuan untuk tugas regresi.
Fungsinya $\sigma(x)=\frac{1}{1+\exp(-x)}$adalah cara standar untuk memetakan bilangan real ke nilai nyata di (0,1). Jadi ini biasanya digunakan untuk memodelkan probabilitas. Karena tugas Anda adalah memprediksi 0 atau 1, menggunakan model ini menyarankan pemodelan probabilitas bahwa sampel diberi label 1.
Menggunakan sebuah $\tanh$ fungsi di lapisan terakhir akan tidak masuk akal, karena tidak memiliki hubungan yang jelas dengan pemodelan probabilitas bahwa sampel diberi label 1. Fungsi $\tanh$ mengembalikan nilai antara -1 dan 1, jadi ini bukan probabilitas.
Jika mau, Anda bisa menggunakan $\sigma(x)$sebagai fungsi aktivasi. Tapi$\tanh$lebih disukai karena memiliki gradien yang lebih kuat dan memberikan keluaran positif dan negatif membuatnya lebih mudah untuk dioptimalkan. Lihat: fungsi aktivasi tanh vs fungsi aktivasi sigmoid
Tetapi perhatikan juga bahwa ULT dan fungsi serupa umumnya lebih disukai sebagai fungsi aktivasi di lapisan tersembunyi. Lihat: Apa keunggulan ULT dibandingkan fungsi sigmoid di jaringan saraf dalam?
Pilihan untuk digunakan $\tanh$sebagai default kemungkinan lebih banyak tentang praktik pengembangan perangkat lunak daripada prinsip matematika: mengubah perilaku default perangkat lunak dapat merusak kode lama dan menyebabkan perilaku yang tidak terduga. Unit ULT hanya menjadi populer baru-baru ini , relatif terhadap usia MATLAB. Add-on Neural Network Toolbox pertama kali diterbitkan tahun 1992 (sejak itu, telah diganti namanya menjadi "Kotak Alat Pembelajaran Mendalam"). Pada tahun 1992, membangun jaringan saraf hampir identik dengan jaringan lapisan tunggal dengan$\tanh$ atau $\sigma$ fungsi aktivasi.
Tapi tidak mungkin ada penjelasan pasti mengapa MATLAB memilih default ini kecuali mereka menerbitkan justifikasi untuk pilihan ini (misalnya catatan rilis atau dokumentasi).