บทนำ
ขั้นตอนแรก
ฉันเขียนเครือข่ายนิวรัล backpropegating และเพื่อทดสอบฉันตัดสินใจที่จะทำแผนที่ XOR
เป็นเครือข่าย 2-2-1 (พร้อมฟังก์ชั่นเปิดใช้ tanh)
X1 M1
O1
X2 M2
B1 B2
เพื่อจุดประสงค์ในการทดสอบฉันตั้งค่าเซลล์ประสาทกลางด้านบน (M1) ด้วยตนเองให้เป็นประตูเกทและเซลล์ประสาทส่วนล่าง (M2) ให้เป็นเกทหรือประตู
ตอนนี้ฉันยังตั้งค่าการเชื่อมต่อด้วยตนเอง M1-O1 เป็น -.5, M2-O1 เป็น 1 และ B2 เป็น -.75
ดังนั้นถ้า M1 = 1 และ M2 = 1 ผลรวมคือ (-0.5 +1 -0.75 = -.25) tanh (0.25) = -0.24
ถ้า M1 = -1 และ M2 = 1 ผลรวมคือ (-0.5) * (- 1) +1 -0.75 = .75) tanh (0.75) = 0.63
ถ้า M1 = -1 และ M2 = -1 ผลรวมคือ (-0.5) * (- 1) -1 -0.75 = -1.25) tanh (1.25) = -0.8
นี่เป็นผลลัพธ์ที่ค่อนข้างดีสำหรับ "การคำนวณซ้ำครั้งแรก"
ขั้นตอนที่สอง
จากนั้นฉันก็ทำการปรับเปลี่ยนน้ำหนักเหล่านี้อีกเล็กน้อยจากนั้นทำการฝึกอบรมพวกเขาโดยใช้อัลกอริธึมการกระจายข้อผิดพลาด ในขั้นตอนนี้ฉันปล่อยให้น้ำหนักระหว่างอินพุตและเซลล์ประสาทกลางไม่เปลี่ยนแปลงและเพียงแค่ปรับเปลี่ยนน้ำหนักระหว่างตัวกลาง (และอคติ) และเอาท์พุท
สำหรับการทดสอบฉันตั้งค่าน้ำหนักให้เป็นและ. 0.54 .3 (ตามลำดับสำหรับ M1, M2 และไบอัส)
อย่างไรก็ตามที่นี่ฉันเริ่มมีปัญหา
คำถามของฉัน
ฉันตั้งค่าอัตราการเรียนรู้ของฉันเป็น. 2 และปล่อยให้โปรแกรมวนซ้ำผ่านข้อมูลการฝึกอบรม (ABA ^ B) สำหรับการวนซ้ำ 10,000 ครั้งขึ้นไป
ส่วนใหญ่แล้วน้ำหนักจะมาบรรจบกันเพื่อผลลัพธ์ที่ดี อย่างไรก็ตามในบางครั้งน้ำหนักเหล่านั้นมาบรรจบกับ (พูด) 1.5, 5.7 และ .9 ซึ่งส่งผลให้มีการส่งออก +1 (แม้) ถึงอินพุตของ {1, 1} (เมื่อผลลัพธ์ควรเป็น -1)
เป็นไปได้ไหมสำหรับ ANN ที่ค่อนข้างง่ายซึ่งมีทางออกที่จะไม่มาบรรจบกันหรือมีข้อบกพร่องในการติดตั้งของฉัน?