सुदृढीकरण सीखने में एक विवश एक्शन स्पेस को कैसे लागू किया जाए?


13

मैं PPO एजेंट के साथ एक सुदृढीकरण सीखने के मॉडल को कोडिंग कर रहा हूं , जो कि Tensorflow के शीर्ष पर निर्मित, बहुत अच्छे Tensorforce पुस्तकालय के लिए धन्यवाद है ।

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

मान लीजिए कि 5 कार्य हैं और उनकी उपलब्धता एक आंतरिक स्थिति पर निर्भर करती है (जो कि पिछली क्रिया और / या नए राज्य / क्षेत्र से परिभाषित होती है)

  • 2 क्रियाएं (0 और 1) हमेशा उपलब्ध होती हैं
  • 2 क्रियाएं (2 और 3) केवल तभी उपलब्ध होती हैं जब internal_state == 0 होती हैं
  • 1 क्रिया (4) केवल तभी उपलब्ध होती है जब internal_state == 1

इसलिए, जब आंतरिक_स्टेट == ० और ४ कार्य उपलब्ध होते हैं, जब इंटरनल_स्टैट == १ उपलब्ध होता है।

मैं इसे लागू करने के लिए कुछ संभावनाओं के बारे में सोच रहा हूं:

  1. आंतरिक चरण के आधार पर प्रत्येक चरण पर क्रिया स्थान बदलें। मुझे लगता है कि यह बकवास है।
  2. कुछ भी न करें: मॉडल को यह समझने दें कि अनुपलब्ध कार्रवाई चुनने से कोई प्रभाव नहीं पड़ता है।
  3. Doalal- कुछ भी नहीं: जब मॉडल अनुपलब्ध कार्रवाई का चयन करता है तो थोड़ा नकारात्मक रूप से इनाम को प्रभावित करें।
  4. मॉडल की मदद करें: एक पूर्णांक को राज्य / अवलोकन स्थान में शामिल करके, जो मॉडल को सूचित करता है कि आंतरिक_स्टैट मान + बुलेट 2 या 3 क्या है

क्या इसे लागू करने के अन्य तरीके हैं? आपके अनुभव से, कौन सा सबसे अच्छा होगा?

जवाबों:


5

सबसे सीधा उपाय यह है कि बस हर कार्रवाई को "कानूनी" बनाया जाए, लेकिन संभावित गैरकानूनी कार्यों से लेकर विभिन्न कानूनी कार्यों तक एक सुसंगत, निर्धारक मानचित्रण को लागू करना। जब भी आप जिस PPO कार्यान्वयन का उपयोग कर रहे हैं, वह एक गैरकानूनी कार्रवाई का चयन करता है, तो आप इसे केवल उस कानूनी कार्रवाई से प्रतिस्थापित करते हैं जो इसे मैप करता है। आपका पीपीओ एल्गोरिथ्म तब भी खुद को अपडेट कर सकता है जैसे कि अवैध कार्रवाई का चयन किया गया था (अवैध कार्रवाई बस की तरह हो जाती है ... कानूनी कार्रवाई के लिए "उपनाम")।

उदाहरण के लिए, जिस स्थिति का आप वर्णन करते हैं:

  • 2 क्रियाएं (0 और 1) हमेशा उपलब्ध होती हैं
  • 2 क्रियाएं (2 और 3) केवल तभी उपलब्ध होती हैं जब internal_state == 0 होती हैं
  • 1 क्रिया (4) केवल तभी उपलब्ध होती है जब internal_state == 1

ऐसे मामलों में internal_state == 0, जहां यदि कार्रवाई 4(एक अवैध कार्रवाई) का चयन किया गया था , तो आप इसे हमेशा अन्य कार्यों में से एक के लिए स्वैप कर सकते हैं और उस एक के बजाय खेल सकते हैं। यह वास्तव में मायने नहीं रखता है (सैद्धांतिक रूप से) जिसे आप चुनते हैं, जब तक आप इसके बारे में सुसंगत हैं। एल्गोरिथ्म को यह जानने की जरूरत नहीं है कि उसने एक अवैध कार्रवाई की है, जब भी वह भविष्य में उसी अवैध कार्रवाई को फिर से इसी तरह के राज्यों में उठाता है तो इसके बजाय लगातार उसी कानूनी कार्रवाई के लिए मैप किया जाएगा, इसलिए आप बस उस व्यवहार के अनुसार सुदृढ़ होते हैं।


01


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

मुझे निश्चित रूप से उम्मीद है कि यह प्रदर्शन के लिए फायदेमंद होगा यदि आप internal_stateचर के लिए इनपुट सुविधा (ओं) को शामिल कर सकते हैं ।

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


2

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

प्रश्न में सूचीबद्ध डिज़ाइन विकल्प

नीचे दिए गए प्रारंभिक विश्लेषण को पढ़ते समय त्वरित संदर्भ के लिए इन विकल्पों को यहां सूचीबद्ध किया गया है।

  • आंतरिक चरण के आधार पर प्रत्येक चरण पर क्रिया स्थान बदलें। मुझे लगता है कि यह बकवास है।
  • कुछ भी न करें: मॉडल को यह समझने दें कि अनुपलब्ध कार्रवाई चुनने से कोई प्रभाव नहीं पड़ता है।
  • Doalal- कुछ भी नहीं: जब मॉडल अनुपलब्ध कार्रवाई का चयन करता है तो थोड़ा नकारात्मक रूप से इनाम को प्रभावित करें।
  • मॉडल की मदद करें: एक पूर्णांक को राज्य / अवलोकन स्थान में शामिल करके, जो मॉडल को सूचित करता है कि आंतरिक_स्टैट मान + बुलेट 2 या 3 क्या है

