8

हाय दोस्तों: मैं यह सुनिश्चित करने की कोशिश कर रहा हूं कि कैसे हमारे इनपुट सेट के आकार के रूप में VowpalWabbit की "स्थिति" को बनाए रखा जाता है। एक ठेठ मशीन सीखने के माहौल में, यदि मेरे पास 1000 इनपुट वैक्टर हैं, तो मैं उन सभी को एक साथ भेजने की उम्मीद करता हूं, मॉडल निर्माण चरण को पूरा करने के लिए प्रतीक्षा करें, और फिर नई भविष्यवाणियां बनाने के लिए मॉडल का उपयोग करें।VowpalWabbit: मतभेद और मापनीयता

वीडब्ल्यू में, ऐसा लगता है कि एल्गोरिदम की "ऑनलाइन" प्रकृति इस प्रतिमान को वास्तविक समय में अधिक प्रदर्शन करने और समायोजित करने में सक्षम बनाती है।

1) इस वास्तविक समय मॉडल संशोधन को कैसे लागू किया गया है?

2) क्या वीडब्ल्यू समय के साथ कुल इनपुट डेटा आकार के संबंध में संसाधनों को बढ़ाता है? यही है, क्योंकि मैं अपने वीडब्लू मॉडल (जब यह छोटा होता है) में अधिक डेटा जोड़ता है, तो क्या वास्तविक समय समायोजन गणना लंबे समय तक लेना शुरू हो जाती है जब फीचर वेक्टर इनपुट की संचयी # 1000s, 10000 या लाखों तक बढ़ जाती है?

+0

यह निर्भर करता है कि * "[उच्च] कुल इनपुट डेटा आकार समय के साथ * * क्या है। यदि आप स्पष्ट सुविधाओं का उपयोग कर रहे हैं, तो यदि "अधिक डेटा" का अर्थ है "वर्गीकरण में अधिक स्तर", और विशेष रूप से यदि आप उच्च-आदेश इंटरैक्शन चालू करते हैं, तो आपको हैश टकराव मिलते हैं जो सटीकता को प्रभावित करते हैं, इसलिए हाँ आपको अंततः ' बी 'हैश बिटडेपथ, और इस प्रकार फीचर हैश के लिए आपकी मेमोरी आवश्यकता है। हालांकि वजन वेक्टर (जो स्मृति में रखा जाता है) अभी भी छोटा है। – smci

उत्तर

19

बस कार्लोस्ड के अच्छे उत्तर में जोड़ने के लिए।

सुविधाओं है कि vowpal wabbit अलग बनाती है, और यह तेरा-सुविधा के लिए पैमाने पर करने के लिए अनुमति देते हैं में से कुछ (10) डेटा-आकार हैं:

ऑनलाइन वजन वेक्टर: vowpal wabbit मेमोरी weight-vector में रखता है जो अनिवार्य रूप से उस मॉडल के लिए वजन का वेक्टर है जो यह बना रहा है। यही वह है जिसे आप अपने प्रश्न में "राज्य" कहते हैं।

असीम डेटा का आकार: वजन वेक्टर के आकार की विशेषताएं (स्वतंत्र इनपुट चर) की संख्या के लिए आनुपातिक है, नहीं उदाहरण (उदाहरण) की संख्या। यह vowpal wabbit बनाता है, कई अन्य (गैर ऑनलाइन) शिक्षार्थियों, अंतरिक्ष में पैमाने के विपरीत। चूंकि इसे एक सामान्य बैच-शिक्षाकर्ता की तरह स्मृति में सभी डेटा लोड करने की आवश्यकता नहीं है, फिर भी यह डेटा-सेट से सीख सकता है जो स्मृति में फिट होने के लिए बहुत बड़े हैं।

क्लस्टर मोड: vowpal wabbit, एक क्लस्टर में एक से अधिक मेजबान पर चल नोड्स पर एक द्विआधारी पेड़ ग्राफ संरचना भव्य और रूट करने के लिए पत्तियों से all-reduce कमी का उपयोग कर समर्थन करता है।

हैश चाल: vowpal wabbit को रोजगार क्या hashing trick कहा जाता है। सभी फीचर नाम murmurhash-32 का उपयोग करके एक पूर्णांक में डाले गए हैं। इसमें कई फायदे हैं: यह हैश-टेबल प्रबंधन और टकराव से निपटने के लिए बहुत आसान और समय-कुशल नहीं है, जबकि सुविधाओं को कभी-कभी टकराते हैं।यह (अभ्यास में) हजारों विशिष्ट सुविधाओं के साथ एक प्रशिक्षण सेट में फीचर टकराव की एक छोटी संख्या एक अंतर्निहित नियमितकरण अवधि जोड़ने के समान है। यह काउंटर-सहजता से, अक्सर इसे कम करने के बजाय मॉडल सटीकता में सुधार करता है। यह फीचर स्पेस के स्पर्सनेस (या घनत्व) के लिए भी अज्ञेयवादी है। आखिरकार, यह इनपुट फीचर नामों को मनमाने ढंग से स्ट्रिंग्स की अनुमति देता है, जो कि अधिकांश परंपरागत शिक्षार्थियों के विपरीत हैं जिन्हें फीचर नाम/आईडी दोनों की संख्या की आवश्यकता होती है) संख्यात्मक और बी) अद्वितीय।

