5

मैं पिछले 3 महीनों से एक अस्पष्ट तर्क एसडीके पर काम कर रहा हूं, और यह उस बिंदु पर आया जहां मुझे इंजन को अत्यधिक अनुकूलित करना शुरू करना है।जटिल प्रणाली के पतन और स्थिरीकरण की भविष्यवाणी करने के लिए मशीन सीखने का उपयोग करना?

अधिकांश "उपयोगिता" या "ज़रूरतों" आधारित एआई सिस्टम के साथ, मेरा कोड दुनिया भर के विभिन्न विज्ञापनों को रखकर काम करता है, विभिन्न एजेंटों के गुणों के मुकाबले विज्ञापनों की तुलना करके विज्ञापन और "प्रति एजेंट" आधार] तदनुसार।

यह बदले में, अधिकांश एकल सिमुलेशन के लिए अत्यधिक दोहराव वाले ग्राफ उत्पन्न करता है। हालांकि, अगर विभिन्न एजेंटों को ध्यान में रखा जाता है, तो सिस्टम मेरे कंप्यूटर के अनुकरण के लिए अत्यधिक जटिल और भारी कठिन हो जाता है (चूंकि एजेंट एक दूसरे के बीच विज्ञापन प्रसारित कर सकते हैं, एनपी एल्गोरिदम बनाते हैं)।

नीचे: सिस्टम एक भी एजेंट पर 3 विशेषताओं के लिए गणना की repetitiveness के उदाहरण:

शीर्ष:

exp-system

: प्रणाली 3 गुण और 8 एजेंटों के खिलाफ गणना का उदाहरण

(शुरुआत में संकुचित करें, और शीघ्र ही बाद में वसूली। यह सबसे अच्छा उदाहरण है जो मैं उत्पन्न कर सकता हूं जो एक छवि पर फिट होगा, क्योंकि रिकवरी आमतौर पर बहुत धीमी होती है)

जैसा कि आप दोनों उदाहरणों से देख सकते हैं, भले ही एजेंट की संख्या बढ़ जाती है, सिस्टम अभी भी अत्यधिक दोहराया जा सकता है, और इसलिए मूल्यवान गणना समय बर्बाद कर रहा है।

मैं प्रोग्राम को फिर से आर्किटेक्चर करने की कोशिश कर रहा हूं ताकि उच्च दोहराव की अवधि के दौरान, अद्यतन फ़ंक्शन केवल पंक्ति ग्राफ को दोहराता है।

हालांकि मेरे फजी लॉजिक कोड के लिए यह निश्चित रूप से संभव है कि सिस्टम के पतन और स्थिरीकरण की गणना करने के लिए भविष्यवाणी की जाए, यह मेरे सीपीयू पर अत्यधिक कर लगा रहा है। मैं सोच रहा हूं कि मशीन सीखने के लिए यह सबसे अच्छा मार्ग होगा, क्योंकि ऐसा लगता है कि एक बार सिस्टम के प्रारंभिक सेट अप होने के बाद, अस्थिरता की अवधि हमेशा एक ही लंबाई के बारे में प्रतीत होती है (हालांकि वे "अर्ध" यादृच्छिक समय। मैं अर्द्ध कहता हूं, क्योंकि आमतौर पर ग्राफ पर दिखाए गए विशिष्ट पैटर्न से आसानी से ध्यान देने योग्य होता है, हालांकि, अस्थिरता की लंबाई की तरह, ये पैटर्न सेट अप से सेट अप में भिन्न होते हैं)।

जाहिर है, अगर अस्थिर अवधि सभी एक ही समय की लंबाई, एक बार जब मुझे पता चले कि सिस्टम कितना आसान हो जाता है जब यह संतुलन तक पहुंच जाएगा।

इस प्रणाली के बारे में एक तरफ ध्यान दें, पुनरावृत्ति की अवधि के दौरान सभी विन्यास 100% स्थिर नहीं हैं।

यह बहुत स्पष्ट रूप से ग्राफ में दिखाया गया है:

exception

तो मशीन सीखने समाधान "छद्म" गिर, और पूर्ण गिर के बीच अंतर करने के लिए एक रास्ता आवश्यकता होगी।

एमएल समाधान का उपयोग करने में कितना व्यवहार्य होगा? क्या कोई भी एल्गोरिदम, या कार्यान्वयन दृष्टिकोण की सिफारिश कर सकता है जो सबसे अच्छा काम करेगा?

उपलब्ध संसाधनों के लिए, स्कोरिंग कोड समांतर आर्किटेक्चर (एजेंटों के बीच घनिष्ठ अंतःक्रियाओं के कारण) पर अच्छी तरह से मैप नहीं करता है, इसलिए यदि मुझे इन गणनाओं को करने के लिए एक या दो CPU थ्रेड को समर्पित करने की आवश्यकता है, तो हो । (मैं इसके लिए एक जीपीयू का उपयोग नहीं करना चाहूंगा, क्योंकि जीपीयू को मेरे कार्यक्रम के एक असंबंधित गैर-एआई भाग के साथ कर लगाया जा रहा है)।

