मैं पाइथन आंकड़ों के पैकेज के लिए automatic differentiation को लागू करने का प्रयास कर रहा हूं (समस्या फॉर्मूलेशन ऑप्टिमाइज़ेशन समस्या फॉर्मूलेशन के समान है)।दूसरे व्युत्पन्न के लिए स्वत: भिन्नता कार्यान्वित करना: कम्प्यूटेशनल ग्राफ को पार करने के लिए एल्गोरिदम?
कम्प्यूटेशनल ग्राफ ऑपरेटर ओवरलोडिंग और योग(), एक्सप() इत्यादि जैसे संचालन के लिए फैक्ट्री फ़ंक्शंस का उपयोग करके उत्पन्न होता है। मैंने रिवर्स संचय का उपयोग करके ढाल के लिए स्वत: भिन्नता लागू की है। हालांकि, मुझे दूसरे व्युत्पन्न (हेसियन) के लिए स्वचालित भिन्नता लागू करना बहुत मुश्किल है। मुझे पता है कि व्यक्तिगत दूसरी आंशिक ढाल गणना कैसे करें, लेकिन मुझे ग्राफ को पार करने और संचय करने के लिए एक बुद्धिमान तरीके से आने में परेशानी हुई है। क्या किसी को अच्छे लेखों के बारे में पता है जो दूसरे व्युत्पन्न या मुक्त स्रोत पुस्तकालयों के लिए स्वत: भिन्नता के लिए एल्गोरिदम देते हैं जो कि मैं इसे सीखने की कोशिश कर सकता हूं?
"ऑफ-विषय" मेरे पैर (अकेले को टिप्पणी करने वाले जिसने इस तरह मतदान किया) - यह सब प्रोग्रामिंग के बारे में है, और क्या "कम्प्यूटेशनल को पार कर सकता है ग्राफ "के बारे में हो ?! (हालांकि मुझे समझ में नहीं आ रहा है कि क्यों @ जॉन अपनी पहली व्युत्पन्न कार्यक्षमता को दो बार लागू करके दूसरा व्युत्पन्न नहीं कर सकता है, ऐसा इसलिए हो सकता है क्योंकि मुझे नहीं पता कि "हेसियन" क्या है [[जर्मन-जन्मी सैनिक को छोड़कर 1776 में ब्रितियों के लिए लड़ रहे हैं! -)]])। –
अपने प्रश्न का उत्तर देने के लिए, चर के बीच बातचीत के कारण दो बार अंतर करना गैर-तुच्छ है। यदि आपका कार्य एक स्केलर है (एन इनपुट के साथ), पहला व्युत्पन्न एक वेक्टर लंबाई एन है, दूसरा व्युत्पन्न एक एन^2 मैट्रिक्स है जो तीसरा व्युत्पन्न एन^3 आदि है। पहले व्युत्पन्न के लिए, आपको 1 यात्रा करना है दूसरे व्युत्पन्न के लिए आपको स्वतंत्र आश्रित चर से प्रति शब्द, दो अलग-अलग पथों की यात्रा करना है। मैं/थोड़ा चिंतित था कि यह विषय बंद था, लेकिन मुझे नहीं पता कि इस सवाल के लिए एक बेहतर मंच क्या है; यह निश्चित रूप से एक गणित अतिप्रवाह चीज नहीं है। –
स्वचालित भेदभाव बिल्कुल जरूरी है?हर बार जब मैंने इसे माना है, मैंने पाया है कि हाथ से एल्गोरिदम को मैन्युअल रूप से अलग करना अधिक सरल होता है, लेकिन फिर, मेरे हेसियन आमतौर पर काफी सरल होते हैं (जैसे विकर्ण, या विश्लेषणात्मक सूत्र द्वारा गणना योग्य)। –