मैं आरएनएन के उच्च स्तरीय अनुप्रयोग को समझने के लिए (अन्य लोगों के बीच) ग्रोम्स के 2005 के पेपर को फोनेमी वर्गीकरण पर अनुक्रमित करने की कोशिश कर रहा हूं ।
समस्या को संक्षेप में बताने के लिए: हमारे पास एक बड़ा प्रशिक्षण सेट है जिसमें एकल वाक्यों की ऑडियो इनपुट (आउटपुट) और (आउटपुट) विशेषज्ञ-लेबल प्रारंभ समय हैं, व्यक्तिगत स्वर के लिए समय और लेबल बंद करें (मौन के लिए कुछ "विशेष" स्वरों सहित) ऐसा है कि प्रत्येक ऑडियो फ़ाइल में प्रत्येक नमूने को कुछ ध्वनि प्रतीक के साथ लेबल किया गया है।)
कागज का जोर इस समस्या में छिपी परत में एलएसटीएम मेमोरी कोशिकाओं के साथ एक आरएनएन लागू करना है। (वह कई वेरिएंट और कई अन्य तकनीकों को तुलना के रूप में लागू करता है। मैं फिलहाल केवल उन चीजों को सरल रखने के लिए यूनिडायरेक्शनल LSTM में दिलचस्पी रखता हूं।)
मेरा मानना है कि मैं नेटवर्क की वास्तुकला को समझता हूं: ऑडियो फाइलों की 10 एमएस खिड़कियों के अनुरूप एक इनपुट परत, जो ऑडियो काम करने के लिए मानक तरीके से पूर्वनिर्मित है; एलएसटीएम कोशिकाओं की एक छिपी हुई परत, और सभी संभव 61 फोन प्रतीकों के एक-गर्म कोडिंग के साथ एक आउटपुट परत।
मेरा मानना है कि मैं LSTM इकाइयों के माध्यम से फॉरवर्ड पास और बैकवर्ड पास के (जटिल लेकिन सीधे) समीकरणों को समझता हूं। वे सिर्फ कैलकुलस और चेन रूल हैं।
इस पेपर को पढ़ने के बाद और कई बार इसी तरह की कई बातें जो मुझे समझ में नहीं आती हैं, वह है जब बैकप्रॉपैगमेंट एल्गोरिथ्म को लागू करना और जब न्यूरॉन्स में विभिन्न भारों को अपडेट करना है।
दो प्रशंसनीय तरीके मौजूद हैं:
1) फ्रेम-वार बैकप्रॉप और अपडेट
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.
या,
2) वाक्य-वार बैकप्रॉप और अपडेट:
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.
ध्यान दें कि यह एक सामान्य (और व्यक्तिगत रूप से प्रासंगिक) उदाहरण के रूप में ग्रेव्स पेपर का उपयोग करते हुए आरएनएन प्रशिक्षण के बारे में एक सामान्य सवाल है : जब अनुक्रमों पर आरएनएन को प्रशिक्षित किया जाता है, तो प्रत्येक टाइमस्टेप पर बैकप्रॉप लागू किया जाता है? क्या वजन हर टाइमस्टेप समायोजित किया जाता है? या, सख्ती से फीड-फॉरवर्ड आर्किटेक्चर पर बैच प्रशिक्षण के लिए एक ढीली सादृश्य में, त्रुटियों को संचित किया जाता है और बैकप्रॉप और वजन अपडेट लागू होने से पहले एक विशेष अनुक्रम में औसतन किया जाता है?
या क्या मैं जितना सोचता हूं उससे कहीं अधिक भ्रमित हूं?