आरएनएन: बीपीटीटी और / या अपडेट कब लागू करें?


16

मैं आरएनएन के उच्च स्तरीय अनुप्रयोग को समझने के लिए (अन्य लोगों के बीच) ग्रोम्स के 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.

ध्यान दें कि यह एक सामान्य (और व्यक्तिगत रूप से प्रासंगिक) उदाहरण के रूप में ग्रेव्स पेपर का उपयोग करते हुए आरएनएन प्रशिक्षण के बारे में एक सामान्य सवाल है : जब अनुक्रमों पर आरएनएन को प्रशिक्षित किया जाता है, तो प्रत्येक टाइमस्टेप पर बैकप्रॉप लागू किया जाता है? क्या वजन हर टाइमस्टेप समायोजित किया जाता है? या, सख्ती से फीड-फॉरवर्ड आर्किटेक्चर पर बैच प्रशिक्षण के लिए एक ढीली सादृश्य में, त्रुटियों को संचित किया जाता है और बैकप्रॉप और वजन अपडेट लागू होने से पहले एक विशेष अनुक्रम में औसतन किया जाता है?

या क्या मैं जितना सोचता हूं उससे कहीं अधिक भ्रमित हूं?

जवाबों:


26

मुझे लगता है कि हम आवर्तक तंत्रिका जाल (RNN) के बारे में बात कर रहे हैं जो हर समय कदम पर एक आउटपुट का उत्पादन करते हैं (यदि आउटपुट केवल अनुक्रम के अंत में उपलब्ध है, तो यह केवल अंत में बैकप्रॉप चलाने के लिए समझ में आता है)। इस सेटिंग में आरएनएन को अक्सर समय (बीपीटीटी) के माध्यम से छंटनी किए गए बैकप्रोपैजेशन का उपयोग करके प्रशिक्षित किया जाता है, जो अनुक्रम के 'विखंडन' पर क्रमिक रूप से कार्य करता है। प्रक्रिया इस तरह दिखती है:

  1. फॉरवर्ड पास: अगले टाइम स्टेप्स के माध्यम से , इनपुट की गणना, हिडन, और आउटपुट स्टेट्स।क1
  2. नुकसान की गणना करें, पिछले समय के चरणों में सारांशित करें (नीचे देखें)।
  3. बैकवर्ड पास: पिछले टाइम स्टेप्स को जमा करते हुए, सभी मापदंडों को खोने वाले लॉस के ग्रेडिएंट की गणना करें (इसमें इन टाइम स्टेप्स के लिए सभी एक्टीवेशन को स्टोर करने की आवश्यकता होती है)। क्लिप ग्रेडिएंट एक्सप्लोडिंग ग्रेडिएंट प्रॉब्लम (शायद ही कभी होता है) से बचने के लिए।क2
  4. अद्यतन पैरामीटर (यह हर बार कदम पर एक बार होने के बावजूद, एक बार होता है)।
  5. यदि एक लंबे अनुक्रम के कई विखंडू प्रसंस्करण करते हैं, तो अंतिम समय चरण में छिपे हुए राज्य को संग्रहीत करें (अगले चंक की शुरुआत के लिए छिपे हुए राज्य को इनिशियलाइज़ करने के लिए उपयोग किया जाएगा)। यदि हम अनुक्रम के अंत तक पहुँच चुके हैं, तो स्मृति / छुपी हुई स्थिति को रीसेट करें और अगले अनुक्रम की शुरुआत में जाएं (या उसी अनुक्रम की शुरुआत, यदि केवल एक ही है)।
  6. चरण 1 से दोहराएँ।

क1क2क1=क2क1=क2क2>क1

क1क1

क2क2क2समय कदम क्योंकि छिपी हुई इकाइयाँ इस अवधि से परे जानकारी संग्रहीत कर सकती हैं (उदाहरण के लिए मिकोलोव 2012 और इस पोस्ट को देखें )।

क1क2

क11क2क1क2क1क2संभव है; मैं नीचे कुछ उदाहरण सूचीबद्ध करूंगा।

काटे गए बीपीटीटी (प्रक्रिया, प्रेरणा, व्यावहारिक मुद्दों) का वर्णन करने वाले संदर्भ:

  • सटस्क्वर (2013) । प्रशिक्षण आवर्तक तंत्रिका नेटवर्क।
  • मिकोलोव (2012) । सांख्यिकीय भाषा मॉडल तंत्रिका नेटवर्क पर आधारित है।
    • क1क2
    • क1
    • अद्यतन प्रति बार एक बार करने से बेहतर है (जो अस्थिर हो सकता है)
  • विलियम्स और पेंग (1990) । आवर्तक नेटवर्क प्रक्षेपवक्र के ऑन-लाइन प्रशिक्षण के लिए एक कुशल ढाल-आधारित एल्गोरिथ्म।
    • एल्गोरिथ्म का मूल (?) प्रस्ताव
    • क1क2ज'जक2≥क1
    • क1=1

काटे हुए BPTT का उपयोग करने वाले अन्य उदाहरण:

  • (कर्पथी 2015)। चार-rnn।
  • ग्रेव्स (2014) । आवर्तक तंत्रिका नेटवर्क के साथ अनुक्रम उत्पन्न करना।
    • क1=क2=10010,000
  • सक एट अल। (२०१४) । बड़ी शब्दावली भाषण मान्यता के लिए दीर्घकालिक अल्पकालिक स्मृति आधारित आवर्तक तंत्रिका नेटवर्क आर्किटेक्चर।
    • क1=क2=20
  • ओलिवियर एट अल। (२०१५) है । बिना पीछे के ऑनलाइन आवर्ती नेटवर्क का प्रशिक्षण।
    • क1=क2=15
  • होकेरेटर और श्मिटुबेर (1997) । लंबी अवधि की स्मृति।
    • वे LSTM के लिए एक संशोधित प्रक्रिया का वर्णन करते हैं

यह एक उत्कृष्ट जवाब है, और मेरी इच्छा है कि मैं इस मंच पर खड़ा था ताकि इसके लिए पर्याप्त इनाम दिया जा सके। विशेष रूप से उपयोगी k1 बनाम k2 की ठोस चर्चा है जो मेरे दो मामलों को अधिक सामान्य उपयोग, और उसी के संख्यात्मक उदाहरणों के संदर्भ में संदर्भ देने के लिए है।
— नोवाक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.