समय (RNN / LSTM) के माध्यम से छंटनी किए गए बैकप्रोगैजेशन का उपयोग करते समय प्रारंभिक पैटर्न को पकड़ना


12

यह कहें कि मैं एक RNN / LSTM का उपयोग भावना विश्लेषण करने के लिए करता हूं, जो कि कई-से-एक दृष्टिकोण है ( इस ब्लॉग को देखें )। नेटवर्क को समय (BPTT) के माध्यम से एक काट-छाँट backpropagation के माध्यम से प्रशिक्षित किया जाता है, जहां नेटवर्क को हमेशा की तरह केवल 30 अंतिम चरणों के लिए अनियंत्रित किया जाता है।

मेरे मामले में मेरे प्रत्येक टेक्स्ट सेक्शन को मैं वर्गीकृत करना चाहता हूं, जो कि 30 चरणों के अनियंत्रित (~ 100 शब्द) से अधिक लंबा है। मेरे ज्ञान के आधार पर बीपीटीटी केवल एक ही टेक्स्ट सेक्शन के लिए एक बार चलाया जाता है, जो तब होता है जब यह पूरे टेक्स्ट सेक्शन में पास हो जाता है और बाइनरी क्लासिफिकेशन लक्ष्य, गणना करता है , जो तब त्रुटि खोजने के लिए नुकसान फ़ंक्शन की तुलना करता है।y

प्रत्येक पाठ अनुभाग के पहले शब्दों के संबंध में ग्रेडिएंट की गणना कभी नहीं की जाएगी। RNN / LSTM कैसे फिर भी अपने वज़न को विशिष्ट पैटर्न पर कब्जा करने के लिए समायोजित कर सकता है जो केवल पहले कुछ शब्दों में होते हैं? उदाहरण के लिए, कहें कि "I love this" के साथ वाक्य के रूप में चिह्नित सभी वाक्य और "I hath this" के साथ सभी वाक्य शुरुआत के रूप में चिह्नित हैं । RNN / LSTM कैसे कब्जा करेगा कि जब यह केवल पिछले 30 चरणों के लिए अनियंत्रित होता है जब यह 100-कदम लंबे अनुक्रम के अंत में हिट होता है?positivenegative


आमतौर पर, संक्षिप्त नाम टीबीपीटीटी है जो समय के माध्यम से छंटनी की गई पीठ-प्रसार के लिए है।
चार्ली पार्कर

जवाबों:


11

यह सच है कि आपके क्रमिक प्रसार को 30 समय के चरणों तक सीमित करना आपके डेटासेट में संभव हर चीज को सीखने से रोकेगा । हालाँकि, यह आपके डेटासेट पर बहुत अधिक निर्भर करता है कि क्या यह आपके मॉडल की विशेषताओं के बारे में महत्वपूर्ण बातें सीखने से रोकेगा!

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

पहले एक आकस्मिक उदाहरण के बारे में सोचें। मान लीजिए कि आपके नेटवर्क को 1 उत्पन्न करना है यदि उसके इनपुट में कहीं भी 1 है, और 0 अन्यथा। कहते हैं कि आप नेटवर्क को लंबाई 20 के अनुक्रम पर प्रशिक्षित करते हैं और फिर 10 चरणों के लिए ढाल करते हैं। यदि प्रशिक्षण डेटासेट में इनपुट के अंतिम 10 चरणों में कभी भी 1 नहीं होता है, तो नेटवर्क को किसी भी कॉन्फ़िगरेशन के परीक्षण इनपुट के साथ समस्या होने वाली है। हालांकि, यदि प्रशिक्षण सेट में कुछ उदाहरण हैं जैसे कि [1 0 0 ... 0 0 0] और अन्य जैसे [0 0 0 ... 1 0 0], तो नेटवर्क "उपस्थिति" पर उठा सकेगा इसके इनपुट में कहीं भी एक 1 "सुविधा।

वापस भावना विश्लेषण के लिए। मान लीजिए कि प्रशिक्षण के दौरान आपका मॉडल लंबे समय तक नकारात्मक वाक्य का सामना करता है, जैसे "मुझे इससे नफरत है क्योंकि ... चारों ओर और आसपास", कहते हैं, दीर्घवृत्त में 50 शब्द हैं। क्रमिक प्रसार को 30 समय के चरणों तक सीमित करके, मॉडल आउटपुट लेबल के लिए "मुझे इससे नफरत है क्योंकि" कनेक्ट नहीं होगा, इसलिए यह इस प्रशिक्षण से "I", "घृणा", या "यह" नहीं उठाएगा। उदाहरण। लेकिन यह उन शब्दों पर उठाएगा जो वाक्य के अंत से 30 समय के कदम के भीतर हैं। यदि आपके प्रशिक्षण सेट में अन्य उदाहरण हैं, जिनमें समान शब्द हैं, संभवतः "घृणा" के साथ तो यह "घृणा" और नकारात्मक भावना लेबल के बीच लिंक पर लेने का मौका है। इसके अलावा, यदि आपके पास प्रशिक्षण के छोटे उदाहरण हैं, तो कहें, "हम इसे नफरत करते हैं क्योंकि यह भयानक है!" तब आपका मॉडल "नफरत" और "यह" सुविधाओं को लक्ष्य लेबल से कनेक्ट करने में सक्षम होगा। यदि आपके पास इन प्रशिक्षण उदाहरणों के लिए पर्याप्त है, तो मॉडल को कनेक्शन को प्रभावी ढंग से सीखने में सक्षम होना चाहिए।

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


0

@ Imjohns3 के पास सही है, यदि आप लंबे अनुक्रमों (आकार N) को संसाधित करते हैं और पिछले K चरणों में बैकप्रॉपैगैशन को सीमित करते हैं, तो नेटवर्क भीख मांगने के पैटर्न को नहीं सीखेगा।

मैंने लंबे ग्रंथों के साथ काम किया है और उस दृष्टिकोण का उपयोग करता हूं जहां मैं नुकसान की गणना करता हूं और हर के के चरणों के बाद बैकप्रोपैजेशन करता हूं । मान लेते हैं कि मेरे अनुक्रम में एन = 1000 टोकन थे, मेरी आरएनएन प्रक्रिया पहले के = 100 थी फिर मैं भविष्यवाणी (गणना हानि) और बैकप्रोपगेट करने की कोशिश करता हूं। RNN स्टेट को बनाए रखते हुए अगला ग्रेडिएंट चेन (पाइटोरच-> डिटैच में) ब्रेक करें और दूसरा k = 100 स्टेप शुरू करें।

इस तकनीक का एक अच्छा उदाहरण आप यहां पा सकते हैं: https://github.com/ksopyla/pytorch_neural_networks/blob/master/RNN/lstm_imdb_tbptt.py

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