ध्यान, संवाद और सीखना पुन: प्रयोज्य पैटर्न

रासा कोर एक ओपन सोर्स मशीन लर्निंग-आधारित संवाद प्रणाली है जो निर्माण स्तर 3 संदर्भ एआई सहायकों के लिए है। 0.11 संस्करण में, हमने अपनी नई एम्बेडिंग नीति (REDP) को भेज दिया, जो कि हमारे मानक LSTM (रासा उपयोगकर्ताओं को इसे KerasPolicy के रूप में जानती है) की तुलना में अपारंपरिक उपयोगकर्ताओं से निपटने में बहुत बेहतर है। हम NeurIPS पर इस पर एक पेपर प्रस्तुत कर रहे हैं, और यह पोस्ट उस समस्या को बताती है जो REDP हल करती है और यह कैसे काम करती है।

हमारा नया संवाद मॉडल (आरईपीपी) अनियंत्रित उपयोगकर्ताओं से निपटने में हमारी मानक एलएसटीएम नीतियों को बेहतर बनाता है। इन भूखंडों को नीचे और अधिक विस्तार से समझाया गया है।

Uncooperative उपयोगकर्ता एक डेवलपर के जीवन को कठिन बनाते हैं

एक अच्छा एआई सहायक बनाने के बारे में कठिन बात अनंत तरीकों से निपट रही है जो आपके उपयोगकर्ता खुश पथ से भटकते हैं। REDP, हमारी नई संवाद नीति के दो फ़ायदे हैं: (1) यह सीखने में बहुत बेहतर है कि कैसे अनओपरेटिव व्यवहार से निपटना है, और (2) नए कार्य को सीखते समय इस जानकारी का फिर से उपयोग कर सकते हैं।

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

जब हम एक उपयोगकर्ता से पूछते हैं "आप किस मूल्य सीमा की तलाश कर रहे हैं?", तो वे इसके साथ प्रतिक्रिया दे सकते हैं:

  • "आपको यह जानने की आवश्यकता क्यों है?" (संकीर्ण संदर्भ)
  • "क्या आप मुझे अभी तक कुछ रेस्तरां दिखा सकते हैं?" (विस्तृत संदर्भ)
  • "वास्तव में मुझे चीनी भोजन नहीं चाहिए" (सुधार)
  • "मुझे शायद अपने लिए और खाना बनाना चाहिए" (चिटचैट)

हम इस सभी असहयोगात्मक व्यवहार को कहते हैं। उपयोगकर्ता द्वारा जवाब दिए जाने के कई अन्य तरीके हैं, लेकिन हमारे पेपर में हम इन चार विभिन्न प्रकारों का अध्ययन करते हैं। यहाँ एक उदाहरण वार्तालाप है:

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

असहयोगात्मक व्यवहार को संभालने के लिए नियमों का उपयोग करना तेजी से गड़बड़ हो जाता है

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

हम चाहते हैं कि हमारा सहायक इस तरह का व्यवहार करे: यदि उपयोगकर्ता किसी वैकल्पिक प्रश्न का उत्तर नहीं जानता है, तो अगले प्रश्न पर जाएं। यदि प्रश्न वैकल्पिक नहीं है, तो उन्हें यह पता लगाने में मदद करने के लिए एक संदेश भेजें, और फिर उन्हें जवाब देने का एक और मौका दें। अब तक, इतना सरल।

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

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

REDP Uncooperative डायलॉग को हैंडल करने के लिए ध्यान का उपयोग करता है

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

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

ध्यान का उपयोग संवाद अनुसंधान में पहले किया गया है, लेकिन एम्बेडिंग नीति पहला मॉडल है जो विशेष रूप से असहयोगी व्यवहार से निपटने के लिए ध्यान का उपयोग करता है, और एक अलग कार्य में उस ज्ञान का पुन: उपयोग करने के लिए भी।

REDP सीखता है जब ध्यान नहीं देना है

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

REDP Uncooperative उपयोगकर्ताओं को संभालने में एक LSTM क्लासिफायर से बहुत बेहतर है

यह प्लॉट REDP के प्रदर्शन की तुलना करता है और मानक रासा कोर LSTM (रासा उपयोगकर्ताओं को इसे KerasPolicy के नाम से जाना जाएगा)। हम परीक्षण सेट में संवादों की संख्या की साजिश कर रहे हैं जहां हर एक कार्रवाई का सही अनुमान लगाया जाता है, क्योंकि हम प्रशिक्षण डेटा में अधिक से अधिक जोड़ते हैं। हम LSTM के दो अलग-अलग संस्करण चलाते हैं (विवरण के लिए, कागज पढ़ें)।

पुनर्मूल्यांकन पैटर्न के पार कार्य

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

इसका परीक्षण करने के लिए, हमने एक होटल बुकिंग कार्य के लिए संवादों का एक ट्रेन-परीक्षण विभाजन बनाया (जिसमें असहयोगात्मक व्यवहार का एक गुच्छा होता है), और किसी अन्य कार्य (रेस्तरां बुकिंग) से प्रशिक्षण डेटा को शामिल किए बिना प्रदर्शन की तुलना की।

REDP के V1 ने ट्रांसफर लर्निंग से एक बड़ा लाभ दिखाया

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

REDP का V2 बहुत जल्दी टास्क को हल करता है

यह प्लॉट REDP के ’अंतिम’ संस्करण के लिए परिणाम दिखाता है, जिसे कागज में वर्णित किया गया है और रासा कोर में लागू किया गया है। परफॉर्मेंस V1 से काफी बेहतर है। केवल आधे डेटा के साथ, REDP लगभग 100% परीक्षण सटीकता तक पहुंचता है। हमें अभी भी ट्रांसफर लर्निंग से लाभ मिलता है, लेकिन रेस्तरां प्रशिक्षण डेटा को जोड़ने पर सुधार के लिए बहुत जगह नहीं है।

अगला कदम

हम वास्तव में एम्बेडिंग नीति के बारे में उत्साहित हैं, और यह दिखाने के लिए कि क्या कर सकता है, इसके लिए एक और अधिक प्रयोग चल रहा है। इसने हमारे द्वारा दिए गए पहले कार्य की नकल की, इसलिए हम इसे जंगल में स्थानांतरण अध्ययन का अध्ययन करने के लिए कुछ कठिन समस्याओं पर भी फेंक रहे हैं।

जाओ और अपने डेटासेट पर REDP आज़माएं! कागज के लिए कोड और डेटा यहां उपलब्ध है। कृपया रास मंच पर इस धागे में अपने परिणाम साझा करें।

एआई सहायकों के 5 स्तरों को एक वास्तविकता बनाने के लिए आगे बहुत मेहनत की जाती है, इसलिए यदि आप इन समस्याओं पर काम करना चाहते हैं, और दुनिया भर में हजारों डेवलपर्स द्वारा उपयोग किए जाने वाले कोडबेस में समाधान का उपयोग करें, तो हमसे जुड़ें! हम नौकरी पर रख रहे हैं।

मूल रूप से 29 नवंबर 2018 को blog.rasa.com पर प्रकाशित हुआ।