Saya cukup baru di jaringan saraf, tapi saya mengerti aljabar linier dan matematika konvolusi dengan cukup baik.
Saya mencoba memahami kode contoh yang saya temukan di berbagai tempat di internet untuk melatih NN konvolusional yang Keras dengan data MNIST untuk mengenali angka. Harapan saya adalah ketika saya membuat layer convolutional, saya harus menentukan filter atau set filter untuk diterapkan pada input. Tetapi tiga sampel yang saya temukan semua membuat lapisan convolutional seperti ini:
model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
border_mode='valid',
input_shape=input_shape))
Ini tampaknya menerapkan total 32 filter 3x3 untuk gambar yang diproses oleh CNN. Tapi apa saringan itu? Bagaimana saya menggambarkannya secara matematis? Dokumentasi yang keras tidak membantu.
Terima kasih sebelumnya,
Jawaban:
Secara default, filterW diinisialisasi secara acak menggunakan W∼ U( 6ni n+ no u t, - 6ni n+ no u t) ,
glorot_uniform
metode, yang mengambil nilai dari distribusi yang seragam dengan batas positif dan negatif yang dijelaskan sebagai berikut:di manani n adalah jumlah unit yang dimasukkan ke dalam unit ini, danno u t adalah jumlah unit hasil ini diumpankan ke.
Saat Anda menggunakan jaringan untuk membuat prediksi, filter ini diterapkan pada setiap lapisan jaringan. Yaitu, konvolusi diskrit dilakukan untuk setiap filter pada setiap gambar input, dan hasil konvolusi ini diumpankan ke lapisan konvolusi berikutnya (atau lapisan yang terhubung penuh, atau apa pun yang mungkin Anda miliki).
Selama pelatihan, nilai-nilai dalam filter dioptimalkan dengan backpropogation sehubungan dengan fungsi kerugian. Untuk tugas klasifikasi seperti mengenali angka, biasanya cross entropy loss digunakan. Berikut ini visualisasi dari beberapa filter yang dipelajari di lapisan pertama (atas) dan filter yang dipelajari di lapisan kedua (bawah) dari jaringan convolutional:
Seperti yang Anda lihat, filter lapisan pertama pada dasarnya semua bertindak sebagai pendeteksi tepi sederhana, sedangkan filter lapisan kedua lebih kompleks. Saat Anda masuk lebih dalam ke jaringan, filter dapat mendeteksi bentuk yang lebih kompleks. Akan sedikit sulit untuk memvisualisasikan, karena filter ini bekerja pada gambar yang telah berulang kali berbelit-belit, dan mungkin tidak terlalu mirip dengan gambar alami asli.
sumber
glorot_uniform
tidak menggunakan distribusi normal. Saya pikir Anda sedang menggambarkanglorot_normal
. Saya tidak berpikir itu sangat penting untuk jawabannya - poin kuncinya adalah inisialisasi acak diikuti oleh efek pelatihan. Mungkin perlu dijelaskan bagaimana filter yang dilatih berakhir seperti filter tepi / sudut dll (mungkin dengan salah satu gambar klasik sebelum / sesudah pelatihan pencitraan filter lapisan pertama).glorot_normal
danglorot_uniform
, dan saya telah memperbarui jawaban untuk mencerminkan ini. Saya juga menambahkan sedikit info tambahan tentang bagaimana filter berakhir, seperti yang Anda sarankan.Model traned akan melatih kernel sesuai dengan fungsi biaya Anda, dan pada akhirnya kernel ini adalah filter dari model Anda.
sumber