समर्थक

मंगलवार, 4 अप्रैल 2017

न्यूरल नेटवर्क के सीखने की प्रक्रियाएं -4

पुराने भाग 1, 2, 3

यह श्रंखला artificial intelligence या neural networks से सम्बंधित है । कमोबेश यह उसी प्रकार होता है, जैसे प्राणियों में सीखना होता है ।

इससे पहले के भागों में हमने देखा कि पूर्वाग्रह क्या होता है, पहचान और निर्णय कैसे होते हैं, और "सीखना" कैसे होता है । इस भाग में हम -

1. सीखने  के प्रकार (learning paradigms ) पर बात करते हैं , और

2. सीखने की विधियों ( learning algorithms ) के नाम देखेंगे (इनकी विस्तृत चर्चा अगले भाग में करूंगी, यह पोस्ट अधिक लम्बी हो जायेगी )।

--------------------------------------------------------------

Learning paradigms : यह वे तरीके हैं, जिनसे न्यूरल नेटवर्क अपने आस पास की बाहरी दुनिया के बारे में जानकारी प्राप्त करता है । यह बाहर की दुनिया के साथ interaction करने के प्रकार हैं, भीतर से सीखने के नहीं ।   इनमे तीन मुख्य प्रकार हैं -

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

-------------------------
1. Learning With Teacher

Learning With Teacher
इस प्रकार की प्रक्रिया इस तरह से काम करती है कि , "शिष्य" और "गुरु" दोनों ही नेटवर्क्स को बाहरी परिवेश से एक ही इनपुट वेक्टर मिलता है, और दोनों अपना अपना निर्णय लेते हैं । फिर दोनों के निर्णय के तुलना की  जाती है  । शिष्य और गुरु नेटवर्क में फर्क क्या है ?? कुछ भी नहीं, सिवाय इसके की , गुरु नेटवर्क पहले बना है, और वह परिवेश के बारे में पहले से सीख चुका है । यही बात इस तरह से देखिये - जीवन में मैं "teacher" के रूप में कार्य कर रही हूँ, और "शिष्यों" को पढ़ाती हूँ । क्या फर्क है मुझमे और उनमे ? सिर्फ - the accident of the date of birth  :) । यदि वे मुझसे 20 साल पहले जन्म लेकर पढ़ आये होते, तो आज वे मुझे पढ़ा रहे होते, मैं उनकी शिष्य होती ।

तो - "गुरु" नेटवर्क परिवेश के बारे में पहले ही सीख चुका है । वह इनपुट के सम्बन्ध में जो भी निर्णय ले वह "सही "निर्णय या desired output माना जाएगा । और शिष्य का निर्णय इसके साथ जांचा जाएगा । यदि तो शिष्य का उत्तर गुरु के उत्तर के साथ मिल रहा हो,. तो शिष्य को कुछ नहीं करना है । किन्तु यदि उत्तर आपस में न मिलें, तब ? तब बदलाव गुरु में नहीं, सिर्फ शिष्य में आने वाला है इस परिस्थिति में, क्योंकि गुरु feedback loop में नहीं है । सोचिये की एक शिक्षक नन्हे बच्चों को
      अ - अनार का,
      आ - आम का,
       इ - इमली का आदि सिखाता है ।

अब परिवेश से इनपुट आता है यह चित्र ---

