आवर्तक तंत्रिका नेटवर्क (RNN) के पीछे का विचार मेरे लिए स्पष्ट है। मैं इसे निम्नलिखित तरीके से समझता हूं:
हमारे पास अवलोकन का एक क्रम है ( ) (या, दूसरे शब्दों में, मल्टीवेरेट समय श्रृंखला)। प्रत्येक एकल अवलोकन एक -डायमेंशनल न्यूमेरिक वेक्टर है। मॉडल के भीतर हम मानते हैं कि अगला अवलोकन पिछले अवलोकन का एक कार्य है साथ ही पिछले "छिपा हुआ राज्य" , जहां छिपे हुए राज्य भी संख्यात्मक के रूप में दर्शाए जाते हैं। वैक्टर (मनाया और छिपे हुए राज्यों के आयाम भिन्न हो सकते हैं)। छिपी हुई अवस्थाओं को भी पिछले अवलोकन और छिपे हुए राज्य पर निर्भर माना जाता है:
अंत में, आरएनएन मॉडल में, फ़ंक्शन को एक तंत्रिका नेटवर्क माना जाता है। हम उपलब्ध डेटा (टिप्पणियों का एक क्रम) का उपयोग करके तंत्रिका नेटवर्क को प्रशिक्षित (फिट) करते हैं। प्रशिक्षण में हमारा लक्ष्य पिछली टिप्पणियों का उपयोग करके यथासंभव अगले अवलोकन का अनुमान लगाने में सक्षम होना है।
अब, LSTM नेटवर्क RNN नेटवर्क का एक संशोधन है। जहां तक मैंने समझा, LSTM के पीछे की प्रेरणा लघु स्मृति की समस्या को हल करना है जो कि RNN के लिए अजीब है (पारंपरिक RNN संबंधित घटनाओं के साथ परेशानी है जो समय में बहुत अलग हो गए हैं)।
मैं समझता हूं कि LSTM नेटवर्क कैसे काम करता है। यहाँ LSTM का सबसे अच्छा स्पष्टीकरण है जो मैंने पाया है। मूल विचार इस प्रकार से है:
छिपे हुए राज्य वेक्टर के अलावा, हम एक तथाकथित "सेल राज्य" वेक्टर पेश करते हैं जिसमें छिपे हुए राज्य वेक्टर ( ) के समान आकार (आयाम ) होता है। मुझे लगता है कि "सेल राज्य" वेक्टर को दीर्घकालिक स्मृति के मॉडल के लिए पेश किया गया है। पारंपरिक आरएनएन के मामले में, एलएसटीएम नेटवर्क को इनपुट के रूप में मनाया और छिपा हुआ राज्य मिलता है। इस इनपुट का उपयोग करते हुए, हम निम्नलिखित तरीके से एक नए "सेल स्टेट" की गणना करते हैं:
जहां के कार्यों , और तंत्रिका नेटवर्क द्वारा मॉडलिंग कर रहे हैं। अभिव्यक्ति को सरल बनाने के लिए मैं सिर्फ तर्क निकालता हूं:
इसलिए, हम देख सकते हैं कि नया "सेल स्टेट वेक्टर" ( ) पुराने स्टेट वेक्टर ( ) का एक भारित योग है और एक "इंटरमीडिएट" सेल स्टेट वेक्टर ( ) है। वैक्टर के बीच गुणा घटक-वार है (हम दो एन आयामी वैक्टर को गुणा करते हैं और परिणामस्वरूप, एक और एन वेक्टर)। दूसरे शब्दों में, हम घटक विशिष्ट भार का उपयोग करके दो सेल राज्यों वैक्टर (पुराने एक और मध्यवर्ती एक) को मिलाते हैं।
यहाँ वर्णित संचालन के बीच अंतर्ज्ञान है। सेल स्टेट वेक्टर को मेमोरी वेक्टर के रूप में व्याख्या किया जा सकता है। दूसरी वजन वेक्टर (एक तंत्रिका नेटवर्क द्वारा गणना) एक "रखें" (या भूल जाते हैं) गेट। इसके मान तय करते हैं कि हम सेल स्टेट वेक्टर (या लॉन्ग टर्म मेमोरी वेक्टर) से संबंधित मूल्य को रखते हैं या भूल जाते हैं (मिटा देते हैं)। पहले वजन वेक्टर ( ) है, जो एक और तंत्रिका नेटवर्क करके की जाती है, "लिखने" या "याद" गेट कहा जाता है। यह तय करता है कि क्या एक नई मेमोरी ("इंटरमीडिएट" सेल स्टेट वेक्टर) को बचाया जाना है (या अधिक सटीक रूप से, यदि इसके किसी विशेष घटक को सहेजना / लिखना है)। "मध्यवर्ती"वेक्टर)। वास्तव में, इसे और अधिक कहने के लिए सही होगा, कि दो भार वैक्टर (साथऔर) हम "मिश्रण" पुराने और नए स्मृति।
तो, ऊपर वर्णित मिश्रण (या भूल और याद रखना) के बाद हमारे पास एक नया सेल स्टेट वेक्टर है। फिर हम एक अन्य न्यूरल नेटवर्क का उपयोग करके "इंटरमीडिएट" छिपे हुए राज्य की गणना करते हैं (पहले की तरह, हम प्रेक्षित अवस्था और छिपी अवस्था as निविष्टियाँ) का उपयोग करते हैं। अंत में, हम नए (या "अंतिम") छिपे हुए राज्य को प्राप्त करने के लिए नए मध्यवर्ती राज्य (मेमोरी) को "इंटरमीडिएट" छिपे हुए राज्य ( ) के साथ जोड़ते हैं जिसे हम वास्तव में आउटपुट करते हैं:
जहां एक सेलग्रॉइड फ़ंक्शन है जो सेल स्टेट वेक्टर के प्रत्येक घटक पर लागू होता है।
तो, मेरा सवाल है: क्यों (या कैसे वास्तव में) इस समस्या को हल करता है?
विशेष रूप से मैं निम्नलिखित नहीं समझता:
- हम "इंटरमीडिएट" मेमोरी (सेल स्टेट वेक्टर) उत्पन्न करने के लिए एक न्यूरल नेटवर्क का उपयोग करते हैं जो "नई" मेमोरी (सेल स्टेट) प्राप्त करने के लिए "पुरानी" मेमोरी (या सेल स्टेट) के साथ मिलाया जाता है। मिश्रण के लिए वजन कारकों की गणना भी तंत्रिका नेटवर्क द्वारा की जाती है। लेकिन हम "नई" सेल स्थिति (या मेमोरी) की गणना करने के लिए सिर्फ एक तंत्रिका नेटवर्क का उपयोग क्यों नहीं कर सकते। या, दूसरे शब्दों में, हम "न्यू" मेमोरी की गणना करने वाले तंत्रिका नेटवर्क के इनपुट के रूप में मनाया राज्य, छिपी हुई स्थिति और पुरानी मेमोरी का उपयोग क्यों नहीं कर सकते हैं?
- अंत में हम एक नए छिपे हुए राज्य की गणना करने के लिए मनाया और छिपे हुए राज्यों का उपयोग करते हैं और फिर हम नए गणना किए गए छिपे हुए राज्य के घटक को सही करने के लिए "नए" सेल राज्य (या दीर्घकालिक) मेमोरी का उपयोग करते हैं। दूसरे शब्दों में, सेल राज्य के घटकों का उपयोग भार के रूप में किया जाता है जो गणना की गई छिपी स्थिति के संबंधित घटकों को कम करते हैं। लेकिन सेल स्टेट वेक्टर का उपयोग इस विशेष तरीके से क्यों किया जाता है? हम एक तंत्रिका नेटवर्क के इनपुट में सेल स्टेट वेक्टर (दीर्घकालिक मेमोरी) डालकर नए छिपे हुए राज्य की गणना क्यों नहीं कर सकते हैं (जो इनपुट के रूप में मनाया और छिपे हुए राज्यों को भी लेते हैं)?
जोड़ा गया:
यहां एक वीडियो है जो यह स्पष्ट करने में मदद कर सकता है कि विभिन्न फाटकों ("रखना", "लिखना" और "पढ़ना") का आयोजन कैसे किया जाता है।