ट्रांसफर लर्निंग पर एक त्वरित गाइड और इसे अपने तंत्रिका नेटवर्क पर कैसे लागू किया जाए

छवि वर्गीकरण और प्राकृतिक भाषा प्रसंस्करण के उदाहरण

स्पैनिश में भी उपलब्ध | टैंबिने डिसोनिबल एन एस्पनॉल

दीप लर्निंग की दुनिया में हाल ही में हासिल किए गए महान विकास को कई कारकों के संघ के बिना समझाया नहीं जा सकता है, जैसे कि प्रसंस्करण टूल का विकास और लोकतंत्रीकरण, नए प्लेटफार्मों और रूपरेखाओं की शुरूआत, या तंत्रिका को बेहतर बनाने के लिए कई तकनीकों का आगमन। नेटवर्क प्रशिक्षण। लेकिन प्रभावशीलता या सटीकता के संदर्भ में हमें एक महत्वपूर्ण कारक मिलता है जिसने कंप्यूटर विजन या प्राकृतिक भाषा प्रसंस्करण क्षेत्रों में क्रांति ला दी है। इस लेख में मैं समझाता हूँ कि स्थानांतरण लर्निंग क्या है और उपयोग के कुछ मामले हैं।

Unsplash पर डौग लिंस्टेड द्वारा फोटो

नोट: मैं जो यहां बताता हूं, उसमें से अधिकांश मैंने इसे सैन फ्रांसिस्को के विश्वविद्यालय में जेरेमी हावर्ड द्वारा पढ़ाए गए कॉडर्स कोर्स के लिए दीप लर्निंग से सीखा था।

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

पहला बड़ा लाभार्थी: कंप्यूटर विजन

एक पल के लिए कल्पना कीजिए कि हम बिल्ली के नस्लों के बीच अंतर करने के लिए, छवि वर्गीकरण की समस्या का सामना कर रहे हैं।

ब्रैडी बंच, बिल्ली संस्करण

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

ऐसा तब होता है जब हम पहले से ही बेहद इमेजनेट के डेटासेट पर प्रशिक्षित मॉडल को अपनाते हैं, जो वर्तमान में 14 मिलियन से अधिक छवियों और लगभग 22,000 अलग-अलग लेबल रखता है। शायद सबसे अच्छा ज्ञात मामला ResNet वास्तुकला है, 2015 में ImageNet द्वारा किए गए छवि मान्यता प्रतियोगिता के विजेता। पूर्व-प्रशिक्षित मॉडल के समान मापदंडों के साथ समान वास्तुकला का उपयोग करने का तथ्य हमारे नेटवर्क को कई चीजों को पहचानने की क्षमता देगा। शुरुआत से, जो प्रशिक्षण के समय को भी कम करेगा। प्रारंभिक बिंदु के रूप में इमेजनेट के डेटा के इस उपयोग का मतलब कंप्यूटर विज़न क्षेत्र में एक जबरदस्त छलांग है।

ImageNet के डेटा का एक नमूना

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

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

उदाहरण (गणित)

एक तरकीब जो मैंने Fast.ai पाठ्यक्रम से सीखी थी: जब हम पहली बार मूल चित्रों के कम संस्करणों के साथ अपने मॉडल को प्रशिक्षित करते हैं, और उसके बाद हम इसे बड़ी छवियों के साथ प्रशिक्षित करते हैं, तो स्थानांतरण सीखने के परिणामों को लागू करते समय बहुत सुधार किया जा सकता है। परिणामों में सुधार होता है क्योंकि हमारे नेटवर्क की आंखों के लिए यह एक अलग डेटासेट की तरह लगता है। इस तकनीक को प्रगतिशील आकार के रूप में जाना जाता है, और यह 64x64 पिक्सेल की न्यूनतम छवि आकार के लिए काम करता है।

स्थानांतरण सीखने के साथ तंत्रिका नेटवर्क के लिए प्रशिक्षण रणनीति

ट्रांसफर लर्निंग का उपयोग करके किसी भी नेटवर्क को प्रशिक्षित करते समय हम लगभग सामान्य प्रक्रिया का पालन कर सकते हैं। हम 2-चरण की रणनीति लागू करेंगे:

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

