เมื่อความแตกต่างอัตโนมัติราคาถูก?


12

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

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

อะไรคือลักษณะของโปรแกรมต้นฉบับที่สามารถนำไปใช้ประโยชน์เพื่อเพิ่มความเร็วในการคำนวณ?

เทคนิควิศวกรรมซอฟต์แวร์ใดที่สามารถนำมาใช้เพื่อเพิ่มความเร็วในการคำนวณ


1
แน่นอนว่าเราต้องการใช้คุณสมบัติพิเศษของอนุพันธ์ของฟังก์ชันเช่นฟังก์ชันเลขชี้กำลังและฟังก์ชันตรีโกณมิติ มีนิพจน์ย่อยทั่วไปที่อาจเกิดขึ้นจำนวนมากที่นั่น
JM

คุณกำลังถามเกี่ยวกับโหมดย้อนกลับหรือโหมดส่งต่อ?
Jed Brown

ความเข้าใจ (จำกัด ) ของฉันคือทั้งโหมดเดินหน้าและถอยหลังมีค่าใช้จ่ายใกล้เคียงกัน
MRocklin

คำตอบ:


6

ความเข้าใจที่ จำกัด ของฉันเกี่ยวกับการโฆษณาสอดคล้องกับสิ่งที่แมตต์พูด เพื่อให้การคำนวณอนุพันธ์เร็วขึ้นโครงสร้างของกราฟนิพจน์จะต้องใช้ประโยชน์จาก sparsity และความขาดแคลนในชุดฝึกอบรมของ Jacobian (ดูบทความนี้โดย Griewank เพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้น) เทคนิคการวิศวกรรมซอฟต์แวร์น่าจะอยู่ในโค้ดโฆษณาเพื่อปรับโครงสร้างกราฟนิพจน์เพื่อใช้ประโยชน์จากคุณสมบัติเหล่านี้ในชุดฝึกอบรมของจาโคเบียน การรู้วิธีที่โค้ดโฆษณาสร้างกราฟนิพจน์จากโค้ดที่คุณกำลังเขียนจะช่วยให้คุณเข้าใจวิธีการเขียนโค้ดที่ต้องใช้การคำนวณน้อยลง รหัสโฆษณาที่ดีใด ๆ ควรใช้ประโยชน์จากอินทิลิตี้ที่มีคำสั่งย่อยทั่วไปอยู่แล้ว แต่รหัสโฆษณาที่ดีนั้นยากที่จะเขียน

การอ้างอิงมาตรฐานในสาขานี้คือการประเมินอนุพันธ์: หลักการและเทคนิคการสร้างความแตกต่างของอัลกอริทึมรุ่นที่สองโดย Andreas Griewank และ Andrea Walther และควรให้ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการลดจำนวนการคำนวณที่จำเป็นในการประเมินอนุพันธ์ของโปรแกรม


3

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

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