हामी एआई (AI - Artificial Intelligence), विशेष गरी डीप लर्निङ (Deep Learning) लाई एक जटिल र कठिन कार्यको रूपमा बुझ्छौँ। म यस कुरामा सहमत छु कि डीप लर्निङ कठिन छ, तर यसको मतलब यो होइन कि यसको पछाडि कुनै सहज बुझाइ (Intuition) छैन।
परिचय (Introduction) Link to heading
मेरो विचारमा, सबै कुरा एलन ट्युरिङ (Alan Turing) र उनको ट्युरिङ मेसिन (Turing Machine) बाट सुरु भएको हो। उनले फाइनाइट स्टेट मेसिन (Finite State Machine) को प्रयोगबाट के प्राप्त गर्न सकिन्छ भन्ने सिद्धान्त प्रतिपादन गरे। उनले युनिभर्सल ट्युरिङ मेसिन (Universal Turing Machine) को सिद्धान्त अघि सारे। संक्षेपमा भन्नुपर्दा, यो एउटा फाइनाइट स्टेट मेसिन (Finite State Machine) हो जसले अन्य फाइनाइट स्टेट मेसिनहरूलाई सिमुलेट (Simulate) गर्न सक्छ। यसले यो प्रश्न खडा गर्छ: के मानवहरू फाइनाइट मेसिन (Finite Machine) हुन् त? के हामी कम्प्युटरबाट मानवलाई सिमुलेट (Simulate) गर्न सक्छौँ?
म यसको उत्तरमा पूर्ण रूपमा निश्चित त छैन, तर आउनुहोस् यसलाई प्रयास गरौँ। एक पटकमा एउटा समस्या समाधान गर्नु सुरु गर्नका लागि राम्रो तरिका देखिन्छ।
मेरो डीप लर्निङको परिभाषा (My Deep Learning Definition) Link to heading
यी सैद्धान्तिक पृष्ठभूमिहरू पछि म डीप लर्निङको मेरो आफ्नै परिभाषामा आउन चाहन्छु। मेरो लागि, यो कुनै समस्याको समाधान खोज्न सिक्ने एउटा विधि हो, जसरी एक मानवले आफ्नो पछिल्लो कार्यसम्पादन (Performance) बाट निरन्तर सुधार गर्दै सिक्छ। कुनै समस्यामा निपुणता हासिल गर्न धेरै प्रयासहरू चाहिन्छ, त्यसैले डीप लर्निङ (Deep Learning) का लागि धेरै डाटा (Data) आवश्यक पर्दछ। र हामी सबैलाई थाहा छ कि वर्तमान संसारमा डाटा (Data) भनेको सुन जस्तै बहुमूल्य छ।
समस्याको जटिलताको विश्लेषण (Analysis of Complexity of the problem) Link to heading
ग्राहकबाट समस्या प्राप्त गरेपछि इन्जिनियरको पहिलो काम भनेको समाधानको सम्भाव्यता (Feasibility) विश्लेषण गर्नु हो। आउनुहोस् समस्याको इनपुट (Input) र आउटपुट (Output) लाई हेरौँ। अन्ततः हामीले गर्ने भनेको हाम्रो अध्ययन र जीवनको अनुभवबाट बटुलेका सबै ज्ञानको प्रयोग गरी इनपुटबाट उत्तम सम्भव आउटपुट प्राप्त गर्ने तरिका अनुसार हाम्रो मोडेल (Model) लाई व्यवस्थित गर्नु हो।
इमेज क्याप्सनिङ (Image Captioning) को मामलामा इनपुट (Input) भनेको “इमेज” (Image - चित्र/फोटो) हो। यसका निम्नलिखित विशेषताहरू छन्:
- सामान्यतया आकारमा ठूला हुन्छन्।
- विभिन्न आकारहरूमा (Different sizes) आउँछन्।
- यो कस्तो देखिन्छ भन्ने आधारमा कोड (Code) गरिएको हुन्छ, न कि यसले हाम्रो लागि के अर्थ राख्छ भन्ने आधारमा।
इमेज क्याप्सनिङको आउटपुट (Output) भनेको “वाक्य” (Sentence) हो। यसका निम्नलिखित विशेषताहरू छन्:
- शब्दहरूको अनुक्रम (Sequence of words) को रूपमा सोच्न सकिन्छ।
- यो अनुक्रम जतिसुकै लामो (Any length) पनि हुन सक्छ।
समस्याको बारेमा थप विश्लेषण:
- एउटै इमेजका लागि धेरै वटा सही क्याप्सनहरू (Captions) हुन सक्छन्।
- आउटपुट उत्पन्न गर्नका लागि यसलाई चरणबद्ध नियमहरूको सेटमा कोड (Code) गर्न सकिँदैन किनभने हामी आफैँले यो कसरी गर्छौँ भन्ने हामीलाई थाहा छैन।
- यो केवल मसिन लर्निङ एल्गोरिदम (Machine Learning Algorithm) बाट मात्र समाधान गर्न सकिन्छ।
इमेज क्याप्सनिङको विश्लेषण (Analysis of Image Captioning) Link to heading
हामी केवल मानवले कसरी काम गर्छन् भनेर विचार गरिरहेका छौँ र त्यसलाई कम्प्युटरमा सिमुलेट (Simulate) गर्ने प्रयास गरिरहेका छौँ, त्यसैले हामीले यो कसरी गर्छौँ भनेर अनुमान गर्नु राम्रो विचार हो:
- इनपुट इमेज (Input Image) बाट जानकारी लिनुहोस्।
- सबैभन्दा महत्त्वपूर्ण जानकारी छनोट गर्नुहोस्।
- जानकारीलाई वाक्यको रूपमा प्रस्तुत गर्नुहोस्।
इनपुटको लागि न्युरल नेटवर्क (Neural Network for Input) Link to heading
हामीसँग इनपुटको रूपमा इमेज (Image) भएकोले, हामीले इमेजबाट जानकारी निकाल्न हालसम्म थाहा पाएको सबैभन्दा राम्रो न्युरल नेटवर्क - कन्भोलुसन न्युरल नेटवर्क (Convolution Neural Network - CNN) प्रयोग गर्न सक्छौँ। यसले इमेजबाट जानकारी निकाल्न कन्भोलुसन फिल्टर (Convolution Filter) प्रयोग गर्दछ। कन्भोलुसन न्युरल नेटवर्क (CNN) आफैँमा एउटा ठूलो विषय हो जुन यस ट्यूटोरियलको मुख्य उद्देश्य होइन।
आउटपुटको लागि न्युरल नेटवर्क (Neural Network for Output) Link to heading
हामीलाई आउटपुटको रूपमा शब्दहरूको अनुक्रम (Sequence of words) आवश्यक छ। इनपुट लिएर आउटपुट दिने साधारण नेटवर्कले यो गर्न सक्दैन, त्यसैले हामीलाई रिकरेन्ट न्युरल नेटवर्क (Recurrent Neural Network - RNN) चाहिन्छ जसले दुईवटा इनपुट (Context र Input word) लिन्छ र दुईवटा आउटपुट (Context र Output word) दिन्छ।
इनपुट र आउटपुट जडान गर्ने तरिका (Connecting Input and Output) Link to heading
अन्तमा, हामीले CNN प्रयोग गरेर इमेजबाट प्राप्त जानकारीलाई RNN मा पठाउनु पर्छ। आउनुहोस् CNN को आउटपुटलाई RNN को लागि कन्टेक्स्ट भेक्टर (Context Vector) को रूपमा पास गरौँ।
यो इमेज क्याप्सनिङ प्रणाली (Image Captioning System) मा हुने प्रक्रियाको एक सरलीकृत संस्करण हो।
सुरु कसरी गर्ने (How to get Started) Link to heading
म सधैँ ओपन सोर्स (Open Source) को समर्थक रहँदै आएको छु। मोजिला टेक स्पिकर (Mozilla Tech Speaker) को रूपमा, म मोजिलाले गरिरहेको कामको चर्चा गर्न चाहन्छु: मोजिलामा स्पिच र मसिन लर्निङ अनुसन्धान। हामी:
- डाटा (Data) संकलन गर्छौँ
- नि:शुल्क कोड (Free code) उपलब्ध गराउँछौँ
- प्रयोग गर्नका लागि एपीआई (API) दिन्छौँ
कोडको परीक्षण र परिमार्जन गर्नु नै सुरु गर्ने उत्तम तरिका हो।