neural learning algorithms error correction

 

यह पोस्ट समझने के लिए पुरानी कड़ियाँ पढ़ी हुई होनी आवश्यक हैं । 

सब कड़ियाँ न भी पढ़ी हों तो भाग “तीन” अवश्य पढ़ लीजिये इस भाग से पहले ।

 

(अनुवाद सहायता के लिए आदरणीय गिरिजेश राव जी को आभार)

 

 

पुराने भाग 1234  


यह नीला भाग पिछले भागों की पुनरावृत्ति है । चाहें तो इसे पढ़ें या न पढना चाहें तो छोड़ कर आगे 

बढ़ जाएँ । 


———————————————————————————————-

पिछले भाग में हमने देखा की सीखने के प्रकार और सीखने की विधियाँ अलग अलग  हैं ।

 

सीखने के प्रकार (paradigms) उन तरीकों को कहते हैं , जिनसे न्यूरल नेटवर्क अपने आस पास के माहौल से उसके बारे में जानकारी / संज्ञान हासिल करता है : ये थे 

1. Learning with a teacher (गुरु की मदद से सीखना)
2. Learning without teacher with supervision (with critic ) (आलोचक / समीक्षक की सहायता से गुरु के बिना सीखना )
3. Unsupervised learning (स्वयं सीखना)


सीखने की विधि (algorithms) उन तरीकों को कहते हैं जिन्हें न्यूरल नेटवर्क बाहर से जानी हुई बातों को अपने भीतर कैसे समझता / सीखता / याद रखता है । जैसे हम मनुष्य भी – 

** स्कूल में टीचर ने सिखा दिया कि ” 5×8 = 40, or 2^4=2.2.2.2 = 16″ तो : 

** कोई इसे समझेगा कि संख्या 5 को अपने आप से 8 बार जोड़ा जाए तो परिणाम 40 आएगा । 

** या समझेगा कि, 2 को अपने आप से 4 बार गुणा किया जाए तो परिणाम 16 आयेगा। 

** कोई इसे समझने का प्रयास नहीं करेगा – याद कर लेगा / रट्टा मार लेगा । 

हर किसी के सीखने की प्रक्रिया अलग हो सकती है, या एक भी हो सकती है । 

 

न्यूरोन की बनावट और काम करनेके तरीके पर मैंने तीसरे भाग (लिंक) में विस्तृत चर्चा की थी । जो इसे जानना चाहते हैं उनके लिए यहाँ बहुत ही संक्षेप में फिर से लिख रही हूँ । जिन्हें याद ही है वे इस नीले अक्षरों वाले भाग को छोड़ कर आगे बढ़ जाएँ । जो इससे अधिक जानना चाहें वे तीसरे भाग को फिर एक बार पढ़ लें ।

:

[

artificial neuron कुछ ऐसा होता है । यह natural वाले से बहुत ही कमतर है – किन्तु working की नक़ल करता है ।

Artificial  Neuron 

 

१.ये जो inputs दीख रहे हैं – ये असल inputs हैं । इनमे से जो इनपुट अभी मौजूद हो वह “1” से और जो मौजूद न हो वह “0” से दर्शाया जाता है । Bias वाला इनपुट (पूर्वाग्रह – श्रंखला की पहली तीन पोस्ट्स देखें) हमेशा ही “1” से दर्शाया जाता है ।

२.इस एक नयूरोन का सिर्फ एक ही output है – निर्णय, कि “हाँ” यह करना है /या फिर / “नहीं” – यह नहीं करना है)।

३.हर इनपुट को कितना और कैसा (+ या -) महत्व (वजन, weight ) दिया जाएगा – नयूरोन हर उदाहरण से सीखता है ।

४.यह सीखना अब तक के अनुभव की आधार पर होता है – यह वजन अनुभव के साथ बदलता है ।

५.जो इनपुट इस neuron के output के साथ में सकारात्मक रूप से काम करें, उन inputs का इस neuron में + दिशा में महत्व बढ़ता जाता है, और जो इस output के साथ न हों / विरुद्ध हों, उनका वजन  दिशा में बढ़ता है ।

६.हर इनपुट को अभी तक के वजन से गुना कर के, ये सारी चीज़ें (असर) SUMMING NODE (योग ग्रंथि ) पर जोड़ी जाती हैं ।

७.activation function का काम है इस जोड़ को (जो + या – , एक से कम या एक से अधिक, हो सकता है ) {+ या -१} तक लिमिट (सीमित) करना। (अर्थात (+ = हाँ) या (- = ना) में उत्तर बनाना ) यदि योग/ जोड़ शून्य या उससे अधिक हो तो उत्तर होगा “हाँ” (=+1), और यदि योग शून्य से कम हो तो उत्तर होगा नहीं (= -1)

 

—————————————-

इसे तीसरे भाग में एक घुटने चलने वाले बच्चे के माँ के साथ रोजमर्रा के सीखने के तरीकों से समझाया था । आप वहां देख सकते हैं ।

]

———————————

अब आगे : 

न्यूरल नेटवर्क्स मानवीय सीखने की प्रक्रियाओं को ही फोलो करते हैं । ये मुख्यतः 5 तरीके हैं :

 

