Saya telah membaca beberapa hal di jaringan saraf dan saya memahami prinsip umum jaringan saraf lapisan tunggal. Saya memahami kebutuhan akan lapisan tambahan, tetapi mengapa fungsi aktivasi nonlinier digunakan?
Pertanyaan ini diikuti oleh pertanyaan ini: Apa turunan dari fungsi aktivasi yang digunakan untuk propagasi mundur?
math
machine-learning
neural-network
deep-learning
corazza.dll
sumber
sumber
Jawaban:
Tujuan dari fungsi aktivasi adalah untuk memperkenalkan non-linearitas ke dalam jaringan
pada gilirannya, ini memungkinkan Anda untuk memodelkan variabel respons (alias variabel target, label kelas, atau skor) yang bervariasi secara non-linear dengan variabel penjelasnya
non-linear berarti bahwa keluaran tidak dapat direproduksi dari kombinasi linier dari masukan (yang tidak sama dengan keluaran yang dirender menjadi garis lurus - kata untuk ini adalah affine ).
Cara lain untuk memikirkannya: tanpa fungsi aktivasi non-linier di jaringan, NN, tidak peduli berapa banyak lapisan yang dimilikinya, akan berperilaku seperti perceptron satu lapis, karena menjumlahkan lapisan ini hanya akan memberi Anda fungsi linier lainnya (lihat definisi di atas).
Fungsi aktivasi umum yang digunakan dalam backprop ( garis singgung hiperbolik ) dievaluasi dari -2 hingga 2:
sumber
Fungsi aktivasi linier dapat digunakan, namun pada kesempatan yang sangat terbatas. Sebenarnya untuk memahami fungsi aktivasi dengan lebih baik, penting untuk melihat kuadrat terkecil biasa atau hanya regresi linier. Regresi linier bertujuan untuk menemukan bobot optimal yang menghasilkan efek vertikal minimal antara variabel penjelas dan target, jika digabungkan dengan input. Singkatnya, jika keluaran yang diharapkan mencerminkan regresi linier seperti yang ditunjukkan di bawah ini maka fungsi aktivasi linier dapat digunakan: (Gambar Atas). Tetapi seperti pada gambar kedua di bawah fungsi linier tidak akan menghasilkan hasil yang diinginkan: (Gambar tengah). Namun, fungsi non-linier seperti yang ditunjukkan di bawah ini akan memberikan hasil yang diinginkan:
Fungsi aktivasi tidak bisa linier karena jaringan saraf dengan fungsi aktivasi linier hanya efektif sedalam satu lapisan, terlepas dari seberapa kompleks arsitekturnya. Masukan ke jaringan biasanya berupa transformasi linier (masukan * bobot), tetapi dunia nyata dan masalahnya bersifat non-linier. Untuk membuat data yang masuk menjadi nonlinier, kita menggunakan pemetaan nonlinier yang disebut fungsi aktivasi. Fungsi aktivasi adalah fungsi pengambilan keputusan yang menentukan keberadaan fitur saraf tertentu. Itu dipetakan antara 0 dan 1, di mana nol berarti tidak adanya fitur, sedangkan satu berarti kehadirannya. Sayangnya, perubahan kecil yang terjadi pada bobot tidak dapat tercermin dalam nilai aktivasi karena hanya dapat mengambil 0 atau 1. Oleh karena itu, fungsi nonlinier harus kontinu dan dapat dibedakan di antara rentang ini. Jaringan neural harus dapat mengambil masukan apa pun dari -infinity hingga + infinite, tetapi harus dapat memetakannya ke output yang berkisar antara {0,1} atau antara {-1,1} dalam beberapa kasus - sehingga kebutuhan untuk fungsi aktivasi. Non-linearitas diperlukan dalam fungsi aktivasi karena tujuannya dalam jaringan neural adalah menghasilkan batas keputusan nonlinier melalui kombinasi bobot dan input non-linier.
sumber
Jika kita hanya mengizinkan fungsi aktivasi linier dalam jaringan neural, keluarannya hanya berupa transformasi linier masukan, yang tidak cukup untuk membentuk aproksimeter fungsi universal . Jaringan seperti itu hanya dapat direpresentasikan sebagai perkalian matriks, dan Anda tidak akan dapat memperoleh perilaku yang sangat menarik dari jaringan tersebut.
Hal yang sama berlaku untuk kasus di mana semua neuron memiliki fungsi aktivasi affine (yaitu fungsi aktivasi pada bentuk
f(x) = a*x + c
, di manaa
danc
adalah konstanta, yang merupakan generalisasi fungsi aktivasi linier), yang hanya akan menghasilkan transformasi affine dari input ke output. , yang juga tidak terlalu menarik.Jaringan saraf mungkin berisi neuron dengan fungsi aktivasi linier, seperti di lapisan keluaran, tetapi ini memerlukan perusahaan neuron dengan fungsi aktivasi non-linier di bagian lain jaringan.
Catatan: Pengecualian yang menarik adalah gradien sintetis DeepMind , di mana mereka menggunakan jaringan neural kecil untuk memprediksi gradien di jalur propagasi mundur yang diberi nilai aktivasi, dan mereka menemukan bahwa mereka dapat lolos dengan menggunakan jaringan saraf tanpa lapisan tersembunyi dan dengan hanya aktivasi linier.
sumber
Jaringan neural umpan-maju dengan aktivasi linier dan sejumlah lapisan tersembunyi setara dengan hanya jaringan neural linier tanpa lapisan tersembunyi. Misalnya mari kita pertimbangkan jaringan saraf dalam gambar dengan dua lapisan tersembunyi dan tanpa aktivasi
Kita dapat melakukan langkah terakhir karena kombinasi beberapa transformasi linier dapat diganti dengan satu transformasi dan kombinasi beberapa suku bias hanyalah satu bias. Hasilnya sama bahkan jika kita menambahkan beberapa aktivasi linier.
Jadi kita bisa mengganti jaringan saraf ini dengan jaringan saraf tiruan satu lapisan yang dapat diperluas ke
n
lapisan. Ini menunjukkan penambahan lapisan tidak meningkatkan daya aproksimasi jaringan neural linier sama sekali. Kita membutuhkan fungsi aktivasi non-linier untuk mendekati fungsi non-linier dan sebagian besar masalah dunia nyata sangat kompleks dan non-linier. Faktanya ketika fungsi aktivasi non-linier, maka jaringan saraf dua lapis dengan jumlah unit tersembunyi yang cukup besar dapat dibuktikan sebagai penduga fungsi universal.sumber
"Makalah ini menggunakan Teorema Stone-Weierstrass dan cosine squasher of Gallant and White untuk menetapkan bahwa arsitektur jaringan feedforward multilayer standar yang menggunakan fungsi squashing dapat mendekati hampir semua fungsi yang diinginkan dengan tingkat akurasi yang diinginkan, asalkan cukup banyak yang tersembunyi unit tersedia. " ( Hornik et al., 1989, Neural Networks )
Fungsi squashing misalnya fungsi aktivasi nonlinier yang dipetakan ke [0,1] seperti fungsi aktivasi sigmoid.
sumber
Ada kalanya jaringan linier murni dapat memberikan hasil yang bermanfaat. Katakanlah kita memiliki jaringan tiga lapisan dengan bentuk (3,2,3). Dengan membatasi lapisan tengah menjadi hanya dua dimensi, kita mendapatkan hasil yaitu "bidang yang paling sesuai" di ruang tiga dimensi asli.
Tetapi ada cara yang lebih mudah untuk menemukan transformasi linier dari bentuk ini, seperti NMF, PCA dll. Namun, ini adalah kasus di mana jaringan multi-lapis TIDAK berperilaku dengan cara yang sama seperti perceptron satu lapis.
sumber
Untuk memahami logika di balik fungsi aktivasi non-linier, pertama Anda harus memahami mengapa fungsi aktivasi digunakan. Secara umum masalah dunia nyata membutuhkan solusi non linier yang tidak sepele. Jadi kita membutuhkan beberapa fungsi untuk menghasilkan non-linearitas. Pada dasarnya apa yang dilakukan fungsi aktivasi adalah menghasilkan non-linearitas ini sambil memetakan nilai input ke dalam rentang yang diinginkan.
Namun, fungsi aktivasi linier dapat digunakan dalam rangkaian kasus yang sangat terbatas di mana Anda tidak memerlukan lapisan tersembunyi seperti regresi linier. Biasanya, tidak ada gunanya membuat jaringan saraf untuk masalah semacam ini karena terlepas dari jumlah lapisan tersembunyi, jaringan ini akan menghasilkan kombinasi input linier yang dapat dilakukan hanya dalam satu langkah. Dengan kata lain, ini berperilaku seperti satu lapisan.
Ada juga beberapa sifat yang lebih diinginkan untuk fungsi aktivasi seperti diferensiabilitas berkelanjutan . Karena kami menggunakan propagasi mundur, fungsi yang kami hasilkan harus dapat dibedakan di titik mana pun. Saya sangat menyarankan Anda untuk memeriksa halaman wikipedia untuk fungsi aktivasi dari sini untuk lebih memahami topiknya.
sumber
Beberapa jawaban bagus ada di sini. Ada baiknya untuk menunjukkan buku "Pengenalan Pola dan Pembelajaran Mesin" oleh Christopher M. Bishop. Ini adalah buku yang layak untuk dirujuk untuk mendapatkan wawasan yang lebih dalam tentang beberapa konsep terkait ML. Kutipan dari halaman 229 (bagian 5.1):
sumber
Seingat saya - fungsi sigmoid digunakan karena turunannya yang sesuai dengan algoritma BP mudah dihitung, sesuatu yang sederhana seperti f (x) (1-f (x)). Saya tidak ingat persis matematika. Sebenarnya fungsi apapun dengan turunannya bisa digunakan.
sumber
NN berlapis dari beberapa neuron dapat digunakan untuk mempelajari masalah yang tak terpisahkan secara linier. Misalnya fungsi XOR dapat diperoleh dengan dua lapisan dengan fungsi aktivasi langkah.
sumber
Penting untuk menggunakan fungsi aktivasi nonlinier di jaringan saraf, terutama di NN yang dalam dan propagasi mundur. Menurut pertanyaan yang diajukan dalam topik, pertama saya akan mengatakan alasan perlunya menggunakan fungsi aktivasi nonlinier untuk propagasi mundur.
Sederhananya: jika fungsi aktivasi linier digunakan, turunan dari fungsi biaya adalah konstanta terhadap input (wrt), sehingga nilai input (ke neuron) tidak mempengaruhi pembaharuan bobot . Artinya, kami tidak dapat mengetahui bobot mana yang paling efektif dalam memberikan hasil yang baik dan oleh karena itu kami terpaksa mengubah semua bobot secara merata.
Lebih Dalam: Secara umum, bobot diperbarui sebagai berikut:
Artinya bobot baru sama dengan bobot lama dikurangi turunan fungsi biaya. Jika fungsi aktivasi adalah fungsi linier, maka masukan wrt turunannya adalah konstanta, dan nilai masukan tidak berpengaruh langsung pada pembaruan bobot.
Misalnya, kami bermaksud memperbarui bobot neuron lapisan terakhir menggunakan propagasi mundur. Kita perlu menghitung gradien dari fungsi bobot wrt bobot. Dengan aturan rantai kami memiliki:
h dan y adalah (perkiraan) keluaran neuron dan nilai keluaran aktual, masing-masing. Dan x adalah masukan dari neuron. grad (f) diturunkan dari fungsi aktivasi input wrt. Nilai yang dihitung di atas (dengan faktor) dikurangi dari bobot saat ini dan bobot baru diperoleh. Sekarang kita dapat membandingkan kedua jenis fungsi aktivasi ini dengan lebih jelas.
1- Jika fungsi pengaktifannya adalah fungsi linier , seperti: F (x) = 2 * x
kemudian:
bobot barunya adalah:
Seperti yang Anda lihat, semua bobot diperbarui secara merata dan tidak peduli berapa nilai inputnya !!
2- Tetapi jika kita menggunakan fungsi aktivasi non-linier seperti Tanh (x) maka:
dan:
dan sekarang kita dapat melihat efek langsung dari input dalam memperbarui bobot! nilai masukan yang berbeda membuat bobot yang berbeda berubah .
Saya rasa hal di atas sudah cukup untuk menjawab pertanyaan tentang topik tetapi ada gunanya menyebutkan manfaat lain dari penggunaan fungsi aktivasi non-linier.
Seperti yang disebutkan dalam jawaban lain, non-linearitas memungkinkan NN memiliki lebih banyak lapisan tersembunyi dan NN yang lebih dalam. Urutan lapisan dengan fungsi penggerak linier dapat digabungkan sebagai lapisan (dengan kombinasi fungsi sebelumnya) dan praktis merupakan jaringan saraf dengan lapisan tersembunyi, yang tidak memanfaatkan manfaat NN yang dalam.
Fungsi aktivasi non-linier juga dapat menghasilkan keluaran yang dinormalisasi.
sumber
Jaringan Neural digunakan dalam pengenalan pola. Dan penemuan pola adalah teknik yang sangat non-linear.
Misalkan untuk argumen kita menggunakan fungsi aktivasi linier y = wX + b untuk setiap neuron tunggal dan mengatur sesuatu seperti jika y> 0 -> kelas 1 lain kelas 0.
Sekarang kita dapat menghitung kerugian kita menggunakan kerugian kesalahan persegi dan menyebarkannya kembali sehingga model belajar dengan baik, benar?
SALAH.
Untuk lapisan tersembunyi terakhir, nilai yang diperbarui adalah w {l} = w {l} - (alpha) * X.
Untuk lapisan tersembunyi terakhir kedua, nilai yang diperbarui adalah w {l-1} = w {l-1} - (alpha) * w {l} * X.
Untuk lapisan tersembunyi terakhir ke engan, nilai yang diperbarui adalah w {i} = w {i} - (alpha) * w {l} ... * w {i + 1} * X.
Hal ini menyebabkan kita mengalikan semua matriks bobot sehingga menghasilkan kemungkinan: A) w {i} hampir tidak berubah karena hilangnya gradien B) w {i} berubah secara dramatis dan tidak akurat karena gradien C yang meledak) w {i} berubah dengan baik cukup untuk memberi kami skor kecocokan yang baik
Jika C terjadi, itu berarti masalah klasifikasi / prediksi kami kemungkinan besar adalah regresi linier / logistik sederhana dan tidak pernah memerlukan jaringan saraf sejak awal!
Tidak peduli seberapa kuat atau baik hyper-tuned NN Anda, jika Anda menggunakan fungsi aktivasi linier, Anda tidak akan pernah bisa mengatasi masalah pengenalan pola non-linier.
sumber
Itu sama sekali bukan persyaratan. Faktanya, fungsi aktivasi linier yang diperbaiki sangat berguna dalam jaringan neural yang besar. Menghitung gradien jauh lebih cepat, dan itu menyebabkan ketersebaran dengan menyetel batas minimum pada 0.
Lihat berikut ini untuk detail lebih lanjut: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks
Edit:
Telah terjadi beberapa diskusi mengenai apakah fungsi aktivasi linier yang diperbaiki dapat disebut sebagai fungsi linier.
Ya, secara teknis ini adalah fungsi nonlinier karena tidak linier pada titik x = 0, namun tetap benar untuk mengatakan bahwa ia linier di semua titik lain, jadi menurut saya tidak berguna untuk melakukan nitpick di sini,
Saya bisa saja memilih fungsi identitas dan itu akan tetap benar, tetapi saya memilih ULT sebagai contoh karena popularitasnya baru-baru ini.
sumber
f(x) = a*x
(karena itu adalah satu-satunya jenis fungsi aktivasi linier yang ada), yang tidak berguna sebagai fungsi aktivasi (kecuali jika Anda menggabungkannya dengan fungsi aktivasi non-linier ).