Apa masalah "ReLU yang sekarat" dalam jaringan saraf?


119

Mengacu pada catatan kursus Stanford tentang Jaringan Syaraf Konvolusional untuk Pengenalan Visual , sebuah paragraf mengatakan:

"Sayangnya, unit ReLU bisa rapuh selama pelatihan dan bisa" mati ". Misalnya, gradien besar yang mengalir melalui neuron ReLU dapat menyebabkan bobot diperbarui sedemikian rupa sehingga neuron tidak akan pernah diaktifkan pada titik data apa pun lagi. Jika ini terjadi, maka gradien yang mengalir melalui unit selamanya akan menjadi nol sejak saat itu. Yaitu, unit ReLU dapat mati secara ireversibel selama pelatihan karena mereka dapat terlempar dari bermacam-macam data. Misalnya, Anda mungkin menemukan bahwa sebanyak 40 % dari jaringan Anda bisa "mati" (yaitu neuron yang tidak pernah diaktifkan di seluruh dataset pelatihan) jika tingkat pembelajaran ditetapkan terlalu tinggi. Dengan pengaturan yang tepat dari tingkat pembelajaran ini jarang menjadi masalah. "

Apa arti sekarat neuron di sini?

Bisakah Anda memberikan penjelasan intuitif dalam istilah yang lebih sederhana.


2
Dapatkah seseorang menemukan referensi ke beberapa artikel ilmiah tentang "neuron mati"? Karena ini adalah hasil pertama pada upaya google, alangkah baiknya jika pertanyaan ini diedit dengan referensi.
Marek Židek

dapatkah kita mencegah bias dengan regularisasi untuk menyelesaikan masalah ini?
Len

3
Dudes Saya telah berhasil merevitalisasi neuron relu mati dengan memberikan nilai acak baru (terdistribusi normal) di setiap zaman untuk bobot <= 0. Saya menggunakan metode ini hanya bersama-sama dengan pembekuan bobot pada kedalaman yang berbeda saat pelatihan berlanjut ke zaman yang lebih tinggi (I ' Saya tidak yakin apakah ini yang kita sebut transisi fase) Sekarang dapat menggunakan tingkat pembelajaran yang lebih tinggi, menghasilkan akurasi keseluruhan yang lebih baik (hanya diuji pada regresi linier). Ini sangat mudah diimplementasikan.
boli

1
@boli, dapatkah Anda membagikan implementasi Anda di sini?
anu

Jawaban:


121

ReLU "mati" selalu menampilkan nilai yang sama (nol seperti yang terjadi, tetapi itu tidak penting) untuk input apa pun. Mungkin ini dapat dicapai dengan mempelajari istilah bias negatif yang besar untuk bobotnya.

Pada gilirannya, itu berarti bahwa tidak ada peran dalam membedakan antara input. Untuk klasifikasi, Anda dapat memvisualisasikan ini sebagai bidang keputusan di luar semua data input yang mungkin.

Setelah ReLU berakhir dalam keadaan ini, tidak mungkin untuk pulih, karena gradien fungsi pada 0 juga 0, sehingga pembelajaran gradient descent tidak akan mengubah bobot. "Leaky" ReLU dengan gradien positif kecil untuk input negatif ( y=0.01xketika x <0 katakan) adalah salah satu upaya untuk mengatasi masalah ini dan memberikan peluang untuk pulih.

Neuron sigmoid dan tanh dapat mengalami masalah yang sama dengan nilainya yang jenuh, tetapi selalu ada setidaknya gradien kecil yang memungkinkan mereka pulih dalam jangka panjang.


7
Komentar yang bagus dan juga layak disebut Unit Eksponensial Linear (ELU) yang dapat membantu untuk menambahkan masalah itu dengan cara yang lebih baik: arxiv.org/abs/1511.07289
padura

14
@alex: Karena bias sangat penting untuk akurasi. Menyingkirkan bias sama dengan mengatakan bahwa semua pesawat keputusan harus melewati asal - dengan beberapa pengecualian ini adalah pilihan yang buruk. Bahkan menyingkirkan istilah bias dalam jaringan saraf atau model terkait (seperti regresi linier atau regresi logistik) biasanya akan berarti bahwa model Anda akan menderita bias! Ini salah satu dari beberapa cara Anda dapat berakhir dengan model yang pakaian dalam dan pakaian pada saat yang sama,,,
Neil Slater

1
@Alex: Saya pikir itu umum untuk menambahkan bias positif kecil ke ReLUs. Saya tidak tahu apakah itu membantu dengan "sekarat masalah ReLU" -itu kemungkinan tidak akan mengubah nilai gradien secara numerik sangat banyak (karena gradien adalah 1 atau 0 untuk ReLU, dan itu adalah ketika 1 yang dapat melebihi batas, sebuah Bias awal yang kecil akan tampak membuat sedikit perbedaan). Sebagian besar saya pikir itu hanya trik untuk menambahkan dorongan kecil untuk pembelajaran awal - tetapi itu mungkin membantu dengan mendapatkan awal yang lebih baik, dan umumnya memiliki gradien yang lebih rendah lebih cepat.
Neil Slater

1
@ Max: Anda melewatkan bagian "untuk setiap input" dari jawaban saya. Tidak ada gradien yang akan mengalir ke bobot apa pun yang terkait dengan neuron "mati" dalam jaringan umpan-maju, karena semua jalur ke bobot tersebut dipotong - tidak ada jalur alternatif bagi gradien untuk mengalir ke subset bobot yang memberi makan unit ReLU. Anda mungkin melihat ReLU dalam misal CNN atau memiliki bobot bersama dalam hal ini semua lokasi dalam peta fitur perlu nol sekaligus. Namun, saya akan melihatnya sebagai contoh "untuk input apa pun".
Neil Slater

1
@ Anu: Dengan keturunan gradien. Gradien positif yang besar, yang disebabkan oleh nilai kesalahan yang besar, pada gilirannya dapat menyebabkan satu langkah istilah bias menjadi cukup besar sehingga "membunuh" neuron, sehingga mencapai keadaan (untuk bobot dan bias) yang menjadi input di masa depan. ke fungsi ReLU tidak pernah naik di atas 0.
Neil Slater

102

Mari kita tinjau bagaimana ReLU (Rectified Linear Unit) terlihat seperti:

Input ke penyearah untuk beberapa input adalah untuk bobot , dan aktivasi dari lapisan sebelumnya untuk input tertentu . Fungsi neuron rectifier adalahxn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

Dengan asumsi ukuran kesalahan yang sangat sederhana

error=ReLUy

penyearah hanya memiliki 2 nilai gradien yang mungkin untuk delta algoritma backpropagation: (jika kita menggunakan ukuran kesalahan yang tepat, maka angka 1 akan menjadi sesuatu yang lain, tetapi angka 0 akan tetap sama) dan untuk bobot tertentu :

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

Satu pertanyaan yang terlintas dalam pikiran adalah bagaimana sebenarnya ReLU bekerja "sama sekali" dengan gradien 0 di sisi kiri. Bagaimana jika, untuk input , bobot saat ini meletakkan ReLU di sisi datar kiri sementara itu secara optimal harus di sisi kanan untuk input khusus ini? Gradiennya 0 dan beratnya tidak akan diperbarui, bahkan sedikit pun, jadi di mana "belajar" dalam kasus ini?=xn

Inti dari jawabannya terletak pada kenyataan bahwa Stochastic Gradient Descent tidak hanya akan mempertimbangkan satu input , tetapi banyak dari mereka, dan harapannya adalah bahwa tidak semua input akan menempatkan ReLU di sisi yang rata, sehingga gradien akan menjadi tidak -zero untuk beberapa input (mungkin + ve atau -ve sekalipun). Jika setidaknya satu input memiliki ReLU kami di sisi yang curam, maka ReLU masih hidup karena masih ada pembelajaran yang sedang berlangsung dan bobot semakin diperbarui untuk neuron ini. Jika semua input menempatkan ReLU pada sisi yang rata, tidak ada harapan bahwa bobot berubah sama sekali dan neuron mati .xnx

ReLU mungkin hidup lalu mati karena langkah gradien untuk beberapa bets input yang mendorong bobot ke nilai yang lebih kecil, membuat untuk semua input. Tingkat pembelajaran yang besar memperbesar masalah ini.zn<0

Seperti yang disebutkan @Neil Slater, perbaikannya adalah memodifikasi sisi datar untuk memiliki gradien kecil, sehingga menjadi seperti di bawah ini, yang disebut LeakyReLU. ReLU=max(0.1x,x)masukkan deskripsi gambar di sini


Bukankah Anda lupa istilah bias dalam rumus untuk input ke penyearah?
Tom Hale

Saya pikir saya mengikuti notasi beberapa buku teks yang mengasumsikan bahwa a_0 = 1 untuk semua lapisan, dan w_0 adalah bias. Biasnya tidak penting sehingga lebih baik menghilangkannya
MohamedEzz

@MohamedEzz, saya tidak mengerti maksud Anda What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?, jika input negatif, gradien akan menjadi 0? apa yang optimal untuk kasus ini? bisakah Anda membantu memahaminya?
anu

1
Maksud saya maksudkan adalah, jika agar jaringan melakukan prediksi yang lebih baik untuk input ini, ia perlu menyesuaikan bobot sehingga ReLU memberikan nilai positif, itu tidak akan dapat melakukan penyesuaian ini karena gradien 0 yang dimilikinya. di sisi yang rata.
MohamedEzz

Jawaban yang luar biasa. Terima kasih
David Refaeli

13

Neuron ReLU menghasilkan nol dan memiliki turunan nol untuk semua input negatif. Jadi, jika bobot dalam jaringan Anda selalu mengarah ke input negatif ke dalam neuron ReLU, neuron itu secara efektif tidak berkontribusi pada pelatihan jaringan. Secara matematis, kontribusi gradien untuk pembaruan berat yang berasal dari neuron itu selalu nol (lihat Lampiran Matematika untuk beberapa detail).

Berapa kemungkinan bahwa bobot Anda akan menghasilkan angka negatif untuk semua input ke neuron yang diberikan? Sulit untuk menjawab ini secara umum, tetapi salah satu cara di mana ini bisa terjadi adalah ketika Anda membuat pembaruan bobot yang terlalu besar. Ingat bahwa jaringan saraf biasanya dilatih dengan meminimalkan fungsi kehilangan sehubungan dengan bobot menggunakan gradient descent. Yaitu, bobot jaringan saraf adalah "variabel" dari fungsi (kerugian tergantung pada dataset, tetapi hanya secara implisit: biasanya jumlah atas setiap contoh pelatihan, dan masing-masing contoh secara efektif adalah konstanta). Karena gradien dari fungsi apa pun selalu menunjuk ke arah peningkatan paling curam, yang harus kita lakukan adalah menghitung gradienL(W)LLsehubungan dengan bobot dan bergerak ke arah yang berlawanan sedikit, lalu bilas dan ulangi. Dengan begitu, kita berakhir di minimum (lokal) dari . Oleh karena itu, jika input Anda berada pada skala yang kira-kira sama, langkah besar ke arah gradien dapat memberi Anda bobot yang memberikan input serupa yang akhirnya bisa menjadi negatif.WL

Secara umum, apa yang terjadi tergantung pada bagaimana informasi mengalir melalui jaringan. Anda dapat membayangkan bahwa seiring berjalannya pelatihan, nilai-nilai yang dihasilkan neuron dapat melayang dan memungkinkan bobot untuk membunuh semua aliran data melalui beberapa di antaranya. (Kadang-kadang, mereka dapat meninggalkan konfigurasi yang tidak menguntungkan ini karena pembaruan berat sebelumnya di jaringan!). Saya mengeksplorasi ide ini dalam sebuah posting blog tentang inisialisasi bobot - yang juga dapat berkontribusi pada masalah ini - dan hubungannya dengan aliran data. Saya pikir poin saya di sini dapat diilustrasikan oleh plot dari artikel itu:

Aktivasi dalam MLU ReLU dengan strategi inisialisasi yang berbeda

Plot menampilkan aktivasi dalam Perceptron Multi-Layer 5-lapisan dengan aktivasi ReLU setelah satu kali melewati jaringan dengan berbagai strategi inisialisasi. Anda dapat melihat bahwa tergantung pada konfigurasi berat, output jaringan Anda dapat terhenti.

Lampiran Matematika

Secara matematis jika adalah fungsi kehilangan jaringan Anda, adalah output dari neuron di lapisan ke- , adalah neuron ReLU, dan adalah input linear ke dalam layer , kemudian dengan rantai aturan turunan dari kerugian sehubungan dengan berat yang menghubungkan -th dan - lapisan adalahLxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

Istilah pertama di sebelah kanan dapat dihitung secara rekursif. Istilah kedua di sebelah kanan adalah satu-satunya tempat yang secara langsung melibatkan bobot dan dapat dipecah menjadiwjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

Dari sini Anda dapat melihat bahwa jika output selalu negatif, bobot yang mengarah ke neuron tidak diperbarui, dan neuron tidak berkontribusi untuk pembelajaran.


Penjelasan hebat !, bisakah Anda membantu saya memahami Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.Bagaimana bobot menjadi negatif jika input dinormalisasi?
anu

@ anu Pembaruan berat adalah , jadi jika Anda mengambil langkah besar, artinya dalam hal ini memilih , dan jika positif, maka Anda dapat melihat bahwa dapat menjadi negatif. Ini sangat buruk jika kami memperbarui bias menjadi nilai negatif yang besar. wλdwλdww
Johnson

@ JohnsonJia, bagus, saya mengerti :), satu klarifikasi lagi diperlukan, mengapa sangat buruk dalam kasus bias dibandingkan dengan berat karena kontribusi negatif bisa pada berat & bias, koreksi saya jika saya salah.?
anu