दूसरे चरण में हम ठीक समायोजन चलाकर मॉडल को बेहतर बनाने का प्रयास करेंगे। पहली बात हम अपने मूल्यों को थोड़ा समायोजित करने के लिए आधार परतों से मापदंडों को अनफ्रीज करना चाहते हैं। हम विभिन्न परतों के माध्यम से अधिकतम सीखने की दर के लिए एक सीमा का चयन करेंगे ताकि आधार परतों का वजन मुश्किल से बदल जाए, जबकि अंतिम भार में अधिक संशोधन मार्जिन होता है (हालांकि यह पहले चरण की तुलना में कम होगा)। हम और अधिक युगों के लिए अपने जाल को प्रशिक्षित करेंगे; मूल रूप से जब तक सत्यापन त्रुटि लगातार खराब हो जाती है।

प्राकृतिक भाषा प्रसंस्करण के लिए स्थानांतरण सीखना

प्राकृतिक भाषा प्रसंस्करण (एनएलपी) क्षेत्र में कुछ साल पहले मिले कठोर सुधारों के पीछे मुख्य कारण ट्रांसफर लर्निंग भी था।

हम एक आधार से शुरू करते हैं: आमतौर पर हमारे डेटासेट एक विशिष्ट विषय के भीतर सीमित होंगे, और यह हमें भाषा के पीछे की जटिलता को समझने की अनुमति देने के लिए पर्याप्त बड़ा नहीं होगा।

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

प्राकृतिक भाषा प्रसंस्करण इतना आसान नहीं है

इस उदाहरण और इसी तरह की अन्य समस्याओं के लिए उठाए गए कदम निम्नलिखित होंगे:

1. प्रारंभिक बिंदु के रूप में अधिक सामान्य पाठ कार्य में एक पूर्व-प्रशिक्षित मॉडल चुनें (या एक नया बनाएं और प्रशिक्षित करें)। एनएलपी में हम एक भाषा मॉडल के रूप में जाना जाता है का उपयोग करेंगे, जो उदाहरण के लिए एक वाक्य में अगले शब्द की भविष्यवाणी करने की कोशिश करता है, जैसा कि हम भविष्य कहनेवाला कीबोर्ड में देख सकते हैं। इस कार्य के लिए हमारे आसपास की भाषा और दुनिया का गहरा ज्ञान होना आवश्यक है; n- ग्राम के साथ काम करना (शब्द जो आमतौर पर एक साथ दिखाई देते हैं) पहले की तरह पर्याप्त नहीं है ताकि वाक्यों को जारी रखने के लिए आवश्यक क्षमता हासिल कर सकें। लेकिन ... क्या होगा अगर हम विकिपीडिया से लिए गए लेखों के एक बड़े ढेर जैसे बड़े डेटासेट का उपयोग करके डीप लर्निंग लागू करते हैं? यह एक अच्छा विचार है! अगले शब्द का अनुमान लगाना हमारे अंतिम वर्गीकरण कार्य के लिए बहुत उपयोगी नहीं होगा, लेकिन इसे प्राप्त करके हम भाषा के बहुत मूल्यवान ज्ञान और वास्तविकता के बारे में जानेंगे जहाँ इसे लागू किया जाता है। यादृच्छिक मापदंडों के साथ शुरू करने से बहुत बेहतर है, है ना?

जब तक हमारी समस्या या डोमेन नहीं बदलता है, तब तक यह पहला कदम दोहराया नहीं जाएगा, जब तक कि एक ही भाषा का उपयोग न किया जाए।

