Bagaimana tepatnya DropOut bekerja dengan lapisan convolutional?

10

Dropout ( kertas , penjelasan ) mengatur output dari beberapa neuron ke nol. Jadi untuk MLP, Anda bisa memiliki arsitektur berikut untuk dataset bunga Iris :

4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)

Ini akan bekerja seperti ini:

softmax(W3tanh(W2mask(D,tanh(W1input_vector)))

dengan , , , , (mengabaikan bias demi kesederhanaan). W 1R 50 × 4 D { 0 , 1 } 50 × 1 W 2R 20 × 50 W 3R 20 × 3sayanhalkamut_vectHairR4×1W1R50×4D{0,1}50×1W2R20×50W3R20×3

Dengan danD=(d)sayaj

dsayajB(1,hal=0,5)

di mana operasi mengalikan titik D dengan M (lihat produk Hadamard ).topeng(D,M.)DM.

Oleh karena itu kami hanya mengambil sampel matriks setiap kali dan dengan demikian dropout menjadi perkalian simpul dengan 0.D

Tetapi untuk CNN, tidak jelas bagi saya apa yang sebenarnya dikeluarkan. Saya dapat melihat tiga kemungkinan:

  1. Menjatuhkan peta fitur lengkap (karenanya sebuah kernel)
  2. Menjatuhkan satu elemen kernel (mengganti elemen kernel dengan 0)
  3. Menjatuhkan satu elemen peta fitur

Silakan tambahkan referensi / kutipan untuk jawaban Anda.

Pikiran saya

Saya pikir Lasagne tidak (3) (lihat kode ). Ini mungkin yang paling sederhana untuk diterapkan. Namun, lebih dekat ke ide aslinya mungkin (1).

Tampaknya serupa untuk Caffe (lihat kode ). Untuk tensorflow, pengguna harus memutuskan ( kode - Saya tidak yakin apa yang terjadi ketika noise_shape=Nonedilewatkan).

Bagaimana seharusnya

(2) dan (3) tidak masuk akal karena akan menyebabkan jaringan menambah invarian ke posisi spasial, yang mungkin tidak diinginkan. Karenanya (1) adalah satu-satunya varian yang masuk akal. Tapi saya tidak yakin apa yang terjadi jika Anda menggunakan implementasi default.

Martin Thoma
sumber
Saya telah mengajukan pertanyaan juga di grup pengguna Lasagne .
Martin Thoma
Teman saya mencatat bahwa (2) dan (3) mungkin bukan ide yang baik karena mungkin memaksa jaringan untuk menyebarkan informasi secara spasial.
Martin Thoma

Jawaban:

1

lW(l+1)

Untuk lebih jelasnya, saya pikir bagian 3 dalam makalah ini mungkin membantu Anda: Max-pooling & Convolutional dropout . Secara khusus 3.2.

Ketika Anda menguji, Anda menggunakan semua node jaringan tetapi dengan bobot filter yang diskalakan oleh probabilitas penahan, seperti yang dijelaskan dalam makalah.

Jangan ragu untuk memperbaiki atau memperbaiki jawaban saya.

Semoga ini bisa membantu setidaknya sedikit.

Leonard Aukea
sumber