1. Error correction learning (गलतियों से उन्हें सुधारने के प्रयास कर के सीखना)

2. Hebbian learning ( हेब एक biologist थे – उन्होंने मानव सीखने की प्रक्रियाओं पर रीसर्च की थी

                               – उनकी बताई विधि)

3. Memory based learning (रट कर याददाश्त से काम करना, बिना समझे  )

4. Stochastic learning (works on probabilitie theory  – यह संभावनाओं के सिद्धांतों पर काम करती है)

5. Competetive learning (प्रतियोगिता में जीतने के प्रयासों से सीखना)

 

इस भाग में सिर्फ error correction learning देखेंगे ।

कृपया इसे कठिन या गणितात्मक मान कर सरसरी तौर पर न पढ़ें, तब यह कठिन लगेगा । एक बार धीरे धीरे पढ़ें, मुझे विश्वास है समझ में आ जायेगी यह प्रक्रिया । 

—————————————————-

Error correction learning : यह चित्र देखिये (कोई भी चित्र क्लिक से बड़ा कर के देखा जा सकता है )

इसे सरल रखने के लिए , फिर से वही पुराना वाला ही उदाहरण ले रही हूँ । और सिर्फ दो ही इनपुट रख रही हूँ – एक खिलौना, और दूसरा गर्म कुकर ।  

1. न्यूरल नेटवर्क है एक घुटने चलने वाला बालक – जो परिवेश के बारे में सीख रहा है । उसे निर्णय लेना सीखना है कि “इस वस्तु को मुझे छूना है, या नहीं छूना है ?” (हाँ = +1, ना = -1)

2. desired response वह है जो असल में होना चाहिए, जो परिवेश को पहले से जानने वाला व्यक्ति उस इनपुट के साथ निर्णय लेता ।

3. Input 1 = एक खिलौना – (वातावरण को जानने वाला कहेगा कि हाँ बच्चे को यह छूना चाहिए )

4. Input 2 = गर्म कुकर – जिससे बच्चे का हाथ जल सकता है ।(वातावरण को जानने वाला कहेगा कि नहीं – बच्चे को यह नहीं छूना चाहिए )

बच्चे (जैसा हम सब जानते ही हैं) हर चीज़ को छूना / पकड़ना चाहते हैं । तो present weight हर इनपुट (आवक) के लिए +1 ही है , ऐसा हम मान लेते हैं ।

5. जो इनपुट अभी मौजूद है , वह एक (1) है, बाकी सब इनपुट 0 (शून्य) हैं । अर्थात बच्चा एक समय में एक ही इनपुट के बारे में अपने अनुभव से सीखेगा , कि उस चीज़ को छूना है या नहीं छूना है । 


अब एक एक कर के अलग अलग तीन परिस्थितयां देखते हैं :

————

पहली स्थिति में – खिलौना मौजूद है, कुकर नहीं है , अभी कुछ सीखा नहीं है ।

सामने खिलौना है ।

 

input 1: खिलौना मौजूद है (1)

input 2: कुकर नहीं है (0) ।

शाखाओं के weights : सीखने से पहले – बच्चे सामने दिखती हुई हर चीज़ छूना चाहते हैं – तो सभी weight अभी “+1” हैं ।

Desired Output “+1” है – हाँ – बच्चे को खिलौना लेना चाहिए ।

 

तो चित्र कुछ ऐसा है : (चित्र को बड़ा करना चाहें तो उसे क्लिक करें )

 

* ऊपर की शाखा से (खिलौने से) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (1) x (+1) = 1

* नीचे की शाखा से (कुकर से ) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (0) x (+1) = 0

 

* तो योग बना 1+0 = 1

* योग शून्य से अधिक है । तो एक्टिवेशन फंक्शन से आउटपुट होगा +1 , अर्थात “हाँ” ।

 

* इच्छित आउटपुट (निर्गम / परिणाम ) भी “हाँ” ही था । सो दोनों में कोई फर्क नहीं है

त्रुटी =  एरर = शून्य ।

* एरर को हर एक इनपुट के वजन को सुधारने / बदलने के लिए प्रयुक्त किया जाता है

 

* शोधन = करेक्शन= (इनपुट)x(एरर) द्वारा तय होता है

* जब एरर शून्य है तो वजन या भार में सुधार होगा (0)x (इनपुट) = 0 , अर्थात

जब एरर (गलती) शून्य होगी तो चाहे वह इनपुट उस वक्त कार्यरत (present ) था, या नहीं था – किसी भी इनपुट शाखा के वजन में में कोई भी बदलाव नहीं आएगा ।

 

तो इस पूरी प्रक्रिया के बाद, खिलौने के लिए बच्चे के मन में कोई बदलाव नहीं आएगा । वह पहले भी इसे छूना चाहता था, छूता भी था – और अब भी वही जारी रहेगा ।

—————

दूसरी स्थिति : गर्म कुकर मौजूद है,  खिलौना नहीं है, अभी कुछ सीखा नहीं है 

input 1: खिलौना नहीं है (0)

input 2: गर्म कुकर मौजूद है (1)

