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