हालांकि यह सबसे अधिक संभावना एक अंतर, प्रणाली है कि कोड पर रैम 18GB निष्पादन के दौरान छोड़ दिया है चल रहा है नहीं होगा। इसलिए, संभावित रूप से अत्यधिक डेटा रिलायंस समाधान का उपयोग करना निश्चित रूप से व्यवहार्य होगा।

+0

तो प्रयोग करने के बजाय, आप इसे इस अनुमान के साथ बदलना चाहते हैं कि यह कैसा दिख सकता है? – ziggystar

+0

हाँ, यह वही है जो मैं करना चाहता हूं। –

+0

यह एक बुरा विचार की तरह लगता है। यदि आप किसी भी तरह से यह साबित कर सकते हैं कि आपका सिस्टम अपने आंतरिक काम के ज्ञान से आवधिक है जो ठीक रहेगा। लेकिन कुछ आउटपुट को देखते हुए और अनुमान लगाते हैं कि शायद इस तरह से जारी रहेगा इस तरह से त्रुटिपूर्ण प्रतीत होता है। – ziggystar

उत्तर

2

हां, मैं इस विषय के लिए स्टैक एक्सचेंज पर बेहतर स्थान होने पर भी अनिश्चित हूं, लेकिन मैं इसे एक शॉट दूंगा क्योंकि मेरे पास इस क्षेत्र में कुछ अनुभव है।

इस बार नियंत्रण प्रणाली के इंजीनियरिंग में सामना करना पड़ा एक समस्या है। इसे अक्सर ब्लैक बॉक्स टाइम-सीरीज मॉडलिंग समस्या के रूप में जाना जाता है। यह इस अर्थ में एक "ब्लैक बॉक्स" है कि आप नहीं जानते कि वास्तव में क्या है। आप इसे कुछ इनपुट देते हैं और आप कुछ आउटपुट माप सकते हैं। पर्याप्त मात्रा में डेटा, पर्याप्त सरल प्रणाली और उपयुक्त मॉडलिंग तकनीक को देखते हुए, सिस्टम के व्यवहार का अनुमान लगाना अक्सर संभव होता है।

पिछले मॉडलों और/या मापों की एक निश्चित असतत संख्या लेने के लिए इस घूमने के लिए कई मॉडलिंग तकनीकें, और समय की अगली माप क्या भविष्यवाणी करने का प्रयास करने की कोशिश कर रही है। इसे अक्सर autoregressive model के रूप में जाना जाता है।

सिस्टम की जटिलता के आधार पर आप मॉडल बनाने की कोशिश कर रहे हैं, nonlinear autoregressive exogenous model बेहतर विकल्प हो सकता है। यह एक तंत्रिका नेटवर्क या radial basis function जो एक बार फिर से है कि इनपुट के रूप में समय में अतीत n माप लेता है और एक आउटपुट के रूप में अगले माप की एक भविष्यवाणी देता का रूप ले सकता है।

अपने डेटा को देखते हुए, समान तकनीकों को लागू करने, oscillatory व्यवहार के साधारण मॉडल आसानी से बनाया जा सकता है। आपके पतन या छद्म-पतन मॉडलिंग के संबंध में, मुझे लगता है कि यह संभवतः पर्याप्त जटिल मॉडल का उपयोग करके कब्जा कर लिया जा सकता है, लेकिन यह अधिक कठिन हो सकता है।

तो आइए कोशिश करें और वर्णन करें कि आप किसी प्रकार के अनुवांशिक व्यवहार के एक स्वैच्छिक मॉडल का निर्माण कैसे कर सकते हैं।

एक प्रणाली के लिए, हम एक आवृत्ति के साथ एक सरल साइन वेव, और गाऊसी शोर में जोड़ा का एक सा ले लेंगे। यह एक माप x, कुछ आवृत्ति \omega, और गाऊसी शोर \phi कुछ पर साथ नीचे के रूप में प्रतिनिधित्व किया जा सकता है समय में अलग बिंदु।

x_k = sin(\omega t_k) + \phi_k

इस का उपयोग करना, हम डेटा के कुछ सेकंड के लिए माप उत्पन्न कर सकते हैं। इसके साथ, हम फिर 2 सरणी वाले डेटासेट का निर्माण करते हैं। किसी भी समय चरण के लिए ऐतिहासिक माप G के पहले सेट सेट और दूसरा किसी भी समय चरण H पर माप युक्त है।

अगर हम wikipedia article से एक रेखीय मॉडल का उपयोग करें, autoregressive मॉडल के लिए मानकों b तो linear least squares method का उपयोग कर रेखीय प्रतीपगमन साथ पाया जा सकता है।

H = Gb

b = (G^T G)^{-1} G^T H

इस मॉडल सीधे डाटासेट के परिणामों की तुलना करना है, यह इस खिलौने समस्या के लिए सटीक परिणाम प्राप्त करने के लिए काफी आसान है। यदि भविष्य में केवल एक कदम की भविष्यवाणी की जानी चाहिए, और अगली भविष्यवाणी करने से पहले वास्तविक माप फिर से एकत्र किए जाते हैं, भविष्यवाणियों में त्रुटि जमा नहीं होती है। इसे कभी-कभी ओपन-लूप भविष्यवाणियों के रूप में जाना जाता है।

