CNTK - मापन प्रदर्शन

यह अध्याय बताएगा कि CNKT में मॉडल के प्रदर्शन को कैसे मापें।

मॉडल के प्रदर्शन को मान्य करने की रणनीति

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

लेकिन मॉडल को नए नमूनों के लिए अच्छी तरह से काम करना चाहिए क्योंकि उत्पादन के माहौल में हमें प्रशिक्षण उद्देश्य के लिए नमूना डेटा का उपयोग करने की तुलना में अलग इनपुट मिलेगा। यही कारण है कि, हमें प्रशिक्षण उद्देश्य के लिए उपयोग किए गए नमूनों से अलग नमूनों का एक सेट का उपयोग करके एमएल मॉडल को मान्य करना चाहिए। यहां, हम एनएन को मान्य करने के लिए डेटासेट बनाने के लिए दो अलग-अलग तकनीकों पर चर्चा करने जा रहे हैं।

होल्ड-आउट डेटासेट

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

होल्ड-आउट डेटासेट मॉडल सुनिश्चित करता है कि हमारे एमएल मॉडल को प्रशिक्षित करने के लिए हमारे पास पर्याप्त डेटा है और साथ ही हमारे पास मॉडल के प्रदर्शन का अच्छा माप प्राप्त करने के लिए उचित संख्या में नमूने होंगे।

प्रशिक्षण सेट और परीक्षण सेट में शामिल करने के लिए, मुख्य डेटासेट से यादृच्छिक नमूने चुनने के लिए यह एक अच्छा अभ्यास है। यह प्रशिक्षण और परीक्षण सेट के बीच एक समान वितरण सुनिश्चित करता है।

निम्नलिखित एक उदाहरण है जिसमें हम उपयोग करके स्वयं होल्ड-आउट डेटासेट का उत्पादन कर रहे हैं train_test_split से कार्य करते हैं scikit-learn पुस्तकालय।

उदाहरण

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Here above test_size = 0.2 represents that we provided 20% of the data as test data.
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics
classifier_knn = KNeighborsClassifier(n_neighbors=3)
classifier_knn.fit(X_train, y_train)
y_pred = classifier_knn.predict(X_test)
# Providing sample data and the model will make prediction out of that data
sample = [[5, 5, 3, 2], [2, 4, 3, 5]]
preds = classifier_knn.predict(sample)
pred_species = [iris.target_names[p] for p in preds] print("Predictions:", pred_species)

उत्पादन

Predictions: ['versicolor', 'virginica']

CNTK का उपयोग करते समय, हमें हर बार जब हम अपने मॉडल को प्रशिक्षित करते हैं, तो हमारे डेटासेट के क्रम को यादृच्छिक बनाने की आवश्यकता होती है क्योंकि -

  • डीप लर्निंग एल्गोरिदम यादृच्छिक-संख्या जनरेटर से अत्यधिक प्रभावित होते हैं।

  • जिस क्रम में हम प्रशिक्षण के दौरान एनएन को नमूने प्रदान करते हैं, उसके प्रदर्शन को बहुत प्रभावित करता है।

होल्ड-आउट डेटासेट तकनीक का उपयोग करने का प्रमुख पहलू यह है कि यह अविश्वसनीय है क्योंकि कभी-कभी हमें बहुत अच्छे परिणाम मिलते हैं लेकिन कभी-कभी, हम खराब परिणाम देते हैं।

K- गुना क्रॉस सत्यापन

हमारे एमएल मॉडल को अधिक विश्वसनीय बनाने के लिए, एक तकनीक है जिसे के-गुना क्रॉस सत्यापन कहा जाता है। प्रकृति में K- गुना क्रॉस सत्यापन तकनीक पिछली तकनीक के समान है, लेकिन यह इसे कई बार दोहराता है-आमतौर पर लगभग 5 से 10 बार। निम्नलिखित आरेख इसकी अवधारणा का प्रतिनिधित्व करता है -

K- गुना क्रॉस सत्यापन का कार्य करना

K- गुना क्रॉस सत्यापन के कार्य को निम्नलिखित चरणों की सहायता से समझा जा सकता है -

Step 1- जैसे के-फोल्ड क्रॉस सत्यापन तकनीक में हैंड-आउट डेटासेट तकनीक, पहले हमें डाटासेट को एक प्रशिक्षण और परीक्षण सेट में विभाजित करना होगा। आदर्श रूप से, अनुपात 80-20 है, अर्थात प्रशिक्षण सेट का 80% और परीक्षण सेट का 20%।

Step 2 - अगला, हमें प्रशिक्षण सेट का उपयोग करके अपने मॉडल को प्रशिक्षित करने की आवश्यकता है।

