आप सही हैं कि 2012 के बाद से एक गहन एनएन की मूल अवधारणा नहीं बदली है। लेकिन गहरे एनएन को प्रशिक्षित करने के तरीकों में कई तरह के सुधार हुए हैं जिन्होंने उन्हें गुणात्मक रूप से अधिक शक्तिशाली बना दिया है। आज भी कई प्रकार के आर्किटेक्चर उपलब्ध हैं। मैंने 2012 के बाद से कुछ सुधारों को सूचीबद्ध किया है, प्रशिक्षण सुधारों और वास्तुकला सुधारों द्वारा समूहीकृत:
हार्डवेयर : सबसे स्पष्ट परिवर्तन मूर के कानून की सिर्फ अनुभवहीन प्रगति है। आज कंप्यूटिंग शक्ति अधिक उपलब्ध है। क्लाउड कंप्यूटिंग भी लोगों के लिए एक बड़ी रिग खरीदने की आवश्यकता के बिना बड़े एनएन को प्रशिक्षित करना आसान बनाता है।
सॉफ्टवेयर : गहन सीखने के लिए खुला स्रोत सॉफ्टवेयर वास्तव में 2012 से बहुत सुधार हुआ है। 2012 में वापस थीनो, शायद कैफ भी था। मुझे यकीन है कि कुछ अन्य लोग भी हैं। लेकिन आज हमारे पास TensorFlow, Torch, Paddle, और CNTK भी हैं, जिनमें से सभी बड़ी तकनीकी कंपनियों द्वारा समर्थित हैं। यह हार्डवेयर बुलेट बिंदु से निकटता से जुड़ा हुआ है क्योंकि इनमें से कई प्लेटफ़ॉर्म जीपीयू पर प्रशिक्षित करना आसान बनाते हैं, जो प्रशिक्षण के समय में काफी तेजी लाते हैं।
सक्रियण कार्य : ReLU सक्रियण कार्यों का उपयोग शायद इन दिनों अधिक व्यापक है, जो प्रशिक्षण को बहुत ही गहरे नेटवर्क में आसान बनाता है। शोध पक्ष में, अध्ययन की एक विस्तृत विविधता का अध्ययन किया जा रहा है, जिसमें टपका हुआ ReLU , पैरामीट्रिक ReLU और मैक्सिकन इकाइयाँ शामिल हैं ।
अनुकूलन एल्गोरिदम : आज के आसपास अधिक अनुकूलन एल्गोरिदम हैं। Adagrad और Adadelta को क्रमशः 2011 और 2012 में पेश किया गया था। लेकिन अब हमारे पास एडम ऑप्टिमाइज़र भी है और यह एक बहुत लोकप्रिय विकल्प बन गया है।
ड्रॉपआउट : पिछले कुछ वर्षों में, तंत्रिका नेटवर्क को प्रशिक्षित करते समय ड्रॉपआउट नियमितीकरण के लिए एक मानक उपकरण बन गया है। ड्रॉपआउट एनएन के लिए एक कम्प्यूटेशनल रूप से सस्ती रूप है। सामान्य तौर पर, डेटासेट के यादृच्छिक नमूनों पर प्रशिक्षित मॉडल का एक सेट पूरे डेटासेट पर प्रशिक्षित एकल मॉडल को बेहतर बनाएगा। एनएन के लिए यह स्पष्ट रूप से करना मुश्किल है क्योंकि वे प्रशिक्षित करने के लिए बहुत महंगे हैं। लेकिन इसी तरह के प्रभाव को प्रत्येक चरण पर बस "बेतरतीब ढंग से" न्यूरॉन्स को बंद करके अनुमान लगाया जा सकता है। एनएन में अलग-अलग उपसमूह अलग-अलग डेटा सेट पर प्रशिक्षित हो रहे हैं, और इस तरह अलग-अलग चीजें सीखते हैं। एन्सेम्बलिंग की तरह, यह ओवर एनटिंग के लिए समग्र एनएन को और अधिक मजबूत बनाता है। ड्रॉपआउट एक सरल तकनीक है जो लगभग हर मामले में प्रदर्शन में सुधार करती है, इसलिए यह '
बैच सामान्यीकरण : यह कुछ समय के लिए जाना जाता है कि एनएनएस सामान्यीकृत डेटा पर सबसे अच्छा ट्रेन करता है --- अर्थात, शून्य माध्य और इकाई भिन्नता है। एक बहुत ही गहरे नेटवर्क में, जैसा कि डेटा प्रत्येक परत से गुजरता है, आदानों को बदल दिया जाएगा और आम तौर पर एक वितरण में बहाव होगा जिसमें इस अच्छे, सामान्यीकृत संपत्ति का अभाव है। इससे इन गहरी परतों में सीखना अधिक कठिन हो जाता है, क्योंकि इसके परिप्रेक्ष्य से, इसके इनपुट में शून्य माध्य और इकाई विचरण नहीं होता है। माध्य बहुत बड़ा हो सकता है और विचरण बहुत छोटा हो सकता है। बैच के सामान्यीकरण ने शून्य मीन माध्य और इकाई विचरण के लिए इनपुट को एक परत में परिवर्तित करके इसे संबोधित किया। यह बहुत गहन NN को प्रशिक्षित करने में अत्यधिक प्रभावी प्रतीत होता है।
सिद्धांत : हाल ही में जब तक, यह सोचा गया था कि गहन एनएन को प्रशिक्षित करने के लिए कठिन कारण यह है कि अनुकूलन एल्गोरिदम स्थानीय मिनीमा में फंस जाते हैं और वैश्विक मिनीमा को खोजने और बाहर निकलने में परेशानी होती है। पिछले चार वर्षों में कई अध्ययन हुए हैं जो यह संकेत देते हैं कि यह अंतर्ज्ञान गलत था (उदाहरण के लिए, गुडफेलो एट अल। 2014))। एक गहरी एनएन के बहुत ही उच्च आयामी पैरामीटर स्थान में, स्थानीय मिनीमा वैश्विक मिनीमा से बहुत खराब नहीं होता है। समस्या वास्तव में यह है कि जब प्रशिक्षण, एनएन खुद को एक लंबे, विस्तृत पठार पर पा सकता है। इसके अलावा, ये पठार एक खड़ी चट्टान में अचानक समाप्त हो सकते हैं। यदि एनएन छोटे कदम उठाता है, तो सीखने में बहुत लंबा समय लगता है। लेकिन अगर कदम बहुत बड़े हैं, तो यह एक विशाल ढाल से मिलता है जब यह चट्टान में चलता है, जो पहले के सभी कार्यों को समाप्त कर देता है। (यह ढाल क्लिपिंग के साथ बचा जा सकता है, 2012 के बाद का एक और नवाचार।)
अवशिष्ट नेटवर्क : शोधकर्ता अवशिष्ट नेटवर्क का उपयोग करके अविश्वसनीय रूप से गहरे नेटवर्क (1000 से अधिक परतों!) को प्रशिक्षित करने में सक्षम रहे हैं । यहां विचार यह है कि प्रत्येक परत पिछली परत से न केवल आउटपुट प्राप्त करती है, बल्कि मूल इनपुट भी। यदि ठीक से प्रशिक्षित किया जाता है, तो यह प्रत्येक परत को पिछली परतों से कुछ अलग सीखने के लिए प्रोत्साहित करता है, ताकि प्रत्येक अतिरिक्त परत जानकारी को जोड़ सके।
वाइड और डीप नेटवर्क : वाइड, उथले नेटवर्क में केवल अपने इनपुट और उनके आउटपुट के बीच मैपिंग को याद रखने की प्रवृत्ति होती है। डीप नेटवर्क सामान्य रूप से बहुत बेहतर करते हैं। आमतौर पर आप अच्छा सामान्यीकरण चाहते हैं, लेकिन कुछ परिस्थितियां हैं, जैसे सिफारिश प्रणाली, जिसमें सामान्यीकरण के बिना सरल याद रखना भी महत्वपूर्ण है। जब उपयोगकर्ता किसी सामान्य क्वेरी को बनाते हैं, तो इन मामलों में आप अच्छे, ठोस समाधान प्रदान करना चाहते हैं, लेकिन जब उपयोगकर्ता कोई विशिष्ट क्वेरी बनाते हैं तो बहुत ही सटीक समाधान। चौड़े और गहरे नेटवर्क इस कार्य को अच्छी तरह से पूरा करने में सक्षम हैं।
न्यूरल ट्यूरिंग मशीन : पारंपरिक आवर्तक एनएन (चाहे वे मानक आरएनएन हों या एलएसटीएम की तरह अधिक परिष्कृत हों) की कमी यह है कि उनकी स्मृति कुछ हद तक "सहज" है। वे भविष्य में पैदा होने वाली छिपी परत की सक्रियता को बचाकर पिछले इनपुट को याद रखने का प्रबंधन करते हैं। हालांकि, कभी-कभी यह कुछ डेटा को स्पष्ट रूप से संग्रहीत करने के लिए अधिक समझ में आता है। (यह एक कागज़ के टुकड़े पर फोन नंबर लिखने के बीच का अंतर हो सकता है। याद रहे कि यह संख्या 7 अंकों के आसपास थी और वहाँ 3 के जोड़े थे और शायद बीच में कहीं पानी का छींटा भी था।) न्यूरल ट्यूरिंग मशीन।इस मुद्दे को हल करने का प्रयास करने का एक तरीका है। विचार यह है कि नेटवर्क मेमोरी बैंक के कुछ तथ्यों को स्पष्ट रूप से जानना सीख सकता है। यह करने के लिए सीधा नहीं है क्योंकि बैकप्रॉप एल्गोरिदम को अलग-अलग कार्यों की आवश्यकता होती है, लेकिन मेमोरी एड्रेस को डेटम करना एक स्वाभाविक रूप से असतत ऑपरेशन है। नतीजतन, न्यूरल ट्यूरिंग मशीनें विभिन्न मेमोरी पतों के वितरण के लिए थोड़ा-बहुत डेटा कम करके इसके आसपास हो जाती हैं। ये आर्किटेक्चर अभी तक सुपर काम नहीं करते हैं, लेकिन यह विचार बहुत महत्वपूर्ण है। इनमें से कुछ संस्करण भविष्य में संभवतः व्यापक हो जाएंगे।
जननिक प्रतिकूल नेटवर्क : GANs एक बहुत ही रोमांचक विचार है जो पहले से ही बहुत अधिक व्यावहारिक उपयोग को देख रहा है। यहां विचार दो एनएन को एक साथ प्रशिक्षित करने का है: एक जो अंतर्निहित संभावना वितरण (एक जनरेटर) से नमूने उत्पन्न करने की कोशिश करता है, और एक वह जो वास्तविक डेटा बिंदुओं और जनरेटर द्वारा उत्पन्न नकली डेटा बिंदुओं (एक विवेचक) के बीच अंतर करने की कोशिश करता है। इसलिए, उदाहरण के लिए, यदि आपका डेटासेट बेडरूम के चित्रों का संग्रह हैजनरेटर बेडरूम की अपनी तस्वीरें बनाने की कोशिश करेगा, और अगर यह बेडरूम की असली तस्वीरों या बेडरूम की नकली तस्वीरों को देख रहा है, तो विवेचक यह पता लगाने की कोशिश करेगा। अंत में, आपके पास दो बहुत उपयोगी एनएन हैं: एक जो कि बेडरूम या बेडरूम नहीं होने के रूप में छवियों को वर्गीकृत करने में वास्तव में अच्छा है, और एक जो बेडरूम की यथार्थवादी छवियों को उत्पन्न करने में वास्तव में अच्छा है।