प्रारंभिक विश्लेषण

प्रत्येक चाल के लिए एक्शन स्पेस को बदलना वास्तव में समझदार है। यही है, वास्तव में, समस्या के लिए एक उचित प्रतिनिधित्व के रूप में कहा गया है और सामान्य तरीके से मनुष्य खेल खेलते हैं और जिस तरह से कंप्यूटर शतरंज और गो में मनुष्यों को हराते हैं।

इस विचार की स्पष्ट संवेदनहीनता केवल टेन्सफोर्स प्रोजेक्ट रोड मैप के साथ प्रगति और सुदृढीकरण सिद्धांत के साथ प्रगति की एक कलाकृति है, दोनों बड़ी तस्वीर में युवा हैं। टेन्सरफोर्स डॉक्यूमेंटेशन और एफएक्यू को पढ़ते हुए, यह प्रकट नहीं होता है कि एक्शन स्पेस को निर्धारित करने के लिए फ्रेमवर्क को एक नियम इंजन में प्लग करने के लिए डिज़ाइन किया गया है। यह खुले स्रोत की कमी नहीं है। नियम-शर्त वाले मार्कोव श्रृंखला के निर्णय के लिए सिद्धांत या प्रस्ताव एल्गोरिदम प्रदान करने वाले कोई भी कागजात दिखाई नहीं देते हैं।

डू-नथिंग विकल्प वह है जो साहित्य में प्रस्तुत वर्तमान उपलब्ध रणनीतियों में फिट बैठता है। डो-लगभग-कुछ भी संभवतः ऐसा दृष्टिकोण है जो अधिक विश्वसनीय और शायद अधिक तत्काल वांछनीय व्यवहार का उत्पादन करेगा।

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

    a. Represent rule-conditioned learning in nomenclature
    b. Represent convergence mathematically using the new nomenclature
    c. Determining a method of convergence
    d. Proving convergence
    e. Rechecking
    f. Defining a smooth and efficient algorithm
    g. Providing PAC learning information for planning
    f. Peer review
    g. Extending the classes of the library
    h. Proof of concept with the current problem above
    i. Additional cases and metrics comparing the approach with the others
    j. Extending the library flexibility to support more such dev

नियम-विवश मामले को कवर करने के लिए सीखने की प्रणाली का विस्तार पीएचडी थीसिस के लिए एक महान विचार है और कई संभावित अनुप्रयोगों के साथ परियोजना के प्रस्ताव के रूप में अनुसंधान प्रयोगशालाओं में उड़ सकता है। सभी चरणों को शोधकर्ता के सामने न आने दें। वे अनिवार्य रूप से किसी भी पीएचडी थीसिस या वित्त पोषित AI प्रयोगशाला परियोजना के लिए चरणों की एक सूची है।

अल्पकालिक समाधान के लिए, मॉडल काम करने में मदद कर सकता है, लेकिन सुदृढीकरण सीखने के रास्ते में एआई के विचारों को आगे बढ़ाने के लिए यह एक ठोस रणनीति नहीं है। एक विशेष समस्या के लिए एक अल्पकालिक समाधान के रूप में यह ठीक काम कर सकता है। डो-लगभग-कुछ भी विचार अधिक ध्वनि नहीं हो सकता है, क्योंकि यह अभिसरण साक्ष्यों के भीतर फिट बैठता है जिसके कारण विशेष कार्यान्वयन Tensorforce का उपयोग करने की संभावना है।

सहायता-अभिसरण के लिए इसे लगभग-कुछ भी नहीं से नाम बदलने से कोशिश करने से पहले सही परिप्रेक्ष्य विकसित करने में मदद मिल सकती है। हो सकता है कि आपको सीखने की दर के साथ ओवरशूट से बचने के लिए अभिसरण के दृष्टिकोण के अनुसार सहायता प्राप्त करनी पड़े।


3
आमतौर पर क्या होता है, उदाहरण के लिए, AlphaGo में, यह है कि न्यूरल नेटवर्क में निम्न-स्तर का प्रतिनिधित्व एक बहुत बड़े एक्शन स्पेस का प्रतिनिधित्व करता है, जिनमें से अधिकांश वर्तमान स्थिति में असंभव है (यह साधारण एनएन की सीमाओं के कारण ऐसा करता है जो आउटपुट साइज़ वैक्टर को आउटपुट करते हैं। )। फिर कोड का एक अन्य भाग केवल अनुमत चालों के लिए संभावनाओं को चुनने और सामान्य करने के लिए एक फ़िल्टर लागू करता है। संयुक्त एनएन और फिल्टर एजेंट का हिस्सा हैं। इसलिए यह कहना उचित है कि एक पूरे के रूप में एजेंट "प्रत्येक चाल के लिए एक्शन स्पेस को बदल देगा" - मुझे नहीं पता कि हालांकि टेन्सफोर्स लाइब्रेरी के अंदर कैसे प्राप्त किया जा सकता है।
नील स्लेटर

1

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

उदाहरण के लिए कोड https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py के उदाहरण के रूप में देखें :

ava_actions = env.available_actions()
action = agent.act(state, ava_actions)
state, reward, done, info = env.step(action)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.