2. ट्रांसफर लर्निंग लागू करके भाषा मॉडल को परिष्कृत करें, ताकि एक नया शब्द बनाया जा सके जो अगले शब्द की भविष्यवाणी करने में अच्छा हो लेकिन हमारे विशिष्ट डोमेन के भीतर हो; इस मामले में फिल्म समीक्षा। हम अपने डेटासेट के साथ नेट को फ़ीड करेंगे, जिसे लक्ष्य कॉर्पस भी कहा जाता है, और यह टोकनाइजेशन (न्यूनतम इकाइयों या टोकन में पाठ का विभाजन), सामान्यीकरण और संख्यात्मकता (विशेष टोकन के साथ सावधान रहना) को लागू करेगा। परीक्षण नमूनों सहित सभी उपलब्ध डेटा का उपयोग करने की सिफारिश की गई है; चूंकि उनके लेबल (जो वर्गीकरण के लिए उपयोग किए जाएंगे) को अगले शब्द की भविष्यवाणी करने की आवश्यकता नहीं है। हम सभी नमूने जोड़ेंगे और उदाहरण के लिए मॉडल को मान्य करने के लिए कुल का 10% आरक्षित करेंगे।

पूर्ण मॉडल रखने की कोई आवश्यकता नहीं है; यह एनकोडर के साथ पर्याप्त है, जो वह हिस्सा है जिसने भाषा सीखी (और वह नहीं जो अगला शब्द उत्पन्न करता है)।

अब तक हमारे पास स्व-पर्यवेक्षित सीखने के रूप में जाना जाता है, मानव-लेबल नमूनों का उपयोग करने की कोई आवश्यकता नहीं है, क्योंकि डेटासेट में पहले से ही उन्हें शामिल किया गया है। हमारे मामले में मॉडल सीखेगा कि फिल्म समीक्षा कैसे लिखी जाती है, भले ही यह पता चले कि वे सकारात्मक या नकारात्मक हैं।

3. हमारे विशेष कार्य (सकारात्मक और नकारात्मक समीक्षाओं के बीच अंतर करने के लिए) के लिए विशिष्ट क्लासिफायरियर बनाएं, जो पिछले मॉडल को सीखा है उसे स्थानांतरित करना (यह मॉडल भी उसी डेटा के आधार पर किसी भी अन्य क्लासिफायरियर के लिए मान्य होगा)।

तेजी से स्थानांतरण छवि। दाई

पहले चरण में हम केवल संलग्न परतों को प्रशिक्षित करेंगे। हम एक दूसरे चरण में प्रशिक्षण जारी रखेंगे, लेकिन एक बार में पूरे नेटवर्क को अनफ्रेंड किए बिना, जैसा कि हमने छवि वर्गीकरण के लिए किया था; पहले हम आधार आर्किटेक्चर की अंतिम परतों को अनफ्रीज करेंगे और इसे थोड़ी देर के लिए प्रशिक्षित करेंगे ... फिर हम कुछ और लेयर्स को अनलॉक करेंगे और दूसरी बिट को प्रशिक्षित करेंगे ... और इस तरह जब तक कि यह पूरी तरह से अनफ्रीज न हो जाए और इसे एक आखिरी बार के लिए प्रशिक्षित करें।

इस बिंदु के बाद परिणामी मॉडल पहले से ही यह पता लगाने में सक्षम होगा कि समीक्षा सकारात्मक है या नकारात्मक :)

निष्कर्ष

जब हम चित्र या पाठ से संबंधित मशीन सीखने की समस्या पर काम करते हैं, तो हमारे तंत्रिका नेटवर्क मापदंडों के आरंभ के लिए स्थानांतरण अधिगम पर विचार करना हमेशा सुविधाजनक होता है।

इन क्षेत्रों में तैयार की गई समस्याओं को हल करने के लिए, हम कई पूर्व प्रशिक्षित मॉडलों के साथ गिनती करते हैं जो हमारे लिए बहुत उपयोगी होंगे; हमें केवल सही चयन करना है:

  • कंप्यूटर विज़न: पायट्रैक, केरस के लिए मॉडल
  • प्राकृतिक भाषा प्रसंस्करण: ट्रांसफार्मर ([*] बीईआरटी, जीपीटी -2,…), यूएलएमआईएफटी, आदि।
एर्नी, एल्मो और बर्ट

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

PS- फास्टै का उपयोग करके पूर्ण उदाहरणों के लिए इन पायथन नोटबुक पर एक नज़र डालें: छवि वर्गीकरण + IMDB समीक्षा वर्गीकरण।

मुझे आशा है यह आपको पसंद आया है! #Yottabytes की सदस्यता लें ताकि आप इस तरह के लेखों को याद न करें :)