Dropout: menskalakan aktivasi versus membalik dropout

9

Ketika menerapkan dropout di jaringan saraf tiruan, kita perlu mengimbangi kenyataan bahwa pada waktu pelatihan sebagian neuron dinonaktifkan. Untuk melakukannya, ada dua strategi umum:

  • scaling aktivasi pada waktu ujian
  • membalikkan dropout selama fase pelatihan

Dua strategi dirangkum dalam slide di bawah ini, diambil dari Standford CS231n: Convolutional Neural Networks for Visual Recognition .

Strategi mana yang lebih disukai, dan mengapa?


Menskalakan aktivasi pada waktu pengujian:

masukkan deskripsi gambar di sini

Menghindari putus sekolah selama fase pelatihan:

masukkan deskripsi gambar di sini

Franck Dernoncourt
sumber
Mengapa kita harus menskala alih-alih ? Intuisi saya adalah bahwa semakin putus sekolah, semakin banyak kita harus mengganti rugi, kan? Lihatlah hubungan tingkat putus sekolah dengan faktor: <br> <br> <br> <br> <br> <br> <br> <br>1p11pdropout>1p>11p0.2>5>1.250.5>2>20.8>1.25>5
Ken Chan
"semakin putus sekolah, semakin kita harus mengganti rugi" Benar, inilah sebabnya kami menggunakan 1 / p. Jika p = .1 sehingga 90% dari output dijatuhkan, kita perlu meningkatkan nilai tersebut dengan 10. Perhatikan bahwa 1 / .1 = 10, sedangkan 1 / (1-.1) = 1 / (. 9) = 1.1.
Tahlor

Jawaban:

5

"membalikkan dropout selama fase pelatihan" harus lebih disukai.

Secara teoritis jika kita melihat putusnya Bernoulli sebagai metode menambahkan suara ke jaringan, lebih baik suara itu bisa memiliki rata-rata nol. Jika kita melakukan penskalaan pada waktu pelatihan untuk membatalkan bagian dari unit yang dinonaktifkan, rata-rata kebisingannya adalah nol.

Ada jenis lain dari metode dropout / noise yang keluar kemudian (misalnya dropout multiplikasi Gaussian, noise tambahan Gaussian ) yang juga memiliki rata-rata nol.

Dalam hal pelatihan dan pengujian jaringan saraf dalam praktek, ada alasan untuk lebih memilih implementasi seperti itu juga. Katakanlah saya ingin membandingkan kinerja dua model dengan arsitektur yang sama, satu dilatih oleh putus sekolah dan satu tidak.

Jika saya "skala aktivasi pada waktu pengujian", maka saya akan membutuhkan dua jaringan yang berbeda pada waktu pengujian. Jika saya menggunakan "versi terbalik" maka saya bisa menerapkan jaringan uji yang sama (kode) untuk kedua set parameter terlatih.

dontloo
sumber
Biarkan saya memastikan saya memahami dengan benar: model yang tidak putus sekolah yang terlatih akan benar-benar memiliki arsitektur yang berbeda, karena itu perlu menerapkan perkalian dengan p pada setiap lapisan? Jadi komputer melihatnya berbeda secara topologi?
Eric Auld
@ EricAuld hai maaf atas jawaban yang terlambat, ya itu pada dasarnya yang saya maksud, hanya dengan "menerapkan jaringan tes yang sama" saya maksudkan Anda tidak perlu mengubah kode.
dontloo
4

Keuntungan lain dari melakukan dropout terbalik (selain tidak harus mengubah kode pada waktu ujian) adalah bahwa selama pelatihan seseorang dapat menjadi mewah dan mengubah tingkat dropout secara dinamis. Ini disebut sebagai putus sekolah "anil". Pada dasarnya logikanya adalah bahwa menambahkan "noise" putus sekolah pada awal pelatihan membantu menjaga optimalisasi agar tidak terjebak dalam minimum lokal, sementara membiarkannya membusuk ke nol pada akhirnya menghasilkan jaringan yang lebih baik dengan kinerja yang lebih baik.

PELATIHAN DROPOUT TERKENAL JARINGAN DALAM

Dropout yang Dimodifikasi untuk Pelatihan Jaringan Saraf Tiruan

JPJ
sumber
2

Andrew membuat penjelasan yang sangat baik dalam kursus Pembelajaran Mendalam tentang sesi ini Regularisasi Putus Sekolah :

  • Dropout terbalik lebih umum karena membuat pengujian lebih mudah
  • Tujuan dari pembalik adalah untuk memastikan bahwa nilai Z tidak akan terpengaruh oleh pengurangan W.

Katakan a3 = a3 / keep_probpada langkah terakhir implementasi:

Z [4] = W [4] * a [3] + b [4] , ukuran elemen dari [3] telah berkurang keep_probdari D3 (persentase elemen telah dihapus oleh D3), dengan demikian nilainya dari Z [4] juga akan dikurangi, jadi untuk mengkompensasi ini kira-kira kita akan membalikkan perubahan dengan membagi keep_probuntuk memastikan nilai Z [4] tidak akan terpengaruh.

masukkan deskripsi gambar di sini

xmindata
sumber