2016-09-24 20 views
7

मैं एक कठिन समय Keras में स्टेटफुल और स्टेटलेस LSTMs के बीच का अंतर conceptualizing आ रही है। मेरी समझ यह है कि प्रत्येक बैच के अंत में, स्टेटलेस मामले में "नेटवर्क की स्थिति रीसेट हो जाती है", जबकि राज्य के मामले में, नेटवर्क की स्थिति प्रत्येक बैच के लिए संरक्षित होती है, और उसके बाद मैन्युअल रूप से रीसेट होनी चाहिए प्रत्येक युग के अंत।Keras - स्टेटफुल बनाम राज्यविहीन LSTMs

मेरे प्रश्न इस प्रकार हैं: 1. स्टेटलेस केस में, अगर नेटवर्क बैच के बीच में संरक्षित नहीं है तो नेटवर्क सीखना कैसा है? 2. जब कोई एलएसटीएम के स्टेटलेस बनाम स्टेटफुल मोड का उपयोग करेगा?

उत्तर

7

मैं सुझाव है कि आप सबसे पहले और मिनी बैच SGD (स्टोकेस्टिक ढाल वंश) (समय के माध्यम से वापस प्रचार) BPTT की अवधारणाओं जानने के लिए, तो आप LSTM के प्रशिक्षण की प्रक्रिया के आगे समझ होगा।

अपने प्रश्नों के लिए,

प्रश्न 1। राज्यविहीन मामलों में, batch1 पर और फिर LSTM अपडेट मानकों, छिपे हुए राज्यों और सेल राज्यों (आम तौर पर सभी शून्य) batch2 के लिए, आरंभ करते हुए स्टेटफुल मामलों में, यह batch2 के लिए प्रारंभिक राज्यों के रूप में batch1 के अंतिम उत्पादन छिपा राज्यों और सेल sates उपयोग करता है।

प्रश्न 2। जैसा कि आप ऊपर देख सकते हैं, जब दो बैचों में दो अनुक्रमों में कनेक्शन होते हैं (जैसे एक स्टॉक की कीमतें), तो आप बेहतर स्थिति का उपयोग करेंगे, अन्यथा (उदाहरण के लिए एक अनुक्रम एक पूर्ण वाक्य का प्रतिनिधित्व करता है) आपको स्टेटलेस मोड का उपयोग करना चाहिए।

Btw, @ vu.pham if we use stateful RNN, then in production, the network is forced to deal with infinite long sequences कहा। यह सही नहीं लगता है, वास्तव में, जैसा कि आप Q1 में देख सकते हैं, LSTM पूरे अनुक्रम पर नहीं सीखना होगा, यह पहली batch1 में अनुक्रम सीखता है, अद्यतन मानकों, और फिर batch2 पर अनुक्रम सीखते हैं।

+0

के बारे में क्या @ vu.pham ने कहा ... LSTM है 'stateful', पिछले बैच के बारे में जानकारी छिपा राज्यों में जमा हो जाती है, तो batch2 पर अपडेट batch1 पर निर्भर होना चाहिए टिप्पणी के बारे में, वे नहीं है ? (इस वेनिला RNN के छोटा कर दिया BPTT के रूप में माना जा रहा है, मुझे लगता है, वहाँ backprop बस कुछ ही समय-चरणों का उपयोग करता है, लेकिन अभी भी RNN लंबे निर्भरता सीख सकते हैं, अनुक्रम, जिस पर ढ़ाल गणना कर रहे हैं की लंबाई से अधिक समय) –

4
  1. नेटवर्क अभी भी आइटम बैच और आइटम i + 1 से प्रत्येक बैच में कनेक्शन सीखता है। तो यदि आप स्टेटलेस आरएनएन के साथ जाने का फैसला करते हैं, तो अक्सर आप अपनी श्रृंखला को कई सेगमेंट में विभाजित करेंगे, लंबाई के प्रत्येक सेगमेंट एन। यदि आप नेटवर्क में उन सेगमेंट को खिलाते हैं, तो भी यह अगले तत्व की भविष्यवाणी करना सीखता है कि पिछले सभी के बारे में तत्वों।

  2. मेरा मानना ​​है कि ज्यादातर लोग अभ्यास में स्टेटलेस आरएनएन का उपयोग करते हैं, क्योंकि अगर हम राज्यव्यापी आरएनएन का उपयोग करते हैं, तो उत्पादन में, नेटवर्क को अनंत लंबे अनुक्रमों से निपटने के लिए मजबूर किया जाता है, और यह संभालने के लिए बोझिल हो सकता है।

संबंधित मुद्दे