Pentingnya normalisasi respons lokal di CNN

41

Saya telah menemukan bahwa Imagenet dan CNN besar lainnya menggunakan lapisan normalisasi respons lokal. Namun, saya tidak dapat menemukan banyak informasi tentang mereka. Seberapa penting mereka dan kapan mereka harus digunakan?

Dari http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers :

"Lapisan normalisasi respons lokal melakukan semacam" penghambatan lateral "dengan menormalkan lebih dari daerah input lokal. Dalam mode ACROSS_CHANNELS, daerah lokal memperluas melintasi saluran terdekat, tetapi tidak memiliki batas spasial (yaitu, mereka memiliki bentuk local_size x 1 x 1) Dalam mode WITHIN_CHANNEL, wilayah lokal diperluas secara spasial, tetapi berada dalam saluran terpisah (yaitu, mereka memiliki bentuk 1 x local_size x local_size). Setiap nilai input dibagi dengan (1+ (α / n) ixix2i) β, di mana n adalah ukuran masing-masing wilayah lokal, dan jumlah diambil atas wilayah yang berpusat pada nilai itu (nol padding ditambahkan jika perlu). "

Edit:

Tampaknya jenis lapisan ini memiliki dampak minimal dan tidak digunakan lagi. Pada dasarnya, peran mereka telah dikalahkan oleh teknik regularisasi lainnya (seperti dropout dan normalisasi batch), inisialisasi yang lebih baik dan metode pelatihan. Lihat jawaban saya di bawah ini untuk lebih jelasnya.

pir
sumber

Jawaban:

20

Tampaknya jenis lapisan ini memiliki dampak minimal dan tidak digunakan lagi. Pada dasarnya, peran mereka telah dikalahkan oleh teknik regularisasi lainnya (seperti dropout dan normalisasi batch), inisialisasi yang lebih baik dan metode pelatihan. Inilah yang tertulis dalam catatan kuliah untuk Stanford Course CS321n di ConvNets:

Lapisan Normalisasi

Banyak jenis lapisan normalisasi telah diusulkan untuk digunakan dalam arsitektur ConvNet, kadang-kadang dengan niat menerapkan skema penghambatan yang diamati di otak biologis. Namun, lapisan-lapisan ini baru-baru ini tidak disukai karena dalam praktik kontribusinya telah terbukti minimal, jika ada. Untuk berbagai jenis normalisasi, lihat diskusi di API perpustakaan cuda-convnet Alex Krizhevsky.

pir
sumber
20

Memang, sepertinya tidak ada penjelasan yang baik di satu tempat. Yang terbaik adalah membaca artikel-artikel dari mana asalnya:

Artikel AlexNet asli sedikit menjelaskan dalam Bagian 3.3:

  • Krizhevsky, Sutskever, dan Hinton, Klasifikasi ImageNet dengan Deep Nevolute Neural Networks, NIPS 2012. pdf

Cara tepat untuk melakukan ini diusulkan dalam (tetapi tidak banyak info tambahan di sini):

  • Kevin Jarrett, Koray Kavukcuoglu, Marc'Aurelio Ranzato dan Yann LeCun, Apa Arsitektur Multi-Tahap terbaik untuk Pengakuan Objek ?, ICCV 2009. pdf

Itu terinspirasi oleh ilmu saraf komputasi:

  • S. Lyu dan E. Simoncelli. Representasi gambar nonlinier menggunakan normalisasi memecah. CVPR 2008. pdf . Makalah ini masuk lebih dalam ke matematika, dan sesuai dengan jawaban seanv507.
  • [24] N. Pinto, DD Cox, dan JJ DiCarlo. Mengapa pengenalan objek nyata di dunia nyata sulit? Biologi Komputasi PLoS, 2008.
Jasper Uijlings
sumber
15

Inilah jawaban yang saya sarankan, meskipun saya tidak mengklaim memiliki pengetahuan. Saat melakukan gradient descent pada model linear, permukaan kesalahan adalah kuadratik, dengan kelengkungan ditentukan oleh , di mana adalah input Anda. Sekarang permukaan kesalahan ideal untuk atau gradient descent memiliki kelengkungan yang sama di semua arah (jika tidak ukuran langkah terlalu kecil di beberapa arah dan terlalu besar di yang lain). Menormalkan input Anda dengan mengubah skala input menjadi nol, varians 1 membantu dan cepat: sekarang arah sepanjang setiap dimensi memiliki kelengkungan yang sama, yang pada gilirannya membatasi kelengkungan di arah lain. XXXTX

Solusi optimal adalah untuk memutihkan / memutihkan input untuk masing-masing neuron, namun ini terlalu mahal secara komputasi. LCN dapat dibenarkan sebagai perkiraan pemutihan berdasarkan asumsi tingkat korelasi yang tinggi antara piksel tetangga (atau saluran) Jadi saya akan mengklaim manfaatnya adalah bahwa permukaan kesalahan lebih jinak untuk SGD ... Tingkat pembelajaran tunggal berfungsi dengan baik melintasi dimensi input (masing-masing neuron)

seanv507
sumber
2
Normalisasi Batch: Mempercepat Pelatihan Jaringan Dalam dengan Mengurangi Pergeseran Kovarian Internal Sergey Ioffe, Christian Szegedy, arxiv.org/abs/1502.03167 melakukan langkah (secara hati-hati) men-rescaling input neuron dan mencapai percepatan substansial dengan mampu menggunakan tingkat pembelajaran yang lebih besar.
seanv507
Anda dapat mengedit informasi ini menjadi jawaban Anda menggunakan tombol edit di bawah teks jawaban Anda.
Pasang kembali Monica
10

Dengan jawaban ini saya ingin merangkum kontribusi dari penulis lain dan memberikan penjelasan satu tempat teknik LRN (atau normalisasi kontras) bagi mereka, yang hanya ingin mengetahui apa itu dan bagaimana cara kerjanya.

Motivasi: ' Semacam ini respon normalisasi (LRN) mengimplementasikan bentuk penghambatan lateral terinspirasi oleh jenis yang ditemukan dalam neuron nyata, menciptakan persaingan untuk kegiatan besar di antara output neuron dihitung menggunakan kernel yang berbeda. ' AlexNet 3.3

Dengan kata lain LRN memungkinkan untuk mengurangi respons yang seragam besar untuk lingkungan dan membuat aktivasi besar lebih jelas dalam lingkungan yaitu menciptakan kontras yang lebih tinggi dalam peta aktivasi. prateekvjoshi.com menyatakan bahwa ini sangat berguna dengan fungsi aktivasi tanpa batas sebagai RELU.

Formula Asli: Untuk setiap posisi tertentu (x, y) dan kernel i yang sesuai dengan output 'pixel' tunggal, kami menerapkan 'filter', yang menggabungkan informasi tentang output dari kernel n lain yang diterapkan pada posisi yang sama. Peraturan ini diterapkan sebelum fungsi aktivasi. Regularisasi ini, memang, bergantung pada urutan kernel yang, setahu saya, hanya kebetulan yang disayangkan.

LRN

Dalam praktiknya (lihat Caffe ) 2 pendekatan dapat digunakan:

  1. WITHIN_CHANNEL. Normalisasi di lingkungan lokal dari saluran tunggal (sesuai dengan filter konvolusional tunggal). Dengan kata lain, bagilah respons satu saluran dari satu piksel sesuai dengan nilai output dari neuron yang sama untuk piksel terdekat.
  2. ACROSS_CHANNELS. Untuk satu piksel, normalkan nilai setiap saluran sesuai dengan nilai semua saluran untuk piksel yang sama

Penggunaan aktual LRN digunakan lebih sering pada hari-hari konvet awal seperti LeNet-5. Implementasi GoogLeNet (Inception) saat ini di Caffe sering menggunakan LRN sehubungan dengan teknik pooling, tetapi tampaknya dilakukan hanya demi memilikinya. Baik Inception asli / GoogLeNet (di sini ) maupun versi-versi berikut tidak menyebutkan LRN dengan cara apa pun. Juga, implementasi TensorFlow dari Inception (disediakan dan diperbarui oleh tim penulis asli) jaringan tidak menggunakan LRN meskipun tersedia.

Kesimpulan Menerapkan LRN bersama dengan pooling layer tidak akan merusak kinerja jaringan selama nilai-nilai hyper-parameter masuk akal. Meskipun begitu, saya tidak mengetahui adanya justifikasi baru-baru ini untuk menerapkan LRN / normalisasi kontras dalam jaringan saraf.

y.selivonchyk
sumber
Saya juga akan menambahkan bahwa LRN adalah semacam "normalisasi kompetitif", menurut halaman 374 di Géron, Aurélien. Pembelajaran mesin langsung dengan Scikit-Learn dan TensorFlow: konsep, alat, dan teknik untuk membangun sistem yang cerdas. "O'Reilly Media, Inc.", 2017 .. (Saya menyebutkan itu karena Hinton hanya menyebutnya "normalisasi kompetitif" dalam kuliah Jaring konvolusional untuk pengakuan objek dalam kursus coursera-nya.
Oren Milman
7

Jenis respon lapisan Normalisasi Normalisasi (LRN) ternyata bermanfaat ketika menggunakan neuron dengan aktivasi tanpa batas (misalnya neuron linier yang diperbaiki), karena memungkinkan deteksi fitur frekuensi tinggi dengan respons neuron besar, sementara meredam respons yang seragam besar di lingkungan setempat. Ini adalah jenis regulator yang mendorong "persaingan" untuk kegiatan besar di antara kelompok neuron terdekat.

src- https://code.google.com/p/cuda-convnet/wiki/LayerParams#Local_response_normalization_layer_(same_map)

vivkul
sumber
0

Normalisasi respons lokal (LRN) dilakukan berdasarkan piksel untuk setiap saluran :i

xi=xi(k+(αjxj2))β

dengan adalah konstanta. Perhatikan bahwa Anda mendapatkan normalisasi L2 jika Anda mengatur , , . κ = 0 α = 1 β = 1k,α,βRκ=0α=1β=12

Namun, ada teknik yang jauh lebih baru yang disebut "batch normalisasi" (lihat kertas ) yang berfungsi sangat mirip dan menyarankan untuk tidak menggunakan LRN lagi. Normalisasi batch juga berfungsi baik untuk pixel:

y=xμσ2+ϵγ+β

di mana adalah rata-rata, adalah varians, adalah konstanta kecil, adalah parameter yang dapat dipelajari yang memungkinkan jaring untuk menghapus normalisasi.σ 2 ε > 0 γ , β Rμσ2ε>0γ,βR

Jadi jawabannya adalah: Normalisasi Respons Lokal tidak penting lagi, karena kami memiliki sesuatu yang berfungsi lebih baik dan diganti LRN: Normalisasi Batch.

Lihat juga

Martin Thoma
sumber
Saya pikir ini tidak benar. LRN diterapkan dalam output kernel, bukan input (meskipun Alexnet memang menggunakan normalisasi input, tapi itu terpisah).
Shital Shah