ऑनलाइन सीखने में नियमितीकरण और सुविधा स्केलिंग?


15

मान लीजिए कि मेरे पास लॉजिस्टिक रिग्रेशन क्लासिफायर है। सामान्य बैच सीखने में, मुझे ओवरफिटिंग को रोकने और अपने वजन को छोटा रखने के लिए एक नियमित पद मिलेगा। मैं भी अपनी सुविधाओं को सामान्य और स्केल करूँगा।

एक ऑनलाइन शिक्षण सेटिंग में, मुझे डेटा की एक सतत स्ट्रीम मिल रही है। मैं प्रत्येक उदाहरण के साथ एक क्रमिक वंश अद्यतन करता हूं और फिर इसे छोड़ देता हूं। क्या मैं ऑनलाइन सीखने में फीचर स्केलिंग और नियमितीकरण शब्द का उपयोग करने वाला हूं? यदि हाँ, तो मैं कैसे कर सकता हूँ? उदाहरण के लिए, मेरे पास पैमाने के खिलाफ प्रशिक्षण डेटा का एक सेट नहीं है। मेरे पास अपने नियमितीकरण पैरामीटर को ट्यून करने के लिए सत्यापन सेट नहीं है। यदि नहीं, तो क्यों नहीं?

मेरे ऑनलाइन सीखने में, मुझे लगातार उदाहरणों की एक धारा मिलती है। प्रत्येक नए उदाहरण के लिए, मैं एक भविष्यवाणी करता हूं। फिर अगले समय के कदम में, मुझे वास्तविक लक्ष्य मिलता है और क्रमिक वंश अद्यतन करता है।

जवाबों:


9

ओपन-सोर्स प्रोजेक्ट vowpal wabbit में ऑनलाइन SGD का कार्यान्वयन शामिल है जो कि वज़न अपडेट को प्रभावित करने वाले 3 अतिरिक्त कारकों की मक्खी (ऑनलाइन) गणना द्वारा बढ़ाया जाता है। इन कारकों को उनके संबंधित कमांड लाइन विकल्पों द्वारा सक्षम / अक्षम किया जा सकता है (डिफ़ॉल्ट रूप से तीनों को चालू किया --sgdजाता है, विकल्प, उन सभी को बंद कर देता है, अर्थात: "क्लासिक" SGD पर वापस आ जाता है)।

3 SGD बढ़ाने के विकल्प हैं:

  • --normalized प्रत्येक सुविधा के पैमाने के लिए समायोजित अद्यतन
  • --adaptive अनुकूली ढाल (AdaGrad) (Duchi, हज़ान, गायक) का उपयोग करता है
  • --invariant महत्त्वपूर्ण अद्यतन (करमपताज़ीकिस, लैंगफ़ोर्ड)

साथ में, वे सुनिश्चित करते हैं कि ऑनलाइन सीखने की प्रक्रिया के लिए एक 3-तरफ़ा स्वचालित मुआवजा / समायोजन होता है:

  • प्रति-सुविधा स्केलिंग (बड़े बनाम छोटे मान)
  • सुविधा-महत्व के आधार पर प्रति-सुविधा अधिगम दर का क्षय
  • उदाहरणों में सुविधा के प्रसार / दुर्लभता के लिए प्रति अनुकूली अधिगम दर समायोजन

अपशॉट यह है कि सीखने वाले को कम पक्षपाती और अधिक प्रभावी बनाने के लिए विभिन्न विशेषताओं को पूर्व-सामान्य करने या स्केल करने की कोई आवश्यकता नहीं है।

इसके अलावा, vowpal wabbit भी नियमितीकरण विकल्पों के साथ छंटनी ढाल वंश के माध्यम से ऑनलाइन नियमितीकरण लागू करता है:

  • --l1 (एल 1-नोर्म)
  • --l2 (एल 2-नोर्म)

कई डेटा-सेटों पर इन एन्हांसमेंट्स के साथ मेरा अनुभव यह था कि जब उनमें से प्रत्येक को कोड में पेश किया गया था, तो उन्होंने मॉडल सटीकता और चिकनी अभिसरण में काफी सुधार किया।

इन संवर्द्धन से संबंधित अधिक विवरण के लिए कुछ शैक्षणिक पेपर यहां दिए गए हैं:


Arielf - आप तीन संवर्द्धन बंद कर देते हैं (के माध्यम से --sgd) SGD जाता है कि 11 स्लाइड पर दिखाया किया जा रहा है github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf ताकि तो power_t और initial_t प्रासंगिक हो ?
B_Miner

1
B_miner: जहां तक ​​मैं समझता हूं --power_tऔर --initial_tवैश्विक (प्रति फीचर नहीं) स्वतंत्र विकल्प हैं। --sgdकेवल "क्लासिक" SGD पर लौट आता है। IOW: --sgdकेवल रद्द --invariant, --normalizedऔर --adaptive(जो अलग, प्रति-सुविधा सीखने-दरों मतलब)
arielf

क्या आप जानते हैं कि समानांतर अतुल्यकालिक फैशन में इन अद्यतनों को करने का एक तरीका है (जैसा कि अतुल्यकालिक SGD में किया जाता है)? ऐसा लगता है कि कई श्रमिकों के साथ VW प्रत्येक कार्यकर्ता के मॉडल को प्रत्येक पास के अंत में औसत करते हैं। यह कैसे करना है पर कोई कागजात / सॉफ्टवेयर पॉइंटर्स?
JC1


1

हाँ, आपको निश्चित रूप से नियमितीकरण की आवश्यकता है ... यह ढाल मूल (और सीखने की दर को 1 / C करने में मदद करता है)

उदाहरण के लिए देखें SGD-QN पेपर http://leon.bottou.org/papers बोटू के पेपर

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


ऑनलाइन सीखने से, मुझे एक उदाहरण मिलता है और एक भविष्यवाणी करता हूं। अगले समय के कदम पर, मुझे अपने उदाहरण के लिए वास्तविक लक्ष्य मिलता है और एक क्रमिक वंश अद्यतन करता है।
सियामई

तब यह होना चाहिए जैसा कि मैंने सुझाव दिया है - आप विभिन्न नियमितीकरण पैरामीटर के साथ क्लासिफायर का एक गुच्छा चलाते हैं और प्रत्येक क्लासिफायरियर की भविष्यवाणी त्रुटियों का ट्रैक रखते हैं।
seanv507

मुझे यकीन नहीं है कि आप 1 / C सीखने की दर को शुरू करने से क्या मतलब है। C क्या है? आप समर्थन वेक्टर मशीनों के बारे में बात कर रहे हैं? मैं लॉजिस्टिक रिग्रेशन के बारे में बात कर रहा हूं जहां रेगुलराइजर का गुणांक लैम्ब्डा है। मुझे नहीं पता कि सीखने की दर के साथ क्या करना है।
सियामी जूल

हाँ l2 नियमितीकरण पैरामीटर, C, लैम्ब्डा या जो भी हो। यह कुछ है जो बॉटलौ के sgdqn पेपर में एक तरफ उल्लेख किया गया है, और मुझे लगता है कि कहीं और बेहतर समझा। मूल रूप से आपकी सीखने की दर आपकी त्रुटि सतह का 1 / वक्रता (हेसियन का उलटा) होनी चाहिए .. अब यदि आपकी त्रुटि सतह है
seanv507

1
क्या मुझे फीचर स्केलिंग करने की भी आवश्यकता है? ऑनलाइन सेटिंग में ऐसा कैसे करें?
सियामी जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.