* यह इनपुट परीक्षा के लिए प्रधानाध्यापक जी ने दिया है -
* यह प्रश्न " teacher" और "student " दोनों को मिला है ।
* Teacher (जो पहले से सीख चुका है, वह "इसके आगे "" (आम का)  अक्षर होना चाहिए" ही कहेगा । 
* यदि
शिष्य भी "" (आम का)  लिखे - तो उसे कोई बदलाव करने की आवश्यकता नहीं क्योंकि "error "सिग्नल शून्य है

* लेकिन
यदि शिष्य "आ " न लिख कर कोई और अक्षर लिखे - तो उसे और सीखना होगा ।

ध्यान दीजिये - इसमें - सारी प्रक्रिया गुरु के सही होने पर निर्भर है यदि गुरु स्वयं ही गलत जानकारी रखता हो, तो वह शिष्य को सही नहीं सिखाएगा, बल्कि उल्टा, शिष्य यदि पहले से थोडा बहुत जानता हो और इसे "आ" कहना चाहे लेकिन गुरु गलती से इसे "अ" मान रहा है - तो शिष्य को जबरदस्ती यह सीखना होगा कि  यह "अ" ही है । ऊपर चित्र में देखिये - गुरु फीडबैक लूप में है ही नहीं - वह नहीं बदलेगा ।

शिष्य तब तक पास नहीं हो सकेगा - जब तक गुरु उसे "सीख चुका" घोषित न करे । { मज़ाक नहीं है यह - हम कर्नाटक में रहते हैं - मेरे बेटे को कई साल पहले यहाँ के एक सर हिंदी पढ़ाते थे जो हिंदी नहीं जानते थे । तो उन्हें मुहावरों के अर्थ सिखाते हुए ऐसे बड़े मज़ेदार (?) किस्से होते रहे । मैं यदि बेटे को सही अर्थ सिखा भेजती भी थी तो वहां लिखने पर उसके अंक कट जाते थे ) कल परसों ही सुज्ञ जी की एक पोस्ट पर यह लिखा मैंने टिप्पणी  में कि आजकल बोर्ड परीक्षाओं में कई शिक्षक खुद नक़ल कराते हैं - तो शिष्यों के यह कैसे सिखाया जाए कि नक़ल करना बुरा है ?

--------------------------

2. Learning without a teacher, in the presence of a critic :

Learning without a teacher, in the presence of a critic  
यह प्रक्रिया ऊपर वाली प्रक्रिया से भिन्न है । पहली बात तो यह है कि शिष्य का उत्तर "गुरु" जांच नहीं रहा है - गुरु तो कोई है ही नहीं । शिष्य को जानने वाले "एक्सपर्ट" से "सलाह" मिल रही है की ऐसा होना चाहिए, ऐसा नहीं । किन्तु वह बाध्य नहीं है इसे मानने के लिए । शिष्य का आउट पुट वापस वातावरण को प्रभावित करता है । और वातावरण क्रिटिक को । तो समय के साथ वातावरण भी बदल सकता है, क्रिटिक भी बदल सकता है, शिष्य भी, और यह भी हो सकता है की दोनों ही न बदलें । जो "reinforcement " है, वह शिक्षण नहीं है । वह सिर्फ एक माहौल है, जो उस समय उन परिस्थितियों में "सही" माना जा रहा है । स्टुडेंट नेटवर्क 100 में से 95 स्थतियों में इसे मान भी लेगा , लेकिन शत प्रतिशत ऐसा नहीं होगा । तो नेटवर्क खुद तो सीखेगा ही, किन्तु सीखते हुए जब वह क्रिटिक से सहमत न होगा, तब नेटवर्क के साथ ही परिवेश भी धीरे धीरे बदलता रहेगा ।

इसके उदाहरण मानवीय सन्दर्भों में । हम जब स्कूल में थे, तब रंग को अंग्रेजी में colour लिखा जाता था । यदि color  लिखा, तो अंक कट जाते थे । लेकिन आज word processors, colour लिखने पर उसे गलत और color को सही बताते हैं । इसी तरह से schedule  को शेड्यूल न पढ़ कर स्केड्यूल पढ़ा जाता है । programme शब्द अब program  बन चुका है । हिंदी फिल्मों की हिरोइन साडी की जगह सलवार कमीज़ पहनने लगी, फिर अब वेस्टर्न ड्रेसेज में ही दिखती है । पिता बूढ़े, थके, सफ़ेद बालों वाले, और धोती कुरते में नहीं, सूटेड बूटेड और कनपटी पर हलकी सफेदी लिए नज़र आते हैं । 

ध्यान दीजिये - विज्ञापनों की माएं भी बदली हैं, परन्तु उतनी नहीं जितनी फिल्मों की । क्योंकि दोनों के टार्गेट औडीएन्स अलग हैं । विज्ञापन अधिकतर गृहिणियों के अपना उत्पाद बेचने के लिए हैं, परिवेश अलग है, क्रिटिक अलग है । तो विज्ञापनों की बेटियां और माएं यदि अधिक ग्लैमरस हुईं, तो अपने दर्शको (उपभोक्ताओं) को दूर कर देंगी । सो वहां परिवेश कम बदला है । वे अब भी थोड़ी मोडर्न तो हैं , लेकिन अल्ट्रा मोडर्न नहीं हैं । लेकिन फिल्म की हिरोइन दर्शकों को टिकट खिड़की पर लाने के लिए है । तो वहां का परिवेश अधिक तेज़ी से बदला, क्योंकि ज्यादा तादाद में "स्टुडेंट" नेटवर्क्स ने परिवेश को समझने वाले  क्रिटिक के विरुद्ध जाने का रिस्क लिया, तो लर्निंग रेट तेज़ रहा । 

----------------------
3. Unsupervised Learning  

Unsupervised Learning 
इसमें कोई किसीको नहीं सिखाता । स्टुडेंट सीखना चाहे और सीख पाए - तो सीखेगा । नहीं, तो नहीं सीखेगा । लेकिन परिवेश कभी नहीं बदलेगा, feedback है ही नहीं । यदि नहीं सीखे, तो survival कठिन है । इसके उदाहरण हैं, जैसा की हमने कहानी सुनी है, मोगली / टार्ज़न की । एक बालक कुछ सीखने समझने की उम्र से पहले ही जंगल में खो जाता है । उसे सिखाने को न वहां गुरु है, न ही क्रिटिक । उसे अपने आप ही सीखना है  ।वह सीखे या न सीखे, परिवेश नहीं बदलने वाला  । कोई उसे बताने वाला भी नहीं की उसने जो सीखा वह सही है, गलत है या कुछ और । वह सीख लेगा, तो जीवित रहेगा, नहीं सीखेगा तो पता नही क्या होगा । यह है अन्सुपर्वाइज्ड लर्निंग ।

--------------------
अगले भाग में हम learning algorithms देखेंगे ।
इनमे प्रमुख हैं -
1. error correction learning,
2. hebbian learning,
3. competetive learning and
4. memory based learning

यदि यह श्रंखला बहुत टेक्नीकल हो रही हो, तो मुझे बताइये । प्रयास तो कर रही हूँ इसे सिम्पल रखने का, पर नहीं जानती की यह कैसा हो पा रहा है  ।

अगले भाग तक तक - विदा ।

पूर्वाग्रह ३ : सीखना

इस शृंखला के पुराने भाग  देखें  :-
-----------------------------------

पिछले दो भागों में हमने पढ़ा कि:

भाग १ -  पूर्वाग्रह का अर्थ है किसी वस्तु / व्यक्ति को देखने या जानने से पूर्व ही उसके बारे में एक धारणा बना लेना । यह पूर्वाग्रह भाषा ज्ञान से भी आता है, हमारे निजी अनुभव से भी बनता है । पूर्वाग्रह के बारे में अक्सर हमारे मन में एक पूर्वाग्रह है कि यह कोई "निंदनीय" चीज़ है, पूर्वाग्रह रखना कोई बुरी बात है । किन्तु यहाँ - इस शृंखला में मैं यह चाहूंगी कि आप इसके प्रति यह पूर्वाग्रह न रखें । यह हमारे पहचान और निर्णय की प्रक्रिया का एक भाग है । हमारे nervous system से ही प्रेरणा लेकर आजकल artificial intellegence के लिए सिस्टम्स बनाये जा रहे हैं - जो artificial neurons का उपयोग करते हैं । इन artificial electronic neurons को भी inputs और पूर्वाग्रह का उपयोग उसी प्रकार करना होता है जैसे हमारे मस्तिष्क की प्रक्रियाओं में होता है । मैंने दो तीन उदाहरण लिए पूर्वाग्रह के - जैसे, ....आम = मीठा पीला फल, .....हिंदी फिल्मों में " माँ " , .... सूर्य, ....चोट, ....दोस्त अदि ।

भाग २ - पूर्वाग्रह का पहचान और निर्णय की प्रक्रिया में क्या योगदान है । जैसे - यदि मैं मई के महीने में फल के बाज़ार में गयी और मुझे दूर से पीले फलों का ठेला दिखा - तो मैंने मान लिया कि यह आम हैं । यह तो पास जा कर ही जान पाऊंगी कि हैं , या नहीं हैं । तो मुझे एक तो यह पहचान करनी है कि यह फल आम है या नहीं, और दूसरा यह image मेरे मन में बने कि यह फल मुझे ख़ुशी की अनुभूति देगा (यदि मुझे आम पसंद हैं तो ) या नहीं (नापसंद हैं तो ) । निर्णय के दो आधार हैं - अभी क्या इनपुट आया और पहले से उस चीज़ के बारे में मेरा अनुभव कैसा रहा । neuron कैसे decide करे ? 
-------------------------------
यह दो चित्र आगे के लेख को समझने में सहायक होंगे - इन्हें याद रखने की आवश्यकता नहीं है - सिर्फ रेफेर करने में काम आयेंगे ।

हमारे शरीर के neuron  का एक उदाहरण यह है ।
natural neuron 


यह जो दोनों और, ऊपर और नीचे टहनियां और जडें सी दीखती हैं - ये हजारों की संख्या में हैं । ये synapse कहलाती हैं और neurons को एक दूसरे से जोडती हैं, और उनमे आपस में संकेत भेजने का भी काम करती हैं । जब जब भी दो neuron आपस में "बात" करते हैं - तो उनके बीच का सम्बन्ध और सुदृढ़ हो जाता है। जो बारम्बार बात करते हैं, उनके सम्बन्ध उतने अधिक प्रगाढ़ होते चले जाते हैं । 

इसके विरुद्ध, जो connection use  नहीं होता, वह कमज़ोर होता जाता है । हर एक neuron दुसरे हज़ारों neurons से इनपुट भी लेता है, और हजारों को output भी देता है । ( आपको शायद आश्चर्य होगा - किन्तु आज इलेक्ट्रोनिक / इंस्ट्रुमेंटेशन इंजिनियर / डॉक्टर हमारी जीभ के neurons - जो हम स्वाद के अनुभव के लिए use करते हैं - उन्हें नेत्रहीन लोगों के देखने के लिए प्रयुक्त करने का प्रयास कर रहे हैं - और कुछ हलकी सफलताएं मिलने भी लगी हैं । 

------------------------------------
artificial neuron कुछ ऐसा होता है - (यह natural वाले से बहुत ही कमतर है - किन्तु basic working को copy करता है ।)
Artificial  Neuron 

१.ये जो inputs दीख रहे हैं - ये असल inputs हैं । 
२.इस एक नयूरोन का सिर्फ एक ही output है ।
३.हर इनपुट को कितना महत्व (वजन, weight ) दिया जाएगा - यह बात न्यूरोन हर उदाहरण से सीखता है ।
४.यह सीखना अब तक के अनुभव की आधार पर होता है - यह वजन अनुभव के साथ बदलता है ।
५.जो इनपुट इस neuron के output के साथ में सकारात्मक रूप से काम करें - उन inputs का इस neuron में + महत्व बढ़ता जाता है, (+१ तक) , और जो इस output के साथ न हों / विरुद्ध हों, उनका घटता जाता है या - में बढ़ता है ( - १ तक)।
६.ये सारी चीज़ें (असर) जोड़ी जाती हैं ।
७.activation function का काम है इस जोड़ को (जो एक से अधिक हो सकता है - +-१ तक लिमिट करना। (अर्थात हाँ या ना में उत्तर बनाना )

----------------------------------------
अब चलते हैं सीखने की प्रक्रिया की ओर - कि हर प्रविष्टि का वजन कैसे निर्धारित होता है और हर बार bias के वजन पर क्या असर होता है | 
-----------------------------------------
एक रोज़मर्रा का उदहारण लेते हैं : सोचिये की यह न्यूरोन एक नन्हा १० - ११ माह का बच्चा है जो घुटने चलता है । उसे कई तरह के अनुभव होते हैं - और अलग अलग स्थितयों के अनुसार सोचिये की उसे "हाँ" या "न" में चुनाव करना सीखना है ।
------------------------------------------------------
एक बच्चे की सीखने की और निर्णय लेने की प्रक्रिया :
१. पहला इनपुट है - गर्म कूकर
२. दूसरा इनपुट है एक बजने वाला खिलौना
३. तीसरा इनपुट - पिता की थाली में परोसा हुआ अचार
..
..
bias (पूर्वाग्रह) बन रहा है इस बारे में कि माँ की बात in general माननी चाहिए, या नहीं माननी चाहिए ।


इनमे से हर एक इनपुट को एक के बाद एक लेते और समझते हैं । हम में से अधिकतर लोगों को ये experience हुए ही हैं - तो समझना आसान होगा ।
इसे पढने से पहले गुणा करने का एक मूलभूत सिद्धांत (जो हम सब जानते ही हैं ) ध्यान में ले आयें ---
        क    (+1).(+1) = +1  दो + संख्या / या दो - संख्या - अर्थात एक सी
        ख   (-1).(-1) = +1     संख्याएं आपस में गुणा हों तो उत्तर + होगा
       ---------------
        ग    (-1).(+1) = -1  अर्थात दो उलट प्रकार की संख्याएं (एक + दूसरी -)
        घ    (+1).(-1) = -1   गुणा हों तो उत्तर - होगा
       ---------------
       अर्थात - नकारात्मक और सकारात्मक (उलट स्वभाव की))संख्याएं आपस में गुणा की जायें तो परिणाम नकारात्मक होता है, और एक ही तरह की संख्याएं गुणा की जाएँ तो सकारात्मक ।
----------------------------------
१.
किचन में गर्म कुकर है - जिसे छूने बच्चे बार बार आगे जाते हैं । माँ मना करती है - बेटा मत छू - हाथ जलेगा। माँ सामने हो तो बच्चे अक्सर मान भी जाते हैं, परन्तु उनमे वह उत्सुकता बनी रहती है - कि छूना है । फिर किसी दिन माँ की नज़र न हो - तो छूते ही हैं - और हाथ में जलन के दर्द का अनुभव उन्हें तुरंत हाथ खींचने पर मजबूर करता है - रोने पर भी । कुछ देर बाद - हाथ धुलने से / दवा देने से राहत हो जाती है । कुछ दिन बच्चे को वह दर्द याद रहता है - और वह कुकर नहीं छूता । फिर यह repeat होता है - शायद अबकी बार किसी गर्म कढाई / गर्म दूध की भगोनी आदि के साथ । तो अनुभव पक्का होता जाता है, याददाश्त प्रगाढ़ होती जाती है ।

अब बच्चे ने दो तरह की बात सीखी - 
         (क) एक यह की किचन में गर्म चीज़ें जो प्लेटफोर्म पर / चूल्हे पर रखी हैं - उन्हें छूना दर्द देता है - तो उन्हें  नहीं छूना है । तो उस input के लिए वजन negative बन गया । 
         (ख) माँ जो कह रही थी - वह मेरे लिए सही था - तो माँ की बात मानने में भलाई है - नकारात्मकता (माँ ने मना किया था ) और नकारात्मकता (दर्द हुआ ) के गुणा होने से सकारात्मक परिणाम  (bias या माँ की बात का वजन बढ़ गया)
-----------------
(२)
दूसरा इनपुट एक बजता हुआ खिलौना है - माँ बच्चे को हंस हंस कर उससे खेलने को दे रही है । बच्चा उसे लेता है - खेलता है - और एन्जॉय करता है - फिर से दो बातें हिया हैं ।
       (क) खिलौने (input ) का वजन positive हो गया । 
       (ख) माँ की बात (bias ) का वजन भी बढ़ा - इस बार सकारात्मक (माँ ने खेलने दिया था) और सकारात्मक (मजा आया खेलने में )  के गुणा होने से + result आया है । 
------------------
(३)
पिता की थाली में चटनी / अचार है - जबकि बच्चे को सिर्फ मीठी / फीकी /  हलकी नमकीन चीज़ें ही मिली हैं । बच्चे के ललचाने पर माँ कहती है - थोडा बड़ा हो जा - फिर मिलेगा । अभी मुह जलेगा । परन्तु बच्चा जिद करता है । फिर थोडा सा अचार चटाना ही पड़ा माता पिता को । उसे मिर्च लगी । अगली बार वह नहीं खाना चाहेगा (कुछ दिन तक ) । फिर से दो बातें हुईं 
         (क) तीखा अचार मुंह में जलन देता है - तो नहीं खाना है - neagtive वजन ।
         (ख) माँ की बात मान लेता तो तकलीफ न होती - bias का वजन फिर बढ़ा ।
-----------------
अब - इनमे से हर एक इनपुट - हर experience (अनुभव ) के बाद अपने ही वजन को प्रभावित कर रहा है - उसे + या - दिशा में बढ़ा रहा है । किस दिशा में - यह इस पर निर्भर है की अनुभव सुखदायी था या दुखदायी ।

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

इस सीखे हुए अनुभव का उपयोग कैसे होगा? एक समय में अक्सर एक ही इनपुट होगा, या तो गर्म कुकर है, या फिर बजने वाला बाजा । तो एक input =+१ है, बाकी के इनपुट शून्य हैं । तो जोड़ जो बनेगा - वह उस एक ही इनपुट के असर से बनेगा । और उसी के हिसाब से परिणाम या तो +१ आएगा (अर्थात हाँ ) या फिर -१ आएगा (अर्थात ना )।

अगले भाग में हम यह देखने का प्रयास करेंगे की यह bias या इनपुट के वजन जो हमने इंसानी दिमाग में देखे समझे - ये artificial neuron में कैसे घटाए और बढाए जाते हैं ।

जारी ........