चैटबॉट को कैसे प्रशिक्षित करें


10

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

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

अब, मुझे लगता है कि मैंने सिद्धांत को कम या ज्यादा समझ लिया होगा, लेकिन मुझे यकीन नहीं है और मुझे यकीन भी नहीं है कि कैसे शुरू करें। इस प्रकार मैं यह बताऊंगा कि मैं इस समस्या से कैसे निपटूंगा और मुझे इस समाधान पर एक प्रतिक्रिया चाहिए, मुझे बताएं कि मैं कहां गलत हूं और संभवत: विस्तृत स्पष्टीकरण और प्रक्रिया पर व्यावहारिक ज्ञान के लिए कोई लिंक है।

  1. मैं जो डेटासेट उपयोग कर रहा हूं वह मेरे सभी फेसबुक और व्हाट्सएप चैट इतिहास का डंप है। मुझे नहीं पता कि यह कितना बड़ा होगा लेकिन संभवतः अभी भी बहुत बड़ा नहीं है। लक्ष्य भाषा अंग्रेजी नहीं है, इसलिए मुझे नहीं पता कि जल्दी से सार्थक बातचीत के नमूने कहां एकत्र करना है।

  2. मैं प्रत्येक वाक्य से एक विचार वेक्टर उत्पन्न करने जा रहा हूं। फिर भी पता नहीं कैसे वास्तव में; मुझे deeplearning4j वेबसाइट पर word2vec के लिए एक अच्छा उदाहरण मिला, लेकिन वाक्यों के लिए कोई नहीं। मैं समझ गया कि कैसे शब्द वैक्टर बनाए जाते हैं और क्यों, लेकिन मुझे वाक्य वैक्टर के लिए एक विस्तृत स्पष्टीकरण नहीं मिला।

  3. इनपुट और आउटपुट के रूप में विचारशील वैक्टर का उपयोग करके मैं तंत्रिका नेटवर्क को प्रशिक्षित करने जा रहा हूं। मुझे नहीं पता कि इसकी कितनी परतें होनी चाहिए, और इनमें कौन सी परतें परतें होनी चाहिए।

  4. फिर एक और तंत्रिका नेटवर्क होना चाहिए जो एक विचार वेक्टर को एक वाक्य की रचना करने वाले चरित्र के अनुक्रम में बदलने में सक्षम हो। मैंने पढ़ा है कि मुझे अलग-अलग वाक्य की लंबाई के लिए पैडिंग का उपयोग करना चाहिए, लेकिन मुझे याद है कि कैसे वर्णों को सांकेतिक शब्दों में बदलना है (कोड कोड पर्याप्त हैं?)।

जवाबों:


7

मैं इस ब्लॉगपोस्ट को पढ़कर शुरू करने की सलाह दूंगा । आप शायद एक आरएनएन बनाने के लिए कोड को नरभक्षण कर सकते हैं जो एक संवाद के एक बयान में लेता है और फिर उस बयान के उत्तर को आउटपुट करने के लिए आगे बढ़ता है।

यह शब्द वैक्टर और विचारशील वैक्टर के बिना आपकी परियोजना का आसान संस्करण होगा। आप केवल वर्णों को इनपुट कर रहे हैं, इसलिए टाइपोस को आपको चिंता करने की आवश्यकता नहीं है।

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

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

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

मुझे यकीन नहीं है कि सोचा था कि वैक्टर एक बड़ा बदलाव करेंगे। यदि आपको डिकोडर बिल्कुल सीखने को मिलता है।


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

मुझे उपयोग करने के लिए एक बॉट कोर मिला है ... लेकिन मैं पाठ पीढ़ी पर अटका हुआ हूं। ai.stackexchange.com/questions/5963/… मैं जो सोच रहा हूं वह वैक्टर, और सीखने की दर के बावजूद है, यह अभी भी काम नहीं कर रहा है क्योंकि यह होना चाहिए ... मुझे चिंता है कि यह लाइब्रेरी की कमी है। उपयोग कर रहा है, लेकिन मुझे नहीं लगता कि यह 300 के स्तर के आकार के लिए संभव हो सकता है ... या परत के आकार से संबंधित प्रशिक्षण की मात्रा आवश्यक है? किसी भी सहायता की सराहना की जाएगी। कृपया ध्यान दें कि पुस्तकालय का उपयोग किया जा रहा है।
फ्रीजफेनिक्स

0

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

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

ध्यान दें : शुरुआत के लिए, अपने संपूर्ण चैट इतिहास का उपयोग संपूर्ण रूप से न करें, क्योंकि यह एक सरल कार्य है। बहुत अधिक इनपुट == ओवरराइटिंग।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.