Dapatkah jaringan saraf memberikan lebih dari jawaban "ya" atau "tidak"?

11

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.)

asteri
sumber

Jawaban:

15

Untuk menjawab hanya judul Anda, ya. Jaring saraf dapat memberikan jawaban non-boolean. Sebagai contoh, jaring saraf telah digunakan untuk memprediksi nilai pasar saham, yang merupakan jawaban numerik dan karenanya lebih dari sekadar ya / tidak. Jaring saraf juga digunakan dalam pengenalan tulisan tangan, di mana output dapat menjadi salah satu dari serangkaian karakter - seluruh alfabet, angka, dan tanda baca.

Untuk lebih fokus pada contoh Anda - mengenali hewan - saya katakan itu mungkin. Ini sebagian besar merupakan perpanjangan dari contoh pengenalan tulisan tangan; Anda mengenali fitur bentuk dan membandingkannya dengan bentuk "ideal" untuk melihat yang cocok. Masalahnya teknis, bukan teoretis. Tulisan tangan, ketika dijalankan melalui perangkat lunak pengenalan, biasanya dipetakan ke satu set garis dan kurva - bagus dan sederhana. Wajah binatang lebih sulit dikenali, jadi Anda akan memerlukan logika pemrosesan gambar untuk mengekstraksi fitur seperti mata, hidung, mulut, garis tengkorak kasar dll. Namun, Anda hanya bertanya apakah itu mungkin, bukan bagaimana, jadi jawabannya adalah ya.

Taruhan terbaik Anda mungkin untuk melihat hal-hal seperti Teori Resonansi Adaptif. Prinsip umum adalah bahwa input sensorik (dalam hal ini, metrik pada ukuran relatif, bentuk dan jarak berbagai fitur wajah) dibandingkan dengan "prototipe" atau templat yang mendefinisikan kelas benda itu. Jika perbedaan antara input sensorik dan templat yang diingat di bawah ambang tertentu (sebagaimana didefinisikan oleh "parameter kewaspadaan"), maka objek yang diamati diasumsikan sebagai anggota kelompok yang diwakili oleh templat; jika tidak ada kecocokan yang ditemukan maka sistem menyatakannya sebagai jenis yang sebelumnya tidak terlihat. Hal yang menyenangkan tentang jaring semacam ini adalah ketika mengetahui bahwa suatu objek adalah, katakanlah, seekor kuda, ia dapat belajar lebih banyak tentang mengenali kuda sehingga ia dapat membedakan antara, katakanlah,

EDIT:

(Untuk kepentingan pengungkapan penuh: Saya masih meneliti ini sendiri untuk sebuah proyek, jadi pengetahuan saya masih belum lengkap dan mungkin sedikit di tempat.)

bagaimana ini terkait dengan pengaturan backpropogation bobot untuk satu node output merusak bobot untuk node lain yang sebelumnya dilatih?

Dari apa yang saya baca sejauh ini, paradigma ART sedikit berbeda; itu dibagi menjadi dua bagian - yang mempelajari input, dan yang mempelajari output untuk mereka. Ini berarti bahwa ketika menemukan set input yang tidak cocok, neuron yang tidak berkomitmen diaktifkan dan disesuaikan untuk mencocokkan input, sehingga neuron itu akan memicu pertandingan berikutnya. Neuron pada lapisan ini hanya untuk pengenalan. Setelah lapisan ini menemukan kecocokan, input diserahkan ke lapisan di bawahnya, yang merupakan salah satu yang menghitung respons. Untuk situasi Anda, layer ini kemungkinan akan sangat sederhana. Sistem yang saya lihat adalah belajar mengemudi. Ini sebenarnya adalah dua jenis pembelajaran; satu belajar mengemudi dalam berbagai situasi, dan yang lainnya belajar mengenali situasi. Sebagai contoh,

Gagasan mempelajari input baru tanpa merusak perilaku yang dipelajari sebelumnya dikenal sebagai dilema stabilitas / plastisitas. Jaring harus cukup stabil untuk menjaga perilaku yang dipelajari, tetapi cukup plastik sehingga dapat diajarkan hal-hal baru ketika keadaan berubah. Inilah yang dimaksudkan untuk dipecahkan oleh jaring ART.

anaximander
sumber
Terima kasih atas jawaban Anda! Jadi bagaimana hal ini terkait dengan pengaturan backpropogation bobot untuk satu node output merusak bobot untuk node lain yang sebelumnya dilatih? Atau apakah saya memikirkan hal ini dengan cara yang salah?
asteri
@ Jeff saya telah menambahkan sedikit jawaban saya. Ini tidak terlalu rinci, saya khawatir - saya masih belajar ini sendiri. Namun, pertanyaan Anda berkaitan dengan dilema stabilitas / plastisitas, di mana Anda ingin dapat melatih jaring untuk mengenali sesuatu yang baru tanpa melupakan bagaimana mengenali sesuatu yang sudah diketahuinya, dan Teori Resonansi Adaptif ditujukan tepat untuk menyelesaikan masalah itu, jadi mungkin layak untuk dilihat.
anaximander
3

@ anaximander jawaban cukup bagus, saya pikir saya akan mengomentari bagian pertanyaan Anda ini:

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.

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.

Daniel B
sumber
Terima kasih atas jawaban anda. Saya tahu saya dapat memiliki banyak node output seperti yang saya inginkan, tetapi saya khawatir bahwa karena sifat backpropogation dari algoritma kesalahan (menyesuaikan semua bobot menuju hasil yang diinginkan) bahwa mempelajari satu klasifikasi akan menghapus yang lain.
asteri
1

Jawaban singkat dan tidak terlalu kaku: ya setiap NN dapat memberikan info lebih dari sekadar yes, atau no. 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:

    0..threshold 
    threshold..1

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