एक दीर्घकालिक अल्पकालिक मेमोरी (LSTM) आवर्तक तंत्रिका नेटवर्क के पीछे अंतर्ज्ञान क्या है?


11

आवर्तक तंत्रिका नेटवर्क (RNN) के पीछे का विचार मेरे लिए स्पष्ट है। मैं इसे निम्नलिखित तरीके से समझता हूं:
हमारे पास अवलोकन का एक क्रम है ( ) (या, दूसरे शब्दों में, मल्टीवेरेट समय श्रृंखला)। प्रत्येक एकल अवलोकन एक -डायमेंशनल न्यूमेरिक वेक्टर है। मॉडल के भीतर हम मानते हैं कि अगला अवलोकन पिछले अवलोकन का एक कार्य है साथ ही पिछले "छिपा हुआ राज्य" , जहां छिपे हुए राज्य भी संख्यात्मक के रूप में दर्शाए जाते हैं। वैक्टर (मनाया और छिपे हुए राज्यों के आयाम भिन्न हो सकते हैं)। छिपी हुई अवस्थाओं को भी पिछले अवलोकन और छिपे हुए राज्य पर निर्भर माना जाता है:1,2,...,nमैंएनमैं+1मैंमैं

मैं,मैं=एफ(मैं-1,मैं-1)

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

अब, LSTM नेटवर्क RNN नेटवर्क का एक संशोधन है। जहां तक ​​मैंने समझा, LSTM के पीछे की प्रेरणा लघु स्मृति की समस्या को हल करना है जो कि RNN के लिए अजीब है (पारंपरिक RNN संबंधित घटनाओं के साथ परेशानी है जो समय में बहुत अलग हो गए हैं)।

मैं समझता हूं कि LSTM नेटवर्क कैसे काम करता है। यहाँ LSTM का सबसे अच्छा स्पष्टीकरण है जो मैंने पाया है। मूल विचार इस प्रकार से है:

छिपे हुए राज्य वेक्टर के अलावा, हम एक तथाकथित "सेल राज्य" वेक्टर पेश करते हैं जिसमें छिपे हुए राज्य वेक्टर ( सीमैं ) के समान आकार (आयाम ) होता है। मुझे लगता है कि "सेल राज्य" वेक्टर को दीर्घकालिक स्मृति के मॉडल के लिए पेश किया गया है। पारंपरिक आरएनएन के मामले में, एलएसटीएम नेटवर्क को इनपुट के रूप में मनाया और छिपा हुआ राज्य मिलता है। इस इनपुट का उपयोग करते हुए, हम निम्नलिखित तरीके से एक नए "सेल स्टेट" की गणना करते हैं:

सीमैं+1=ω1(मैं,मैं)सीमैं+ω2(मैं,मैं)सीमैंnटी(मैं,मैं),

जहां के कार्यों ω1 , ω2 और सीमैंnटी तंत्रिका नेटवर्क द्वारा मॉडलिंग कर रहे हैं। अभिव्यक्ति को सरल बनाने के लिए मैं सिर्फ तर्क निकालता हूं:

सीमैं+1=ω1सीमैं+ω2सीमैंnटी

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

यहाँ वर्णित संचालन के बीच अंतर्ज्ञान है। सेल स्टेट वेक्टर को मेमोरी वेक्टर के रूप में व्याख्या किया जा सकता है। दूसरी वजन वेक्टर ω2 (एक तंत्रिका नेटवर्क द्वारा गणना) एक "रखें" (या भूल जाते हैं) गेट। इसके मान तय करते हैं कि हम सेल स्टेट वेक्टर (या लॉन्ग टर्म मेमोरी वेक्टर) से संबंधित मूल्य को रखते हैं या भूल जाते हैं (मिटा देते हैं)। पहले वजन वेक्टर ( ω1 ) है, जो एक और तंत्रिका नेटवर्क करके की जाती है, "लिखने" या "याद" गेट कहा जाता है। यह तय करता है कि क्या एक नई मेमोरी ("इंटरमीडिएट" सेल स्टेट वेक्टर) को बचाया जाना है (या अधिक सटीक रूप से, यदि इसके किसी विशेष घटक को सहेजना / लिखना है)। "मध्यवर्ती"ω1वेक्टर)। वास्तव में, इसे और अधिक कहने के लिए सही होगा, कि दो भार वैक्टर (साथω1औरω2) हम "मिश्रण" पुराने और नए स्मृति।

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

मैं+1=मैंnटीएस(सीमैं+1),

जहां एस एक सेलग्रॉइड फ़ंक्शन है जो सेल स्टेट वेक्टर के प्रत्येक घटक पर लागू होता है।

तो, मेरा सवाल है: क्यों (या कैसे वास्तव में) इस समस्या को हल करता है?

