Bagaimana fungsi aktivasi bujursangkar menyelesaikan masalah gradien hilang dalam jaringan saraf?

40

Saya menemukan unit linear diperbaiki (ReLU) dipuji di beberapa tempat sebagai solusi untuk masalah gradien menghilang untuk jaringan saraf. Artinya, seseorang menggunakan maks (0, x) sebagai fungsi aktivasi. Ketika aktivasi positif, jelas bahwa ini lebih baik daripada, katakanlah, fungsi aktivasi sigmoid, karena derivasiasinya selalu 1 bukannya nilai kecil sewenang-wenang untuk x besar. Di sisi lain, derivasi adalah tepat 0 ketika x lebih kecil dari 0. Dalam kasus terburuk, ketika unit tidak pernah diaktifkan, bobot untuk unit ini juga tidak akan pernah berubah lagi, dan unit akan selamanya tidak berguna - yang tampaknya jauh lebih buruk daripada gradien yang semakin kecil. Bagaimana algoritma pembelajaran mengatasi masalah itu ketika mereka menggunakan ReLU?

Hans-Peter Störr
sumber
2
Apa yang Anda gambarkan sebagai kasus terburuk disebut ReLU yang sekarat
Martin Thoma
Saya pikir idenya adalah bahwa untuk fungsi logistik, karena gradien dapat menjadi kecil secara sewenang-wenang, Anda bisa mendapatkan gradien menghilang secara numerik dengan menyusun beberapa logistik "diabaikan" (masalah kemudian akan memburuk untuk arsitektur yang lebih dalam). Untuk fungsi ramp, karena gradien konstan konstan, gradien komposit menghilang hanya dapat terjadi jika ada komponen yang sebenarnya 0.
GeoMatt22
(Saya tidak yakin apakah ini "selamanya"? Tidakkah bisa menjadi non-nol setelah lebih banyak pelatihan? Dari ketergantungan pada node lain dan / atau data-mini-batch saat ini? (Untuk penurunan gradien stokastik)
GeoMatt22

Jawaban:

33

Berikut adalah makalah yang menjelaskan masalah ini. Saya mengutip beberapa bagian untuk memperjelas masalah ini.

Fungsi aktivasi penyearah memungkinkan jaringan untuk dengan mudah mendapatkan representasi yang jarang. Sebagai contoh, setelah inisialisasi bobot yang seragam, sekitar 50% unit tersembunyi nilai output kontinu adalah nol nyata, dan fraksi ini dapat dengan mudah meningkat dengan regularisasi yang menginduksi sparsity.

Jadi fungsi aktivasi penyearah memperkenalkan efek sparsity pada jaringan. Berikut ini beberapa keunggulan sparsity dari kertas yang sama;

  • Mengurai informasi . Salah satu tujuan yang diklaim dari algoritma pembelajaran dalam (Bengio, 2009) adalah untuk menguraikan faktor-faktor yang menjelaskan variasi dalam data. Representasi yang padat sangat terjerat karena hampir setiap perubahan dalam input memodifikasi sebagian besar entri dalam vektor representasi. Sebaliknya, jika representasi jarang dan kuat untuk perubahan input kecil, set fitur yang tidak nol hampir selalu dilestarikan secara kasar oleh perubahan kecil input.

  • Representasi ukuran variabel yang efisien . Input yang berbeda dapat berisi jumlah informasi yang berbeda dan akan lebih mudah diwakili menggunakan struktur data ukuran variabel, yang umum dalam representasi informasi komputer. Memvariasikan jumlah neuron aktif memungkinkan model untuk mengontrol dimensi efektifitas representasi untuk input yang diberikan dan presisi yang diperlukan.

  • Keterpisahan linear . Representasi yang jarang juga lebih mungkin terpisah secara linear, atau lebih mudah dipisahkan dengan mesin yang kurang linier, hanya karena informasi tersebut direpresentasikan dalam ruang dimensi tinggi. Selain itu, ini dapat mencerminkan format data asli. Dalam aplikasi yang berhubungan dengan teks misalnya, data mentah asli sudah sangat jarang.

  • Didistribusikan tetapi jarang . Representasi padat didistribusikan adalah representasi terkaya, yang berpotensi secara eksponensial lebih efisien daripada yang murni lokal (Bengio, 2009). Efisiensi representasi yang jarang masih lebih besar secara eksponensial, dengan kekuatan eksponen menjadi jumlah fitur yang tidak nol. Mereka mungkin mewakili trade-off yang baik sehubungan dengan kriteria di atas.

Itu juga menjawab pertanyaan yang Anda ajukan:

Orang mungkin berhipotesis bahwa saturasi keras pada 0 dapat merusak optimasi dengan memblokir gradien back-propagation. Untuk mengevaluasi dampak potensial dari efek ini, kami juga menyelidiki aktivasi softplus:softplus(x)=log(1+ex)(Dugas et al., 2001), versi yang mulus dari perbaikan non-linearitas. Kami kehilangan sparsity yang tepat, tetapi mungkin berharap untuk mendapatkan pelatihan yang lebih mudah. Namun, hasil eksperimen cenderung bertentangan dengan hipotesis itu, menunjukkan bahwa angka nol sebenarnya dapat membantu pelatihan yang diawasi. Kami berhipotesis bahwa non-linearitas keras tidak sakit selama gradien dapat merambat di beberapa jalur, yaitu, bahwa beberapa unit tersembunyi di setiap lapisan tidak nol Dengan kredit dan menyalahkan yang ditugaskan ke unit ON ini daripada didistribusikan lebih merata, kami berhipotesis bahwa optimisasi lebih mudah.

Anda dapat membaca makalah untuk lebih detail.

yasin.yazici
sumber
18

Inilah sebabnya mengapa mungkin ide yang lebih baik untuk menggunakan PReLU, ELU, atau aktivasi seperti ReLU lainnya yang bocor yang tidak hanya mati menjadi 0, tetapi yang jatuh ke sesuatu seperti 0,1 * x ketika x menjadi negatif untuk terus belajar. Tampaknya bagi saya untuk waktu yang lama bahwa ReLU adalah sejarah seperti sigmoid, meskipun untuk beberapa alasan orang masih menerbitkan makalah dengan ini. Mengapa? Saya tidak tahu

Dmytro Mishkin dan yang lainnya benar-benar menguji jaringan dengan banyak jenis aktivasi yang berbeda, Anda harus melihat temuan mereka tentang kinerja berbagai fungsi aktivasi dan hal-hal lain. Beberapa fungsi, seperti XOR, lebih baik dipelajari dengan ReLU biasa. Jangan berpikir tentang hal-hal saraf dalam istilah dogma, karena jaring saraf sangat banyak pekerjaan yang sedang berjalan. Tidak ada seorang pun di dunia ini yang benar-benar tahu dan memahami mereka dengan cukup baik untuk mengatakan kebenaran ilahi. Tak seorangpun. Cobalah berbagai hal, buat penemuan Anda sendiri. Pikiran bahwa menggunakan ReLU itu sendiri adalah perkembangan yang sangat baru dan selama beberapa dekade semua orang PhD yang berbeda di bidang ini telah menggunakan fungsi aktivasi yang terlalu rumit yang kini hanya bisa ditertawakan. Terlalu sering "mengetahui" terlalu banyak dapat membuat Anda mendapatkan hasil yang buruk. Sangat penting untuk memahami bahwa jaringan saraf bukan ilmu pasti. Tidak ada dalam matematika yang mengatakan bahwa jaringan saraf benar-benar akan bekerja sebaik yang mereka lakukan. Itu heuristik. Dan itu sangat mudah ditempa.

FYI bahkan aktivasi nilai absolut mendapatkan hasil yang baik pada beberapa masalah, misalnya masalah seperti XOR. Fungsi aktivasi yang berbeda lebih cocok untuk tujuan yang berbeda. Saya mencoba Cifar-10 dengan abs () dan tampaknya berkinerja lebih buruk. Padahal, saya tidak bisa mengatakan bahwa "ini adalah fungsi aktivasi yang lebih buruk untuk pengenalan visual", karena saya tidak yakin, misalnya, apakah pra-inisialisasi saya optimal untuk itu, dll. Kenyataannya bahwa itu belajar relatif saya juga kagum.

Juga, dalam kehidupan nyata, "turunan" yang Anda berikan ke backprop tidak harus sama dengan turunan matematika yang sebenarnya.

Saya bahkan mengatakan bahwa kita harus melarang menyebut mereka "turunan" dan mulai memanggil mereka sesuatu yang lain, misalnya, error activation functionsuntuk tidak menutup pikiran kita terhadap kemungkinan bermain-main dengan mereka. Anda sebenarnya dapat, misalnya, menggunakan aktivasi ReLU, tetapi memberikan 0,1, atau sesuatu seperti itu alih-alih 0 sebagai turunan untuk x <0. Di satu sisi, Anda kemudian memiliki ReLU sederhana, tetapi dengan neuron tidak mampu "mati karena kemampuan beradaptasi". Saya menyebutnya NecroRelu, karena ini adalah ReLU yang tidak bisa mati. Dan dalam beberapa kasus (pasti tidak di sebagian besar, meskipun) yang bekerja lebih baik daripada LeakyReLU biasa, yang sebenarnya memiliki 0,1 turunan pada x <0 dan lebih baik daripada ReLU biasa. Saya tidak berpikir terlalu banyak orang lain yang menyelidiki fungsi seperti itu, meskipun, ini, atau sesuatu yang serupa mungkin sebenarnya fungsi aktivasi yang keren yang tidak ada yang menganggap hanya karena mereka terlalu berkonsentrasi pada matematika.

Adapun apa yang umumnya digunakan, untuk fungsi aktivasi tanH (x) itu adalah hal yang biasa untuk melewati 1 - x² bukan 1 - tanH (x) ² sebagai turunan untuk menghitung hal-hal lebih cepat.

Juga, ingatlah bahwa ReLU tidak semua yang "jelas lebih baik" daripada, misalnya, TanH. TanH mungkin bisa lebih baik dalam beberapa kasus. Hanya, sepertinya begitu, tidak dalam pengenalan visual. Padahal, ELU, misalnya, memiliki sedikit kelembutan sigmoid padanya dan itu salah satu fungsi aktivasi yang paling dikenal untuk pengenalan visual saat ini. Saya belum benar-benar mencoba, tetapi saya yakin seseorang dapat mengatur beberapa grup dengan fungsi aktivasi berbeda pada level layer yang sama untuk mendapatkan keuntungan. Karena, logika yang berbeda lebih baik dijelaskan dengan fungsi aktivasi yang berbeda. Dan terkadang Anda mungkin perlu beberapa jenis evaluasi.

Perhatikan bahwa penting untuk melakukan awal yang sesuai dengan jenis fungsi aktivasi Anda. ReLU yang bocor memerlukan init lain yang ReLU polos, misalnya.

EDIT: Sebenarnya, standar ReLU tampaknya kurang cenderung overfitting vs yang bocor dengan arsitektur modern. Setidaknya dalam pengenalan gambar. Tampaknya jika Anda menggunakan jaring dengan akurasi sangat tinggi dengan beban parameter yang besar, mungkin lebih baik tetap menggunakan opsi ReLU vs bocor. Tapi, tentu saja, uji sendiri semua ini. Mungkin, beberapa hal bocor akan bekerja lebih baik jika lebih banyak regularisasi diberikan.

Íhor Mé
sumber
Saya tertarik dengan NecroReLU Anda, tetapi tidak bisa mendapatkan dari apa yang Anda tulis bagaimana bedanya dengan LeakyReLU. Bisakah Anda mengklarifikasi?
Tom Hale
Berbeda dengan aktivasi adalah ReLU, tetapi turunannya adalah LReLU
Íhor Mé
@ ÍhorMé, seperti yang Anda sebutkan tentang dalam initialization that corresponds to a type of activation function one is usingdi NOTEdalam posting Anda, dapatkah Anda memberikan saran Anda untuk ini pada baris yang sama, saya tidak sepenuhnya yakin bahwa menggunakan aktivasi ReLu di atas sigmoid / tanH adalah solusi untuk masalah gradien menghilang / meledak .
anu
16

Berikut ini penjelasan heuristik:

  • Setiap pembaruan gradien di backprop terdiri dari sejumlah faktor yang dikalikan.
  • Semakin jauh Anda memulai jaringan, semakin banyak faktor ini dikalikan untuk mendapatkan pembaruan gradien.
  • Banyak dari faktor-faktor ini merupakan turunan dari fungsi aktivasi neuron - sisanya adalah bobot, bias, dll.
  • Dari faktor-faktor ini, faktor yang secara intuisi penting adalah bobot, bias, dll. Turunan fungsi aktivasi lebih merupakan sejenis parameter penyetelan, yang dirancang untuk membuat gradient descent bergerak ke arah yang benar pada kecepatan yang tepat.
  • Jika Anda mengalikan banyak istilah yang kurang dari 1, mereka akan cenderung nol lebih banyak istilah yang Anda miliki. Karenanya menghilang gradien ketika Anda mendapatkan lebih jauh dari lapisan output jika Anda memiliki fungsi aktivasi yang memiliki kemiringan <1.
  • Jika Anda mengalikan sekelompok istilah yang lebih besar dari 1, mereka akan cenderung menuju infinity semakin banyak yang Anda miliki, maka meledak gradien ketika Anda semakin jauh dari lapisan keluaran jika Anda memiliki fungsi aktivasi yang memiliki kemiringan> 1.
  • Bagaimana kalau kita bisa, entah bagaimana, secara ajaib, mendapatkan istilah-istilah ini disumbangkan oleh turunan dari fungsi aktivasi menjadi 1. Ini secara intuitif berarti bahwa semua kontribusi ke pembaruan gradien berasal dari input ke masalah dan model - bobot, input, bias - alih-alih beberapa artefak dari fungsi aktivasi yang dipilih.
  • RELU memiliki gradien 1 saat output> 0, dan nol sebaliknya.
  • Oleh karena itu, mengalikan sekelompok turunan RELU bersama-sama dalam persamaan backprop memiliki sifat baik menjadi 1 atau nol - pembaruan itu tidak ada artinya, atau mengambil kontribusi sepenuhnya dari bobot dan bias lainnya.

Anda mungkin berpikir bahwa akan lebih baik untuk memiliki fungsi linier, daripada meratakan ketika x <0. Idenya di sini adalah bahwa RELU menghasilkan jaringan yang jarang dengan jumlah tautan yang relatif kecil, yang memiliki lebih banyak kemungkinan masuk akal secara biologis, sehingga hilangnya sekelompok beban sebenarnya bermanfaat. Selain itu, simulasi fungsi menarik dengan jaring saraf hanya dimungkinkan dengan beberapa nonlinier dalam fungsi aktivasi. Fungsi aktivasi linier menghasilkan output linier, yang tidak terlalu menarik sama sekali.

Tom Walker
sumber
Penjelasan hebat, Bisakah Anda menguraikan lebih lanjut pada poin ke-6 Juga, bisakah Anda memberikan saran Anda untuk ini pada baris yang sama, saya tidak sepenuhnya yakin bahwa menggunakan aktivasi ReLu lebih dari sigmoid / tanH adalah solusi untuk masalah gradien menghilang / meledak.
anu
1
Inisialisasi berat badan yang masuk akal juga penting; tetapi begitu juga pilihan fungsi aktivasi. Sebagai contoh sepele, jika semua bobot Anda default ke nol dan Anda menggunakan RELU maka semua output dari neuron Anda akan menjadi nol dan tetap nol ... Baik RELU sendiri maupun teknik inisialisasi saja tidak sepenuhnya menyelesaikan pelenyapan / meledak gradien, tetapi keduanya membantu. Tidak yakin apa yang Anda maksud uraian tentang poin 6, apa yang tidak jelas?
Tom Walker
1

Mari kita pertimbangkan relasi pengulangan utama yang mendefinisikan propagasi belakang sinyal kesalahan.

Wsayabsayasayaf

hsayasaya

ssaya=Wsaya(hsaya-1)+bsaya

hsaya=f(ssaya)

δsaya

δsaya=Wsaya+1(δsaya+1f(ssaya))

ff(ssaya)=(1-hsaya2)hsaya

f=Relkamu=mSebuahx(0,x)ff=numpy. Di mana saja(hsaya>0,1,0)

Persamaan ini juga menunjukkan karakteristik masalah lainnya untuk aktivasi relu - neuron mati: jika neuron yang diberikan diinisialisasi dengan cara yang tidak diaktifkan untuk input apa pun (aktivasi adalah nol), gradiennya juga akan menjadi nol, dan karenanya tidak akan pernah diaktifkan.

pengguna1767774
sumber