CNTK - तंत्रिका नेटवर्क (NN) अवधारणाओं

यह अध्याय CNTK के संबंध में तंत्रिका नेटवर्क की अवधारणाओं से संबंधित है।

जैसा कि हम जानते हैं कि, न्यूरॉन्स की कई परतों का उपयोग तंत्रिका नेटवर्क बनाने के लिए किया जाता है। लेकिन, सवाल यह उठता है कि CNTK में हम एक NN की परतों को कैसे मॉडल कर सकते हैं? यह परत मॉड्यूल में परिभाषित परत कार्यों की सहायता से किया जा सकता है।

परत समारोह

दरअसल, CNTK में, परतों के साथ काम करने से एक अलग कार्यात्मक प्रोग्रामिंग महसूस होता है। परत समारोह एक नियमित कार्य की तरह दिखता है और यह पूर्वनिर्धारित मापदंडों के एक सेट के साथ एक गणितीय कार्य करता है। आइए देखते हैं कि हम लेयर फंक्शन की मदद से सबसे बेसिक लेयर टाइप Dense कैसे बना सकते हैं।

उदाहरण

निम्नलिखित मूल चरणों की सहायता से, हम सबसे मूल परत प्रकार बना सकते हैं -

Step 1 - सबसे पहले, हमें CNTK के परतों के पैकेज से घने परत फ़ंक्शन को आयात करने की आवश्यकता है।

from cntk.layers import Dense

Step 2 - CNTK रूट पैकेज से आगे, हमें input_variable फ़ंक्शन को आयात करना होगा।

from cntk import input_variable

Step 3- अब, हमें input_variable फ़ंक्शन का उपयोग करके एक नया इनपुट चर बनाने की आवश्यकता है। हमें इसका आकार भी प्रदान करना होगा।

feature = input_variable(100)

Step 4 - अंत में, हम अपने इच्छित न्यूरॉन्स की संख्या प्रदान करने के साथ घने कार्य का उपयोग करके एक नई परत बनाएंगे।

layer = Dense(40)(feature)

अब, हम घने परत को इनपुट से जोड़ने के लिए कॉन्फ़िगर डेंस लेयर फंक्शन को इनवाइट कर सकते हैं।

पूरा कार्यान्वयन उदाहरण

from cntk.layers import Dense
from cntk import input_variable
feature= input_variable(100)
layer = Dense(40)(feature)

परतों को अनुकूलित करना

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

एक घने परत को कॉन्फ़िगर करने के लिए कदम

एनएन में प्रत्येक परत के पास अपने अद्वितीय कॉन्फ़िगरेशन विकल्प हैं और जब हम घने परत के बारे में बात करते हैं, तो हमारे पास परिभाषित करने के लिए महत्वपूर्ण सेटिंग्स हैं -

  • shape - जैसा कि नाम से पता चलता है, यह परत के आउटपुट आकार को परिभाषित करता है जो उस परत में न्यूरॉन्स की संख्या को निर्धारित करता है।

  • activation - यह उस लेयर के एक्टिवेशन फंक्शन को परिभाषित करता है, इसलिए यह इनपुट डेटा को ट्रांसफॉर्म कर सकता है।

  • init- यह उस परत के आरंभीकरण कार्य को परिभाषित करता है। जब हम एनएन का प्रशिक्षण शुरू करते हैं, तो यह परत के मापदंडों को आरंभ करेगा।

आइए उन चरणों को देखें जिनकी सहायता से हम a को कॉन्फ़िगर कर सकते हैं Dense परत -

Step1 - सबसे पहले, हमें आयात करने की आवश्यकता है Dense CNTK के लेयर्स पैकेज से लेयर फंक्शन।

from cntk.layers import Dense

Step2 - CNTK ऑप्स पैकेज से आगे, हमें आयात करने की आवश्यकता है sigmoid operator। इसका उपयोग सक्रियण फ़ंक्शन के रूप में कॉन्फ़िगर करने के लिए किया जाएगा।

from cntk.ops import sigmoid

Step3 - अब, इनिलाइज़र पैकेज से, हमें आयात करने की आवश्यकता है glorot_uniform प्रारंभकर्ता।

from cntk.initializer import glorot_uniform

Step4 - अंत में, हम पहले तर्क के रूप में न्यूरॉन्स की संख्या प्रदान करने के साथ घने फ़ंक्शन का उपयोग करके एक नई परत बनाएंगे। इसके अलावा, प्रदान करेंsigmoid ऑपरेटर के रूप में activation समारोह और glorot_uniform के रूप में init परत के लिए कार्य करते हैं।

layer = Dense(50, activation = sigmoid, init = glorot_uniform)

पूरा कार्यान्वयन उदाहरण -

from cntk.layers import Dense
from cntk.ops import sigmoid
from cntk.initializer import glorot_uniform
layer = Dense(50, activation = sigmoid, init = glorot_uniform)

मापदंडों का अनुकूलन

अब तक, हमने देखा है कि एनएन की संरचना कैसे बनाई जाए और विभिन्न सेटिंग्स को कैसे कॉन्फ़िगर किया जाए। यहां, हम देखेंगे, हम एक एनएन के मापदंडों को कैसे अनुकूलित कर सकते हैं। दो घटकों के संयोजन की मदद से अर्थात्learners तथा trainers, हम एक एनएन के मापदंडों को अनुकूलित कर सकते हैं।

ट्रेनर घटक

पहला घटक जो एक एनएन के मापदंडों को अनुकूलित करने के लिए उपयोग किया जाता है trainerघटक। यह मूल रूप से backpropagation प्रक्रिया को लागू करता है। अगर हम इसके काम करने के बारे में बात करते हैं, तो यह भविष्यवाणी प्राप्त करने के लिए एनएन के माध्यम से डेटा पास करता है।

उसके बाद, यह एनएन में मापदंडों के लिए नए मूल्यों को प्राप्त करने के लिए सीखने वाले नामक एक अन्य घटक का उपयोग करता है। एक बार जब यह नया मान प्राप्त करता है, तो यह इन नए मूल्यों को लागू करता है और प्रक्रिया को दोहराता है जब तक कि एक निकास मानदंड पूरा नहीं होता है।

सीखने वाला घटक

दूसरा घटक जो एक एनएन के मापदंडों को अनुकूलित करने के लिए उपयोग किया जाता है learner घटक, जो मूल रूप से ढाल वंश एल्गोरिथ्म प्रदर्शन के लिए जिम्मेदार है।

सीएनटीके पुस्तकालय में शामिल शिक्षार्थी

CNTK लाइब्रेरी में शामिल कुछ दिलचस्प शिक्षार्थियों की सूची निम्नलिखित है -

  • Stochastic Gradient Descent (SGD) - यह शिक्षार्थी बुनियादी स्टोकेस्टिक ग्रेडिएंट वंश का प्रतिनिधित्व करता है, बिना किसी अतिरिक्त के।

  • Momentum Stochastic Gradient Descent (MomentumSGD) - SGD के साथ, यह शिक्षार्थी स्थानीय मैक्सिमा की समस्या को दूर करने के लिए गति को लागू करता है।

  • RMSProp - यह सीखने वाला, वंश की दर को नियंत्रित करने के लिए, सीखने की दर में गिरावट का उपयोग करता है।

  • Adam - यह सीखने वाला, समय के साथ वंश की दर को कम करने के लिए, क्षयकारी गति का उपयोग करता है।

  • Adagrad - यह शिक्षार्थी, साथ ही साथ अक्सर होने वाली सुविधाओं के लिए, विभिन्न शिक्षण दर का उपयोग करता है।