ฉันเพิ่งเริ่มต้นใช้งานโครงข่ายประสาทเทียมและใช้ Synaptic เพื่อเริ่มต้น (ฉันรู้ว่าโครงข่ายประสาทเทียมใน JavaScript หายใจไม่ออก!)
นี่คือโค้ดตัวอย่าง ที่ให้ไว้ในส่วนนี้ สำหรับการสร้างโครงข่ายประสาทเทียมสำหรับการเรียนรู้ฟังก์ชัน 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
ฉันกำลังทดลองเพิ่มเลเยอร์และดูว่าเกิดอะไรขึ้น การเพิ่มเลเยอร์ที่ซ่อนอยู่อีกหนึ่งเลเยอร์ไม่มีผลมากนัก แต่การเพิ่ม 2 เลเยอร์จะทำให้เอาต์พุตเหมือนกันโดยไม่คำนึงถึงอินพุต
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
ทำไมสิ่งนี้ถึงเกิดขึ้น? นี่เป็นเพียงเพราะเครือข่ายที่ซับซ้อนมากขึ้นต้องการการฝึกอบรมที่มากขึ้น หรือเป็นเพราะเครือข่ายประเภทนี้ไม่เหมาะกับปัญหาประเภทนี้โดยเนื้อแท้?