समानता: vowpal wabbit पार्स चल रहा है और दो अलग-अलग धागे में शिक्षा, उसकी गति को आगे जोड़कर बहु-कोर सीपीयू दोहन करता है। यह vw बनाता है जो डेटा को पढ़ने के रूप में तेज़ी से सीखने में सक्षम हो जाता है। यह पता चला है कि vw में सबसे अधिक समर्थित एल्गोरिदम, सीखने की गति के बजाय, IO गति से उलझन में हैं।

checkpointing और वृद्धिशील सीखने: vowpal wabbit जब तुम सीखना आप डिस्क के लिए अपने मॉडल को बचाने के लिए, और फिर मॉडल लोड और जहां --save_resume विकल्प के साथ दूर छोड़ दिया सीखने जारी रखने के लिए अनुमति देता है।

टेस्ट की तरह त्रुटि अनुमान: औसत नुकसान vowpal wabbit "के रूप में यह हो जाता है" (नमूना में से) अनदेखी पर हमेशा होता है डेटा (*) द्वारा गणना। यह पूर्व-नियोजित होल्ड-आउट से परेशान होने या क्रॉस सत्यापन करने की आवश्यकता को समाप्त करता है। प्रशिक्षण के दौरान आप जो त्रुटि दर देखते हैं वह 'टेस्ट-जैसी' है।

रैखिक मॉडल से परे: vowpal wabbit मैट्रिक्स गुणन (मोटे तौर पर विरल मैट्रिक्स SVD), अव्यक्त Dirichlet आवंटन (LDA), और अधिक सहित कई एल्गोरिदम, का समर्थन करता है। यह टर्म इंटरैक्शन (द्वि-रैखिक, वर्गिक, घन, और फीड-फॉरवर्ड सिग्मोइड न्यूरल-नेट की इकाइयों की निर्दिष्ट संख्या के साथ-साथ-फ्लाई पीढ़ी का भी समर्थन करता है), बहु-वर्ग वर्गीकरण (मूल प्रतिगमन और बाइनरी के अतिरिक्त वर्गीकरण), और अधिक।

गिटूब पर the official vw wiki में ट्यूटोरियल और कई उदाहरण हैं।

(*) एक अपवाद यह है कि यदि आप --passes N विकल्प के साथ एकाधिक पास का उपयोग करते हैं।

+0

मैंने सोचा कि वीडब्ल्यू ने केवल 1 परत तंत्रिका नेटवर्क किया है? (उदाहरण के लिए - 10 न्यूरॉन्स के साथ एक परत के लिए 10 नहीं)। आप बहु-परत नेटवर्क कैसे करेंगे? – Zach

+0

@Zach: मुझे लगता है कि आप सही हैं। मैंने तदनुसार जवाब संपादित किया। धन्यवाद और क्षमा करें। – arielf

+0

एकाधिक कोरों का शोषण करने वाले वीडब्ल्यू के संबंध में, मैं इंप्रेशन वीडब्ल्यू के तहत हूं, केवल एक कोर का उपयोग करता है इससे कोई फर्क नहीं पड़ता कि आपके पास कितने कोर हैं। हां इसमें 2 धागे हैं: I/O के लिए एक और कंप्यूटिंग के लिए एक। बस इतना ही। – piggybox

8

वीडब्ल्यू स्टोकास्टिक ढाल वंश के एक (बहुत) परिष्कृत कार्यान्वयन है। आप स्टोकास्टिक ग्रेडिएंट वंश here

यह पता चला है कि स्टोकास्टिक ग्रेडिएंट वंश का एक अच्छा कार्यान्वयन मूल रूप से I/O बाध्य है, यह तेज़ी से चला जाता है क्योंकि आप इसे डेटा प्राप्त कर सकते हैं, इसलिए वीडब्ल्यू में कुछ परिष्कृत डेटा संरचनाएं हैं डेटा को "संकलित" करने के लिए।

इसलिए उत्तर का जवाब प्रश्न (1) स्टोकैस्टिक ग्रेडिएंट वंश कर रहा है और प्रश्न का उत्तर (2) निश्चित रूप से नहीं है।