Saya baru saja memulai dengan jaringan saraf dan menggunakan Synaptic untuk memulai (saya tahu, saya tahu, jaringan saraf dalam JavaScript , terkesiap!).
Ini adalah contoh kode yang diberikan di bagian ini untuk membuat jaringan saraf guna mempelajari fungsi XOR:
var myPerceptron = new Architect.Perceptron(2, 3, 1);
var myTrainer = new Trainer(myPerceptron);
myTrainer.XOR();
console.log(myPerceptron.activate([0, 0])); // 0.0268581547421616
console.log(myPerceptron.activate([1, 0])); // 0.9829673642853368
console.log(myPerceptron.activate([0, 1])); // 0.9831714267395621
console.log(myPerceptron.activate([1, 1])); // 0.02128894618097928
Saya bereksperimen dengan menambahkan lebih banyak lapisan dan melihat apa yang terjadi. Menambahkan satu lapisan tersembunyi tambahan tidak banyak berpengaruh, tetapi menambahkan 2 lapisan membuat keluarannya identik, apa pun masukannya.
var myPerceptron = new Architect.Perceptron(2, 3, 3, 3, 1);
var myTrainer = new Trainer(myPerceptron);
myTrainer.XOR();
console.log(myPerceptron.activate([0, 0])); // 0.521076904986927
console.log(myPerceptron.activate([1, 0])); // 0.5210769149857782
console.log(myPerceptron.activate([0, 1])); // 0.5210769118775331
console.log(myPerceptron.activate([1, 1])); // 0.5210769209325651
Mengapa ini terjadi? Apakah ini hanya karena jaringan yang lebih kompleks memerlukan lebih banyak pelatihan, atau karena jaringan semacam ini pada dasarnya tidak cocok untuk masalah seperti ini?