Setiap contoh jaringan saraf untuk pengenalan gambar yang saya baca menghasilkan jawaban "ya" atau "tidak" yang sederhana. Satu simpul keluar berhubungan dengan "Ya, ini adalah wajah manusia," dan satu simpul terkait dengan "Tidak, ini bukan wajah manusia."
Saya mengerti bahwa ini mungkin untuk kesederhanaan penjelasan, tetapi saya bertanya-tanya bagaimana jaringan saraf dapat diprogram untuk memberikan hasil yang lebih spesifik. Sebagai contoh, katakanlah saya mengklasifikasikan hewan. Alih-alih mengatakan "Hewan" atau "Bukan binatang", saya ingin tanggapan seperti "Anjing", "Ikan", "Burung", "Ular", dll., Dengan satu simpul keluar terakhir adalah "Bukan binatang / saya tidak mengenali ini ".
Saya yakin ini pasti mungkin, tetapi saya kesulitan memahami caranya. Sepertinya karena algoritma pelatihan backpropogation of error, ketika Anda melatih satu simpul keluar (yaitu, "Ini adalah anjing") dan bobot neuron diubah, maka keadaan ideal untuk simpul keluar lain yang sebelumnya Anda terlatih (yaitu, "Ini adalah burung") akan mulai menyimpang, dan sebaliknya. Jadi, melatih jaringan untuk mengenali satu kategori akan menyabot pelatihan apa pun yang dilakukan untuk kategori lain, sehingga membatasi kita pada desain "Ya" atau "Tidak" yang sederhana.
Apakah ini membuat pengenal seperti itu tidak mungkin? Atau apakah saya salah memahami algoritma? Hanya dua hal yang dapat saya pikirkan adalah:
Entah kita bisa melatih satu jaringan saraf untuk setiap hal yang kita inginkan diklasifikasikan dan entah bagaimana menggunakannya untuk membangun jaringan super besar (jadi misalnya, jaringan untuk "anjing", jaringan untuk "burung", dll., Yang entah bagaimana kita tambahkan bersama untuk membuat jaringan super untuk "hewan"); atau,
Buat semacam metodologi pelatihan yang sangat rumit yang akan membutuhkan matematika yang sangat canggih dan entah bagaimana akan menghasilkan kondisi neuron-weight-ideal untuk semua output yang mungkin (dengan kata lain,
insert math magic here
).
(Catatan 1: Saya secara khusus melihat perceptrons multilayer sebagai semacam jaringan saraf.)
(Catatan 2: Untuk "solusi yang memungkinkan" yang pertama, memiliki masing-masing jaringan saraf spesifik dan mengulanginya sampai kami menerima jawaban "Ya" tidak cukup baik. Saya tahu ini bisa dilakukan dengan cukup mudah, tapi itu fungsional sederhana pemrograman daripada pembelajaran mesin. Saya ingin tahu apakah mungkin memiliki satu jaringan saraf untuk memberi makan informasi dan menerima respons yang sesuai.)
@ anaximander jawaban cukup bagus, saya pikir saya akan mengomentari bagian pertanyaan Anda ini:
Baiklah, saya pikir anggapan Anda salah di sini; jika saya mengerti dengan benar, Anda memiliki NN dengan satu output per kategori yang Anda coba klasifikasikan. Idealnya, Anda ingin mereka beroperasi hampir secara independen, sehingga klasifikasi "anjing" dan "burung" tidak menyala secara bersamaan. Jadi sungguh, selama pelatihan, apa yang akan terjadi adalah ketika Anda melatih NN dengan hasil "anjing", backpropagation akan mencoba memastikan bahwa "burung" dan neuron keluaran lainnya tidak menghasilkan positif palsu. Jadi, secara teori, itu akan berfungsi dengan baik, bertentangan dengan komentar Anda; penguatan hasil negatif untuk "burung" benar.
Namun, masalah Anda adalah skalabilitas dari pendekatan ini. Saat Anda menambahkan lebih banyak kategori ke jaringan, pelatihan akan menjadi lebih kompleks setidaknya dengan cara yang linier (tetapi kemungkinan jauh lebih buruk). Untuk alasan ini, banyak orang menggunakan pendekatan di mana NNs individu dilatih untuk setiap kategori; ini membuat segala sesuatunya cukup sederhana dan relatif dapat diukur. Meta-level bagaimana ini digabungkan terserah Anda. Anda dapat dengan mudah melewati semua NN dan melihat mana yang menghasilkan output positif, Anda dapat membuat NN heuristik tingkat menengah yang mencoba mempersempit jenis hewan untuk Anda, atau Anda bahkan dapat memiliki NN raksasa yang menggabungkan NN individu sebagai neuron. . Pada dasarnya, apa yang ingin saya katakan adalah bahwa Anda memiliki pengetahuan sebelumnya tentang struktur masalah - klasifikasi individu kemungkinan besar berbeda satu sama lain;
EDIT: Untuk menjawab pertanyaan judul, tentu saja NNs dapat memberikan lebih dari jawaban ya / tidak. Dalam model "standar", setiap neuron keluaran biasanya menyala ya / tidak (walaupun perilaku ini dapat diubah, jika Anda cenderung), mewakili satu bit informasi; tetapi seperti halnya komputer Anda, bit dapat digabungkan untuk memberikan rentang nilai diskrit, yang dapat ditafsirkan dengan cara apa pun yang Anda inginkan. Contoh yang cukup visual dari keluaran non-biner adalah Peta Susun Sendiri , yang biasanya memiliki keluaran 2D.
sumber
Jawaban singkat dan tidak terlalu kaku: ya setiap NN dapat memberikan info lebih dari sekadar
yes
, atauno
. Itu karena ambang batas. Jika bobot lebih tinggi dari ambang tertentu, jawabannya adalah salah satu kelas klasifikasi, jika lebih rendah jawabannya adalah kelas klasifikasi kedua. Pada dasarnya:Output Neuron berada dalam interval [0..1] (atau [-1,1] tergantung), dan Anda tidak ingin mendapatkan jawaban apakah output lebih rendah atau lebih tinggi dari ambang tetapi output (output yang Anda dapat dengan mudah dikonversi ke interval 0..1 dan itu berarti%)
sumber