เครือข่ายประสาทต้องมาบรรจบกันเสมอหรือไม่


16

บทนำ

ขั้นตอนแรก

ฉันเขียนเครือข่ายนิวรัล 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 ที่ค่อนข้างง่ายซึ่งมีทางออกที่จะไม่มาบรรจบกันหรือมีข้อบกพร่องในการติดตั้งของฉัน?

คำตอบ:


13

(ฉันถือว่า "การเผยแพร่ข้อผิดพลาด" คุณหมายถึงสิ่งที่ฉันเรียกว่า "ข้อผิดพลาดกลับ - การแพร่กระจาย")

บนหน้า 231 ของ Neural Networks (โดย Haykin) เขากล่าวว่าการขยายพันธุ์กลับมาบรรจบกันเสมอแม้ว่าอัตราจะเป็น (ในคำพูดของเขา) "ช้าเลือดตาแทบกระเด็น"

ฉันคิดว่าสิ่งที่คุณถามถึงไม่ใช่ว่าอัลกอริทึมจะมาบรรจบกันหรือไม่ แต่มันจะรวมเข้ากับคำตอบที่เหมาะสมหรือไม่ และน่าเสียดายที่มันจะไม่ แม้ในกรณีง่าย ๆ เช่นเดียวกับคุณก็เป็นไปได้ทั้งหมดว่ามี minima ในพื้นที่ซึ่งไม่ใช่ minima ระดับโลก

การจัดการกับ extrema ท้องถิ่นเป็นหัวข้อที่สำคัญอย่างยิ่งในการปรับให้เหมาะสมและคุณสามารถค้นหาคำแนะนำมากมายเกี่ยวกับวิธีจัดการกับมัน หนึ่งในสิ่งที่พบบ่อยที่สุดคือสิ่งที่ดูเหมือนว่าคุณกำลังทำอยู่: สุ่มเริ่มใหม่ (เช่นเรียกใช้อัลกอริทึมหลายครั้งโดยเริ่มจากตำแหน่งสุ่ม)

หากต้องการทราบว่ามีข้อผิดพลาดในรหัสของคุณหรือไม่ฉันจะพิมพ์ข้อความแสดงข้อผิดพลาดและตรวจสอบว่ามีการลดลงทุกครั้งที่ทำซ้ำ ถ้าเป็นเช่นนั้นคุณอาจจะกดปุ่มระดับต่ำสุดในท้องถิ่น


น้ำหนักทั้งหมดเพิ่มขึ้น (น้ำหนักต่อเซลล์ประสาท OR เพิ่มขึ้นเร็วขึ้น) ซึ่งลดข้อผิดพลาดเมื่ออินพุตคือ {1,0}, {0,1}, {0,0} แต่เพิ่มข้อผิดพลาดให้มากที่สุดเมื่อ {1,1} นี่เป็นปัญหาของการเรียนรู้ออนไลน์ผ่านการเรียนรู้แบบแบตช์หรือไม่?

@Shmuel: ทั้งออนไลน์และแบทช์กำลังจะไปในทิศทางของการไล่ระดับสี หากการไล่ระดับสีนั้นชี้ไปในทิศทางที่ผิดทั้งคู่จะไปในทิศทางที่ผิด หน้า Wikipedia บนHill Climbingมีวิธีการแก้ไขหากคุณสนใจ
Xodarap

6

หากคุณได้แก้ไขน้ำหนักระหว่างหน่วยอินพุตและหน่วยที่ซ่อนอยู่และแก้ไขเฉพาะค่าน้ำหนักขาออกที่ซ่อนอยู่ในระหว่างการฝึกอบรมจะไม่มีการกำหนดค่าท้องถิ่น ด้วยอินพุตคงที่กับน้ำหนักที่ซ่อนอยู่ปัญหาการปรับให้เหมาะสมที่คุณกำลังแก้ไขคล้ายกับการถดถอยโลจิสติก แต่ใช้แทนห์แทนฟังก์ชัน sigmoid ไม่ว่าปัญหาจะนูนออกมาและควรมีเพียงหนึ่งเดียวเท่านั้น

เนื่องจาก minima ท้องถิ่นไม่ก่อให้เกิดปัญหาของคุณฉันขอแนะนำให้ประมาณตัวเลขอนุพันธ์ของคุณแล้วเปรียบเทียบสิ่งเหล่านี้กับค่าที่คุณคำนวณ หากคุณไม่แน่ใจว่าจะทำอย่างไรกวดวิชา Standford ULFDLมีภาพรวมที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.