चलो मान लेते हैं कि मैं एन सैंपल वाले डेटासेट का उपयोग करके स्टोचैस्टिक ग्रेडिएंट डिसेंट रिग्रेस एल्गोरिथ्म को प्रशिक्षित करना चाहता हूं। चूंकि डेटासेट का आकार तय हो चुका है, इसलिए मैं डेटा T का पुनः उपयोग करूंगा। प्रत्येक पुनरावृत्ति या "युग" में, मैं प्रत्येक प्रशिक्षण नमूने का उपयोग एक बार पूरी तरह से यादृच्छिक रूप से पूरे प्रशिक्षण सेट को पुनः व्यवस्थित करने के बाद करता हूं।
मेरा कार्यान्वयन पायथन और नेम्पी पर आधारित है। इसलिए, वेक्टर ऑपरेशन का उपयोग करके गणना समय में उल्लेखनीय रूप से कमी आ सकती है। बैच ग्रैडिएंट डिसेंट के वेक्टरकृत कार्यान्वयन के साथ आना काफी सीधा है। हालांकि, स्टोकेस्टिक क्रमिक वंश के मामले में मैं यह पता नहीं लगा सकता कि बाहरी लूप से कैसे बचा जाए जो प्रत्येक युग में सभी नमूनों से गुजरता है।
क्या कोई स्टोकेस्टिक क्रमिक वंश के किसी भी वेक्टरकृत कार्यान्वयन को जानता है?
संपादित करें : मुझसे पूछा गया है कि अगर मेरे डेटासेट का आकार तय हो तो मैं ऑनलाइन ग्रेडिएंट डिसेंट का उपयोग क्यों करना चाहूंगा।
[1] से, कोई यह देख सकता है कि ऑनलाइन ग्रेडिएंट डिसेंट कम से कम एम्पिरियर कॉस्ट के लिए बैच ग्रेडिएंट डिसेंट की तुलना में धीमे को परिवर्तित करता है। हालांकि, यह अपेक्षित लागत के न्यूनतम में तेजी से परिवर्तित होता है, जो सामान्यीकरण प्रदर्शन को मापता है। मैं अपनी विशिष्ट समस्या में इन सैद्धांतिक परिणामों के प्रभाव का परीक्षण करना चाहता हूं, क्रॉस सत्यापन के माध्यम से। वेक्टर किए गए कार्यान्वयन के बिना, मेरा ऑनलाइन ग्रेडिएंट डीसेंट कोड बैच ग्रेडिएंट डीसेंट एक की तुलना में बहुत धीमा है। यह उल्लेखनीय रूप से क्रॉस सत्यापन प्रक्रिया को पूरा करने में लगने वाले समय को बढ़ाता है।
संपादित करें : मैं यहाँ मेरे ऑन-लाइन ढाल वंश कार्यान्वयन के छद्म कोड को शामिल करता हूं, जैसा कि फिस्ट द्वारा अनुरोध किया गया है। मैं एक प्रतिगमन समस्या हल कर रहा हूं।
Method: on-line gradient descent (regression)
Input: X (nxp matrix; each line contains a training sample, represented as a length-p vector), Y (length-n vector; output of the training samples)
Output: A (length-p+1 vector of coefficients)
Initialize coefficients (assign value 0 to all coefficients)
Calculate outputs F
prev_error = inf
error = sum((F-Y)^2)/n
it = 0
while abs(error - prev_error)>ERROR_THRESHOLD and it<=MAX_ITERATIONS:
Randomly shuffle training samples
for each training sample i:
Compute error for training sample i
Update coefficients based on the error above
prev_error = error
Calculate outputs F
error = sum((F-Y)^2)/n
it = it + 1
[१] "लार्ज स्केल ऑनलाइन लर्निंग", एल। बॉटौ, वाई। ले। क्यूएनएन, एनआईपीएस २००३।