Analisis sensitivitas yang Anda sarankan berhubungan dengan memeriksa turunan parsial dari output sehubungan dengan input. Katakanlah vektor keluaran diberikan oleh , di mana adalah vektor input dan adalah fungsi yang diimplementasikan oleh jaringan. The Jacobian dari output wrt input adalah:y∈Rmy=f(x)x∈Rdf
Jij(x)=∂∂xjfi(x)
Jacobian memberikan tingkat perubahan lokal dari setiap output dengan setiap input, sehingga ia memberi tahu kita bagaimana akan berperilaku sebagai respons terhadap gangguan yang sangat kecil. Jika kita mulai dengan input dan menambahkan nilai sangat kecil ke input , kita mengharapkan output ke - meningkat dengan .fxΔjiΔJij(x)
Jika memiliki besar besar, itu berarti bahwa output sensitif terhadap input di sekitar . Karena , secara umum, nonlinier, pengertian sensitivitas ini bergantung pada input; mungkin besar di beberapa daerah dan hampir nol di tempat lain. Jika Anda menginginkan semacam ukuran ringkasan tentang seberapa kuat output bergantung pada input, Anda harus menggabungkan beberapa nilai input. Misalnya, Anda dapat mengambil nilai absolut dari Jacobian, rata-rata atas semua input dalam set pelatihan (yang bertindak sebagai pengganti untuk nilai yang diharapkan dengan distribusi input yang mendasarinya). Tentu saja, ringkasan seperti ini pada akhirnya akan membuang informasi, sehingga bisa menyesatkan dalam beberapa keadaan.Jij(x)ijxf
Anda bisa menggunakan aturan rantai untuk mendapatkan ekspresi untuk Jacobian, mirip dengan bagaimana Anda akan mendapatkan gradien dari fungsi kehilangan wrt parameter untuk digunakan dengan backprop. Anda juga dapat menghitungnya menggunakan diferensiasi otomatis, menggunakan perpustakaan seperti Theano, TensorFlow, dll. Tidak ada banyak alasan untuk melakukan diferensiasi terbatas (yaitu benar-benar mensimulasikan gangguan dan mengukur perubahan dalam output), kecuali fungsi yang diterapkan oleh jaringan Anda tidak dapat dibedakan ( dalam hal ini Jacobian tidak ada).
Sepasang peringatan: Jika input memiliki unit / skala yang berbeda satu sama lain, sensitivitasnya juga akan memiliki unit / skala yang berbeda, dan tidak dapat dibandingkan secara langsung. Membakukan / menskalakan input adalah salah satu solusi yang memungkinkan. Yang juga penting untuk diingat adalah bahwa jenis analisis ini memberi tahu kita tentang model itu sendiri, tetapi belum tentu distribusi yang mendasari yang menghasilkan data. Misalnya, jika dua input berkorelasi, model mungkin berakhir menggunakan yang pertama tetapi bukan yang kedua. Dalam hal ini, kami akan menemukan bahwa sensitivitas tinggi untuk input pertama dan rendah untuk input kedua, tetapi tidak boleh menyimpulkan bahwa input pertama secara inheren lebih penting untuk memprediksi output secara umum.
Artikel ini harus menarik.