เพื่อความสนุกฉันพยายามพัฒนาโครงข่ายประสาทเทียม
ตอนนี้สำหรับ backpropagation ฉันเห็นสองเทคนิค
ตัวแรกใช้ที่นี่และที่อื่น ๆ อีกมากมาย
มันคืออะไร:
- มันคำนวณข้อผิดพลาดสำหรับแต่ละเซลล์ประสาทออก
- มัน backpropates มันลงในเครือข่าย (การคำนวณข้อผิดพลาดสำหรับแต่ละเซลล์ประสาทภายใน)
- มันอัปเดตน้ำหนักด้วยสูตร: (ซึ่งการเปลี่ยนแปลงของน้ำหนัก, ความเร็วในการเรียนรู้, ข้อผิดพลาดของเซลล์ประสาทที่รับอินพุตจากไซแนปส์และเป็นเอาต์พุตที่ส่งในไซแนปส์)
- มันซ้ำสำหรับแต่ละรายการของชุดข้อมูลหลาย ๆ ครั้งตามที่ต้องการ
อย่างไรก็ตามเครือข่ายประสาทที่เสนอในบทช่วยสอนนี้ (มีอยู่ใน GitHub ด้วย) ใช้เทคนิคที่แตกต่าง:
- มันใช้ฟังก์ชั่นข้อผิดพลาด (วิธีอื่นไม่มีฟังก์ชั่นข้อผิดพลาด แต่ไม่ได้ใช้สำหรับการฝึกอบรม)
- มันมีฟังก์ชั่นอื่นที่สามารถคำนวณข้อผิดพลาดสุดท้ายที่เริ่มต้นจากน้ำหนัก
- มันลดฟังก์ชั่นนั้น (ผ่านทางลาดลง)
ตอนนี้ควรใช้วิธีใด
ฉันคิดว่าอันแรกเป็นอันที่ใช้บ่อยที่สุด (เพราะฉันเห็นตัวอย่างที่แตกต่างจากการใช้มัน) แต่มันก็ใช้ได้ดีเช่นกัน?
โดยเฉพาะอย่างยิ่งฉันไม่รู้:
- มันขึ้นอยู่กับค่าต่ำสุดในท้องถิ่น (เนื่องจากไม่ได้ใช้ฟังก์ชั่นสมการกำลังสอง)?
- เนื่องจากความแปรผันของน้ำหนักแต่ละตัวนั้นได้รับอิทธิพลจากค่าเอาท์พุทของเซลล์ประสาทเอาท์พุทของมันไม่ใช่รายการของชุดข้อมูลที่เพิ่งเกิดขึ้นเพื่อสร้างค่าที่สูงขึ้นในเซลล์ประสาท
ตอนนี้ฉันชอบเทคนิคแรกเพราะฉันคิดว่ามันง่ายกว่าในการนำไปใช้และคิดง่ายกว่า
แม้ว่าหากมีปัญหาที่ฉันกล่าวถึง (ซึ่งฉันหวังว่าจะไม่) มีเหตุผลจริงที่จะใช้มันมากกว่าวิธีที่สอง?