Step 3अंतिम बार, हम अपने मॉडल के प्रदर्शन को मापने के लिए परीक्षण सेट का उपयोग करेंगे। होल्ड-आउट डेटासेट तकनीक और के-क्रॉस सत्यापन तकनीक के बीच एकमात्र अंतर यह है कि उपरोक्त प्रक्रिया आमतौर पर 5 से 10 बार दोहराई जाती है और अंत में सभी प्रदर्शन मीट्रिक पर औसत की गणना की जाती है। यह औसत अंतिम प्रदर्शन मेट्रिक्स होगा।

आइए हम एक छोटे डेटासेट के साथ एक उदाहरण देखें -

उदाहरण

from numpy import array
from sklearn.model_selection import KFold
data = array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
kfold = KFold(5, True, 1)
for train, test in kfold.split(data):
   print('train: %s, test: %s' % (data[train],(data[test]))

उत्पादन

train: [0.1 0.2 0.4 0.5 0.6 0.7 0.8 0.9], test: [0.3 1. ]
train: [0.1 0.2 0.3 0.4 0.6 0.8 0.9 1. ], test: [0.5 0.7]
train: [0.2 0.3 0.5 0.6 0.7 0.8 0.9 1. ], test: [0.1 0.4]
train: [0.1 0.3 0.4 0.5 0.6 0.7 0.9 1. ], test: [0.2 0.8]
train: [0.1 0.2 0.3 0.4 0.5 0.7 0.8 1. ], test: [0.6 0.9]

जैसा कि हम देखते हैं, एक अधिक यथार्थवादी प्रशिक्षण और परीक्षण परिदृश्य का उपयोग करने के कारण, k- गुना क्रॉस सत्यापन तकनीक हमें और अधिक स्थिर प्रदर्शन माप देती है लेकिन, नकारात्मक पक्ष पर, गहन शिक्षण मॉडल को मान्य करते समय बहुत समय लगता है।

CNTK k-cross सत्यापन के लिए समर्थन नहीं करता है, इसलिए हमें ऐसा करने के लिए अपनी स्क्रिप्ट लिखने की आवश्यकता है।

अंडरफुटिंग और ओवरफिटिंग का पता लगाना

क्या, हम हैंड-आउट डेटासेट या के-फोल्ड क्रॉस-वैलिडेशन तकनीक का उपयोग करते हैं, हम पाएंगे कि मैट्रिक्स का आउटपुट प्रशिक्षण के लिए उपयोग किए जाने वाले डेटासेट और सत्यापन के लिए उपयोग किए जाने वाले डेटासेट के लिए अलग होगा।

ओवरफिटिंग का पता लगाना

ओवरफिटिंग नामक घटना एक ऐसी स्थिति है जहां हमारे एमएल मॉडल, प्रशिक्षण डेटा को असाधारण रूप से अच्छी तरह से मॉडल करते हैं, लेकिन परीक्षण डेटा पर अच्छा प्रदर्शन करने में विफल रहता है, अर्थात परीक्षण डेटा की भविष्यवाणी करने में सक्षम नहीं था।

यह तब होता है जब एक एमएल मॉडल प्रशिक्षण डेटा से एक विशिष्ट पैटर्न और शोर को इस हद तक सीखता है, कि यह उस मॉडल को प्रशिक्षण डेटा से नए यानी अनदेखे डेटा को सामान्य करने की क्षमता को नकारात्मक रूप से प्रभावित करता है। यहाँ, शोर एक अप्रासंगिक सूचना या डेटासेट में यादृच्छिकता है।

निम्नलिखित दो तरीके हैं जिनकी मदद से हम मौसम का पता लगा सकते हैं कि हमारा मॉडल ओवरफिट है या नहीं -

  • ओवरफिट मॉडल उसी नमूने पर अच्छा प्रदर्शन करेगा जो हमने प्रशिक्षण के लिए उपयोग किया था, लेकिन यह नए नमूनों पर बहुत बुरा प्रदर्शन करेगा, अर्थात प्रशिक्षण के लिए अलग-अलग नमूने।

  • सत्यापन के दौरान मॉडल ओवरफिट है यदि परीक्षण सेट पर मीट्रिक उसी मीट्रिक से कम है, तो हम अपने प्रशिक्षण सेट पर उपयोग करते हैं।

अंडरफुटिंग का पता लगाना

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

पता लगाने के तरीकों में से एक, कि क्या हमारा मॉडल अंडरफिट है या नहीं, प्रशिक्षण सेट और परीक्षण सेट के लिए मैट्रिक्स को देखना है या नहीं। यदि परीक्षण सेट पर मीट्रिक प्रशिक्षण सेट पर मीट्रिक से अधिक है, तो हमारा मॉडल कमतर होगा।