Apa fungsi biaya umum yang digunakan dalam mengevaluasi kinerja jaringan saraf?
Detail
(jangan ragu untuk melewatkan sisa pertanyaan ini, maksud saya di sini adalah hanya untuk memberikan klarifikasi tentang notasi yang mungkin digunakan jawaban untuk membantu mereka lebih dimengerti oleh pembaca umum)
Saya pikir akan bermanfaat untuk memiliki daftar fungsi biaya umum, di samping beberapa cara yang telah mereka gunakan dalam praktik. Jadi, jika orang lain tertarik dengan ini, saya pikir komunitas wiki mungkin adalah pendekatan terbaik, atau kita bisa menghapusnya jika itu di luar topik.
Notasi
Jadi untuk memulai, saya ingin mendefinisikan notasi yang kita semua gunakan saat menjelaskan ini, jadi jawabannya cocok satu sama lain.
Notasi ini dari buku Neilsen .
Jaringan Neural Feedforward adalah banyak lapisan neuron yang terhubung bersama. Kemudian dibutuhkan input, input itu "menetes" melalui jaringan dan kemudian jaringan saraf mengembalikan vektor output.
Lebih formal lagi, sebut aktivasi (alias output) dari neuron di lapisan , di mana adalah elemen dalam vektor input.
Kemudian kita dapat menghubungkan input layer berikutnya dengan sebelumnya melalui relasi berikut:
dimana
adalah fungsi aktivasi,
adalah bobot dari neuron di lapisan ke neuron di lapisan ,
adalah bias dari neuron di lapisan , dan
mewakili nilai aktivasi neuron di lapisan - .
Terkadang kita menulis untuk mewakili , dengan kata lain, nilai aktivasi neuron sebelum menerapkan fungsi aktivasi .
Untuk notasi yang lebih ringkas kita bisa menulis
Untuk menggunakan rumus ini untuk menghitung output dari jaringan feedforward untuk beberapa input , atur , lalu hitung , , ..., , di mana m adalah jumlah lapisan.
pengantar
Fungsi biaya adalah ukuran "seberapa baik" jaringan saraf lakukan sehubungan dengan itu diberikan sampel pelatihan dan output yang diharapkan. Ini juga mungkin tergantung pada variabel seperti bobot dan bias.
Fungsi biaya adalah nilai tunggal, bukan vektor, karena ini menilai seberapa baik jaringan saraf lakukan secara keseluruhan.
Secara khusus, fungsi biaya dalam bentuk
di mana adalah bobot jaringan saraf kita, adalah bias jaringan saraf kita, adalah input dari sampel pelatihan tunggal, dan adalah output yang diinginkan dari sampel pelatihan itu. Catatan fungsi ini juga bisa berpotensi menjadi tergantung pada dan untuk setiap neuron pada lapisan , karena nilai-nilai tersebut tergantung pada , , dan .
Dalam backpropagation, fungsi biaya digunakan untuk menghitung kesalahan dari layer output kami, , melalui
Yang juga dapat ditulis sebagai vektor via
Kami akan memberikan gradien fungsi biaya dalam hal persamaan kedua, tetapi jika seseorang ingin membuktikan hasil ini sendiri, disarankan menggunakan persamaan pertama karena lebih mudah digunakan.
Persyaratan fungsi biaya
Untuk digunakan dalam backpropagation, fungsi biaya harus memenuhi dua properti:
1: Fungsi biaya harus dapat ditulis sebagai rata-rata
fungsi biaya untuk contoh pelatihan individual, .
Hal ini memungkinkan kita untuk menghitung gradien (sehubungan dengan bobot dan bias) untuk contoh pelatihan tunggal, dan menjalankan Gradient Descent.
2: Fungsi biaya tidak harus bergantung pada nilai-nilai aktivasi dari jaringan saraf selain output nilai .
Secara teknis fungsi biaya dapat bergantung pada atau . Kami hanya membuat batasan ini sehingga kami dapat melakukan backpropagte, karena persamaan untuk menemukan gradien dari lapisan terakhir adalah satu-satunya yang bergantung pada fungsi biaya (sisanya tergantung pada lapisan berikutnya). Jika fungsi biaya tergantung pada lapisan aktivasi lain selain yang satu output, backpropagation akan tidak valid karena gagasan "menetes ke belakang" tidak lagi berfungsi.
Juga, fungsi aktivasi diperlukan untuk memiliki output untuk semua . Jadi fungsi biaya ini hanya perlu didefinisikan dalam rentang itu (misalnya, valid karena kami dijamin ).