बड़ा अच्छा सवाल!
tl; dr: कोशिका अवस्था और छिपी अवस्था दो अलग-अलग चीजें हैं, लेकिन छिपी हुई अवस्था कोशिका अवस्था पर निर्भर होती है और वे वास्तव में एक ही आकार की होती हैं।
लंबी व्याख्या
दोनों के बीच का अंतर नीचे दिए गए आरेख से देखा जा सकता है (एक ही ब्लॉग का हिस्सा):
कोशिका अवस्था, पश्चिम से पूर्व की ओर ऊपर की ओर जाने वाली बोल्ड लाइन है। पूरे हरे रंग के ब्लॉक को 'सेल' कहा जाता है।
पिछले समय के चरण से छिपी स्थिति को वर्तमान समय चरण में इनपुट के भाग के रूप में माना जाता है।
हालाँकि, पूर्ण वॉकथ्रू किए बिना दोनों के बीच निर्भरता को देखना थोड़ा कठिन है। मैं यहाँ एक और परिप्रेक्ष्य प्रदान करने के लिए ऐसा करूँगा, लेकिन ब्लॉग से बहुत प्रभावित हूँ। मेरा अंकन समान होगा, और मैं अपने स्पष्टीकरण में ब्लॉग से छवियों का उपयोग करूंगा।
मुझे उन कार्यों के क्रम के बारे में सोचना पसंद है, जो ब्लॉग में प्रस्तुत किए गए थे। व्यक्तिगत रूप से, इनपुट गेट से शुरू करना। मैं उस दृष्टिकोण को नीचे प्रस्तुत करूँगा, लेकिन कृपया ध्यान रखें कि ब्लॉग बहुत अच्छी तरह से एक एलएसटीएम कम्प्यूटेशनल रूप से स्थापित करने का सबसे अच्छा तरीका हो सकता है और यह स्पष्टीकरण विशुद्ध रूप से वैचारिक है।
यहाँ क्या हो रहा है:
इनपुट गेट
टीएक्सटीजटी - 1
एक्सटी= [ १ , २ , ३ ]जटी= [ ४ , ५ , ६ ]
एक्सटीजटी - 1[ १ , २ , ३ , ४ , ५ , ६ ]
डब्ल्यूमैंडब्ल्यूमैं⋅ [ xटी, एचटी - 1] + बीमैंडब्ल्यूमैंखमैं
मान लेते हैं कि हम छह आयामी इनपुट (समवर्ती इनपुट वेक्टर की लंबाई) से तीन आयामी निर्णय लेने के लिए जा रहे हैं, जो राज्यों को अद्यतन करने के लिए है। इसका मतलब है कि हमें एक 3x6 वेट मैट्रिक्स और एक 3x1 बायस वेक्टर चाहिए। आइए उन कुछ मूल्यों को दें:
डब्ल्यूमैं= ⎡⎣⎢123123123123123123⎤⎦⎥
खमैं= ⎡⎣⎢111⎤⎦⎥
गणना होगी:
⎡⎣⎢123123123123123123⎤⎦⎥⋅ ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢123456⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥+ ⎡⎣⎢111⎤⎦⎥= ⎡⎣⎢224262⎤⎦⎥
मैंटी= σ( डब्ल्यू।)मैं⋅ [ xटी, एचटी - 1] + बीमैं)
σ( x ) = 11 + ई x पी ( - x )एक्स
σ( ⎡⎣⎢224262⎤⎦⎥) = [ १1 + ई x पी ( - 22 ), १1 + ई x पी ( - 42 ), १1 + ई x पी ( - 62 )] = [ १ , १ , १ ]
अंग्रेजी में, इसका मतलब है कि हम अपने सभी राज्यों को अपडेट करने जा रहे हैं।
इनपुट गेट का दूसरा भाग है:
सीटी~= t a n h ( Wसी[ एक्सटी, एचटी - 1] + बीसी)
इस भाग की बात यह है कि अगर हम ऐसा करते हैं तो हम राज्य को कैसे अपडेट करेंगे। यह इस समय सेल राज्य में नए इनपुट से योगदान है। गणना ऊपर बताई गई समान प्रक्रिया का अनुसरण करती है, लेकिन सिग्माइड इकाई के बजाय एक तन इकाई के साथ।
सीटी~मैंटी
मैंटीसीटी~
इसके बाद भूल जाते हैं गेट, जो आपके सवाल का क्रूस था।
भूल जाओ गेट
भूल गेट का उद्देश्य पहले से सीखी गई जानकारी को हटाना है जो अब प्रासंगिक नहीं है। ब्लॉग में दिया गया उदाहरण भाषा-आधारित है, लेकिन हम एक स्लाइडिंग विंडो के बारे में भी सोच सकते हैं। यदि आप एक समय श्रृंखला का निर्माण कर रहे हैं, जो स्वाभाविक रूप से पूर्णांकों द्वारा दर्शाया जाता है, जैसे कि बीमारी के प्रकोप के दौरान एक क्षेत्र में संक्रामक व्यक्तियों की गिनती, तो शायद एक बार बीमारी किसी क्षेत्र में मर गई हो, तो आप अब उस क्षेत्र पर विचार करने से परेशान नहीं होना चाहते जब यह सोचकर कि यह बीमारी आगे कैसे जाएगी।
इनपुट लेयर की तरह ही, भूली हुई परत पिछले समय के कदम से छिपी हुई स्थिति को लेती है और वर्तमान समय के कदम से नया इनपुट उन्हें समाप्त कर देता है। बिंदु यह तय करना है कि क्या भूल जाना है और क्या याद रखना है। पिछली गणना में, मैंने सभी 1 के सिग्मॉइड लेयर आउटपुट को दिखाया, लेकिन वास्तव में यह 0.999 के करीब था और मैंने राउंड अप किया।
गणना बहुत कुछ लगती है जैसे हमने इनपुट परत में क्या किया:
चटी= σ( डब्ल्यू।)च[ एक्सटी, एचटी - 1] + बीच)
यह हमें 0 और 1. के बीच मानों के साथ आकार 3 का एक वेक्टर देगा। आइए दिखाते हैं कि यह हमें दिया:
[ 0.5 , 0.8 , 0.9 ]
फिर हम इन मूल्यों के आधार पर stochastically निर्णय लेते हैं जो जानकारी के उन तीन भागों को भूल जाते हैं। ऐसा करने का एक तरीका एक समान (0, 1) वितरण से एक संख्या उत्पन्न करना है और यदि वह संख्या इकाई 'चालू' की संभावना से कम है (1, 2, और 3 के लिए 0.5, 0.8 और 0.9) क्रमशः), फिर हम उस इकाई को चालू करते हैं। इस मामले में, इसका मतलब है कि हम उस जानकारी को भूल जाएंगे।
त्वरित नोट: इनपुट परत और भूल परत स्वतंत्र हैं। यदि मैं एक सट्टेबाजी करने वाला व्यक्ति होता, तो मैं शर्त लगाता कि यह समानांतरकरण के लिए एक अच्छी जगह है।
सेल की स्थिति को अद्यतन करना
अब हमारे पास सेल स्टेट को अपडेट करने की आवश्यकता है। हम इनपुट और भूल गए फाटकों से जानकारी का एक संयोजन लेते हैं:
सीटी= चटी∘ सीटी - 1+ iटी∘ सीटी~
∘
एक तरफ: Hadamard उत्पाद
एक्स1= [ १ , २ , ३ ]एक्स2= [ ३ , २ , १ ]
एक्स1∘ x2= [ ( 1 ⋅ 3 ) , ( 2 ⋅ 2 ) , ( 3 ⋅ 1 ) ] = [ 3 , 4 , 3 ]
ऐसाइड खत्म।
इस तरह, हम सेल स्टेट (इनपुट) में जो कुछ भी जोड़ना चाहते हैं उसके साथ जोड़ते हैं जो हम सेल स्टेट से दूर ले जाना चाहते हैं (भूल जाते हैं)। परिणाम नई सेल स्थिति है।
आउटपुट गेट
यह हमें नई छिपी हुई स्थिति देगा। आवश्यक रूप से आउटपुट गेट का बिंदु यह तय करना है कि हम बाद के सेल राज्य को अपडेट करते समय मॉडल के अगले भाग को किस जानकारी को ध्यान में रखना चाहते हैं। ब्लॉग में उदाहरण फिर से है, भाषा: यदि संज्ञा बहुवचन है, तो अगले चरण में क्रिया संयुग्मन बदल जाएगी। एक रोग मॉडल में, यदि किसी विशेष क्षेत्र में व्यक्तियों की संवेदनशीलता किसी अन्य क्षेत्र की तुलना में भिन्न है, तो संक्रमण प्राप्त करने की संभावना बदल सकती है।
आउटपुट लेयर फिर से उसी इनपुट को लेती है, लेकिन फिर अपडेटेड सेल अवस्था पर विचार करती है:
ओटी= σ( डब्ल्यू।)ओ[ एक्सटी, एचटी - 1] + बीओ)
फिर, यह हमें संभावनाओं का एक सदिश देता है। फिर हम गणना करते हैं:
जटी= ओटी∘ टी एक एन एच ( सीटी)
तो वर्तमान सेल स्थिति और आउटपुट गेट को आउटपुट पर क्या सहमत होना चाहिए।
t a n h ( C)टी)[ ० , १ , १ ]ओटी[ ० , ० , १ ][ ० , ० , १ ]
जटीyटी= σ(डब्ल्यू।)⋅ जटी)
जटी
LSTM पर बहुत सारे वैरिएंट हैं, लेकिन यह आवश्यक चीजों को कवर करता है!