विशेष रूप से मैं निम्नलिखित नहीं समझता:

  1. हम "इंटरमीडिएट" मेमोरी (सेल स्टेट वेक्टर) उत्पन्न करने के लिए एक न्यूरल नेटवर्क का उपयोग करते हैं जो "नई" मेमोरी (सेल स्टेट) प्राप्त करने के लिए "पुरानी" मेमोरी (या सेल स्टेट) के साथ मिलाया जाता है। मिश्रण के लिए वजन कारकों की गणना भी तंत्रिका नेटवर्क द्वारा की जाती है। लेकिन हम "नई" सेल स्थिति (या मेमोरी) की गणना करने के लिए सिर्फ एक तंत्रिका नेटवर्क का उपयोग क्यों नहीं कर सकते। या, दूसरे शब्दों में, हम "न्यू" मेमोरी की गणना करने वाले तंत्रिका नेटवर्क के इनपुट के रूप में मनाया राज्य, छिपी हुई स्थिति और पुरानी मेमोरी का उपयोग क्यों नहीं कर सकते हैं?
  2. अंत में हम एक नए छिपे हुए राज्य की गणना करने के लिए मनाया और छिपे हुए राज्यों का उपयोग करते हैं और फिर हम नए गणना किए गए छिपे हुए राज्य के घटक को सही करने के लिए "नए" सेल राज्य (या दीर्घकालिक) मेमोरी का उपयोग करते हैं। दूसरे शब्दों में, सेल राज्य के घटकों का उपयोग भार के रूप में किया जाता है जो गणना की गई छिपी स्थिति के संबंधित घटकों को कम करते हैं। लेकिन सेल स्टेट वेक्टर का उपयोग इस विशेष तरीके से क्यों किया जाता है? हम एक तंत्रिका नेटवर्क के इनपुट में सेल स्टेट वेक्टर (दीर्घकालिक मेमोरी) डालकर नए छिपे हुए राज्य की गणना क्यों नहीं कर सकते हैं (जो इनपुट के रूप में मनाया और छिपे हुए राज्यों को भी लेते हैं)?

जोड़ा गया:

यहां एक वीडियो है जो यह स्पष्ट करने में मदद कर सकता है कि विभिन्न फाटकों ("रखना", "लिखना" और "पढ़ना") का आयोजन कैसे किया जाता है।


1
आप LSTM को मुझसे बेहतर समझते हैं, इसलिए मैं वास्तविक उत्तर नहीं दूंगा, क्योंकि यह वह नहीं हो सकता है जो आप खोज रहे हैं: LSTM द्वार (मुख्य रूप से भूलने के द्वार) इसे लंबे समय तक सक्रियण और ग्रेडिएंट रखने की अनुमति देते हैं यथावश्यक। इसलिए समय टी की जानकारी को तब तक रखा जा सकता है जब तक समय टी + एन, मनमाने ढंग से बड़े एन के लिए।
rcpinto

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

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

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

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

जवाबों:


1

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

ऐसा नहीं करने का मुख्य कारण यह है कि एलएसटीएम की सेल राज्य संगणना की संरचना लंबे अनुक्रमों के माध्यम से त्रुटि के निरंतर प्रवाह को सुनिश्चित करती है । यदि आपने सेल सेल की गणना के लिए सीधे वेट का उपयोग किया है, तो आपको प्रत्येक समय कदम पर उनके माध्यम से बैकप्रोपैगेट करना होगा! इस तरह के ऑपरेशन से बचने के लिए बड़े पैमाने पर गायब हो रहे / विस्फोटकों को हल करता है जो अन्यथा RNN को प्लेग करते हैं।

साथ ही, अधिक समय तक सूचनाओं को आसानी से बनाए रखने की क्षमता एक अच्छा बोनस है। सहज रूप से, नेटवर्क के लिए स्क्रैच से सेल स्टेट को लंबे समय तक संरक्षित करना सीखना अधिक कठिन होगा।

यह ध्यान देने योग्य है कि LSTM, GRU का सबसे आम विकल्प , इसी तरह छिपे हुए राज्य अपडेट की गणना करता है बिना वेट सीखे जो सीधे छिपे हुए राज्य पर काम करता है।


0

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

मैं एक एकल तंत्रिका नेटवर्क का उपयोग करने की कमियां नहीं जानता। मेरी राय में हम सिग्मॉइड गैर-रैखिकता के साथ एक एकल तंत्रिका नेटवर्क का उपयोग कर सकते हैं जो सही ढंग से वेक्टर को सीखता है जिसे उचित रूप से उपयोग किया जाएगा (पहले मामले में सेल राज्य में जोड़ा गया या दूसरे मामले में छिपे हुए राज्य के रूप में पारित किया गया)।

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

सरल शब्दों में, सिग्मायॉइड सीखता है कि कितना बचाना है और तन्हा सीखता है कि इसे दो भागों में बचाना और तोड़ना प्रशिक्षण को आसान बना देगा।

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