การไล่ระดับสีของโครงข่ายประสาทชั้นเดียวนั้นมีอินพุตเป็นตัวดำเนินการในกฎลูกโซ่คืออะไร


9

ปัญหาคือ:

สืบทอดการไล่ระดับสีสำหรับเลเยอร์อินพุตสำหรับเน็ตเวิร์กโครงข่ายประสาทชั้นเดียวที่ซ่อนอยู่โดยใช้ sigmoid สำหรับอินพุต -> ซ่อน, ซอฟต์แม็กซ์สำหรับซ่อน -> เอาต์พุต, ด้วยการสูญเสียเอนโทรปี

ฉันสามารถผ่านมาส่วนใหญ่โดยใช้กฎลูกโซ่ แต่ฉันไม่แน่ใจเกี่ยวกับวิธี "โซ่" พวกเขาจริง ๆ กัน

กำหนดสัญลักษณ์บางอย่าง

r=xW1+b1

h=σ(r) , σเป็นฟังก์ชัน sigmoid

θ=hW2+b2 ,

y^=S(θ) , Sคือฟังก์ชัน softmax

J(y^)=∑iylog⁡y^i , yเป็นป้ายกำกับของเวกเตอร์แบบหนึ่งร้อน

จากนั้นตามกฎลูกโซ่

∂J∂x=∂J∂θ⋅∂θ∂h⋅∂h∂r⋅∂r∂x

การไล่ระดับสีส่วนบุคคลคือ:

∂J∂θ=(y^−y)
∂θ∂h=∂∂h[hW2+b2]=W2T
∂h∂r=h⋅(1−h)
∂r∂x=∂∂x[xW1+b1]=W1T

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

∂J∂x=(y^−y)∗W2T⋅[h⋅(1−h)]∗W1T

โดยที่คือการคูณเวกเตอร์องค์ประกอบที่ชาญฉลาดและคือเมทริกซ์ทวีคูณ การรวมกันของการดำเนินการนี้เป็นวิธีเดียวที่ฉันจะดูเหมือนจะร่วมกันสตริงเหล่านี้จะได้รับมิติเวกเตอร์ซึ่งฉันรู้ว่าจะต้องมี⋅∗1⋅Dx∂J∂x

คำถามของฉันคือ: อะไรคือวิธีที่หลักการสำหรับฉันที่จะคิดออกว่าผู้ประกอบการที่จะใช้? ฉันสับสนโดยเฉพาะความจำเป็นในการองค์ประกอบหนึ่งที่ชาญฉลาดระหว่างและHW2Th

ขอบคุณ!


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

คุณเป็นอย่างไรบ้าง dervie dJ / deta
— raaj

คำตอบ:


4

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

การดำเนินงานที่เกิดขึ้นจริงไม่ได้เป็นคูณองค์ประกอบที่ชาญฉลาด แต่แทนที่จะคูณเมทริกซ์มาตรฐานของการไล่ระดับสีที่มีจาโคเบียน , เสมอ

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

ในวิชาคณิตศาสตร์เรามีความไม่เชิงเส้น , การสูญเสียและการป้อนข้อมูลไปยังความไม่เชิงเส้น (นี่อาจเป็นเทนเซอร์ใด ๆ ) เอาต์พุตของความไม่เชิงเส้นมีขนาดเดียวกัน --- ตามที่ @Logan บอกว่าฟังก์ชั่นการเปิดใช้งานถูกกำหนดเป็นองค์ประกอบที่ชาญฉลาดsLx∈Rn×1s(x)∈Rn×1

เราต้องการ

∇xL=(∂s(x)∂x)T∇s(x)L

ที่ไหนเป็นจาโคเบียนของsการขยาย Jacobian นี้เราจะได้รับ ∂s(x)∂xs

[∂s(x1)∂x1…∂s(x1)∂xn⋮⋱⋮∂s(xn)x1…∂s(xn)∂xn]

เราเห็นว่ามันมีอยู่ทุกหนทุกแห่งที่เป็นศูนย์ยกเว้นเส้นทแยงมุม เราสามารถสร้างเวกเตอร์ขององค์ประกอบในแนวทแยงทั้งหมดของ

Diag(∂s(x)∂x)

แล้วใช้ตัวดำเนินการองค์ประกอบที่ชาญฉลาด

∇xL=(∂s(x)∂x)T∇s(x)L=Diag(∂s(x)∂x)∘∇s(x)L

0

เมื่อใดก็ตามที่สัดส่วนกลับไปที่ฟังก์ชั่นการเปิดใช้งานการดำเนินการจะกลายเป็นองค์ประกอบที่ชาญฉลาด โดยเฉพาะอย่างยิ่งการใช้ตัวอย่างของคุณเป็นอนุพันธ์ backpropagation และเป็นอนุพันธ์การเปิดใช้งานและผลิตภัณฑ์ของพวกเขาเป็นผลิตภัณฑ์ตามองค์ประกอบa' เนื่องจากฟังก์ชั่นการเปิดใช้งานนั้นถูกกำหนดให้เป็นการทำงานแบบองค์ประกอบที่ฉลาดในเครือข่ายประสาทδ2=(y^−y)W2Ta′=h∘(1−h)δ2∘a′

ดูสไลด์บรรยาย cs224d หน้า 30 มันอาจช่วยได้เช่นกัน

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