ฉันพยายามที่จะเข้าใจวิธีการทำงานของ backpropagation สำหรับเลเยอร์เอาต์พุต softmax / cross-entropy
ฟังก์ชันข้อผิดพลาดข้ามเอนโทรปีคือ
ด้วยและเป็นเป้าหมายและเอาต์พุตที่เซลล์ประสาทตามลำดับ ผลรวมอยู่เหนือเซลล์ประสาทแต่ละเซลล์ในชั้นเอาต์พุต นั้นเป็นผลมาจากฟังก์ชั่น softmax:
อีกครั้งผลรวมจะอยู่เหนือแต่ละเซลล์ประสาทในเลเยอร์เอาต์พุตและคืออินพุตไปยังเซลล์ประสาท :
นั่นคือผลรวมกว่าเซลล์ทั้งหมดในชั้นก่อนหน้านี้กับการส่งออกของพวกเขาที่สอดคล้องกันและน้ำหนักต่อเซลล์ประสาทบวกอคติข
ตอนนี้เพื่ออัปเดตน้ำหนักที่เชื่อมต่อเซลล์ประสาทในชั้นเลเยอร์เอาท์พุทกับเซลล์ประสาทในชั้นก่อนหน้าฉันต้องคำนวณอนุพันธ์บางส่วนของฟังก์ชันข้อผิดพลาดโดยใช้กฎลูกโซ่:
กับเป็น input เพื่อเซลล์ประสาทญ
เทอมสุดท้ายค่อนข้างเรียบง่าย เนื่องจากมีน้ำหนักเพียงหนึ่งเดียวระหว่างและอนุพันธ์คือ:
เทอมแรกคือการสืบทอดของฟังก์ชันข้อผิดพลาดเกี่ยวกับเอาต์พุต :
ระยะกลางคือการได้มาของฟังก์ชั่น softmax ที่เกี่ยวกับอินพุตของมันนั้นยากขึ้น:
สมมติว่าเรามีเซลล์ประสาทเอาต์พุตสามเซลล์ที่สอดคล้องกับคลาสจากนั้นคือ:o b = s o f t m a x ( b )
และการสืบทอดโดยใช้กฎความฉลาดทาง:
=softmax(b)-softmax2(b)=ob-o 2 b =ob(1-ob)∂oj
นำมารวมกันฉันได้
ซึ่งหมายความว่าหากเป้าหมายของคลาสนี้คือดังนั้นฉันจะไม่อัปเดตตุ้มน้ำหนักสำหรับสิ่งนี้ นั่นไม่ได้เสียงที่ถูกต้อง
การตรวจสอบเกี่ยวกับเรื่องนี้ผมพบว่าคนที่มีสองสายพันธุ์สำหรับรากศัพท์ softmax หนึ่งที่และอื่น ๆ สำหรับเช่นที่นี่หรือที่นี่ฉัน≠ j
แต่ฉันไม่สามารถเข้าใจได้จากเรื่องนี้ นอกจากนี้ฉันไม่แน่ใจด้วยซ้ำว่านี่เป็นสาเหตุของข้อผิดพลาดของฉันซึ่งเป็นสาเหตุที่ฉันโพสต์การคำนวณทั้งหมดของฉัน ฉันหวังว่าบางคนสามารถชี้แจงให้ฉันทราบว่าฉันกำลังพลาดบางสิ่งบางอย่างหรือผิดไป