Saya menghapus 74% neuron dari jaringan saraf. Itu menurunkan akurasi hanya 0,50%. Berikut rincian (dengan kode):
Jaringan saraf terlatih selalu memiliki neuron yang tidak berkontribusi secara substansial pada kinerja. Tapi mereka masih menghabiskan memori. Ini dapat dihapus tanpa mengorbankan akurasi secara signifikan. Mari kita lihat cara mengidentifikasinya!
Berikut langkah-langkahnya: Langkah 1) Latih jaringan saraf seperti biasa. Langkah 2) Lewati set validasi melalui jaringan terlatih, dan untuk setiap neuron dalam lapisan tersembunyi, hitung: - Aktivasi rata-rata - Varians aktivasi (jika aktivasi dapat -ve) Periksa ini👇
Langkah 3) Pangkas neuron yang memiliki rata-rata aktivasi dan varians mendekati nol karena mereka memiliki sedikit dampak pada output model. Idealnya, plot kinerja di beberapa ambang batas pemangkasan untuk memilih model yang sesuai dengan ukuran Anda vs. pengorbanan akurasi. Periksa ini 👇
Mari kita lihat kodenya. Kami mulai dengan mendefinisikan jaringan saraf sederhana dan melatihnya. Karena kita akan menghitung aktivasi tingkat neuron nanti untuk pemangkasan, kita mengembalikan semua aktivasi perantara dalam lintasan maju. Periksa ini👇
Selanjutnya, kami mendefinisikan dua daftar dengan tiga elemen: - Seseorang akan menyimpan rata-rata aktivasi - Yang lain akan menyimpan std dev aktivasi Kami meneruskan validasi yang ditetapkan melalui model kami untuk menghitung statistik ini untuk setiap lapisan tersembunyi. Periksa ini 👇
Pada titik ini, mari kita buat plot distribusi statistik tingkat neuron yang kita hasilkan di atas. Seperti yang digambarkan di bawah ini, sebagian besar aktivasi rata-rata neuron dan pengembangan std-nya sangat didistribusikan di sekitar nilai mendekati nol. Mari kita coba memangkasnya selanjutnya.
Untuk pemangkasan, kami mengulangi daftar ambang batas dan: - Buat jaringan baru dan transfer bobot yang melewati ambang batas. - Mengevaluasi jaringan baru dan menghitung parameter total. - Tambahkan hasilnya ke daftar. Periksa ini 👇
Tabel ini membandingkan akurasi model yang dipangkas dan pengurangan ukuran di beberapa ambang batas relatif terhadap model asli. Pada rata-rata = 0,1 dan std-dev = 0,4: - Akurasi model turun 0,08%. - Ukuran model berkurang sebesar 62%. Itu adalah pengurangan yang sangat besar. Periksa ini 👇
Inilah hasil menarik lainnya. Pada rata-rata = 0,5 dan std-dev = 1: - Akurasi model turun 0,5%. - Ukuran model berkurang sebesar 74%. Jadi pada dasarnya, kita mendapatkan kinerja yang hampir sama untuk 1/4 parameter. Periksa ini 👇
Tentu saja, ada trade-off antara akurasi dan ukuran. Saat kami mengurangi ukuran, akurasinya turun (periksa videonya). Tetapi dalam banyak kasus, akurasi bukan satu-satunya metrik yang kami optimalkan. Sebaliknya, beberapa metrik operasional seperti efisiensi, memori, dll., adalah faktor kuncinya.
45,92K