Pembelajaran mendalam: Bagaimana saya tahu variabel mana yang penting?


20

Dalam istilah istilah jaringan saraf (y = Berat * x + bias) bagaimana saya tahu variabel mana yang lebih penting daripada yang lain?

Saya memiliki jaringan saraf dengan 10 input, 1 layer tersembunyi dengan 20 node, dan 1 layer output yang memiliki 1 node. Saya tidak yakin bagaimana mengetahui variabel input mana yang lebih berpengaruh daripada variabel lainnya. Apa yang saya pikirkan adalah bahwa jika input penting maka itu akan memiliki koneksi yang sangat berbobot ke lapisan pertama, tetapi bobotnya mungkin positif atau negatif. Jadi yang mungkin saya lakukan adalah mengambil nilai absolut dari bobot input dan menjumlahkannya. Input yang lebih penting akan memiliki jumlah yang lebih tinggi.

Jadi misalnya, jika panjang rambut adalah salah satu input, maka ia harus memiliki 1 koneksi ke masing-masing node di lapisan berikutnya, jadi 20 koneksi (dan karenanya 20 bobot). Bisakah saya mengambil nilai absolut dari setiap bobot dan menjumlahkannya bersama?


3
Anda tentu bisa melakukan itu, tetapi tidak jelas apa artinya selain "jumlah semua bobot untuk variabel ini di atas semua koneksi". Menyebutnya "kepentingan" sepenuhnya sewenang-wenang.
Matthew Drury

1
Saya hanya ingin informasi APAPUN yang akan menyarankan variabel itu penting, dan saya pikir ini mungkin cara yang baik.
user1367204

Jawaban:


16

Apa yang Anda gambarkan memang satu cara standar untuk mengukur pentingnya input neural-net. Perhatikan bahwa agar ini berfungsi, variabel input harus dinormalisasi dalam beberapa cara. Jika tidak, bobot yang sesuai dengan variabel input yang cenderung memiliki nilai lebih besar akan lebih kecil secara proporsional. Ada berbagai skema normalisasi, seperti misalnya mengurangi rata-rata variabel dan membaginya dengan standar deviasi. Jika variabel tidak dinormalisasi di tempat pertama, Anda bisa melakukan koreksi pada bobot sendiri dalam perhitungan kepentingan, seperti mengalikan dengan standar deviasi variabel.

.sayasaya=σsayaj=1ntersembunyi|wsayaj|

Berikut adalah standar deviasi dari saya masukan th, saya saya adalah saya pentingnya th masukan ini, w i j adalah berat menghubungkan i th input ke j th simpul tersembunyi di lapisan pertama, dan n tersembunyi adalah nomor node tersembunyi di lapisan pertama.σsayasayasayasayasayawsayajsayajntersembunyi

Teknik lain adalah dengan menggunakan turunan dari pemetaan neural-net sehubungan dengan input yang dimaksud, dirata-rata atas input.

sayasaya=σsaya|dydxsaya|

Di sini adalah input ke- i , y adalah output, dan nilai ekspektasi diambil sehubungan dengan vektor input x .xsayasayayx


Apakah ini akan berhasil jika saya hanya menggunakan koneksi antara input dan lapisan tersembunyi pertama (daripada menggunakan semua lapisan tersembunyi)?
user1367204

Anda hanya harus menggunakan lapisan tersembunyi pertama. Setelah satu lapisan, bobot lainnya tidak terikat ke satu input lebih dari yang lain. Saya mengedit jawabannya sedikit untuk memperjelas ini.
Sam Marinelli

Saya ingat pendekatan lain dan menambahkannya ke jawabannya.
Sam Marinelli

11

Solusi yang agak kasar tetapi efektif:

Coba 'menjatuhkan' input dengan menggunakan konstanta untuk salah satu fitur input Anda. Kemudian, latih jaringan untuk setiap kasus yang mungkin dan lihat bagaimana keakuratan Anda menurun. Masukan penting akan memberikan manfaat terbesar untuk akurasi keseluruhan.


Itu tentu saja kemungkinan.
SmallChess

6
Namun ada jebakan: bahkan jika fitur sangat penting, jika ada fitur lain yang sangat berkorelasi dengan yang pertama, tidak ada yang akan dianggap penting oleh kriteria Anda (kurangnya yang pertama dikompensasi oleh kehadiran yang terakhir, sementara kurang informatif tetapi lebih banyak fitur 'unik' akan tampak lebih penting seperti itu)
Firebug

Ini kadang-kadang disebut pengujian ablasi (lebih khusus ablasi mikro)
Veltzer Doron

7

105

Untuk jaringan yang dangkal, ini memberikan contoh mendefinisikan pentingnya variabel.

Untuk jaringan yang benar-benar mendalam, orang tidak terlalu banyak berbicara tentang kepentingan variabel. Karena input adalah fitur level mentah, seperti piksel dalam gambar.


Saya mengedit komentar saya untuk mencerminkan apa yang saya maksud. Saya bermaksud mengatakan 20 node di lapisan pertama, bukan 5 node. Bagian yang luar biasa dan terima kasih karena telah membedakan jaring yang dangkal / dalam.
user1367204

9
@ hxd1011 bukan untuk menjadi pemalu pedantic, tetapi dalam berarti lebih banyak lapisan bukan ribuan unit tersembunyi :).
Rafael

3

Yang paling ive ditemukan tentang ini rumit terdaftar di situs ini lebih khusus Anda dapat melihat ini . Jika Anda hanya berbicara tentang model linier maka Anda harus menormalkan bobot untuk membuatnya dapat diinterpretasikan tetapi bahkan ini bisa menyesatkan lebih lanjut tentang ini pada tautan yang disebutkan. Beberapa orang mencoba membuat fungsi bobot yang kompleks untuk menginterpretasikan pentingnya input (Garson, Gedeon, dan Milne) tetapi bahkan ini bisa menyesatkan Anda dapat menemukan lebih banyak tentang ini setelah Anda menggulir tautan pertama yang saya sebutkan. Secara umum saya akan menyarankan untuk terus menafsirkan hasil dengan sebutir garam.

akan setuju dengan jawaban @hadar tetapi ingin menambahkan bahwa alih-alih menggunakan percobaan konstan menggunakan nilai rata-rata untuk input itu dan jangan lupa untuk melatih kembali jaringan.

PS: maaf tidak bisa memposting lebih banyak tautan atau komentar di sini tidak memiliki banyak reputasi.


1

Mengingat bahwa Anda memiliki:

  1. Tugas klasifikasi
  2. Model yang terlatih
  3. Fitur yang dinormalisasi (antara 0 dan 1)

Adakah yang pernah mencoba:

  1. Mengatasi bias
  2. Lewati setiap waktu sebagai fitur satu vektor panas di mana semua fitur nol kecuali satu.
  3. Periksa hasilnya.

Dalam hal ini, saya pikir output akan menjadi angka yang menunjukkan "pentingnya" fitur karena output ini juga akan mewakili output dari jalur sinyal 1 ini di dalam jaringan.

Itu seperti menyalakan hanya satu bola lampu di dalam labirin dan mengukur cahaya yang keluar di pintu keluar.


Saya tidak berpikir ini akan banyak membantu. Yang ingin Anda nilai adalah seberapa besar variasi input itu akan memengaruhi output (dengan sendirinya atau dalam kombinasi dengan fitur-fitur lain)
elachell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.