पेरीसेप्टन नियम बनाम ग्रैडिएंट डिसेंट बनाम स्टोचैस्टिक ग्रैडिएंट डिसेंट कार्यान्वयन के बारे में स्पष्टीकरण


15

मैंने विभिन्न पेरेसेप्ट्रॉन कार्यान्वयन के साथ थोड़ा सा प्रयोग किया और यह सुनिश्चित करना चाहता हूं कि क्या मैं "पुनरावृत्तियों" को सही ढंग से समझ पाऊं।

रोसेनब्लैट का मूल अवधारणात्मक नियम

जहाँ तक मुझे समझ में आता है, रोसेनब्लैट के क्लासिक परसेप्ट्रोन एल्गोरिथ्म में, वेटिंग को एक साथ हर प्रशिक्षण उदाहरण के बाद अपडेट किया जाता है

Δw(t+1)=Δw(t)+η(targetactual)xi

जहाँ यहाँ सीखने का नियम है। और लक्ष्य और वास्तविक दोनों थ्रेशोल्ड (-1 या 1) हैं। मैंने इसे 1 नमूने के रूप में लागू किया = प्रशिक्षण नमूने पर 1 पास, लेकिन प्रत्येक प्रशिक्षण नमूने के बाद वजन वेक्टर को अपडेट किया गया।eta

और मैं "वास्तविक" मान की गणना करता हूं

sign(wwTxx)=sign(w0+w1x1+...+wdxd)

स्टोचैस्टिक ग्रेडिएंट डिसेंट

Δw(t+1)=Δw(t)+η(targetactual)xi

परसेप्ट्रॉन नियम के रूप में भी, हालांकि, targetऔर actualवास्तविक मूल्यों पर सीमा नहीं है। इसके अलावा, मैं प्रशिक्षण नमूने पर पथ के रूप में "पुनरावृत्ति" गिनता हूं।

दोनों, SGD और क्लासिक अवधारणात्मक नियम इस रैखिक रूप से वियोज्य मामले में परिवर्तित होते हैं, हालांकि, मुझे क्रमिक वांछनीय कार्यान्वयन के साथ परेशानी हो रही है।

ढतला हुआ वंश

यहां, मैं प्रशिक्षण नमूने पर जाता हूं और प्रशिक्षण नमूने पर 1 पास के लिए वजन में परिवर्तन करता हूं और इसके बाद वजन को अद्यतन करता हूं, जैसे कि

प्रत्येक प्रशिक्षण नमूने के लिए:

Δwnew+=Δw(t)+η(targetactual)xi

...

प्रशिक्षण सेट पर 1 पास करने के बाद:

Δw+=Δwnew

मैं सोच रहा हूँ, अगर यह धारणा सही है या अगर मुझे कुछ याद आ रहा है। मैंने सीखने की दरों में विभिन्न (असीम रूप से छोटे तक) की कोशिश की, लेकिन कभी भी इसे अभिसरण का कोई संकेत दिखाने के लिए नहीं मिला। इसलिए, मैं सोच रहा हूं कि क्या मैंने sth को गलत समझा। यहाँ।

धन्यवाद, सेबस्टियन

जवाबों:


20

Δ

perceptron:

ww(टी+1)=ww(टी)+ηटी(y(मैं)-y^(मैं))एक्सएक्स(मैं)

y^(i)=sign(wwxx(i))ith

इसे निम्नलिखित "परसेप्ट्रॉन लॉस" फंक्शन * पर स्टोकेस्टिक अविकसित वंश विधि के रूप में देखा जा सकता है:

परसेप्ट्रोन हानि:

Lww(y(i))=max(0,y(i)wwxx(i))

Lww(y(i))={0}, if y(i)wwxx(i)>0{y(i)xx(i)}, if y(i)wwxx(i)<0[1,0]×y(i)xx(i), if wwxx(i)=0

चूँकि perceptron पहले से ही SGD का एक रूप है, इसलिए मुझे यकीन नहीं है कि क्यों WD अद्यतन perceptron अद्यतन से अलग होना चाहिए। जिस तरह से आपने डब्ल्यूडब्ल्यूई कदम को लिखा है, गैर-थ्रेशोल्ड वैल्यू के साथ, यदि आप एक उत्तर की भी भविष्यवाणी करते हैं तो आपको नुकसान होता है सही ढंग से। यह बुरी बात है।

आपका बैच ग्रेडिएंट स्टेप गलत है क्योंकि आप "+ =" का उपयोग कर रहे हैं जब आपको "=" का उपयोग करना चाहिए। वर्तमान भार प्रत्येक प्रशिक्षण उदाहरण के लिए जोड़े जाते हैं । दूसरे शब्दों में, जिस तरह से आपने इसे लिखा है,

ww(टी+1)=ww(टी)+Σमैं=1n{ww(टी)-ηटीएलww(टी)(y(मैं))}

यह क्या होना चाहिए:

ww(टी+1)=ww(टी)-ηटीΣमैं=1nएलww(टी)(y(मैं))

इसके अलावा, एल्गोरिथ्म के लिए प्रत्येक और किसी भी डेटा सेट पर अभिसरण करने के लिए, आपको एक शेड्यूल पर अपनी सीखने की दर को कम करना चाहिए, जैसे ηटी=η0टी


* परसेप्ट्रोन एल्गोरिथ्म बिल्कुल वैसा ही नहीं है , जैसा कि SSGD परसेप्ट्रोन लॉस है। आमतौर पर एसएसजीडी में, टाई के मामले में (wwएक्सएक्स(मैं)=0), एल=[-1,0]×y(मैं)एक्सएक्स(मैं), इसलिए 00एल, इसलिए आपको एक कदम नहीं उठाने दिया जाएगा। तदनुसार, अवधारणात्मक हानि को कम से कम किया जा सकता हैww=00, which is useless. But in the perceptron algorithm, you are required to break ties, and use the subgradient direction y(i)xx(i)L if you choose the wrong answer.

So they're not exactly the same, but if you work from the assumption that the perceptron algorithm is SGD for some loss function, and reverse engineer the loss function, perceptron loss is what you end up with.


Thank you Sam, and I do apologize for my messy question. I don't know where the deltas come from, but the "+=" was the the thing that went wrong. I completely overlooked that part. Thanks for the thorough answer!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.