open loop predictions from AR model

एक बंद लूप भविष्यवाणी जगह है जहाँ आप केवल मॉडल एक प्रारंभिक माप दे। इसके बाद, आप अपनी भविष्यवाणियों का उपयोग बाद की भविष्यवाणियों के लिए इनपुट के रूप में करते हैं। भविष्यवाणियों में शोर, दीर्घकालिक भविष्यवाणी गलत बना सकता है। हालांकि इन दीर्घकालिक भविष्यवाणियां गलत हो सकती हैं, इसका मतलब यह नहीं है कि परिणाम समान या अच्छे नहीं होंगे। मैंने उपरोक्त खिलौना प्रणाली के साथ थोड़ा सा खेला, और मेरे बंद लूप भविष्यवाणियों ने आयाम को कम से कम समझने के लिए प्रेरित किया और अक्सर सही आवृत्ति का क्षय हो गया।

closed loop predictions from AR model

तो इस तरह समस्याएं होती हैं, आप और अधिक ऐतिहासिक नमूने आदानों के रूप में अपने मॉडल के लिए, जोड़ने के लिए इसे और अधिक प्रशिक्षण डेटा देने या एक अधिक गैर रेखीय मॉडल इस्तेमाल कर सकते हैं।

उपरोक्त खिलौना की समस्या में केवल एक मान मॉडलिंग किया जा रहा है। आपके ग्राफ में ऐसा लगता है कि एजेंटों के डेटा के कई "चैनल" हैं और वे एक-दूसरे से किसी दूसरे तरीके से बातचीत करते हैं। इस व्यवहार को मॉडल करने के लिए आप अपने चैनल में इनपुट के रूप में प्रत्येक चैनल से एन ऐतिहासिक मूल्यों को शामिल कर सकते हैं, और आउटपुट प्रत्येक चैनल की भविष्यवाणियां हो सकती हैं।

कृपया मुझे बताएं कि क्या मैं आपकी समस्या को बेहतर तरीके से हल करने के लिए इसे किसी भी तरीके से स्पष्ट कर सकता हूं। मैं खिलौना की समस्या पर इस्तेमाल किए गए मैटलैब कोड को भी साझा कर सकता हूं, साथ ही यदि रुचि है।

+0

मुझे नहीं लगता कि कोई स्पष्टीकरण आवश्यक है: डी। मार्कोव चेन का उपयोग करके ऊपर वर्णित अपनी खुद की विधि के साथ, मुझे अभी भी छद्म ध्वस्तियों से अलग होने में असमर्थ होने में असमर्थ होने की समस्या थी। मुझे पता है कि आपने कहा था कि यह बहुत जटिल होगा, लेकिन क्या आप उससे संपर्क करने के किसी भी तरीके की सिफारिश कर सकते हैं? –

+0

वैसे यह वास्तव में मॉडल पर कोशिश करने की कोशिश कर रहा है कि यह कितना जटिल होगा। दुर्भाग्यवश वास्तव में इसे आजमाने के बिना, यह निर्धारित करना मुश्किल है कि एक रैखिक मॉडल की तुलना में कुछ और आवश्यक है या नहीं। विचार करने का एक अन्य कारक यह है कि क्या आप वास्तविक व्यवहार को मॉडलिंग करने में रुचि रखते हैं, या कुछ "मॉडलिंग" दिखाना चाहते हैं। यदि आप केवल "पर्याप्त करीब" चाहते हैं तो चीजें काफी आसान हो जाती हैं। – kerblogglobel

+0

इसके अलावा, कुछ भी ध्यान में रखना है कि ये मॉडल उतने ही अच्छे हैं जितना डेटा आप उन्हें प्रशिक्षित करते हैं।यदि आप पूर्ण पतन और छद्म पतन व्यवहार को पुन: पेश करने की आशा करते हैं तो अपने प्रशिक्षण डेटासेट में दोनों के उदाहरण होना महत्वपूर्ण है। – kerblogglobel

0

(हालांकि मैं जब तक आवश्यक यह बचना चाहेंगे) मैं निष्कर्ष है कि सबसे अच्छा तरीका यह करने के लिए एक मार्कोव श्रृंखला का उपयोग किया जाएगा करने के लिए आया था। गुणों की एक श्रृंखला को स्टोर करने के लिए एक का उपयोग करने के बजाय, मैं अगले विज्ञापन की संभावना को स्टोर करता हूं जो एजेंट उठाएगा।

तो, अगर मैं खाने, वहाँ मैं अगले सो जाएगा एक 15% मौका है। तो अगर मैं सोता हूं, तो 70% मौका है कि मैं सुबह में काम पर जाऊंगा। जाहिर है, केवल पुनरावृत्ति के बीच रैंड (0) करें

संबंधित मुद्दे

 संबंधित मुद्दे