Ini adalah fakta yang diketahui bahwa jaringan 1-layer tidak dapat memprediksi fungsi xor, karena tidak dapat dipisahkan secara linear. Saya mencoba membuat jaringan 2-layer, menggunakan fungsi sigmoid logistik dan backprop, untuk memprediksi xor. Jaringan saya memiliki 2 neuron (dan satu bias) pada lapisan input, 2 neuron dan 1 bias di lapisan tersembunyi, dan 1 neuron output. Yang mengejutkan saya, ini tidak akan bertemu. jika saya menambahkan layer baru, maka saya memiliki jaringan 3-layer dengan input (2 +1), hidden1 (2 +1), hidden2 (2 +1), dan output, itu berfungsi. Juga, jika saya menyimpan jaringan 2-layer, tapi saya meningkatkan ukuran layer tersembunyi menjadi 4 neuron + 1 bias, itu juga menyatu. Apakah ada alasan mengapa jaringan 2-layer dengan 3 atau kurang neuron tersembunyi tidak dapat memodelkan fungsi xor?
sumber
Jawaban:
Ya, ada alasannya. Ini ada hubungannya dengan bagaimana Anda menginisialisasi bobot Anda.
Ada 16 minimum lokal yang memiliki probabilitas konvergen tertinggi antara 0,5 - 1.
Berikut ini adalah makalah yang menganalisis masalah xor.
sumber
Jaringan dengan satu lapisan tersembunyi yang mengandung dua neuron harus cukup untuk memisahkan masalah XOR. Neuron pertama bertindak sebagai gerbang OR dan yang kedua sebagai gerbang NOT AND. Tambahkan kedua neuron dan jika mereka melewati treshold itu positif. Anda bisa menggunakan neuron keputusan linier untuk ini dengan menyesuaikan bias untuk treshold. Input dari gerbang NOT AND harus negatif untuk input 0/1. Gambaran ini harus membuatnya lebih jelas, nilai-nilai pada koneksi adalah bobot, nilai-nilai dalam neuron adalah bias, fungsi keputusan bertindak sebagai keputusan 0/1 (atau hanya fungsi tanda bekerja dalam kasus ini juga).
Gambar berkat "blog Abhranil"
sumber
Jika Anda menggunakan penurunan gradien dasar (tanpa optimasi lainnya, seperti momentum), dan jaringan minimal 2 input, 2 neuron tersembunyi, 1 neuron output, maka sangat mungkin untuk melatihnya untuk mempelajari XOR, tetapi bisa juga cukup rumit dan tidak bisa diandalkan.
Anda mungkin perlu menyesuaikan tingkat belajar. Kesalahan yang paling umum adalah mengaturnya terlalu tinggi, sehingga jaringan akan berosilasi atau menyimpang alih-alih belajar.
Diperlukan waktu yang sangat besar untuk melatih jaringan minimal menggunakan keturunan atau gradien online. Mungkin beberapa ribu zaman akan diperlukan.
Dengan jumlah bobot yang rendah (hanya 6), terkadang inisialisasi acak dapat membuat kombinasi yang mudah macet. Jadi, Anda mungkin perlu mencoba, memeriksa hasil, lalu memulai kembali. Saya sarankan Anda menggunakan generator nomor acak unggulan untuk inisialisasi, dan menyesuaikan nilai benih jika nilai kesalahan macet dan tidak membaik.
sumber