Karena bias tidak dimodifikasi oleh input: , jadi jika sangat negatif, dapat tetap negatif untuk semua nilai . b z xz=wx+bbzx
Johnson

5

Untuk lebih spesifik dalam bahasa, sedangkan gradien lokal ReLU (yaitu ) melipatgandakan gradien yang mengalir kembali karena propagasi balik, hasil dari gradien yang diperbarui bisa berupa angka negatif yang besar (jika gradien yang mengalir- kembali adalah angka negatif besar).1

Besar gradien diperbarui negatif seperti menghasilkan negatif yang besar ketika tingkat belajar yang relatif besar, maka akan menekan update yang akan terjadi di neuron ini, karena hampir tidak mungkin untuk memasang angka positif yang besar untuk mengimbangi angka negatif besar dibawa oleh yang " rusak " .w iwiwi


4

"Dying ReLU" mengacu pada neuron yang menghasilkan 0 untuk data Anda di set pelatihan. Ini terjadi karena jumlah input berat * dalam neuron (juga disebut aktivasi ) menjadi <= 0 untuk semua pola input. Ini menyebabkan ReLU untuk menghasilkan 0. Karena turunan dari ReLU adalah 0 dalam hal ini, tidak ada pembaruan berat yang dibuat dan neuron terjebak pada keluaran 0.

Hal yang perlu diperhatikan:

  1. Sekarat ReLU tidak berarti bahwa output neuron akan tetap nol pada waktu ujian juga. Tergantung pada perbedaan distribusi, ini mungkin atau mungkin tidak demikian.
  2. Sekarat ReLU tidak mati selamanya. Jika Anda menambahkan data pelatihan baru atau menggunakan model pra-pelatihan untuk pelatihan baru, neuron-neuron ini mungkin menendang kembali!
  3. Secara teknis Sekarat ReLU tidak harus mengeluarkan 0 untuk SEMUA data pelatihan. Ini mungkin terjadi bahwa output tidak nol untuk beberapa data tetapi jumlah zaman tidak cukup untuk memindahkan bobot secara signifikan.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.