weights :

 

शाखाओं के weights : सीखने से पहले – बच्चे सामने दिखती हुई हर चीज़ छूना चाहते हैं – तो सभी weight अभी “+1” ही हैं ।

Desired output (इच्छित परिणाम / निर्गम ) है “-1” अर्थात बच्चे को कुकर नहीं छूना चाहिए ।

चित्र अब ऐसा बनेगा :

 

 

* ऊपर की शाखा से (खिलौने से) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (0) x (+1) = 0

* नीचे की शाखा से (कुकर से ) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (1) x (+1) = 1

 

* तो योग बना 1+0 = 1

* योग शून्य से अधिक है । तो एक्टिवेशन फंक्शन से आउटपुट होगा +1 – अर्थात “हाँ” । तो बच्चा कुकर को छुएगा ।

 

*  इच्छित आउटपुट “नहीं” (= -1) था ।

सो इच्छित (desired ) और actual (वास्तविक) आउटपुट, दोनों में फर्क है

(यह एरर बच्चे को हाथ की जलन से आएगा , कृपया इसे अन्यथा न लें, मैं किसे बच्चे को जलाने की बात नहीं कर रही, सिर्फ सीखने की प्रक्रिया समझा रही हूँ)

* एरर = त्रुटी = इच्छित आउटपुट – वास्तविक आउटपुट

* तो एरर हुआ (-1) – (+1) = -2

 

* एरर को हर एक इनपुट के वजन को सुधारने / बदलने / संशोधित करने के लिए प्रयुक्त किया जाता है

* सुधार = करेक्शन= (इनपुट)x(एरर) द्वारा

* ऊपरी शाखा में

सुधार = करेक्शन = (इनपुट)x (एरर) = (0 खिलौना मौजूद नहीं है)x (-2) = 0

अर्थात जो इनपुट मौजूद नहीं है, उसके वजन में कोई बदलाव नहीं आएगा ।

* नीचे वाली शाखा में

सुधार = करेक्शन = (इनपुट)x (एरर) = (1 कुकर मौजूद है )x (-2) = -2

****** तो कुकर का नया वजन बना

पुराना वजन +सुधार = (+1) + (-2) = -1

* तो इस पूरी प्रक्रिया के बाद, खिलौने के लिए बच्चे के मन में कोई बदलाव नहीं आएगा, बच्चा पहले भी खिलौने को छूना चाहता था, छूता भी था – और अब भी वही जारी रहेगा । लेकिन कुकर के विषय में वजन +1 से बदल कर -1 हो गया – जिससे अगली बार बच्चा इसे नहीं छूना चाहेगा । 

————————————————————

 

तीसरी स्थिति : गर्म कुकर – एक बार जलने के कारण सीख चुकने के बाद 

input 1: खिलौना नहीं है (0)

input 2: गर्म कुकर मौजूद है (1)

weights : अब सीख चुकने के बाद वजन हैं खिलौने के लिए +1 और कुकर के लिए -1

Desired output (इच्छित उत्तर) है -1 अर्थात बच्चे को कुकर नहीं छुना चाहिए ।

चित्र अब भी ऐसा ही बनेगा , किन्तु वजन अलग हैं :

 

 

 

* ऊपर की शाखा से (खिलौने से) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (0) x (+1) = 0

* नीचे की शाखा से (कुकर से ) योग ग्रंथि पर आगत है (इनपुट)x (वजन) = (1) x (-1) = -1

 

* तो योग बना 0+(-1) = -1

* योग शून्य से कम है । तो एक्टिवेशन फंक्शन से आउटपुट होगा -1 – अर्थात “नहीं ” । तो बच्चा कुकर को नहीं छुएगा 

 

* इच्छित आउटपुट भी “नहीं” (= -1) था । सो इच्छित और एक्चुअल आउटपुट, दोनों में फर्क नहीं है(बच्चे को जलन महसूस नहीं करनी पड़ेगी क्योंकि उसने कुकर को नहीं छुआ है )

* एरर = इच्छित आउटपुट – एक्चुअल आउटपुट = (-1) – (-1) = 0

 

* एरर को हर एक इनपुट के वजन को सुधारने / बदलने के लिए प्रयुक्त किया जाता है

* सुधार = करेक्शन= (इनपुट)x(एरर) द्वारा , एरर शून्य होने से आगे सुधार शून्य ही रहेगा, और वजन नहीं बदलेंगे

* तो इस पूरी प्रक्रिया के बाद, खिलौने के लिए बच्चे के मन में कोई बदलाव नहीं आएगा, बच्चा पहले भी खिलौने को छूना चाहता था, छूता भी था – और अब भी वही जारी रहेगा ।  कुकर को नहीं छूना चाहता था, वहां भी वैसा ही वजन बना रहेगा ।

—————————————————

 

सीखने की इस प्रक्रिया को एरर करेक्शन लर्निंग कहते हैं । 

 

आशा है आप लोग इसे समझ पाए होंगे । मुझे यह विषय बहुत रोचक लगता है सो शेयर कर रही हूँ ।

 

जारी …

Posted on December 1, 2012, in Uncategorized. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: