कृत्रिम बुद्धिमत्ता (AI) ने अलिकडच्या वर्षांत लक्षणीय प्रमाणात लोकप्रियता मिळवली आहे.
जर तुम्ही सॉफ्टवेअर अभियंता, संगणक शास्त्रज्ञ किंवा सर्वसाधारणपणे डेटा सायन्स उत्साही असाल, तर तुम्हाला कदाचित या फील्डद्वारे प्रदान केलेल्या इमेज प्रोसेसिंग, पॅटर्न रेकग्निशन आणि ऑब्जेक्ट डिटेक्शनच्या आश्चर्यकारक ऍप्लिकेशन्सबद्दल उत्सुकता असेल.
AI चे सर्वात महत्वाचे सबफिल्ड ज्याबद्दल तुम्ही कदाचित ऐकले असेल ते म्हणजे डीप लर्निंग. हे फील्ड शक्तिशाली अल्गोरिदम (संगणक प्रोग्राम सूचना) वर लक्ष केंद्रित करते जे मानवी मेंदूच्या कार्यक्षमतेनुसार ओळखले जाते मज्जासंस्था नेटवर्क.
या लेखात, आम्ही न्यूरल नेटवर्क्सची संकल्पना पाहू आणि हे मॉडेल कसे तयार करावे, संकलित करावे, फिट करावे आणि त्यांचे मूल्यांकन कसे करावे. python ला.
मज्जासंस्था नेटवर्क
न्यूरल नेटवर्क्स, किंवा NNs, मानवी मेंदूच्या जैविक क्रियाकलापांनंतर तयार केलेल्या अल्गोरिदमची मालिका आहेत. न्यूरल नेटवर्कमध्ये नोड्स असतात, ज्यांना न्यूरॉन्स देखील म्हणतात.
उभ्या नोड्सचा संग्रह स्तर म्हणून ओळखला जातो. मॉडेलमध्ये एक इनपुट, एक आउटपुट आणि अनेक लपविलेले स्तर असतात. प्रत्येक थरामध्ये नोड्स असतात, ज्यांना न्यूरॉन्स देखील म्हणतात, जेथे गणना केली जाते.
खालील आकृतीमध्ये, मंडळे नोड्सचे प्रतिनिधित्व करतात आणि नोड्सचे अनुलंब संकलन स्तरांचे प्रतिनिधित्व करतात. या मॉडेलमध्ये तीन स्तर आहेत.
खाली पाहिल्याप्रमाणे एका लेयरचे नोड्स ट्रान्समिशन लाईन्सद्वारे पुढील लेयरशी जोडलेले आहेत.
आमच्या डेटासेटमध्ये लेबल केलेला डेटा असतो. याचा अर्थ प्रत्येक डेटा घटकाला विशिष्ट नाव मूल्य नियुक्त केले गेले आहे.
त्यामुळे प्राण्यांच्या वर्गीकरण डेटासेटसाठी आमच्याकडे आमची लेबले म्हणून 'मांजर' आणि 'कुत्रा' सोबत आमचा डेटा म्हणून मांजरी आणि कुत्र्यांच्या प्रतिमा असतील.
हे लक्षात घेणे महत्त्वाचे आहे की आमच्या मॉडेलसाठी लेबले अंकीय मूल्यांमध्ये रूपांतरित करणे आवश्यक आहे, त्यामुळे आमची प्राणी लेबले मांजरीसाठी '0' आणि कुत्र्यासाठी '1' होतात. डेटा आणि लेबल्स दोन्ही मॉडेलमधून पास केले जातात.
शिक्षण
डेटा मॉडेलला एका वेळी एका घटकाला दिला जातो. हा डेटा भागांमध्ये विभागला जातो आणि मॉडेलच्या प्रत्येक नोडमधून जातो. नोड्स या भागांवर गणिती क्रिया करतात.
या ट्यूटोरियलसाठी तुम्हाला गणितीय कार्ये किंवा गणना माहित असणे आवश्यक नाही, परंतु हे मॉडेल कसे कार्य करतात याची सामान्य कल्पना असणे आवश्यक आहे. एका लेयरमधील गणनांच्या मालिकेनंतर, डेटा पुढील स्तरावर पाठविला जातो आणि असेच.
पूर्ण झाल्यावर, आमचे मॉडेल आउटपुट स्तरावरील डेटा लेबलचा अंदाज लावते (उदाहरणार्थ, प्राण्यांच्या वर्गीकरणाच्या समस्येमध्ये आम्हाला मांजरीसाठी '0' अंदाज मिळतो).
मॉडेल नंतर या अंदाजित मूल्याची वास्तविक लेबल मूल्याशी तुलना करण्यासाठी पुढे जाते.
मूल्ये जुळत असल्यास, आमचे मॉडेल पुढील इनपुट घेईल परंतु जर मूल्ये भिन्न असतील तर मॉडेल दोन्ही मूल्यांमधील फरकाची गणना करेल, ज्याला तोटा म्हणतात आणि पुढील वेळी जुळणारी लेबले तयार करण्यासाठी नोड गणना समायोजित करेल.
डीप लर्निंग फ्रेमवर्क
कोडमध्ये न्यूरल नेटवर्क तयार करण्यासाठी, आम्हाला आयात करणे आवश्यक आहे सखोल शिक्षण फ्रेमवर्क आमच्या एकात्मिक विकास पर्यावरण (IDE) वापरून ग्रंथालय म्हणून ओळखले जाते.
हे फ्रेमवर्क पूर्व-लिखित फंक्शन्सचे संग्रह आहेत जे आम्हाला या ट्युटोरियलमध्ये मदत करतील. आमचे मॉडेल तयार करण्यासाठी आम्ही Keras फ्रेमवर्क वापरणार आहोत.
केरास एक पायथन लायब्ररी आहे जी सखोल शिक्षण आणि कृत्रिम बुद्धिमत्ता बॅकएंड वापरते टेन्सरफ्लो सोप्या अनुक्रमिक मॉडेलच्या स्वरूपात NN सहजतेने तयार करणे.
Keras देखील त्याच्या स्वत: च्या अस्तित्वात असलेल्या मॉडेलसह येते जे तसेच वापरले जाऊ शकते. या ट्युटोरियलसाठी, आम्ही Keras वापरून आमचे स्वतःचे मॉडेल तयार करणार आहोत.
तुम्ही या डीप लर्निंग फ्रेमवर्कबद्दल अधिक जाणून घेऊ शकता Keras वेबसाइट.
न्यूरल नेटवर्क तयार करणे (ट्यूटोरियल)
पायथन वापरून न्यूरल नेटवर्क तयार करण्याकडे वळू.
समस्या विधान
न्यूरल नेटवर्क हे AI-आधारित समस्यांचे निराकरण करण्याचा एक प्रकार आहे. या ट्युटोरियलसाठी आपण Pima Indians Diabetes Data वर जाणार आहोत, जो उपलब्ध आहे येथे.
UCI मशीन लर्निंगने हा डेटासेट संकलित केला आहे आणि त्यात भारतीय रुग्णांची वैद्यकीय नोंद आहे. आमच्या मॉडेलमध्ये रुग्णाला 5 वर्षांच्या आत मधुमेहाची सुरुवात झाली आहे की नाही याचा अंदाज लावायचा आहे.
डेटासेट लोड करत आहे
आमचा डेटासेट ही 'diabetes.csv' नावाची एकल CSV फाइल आहे जी मायक्रोसॉफ्ट एक्सेल वापरून सहजपणे हाताळली जाऊ शकते.
आमचे मॉडेल तयार करण्यापूर्वी, आम्हाला आमचा डेटासेट आयात करणे आवश्यक आहे. खालील कोड वापरून तुम्ही हे करू शकता:
आयडी म्हणून पांडा आयात करा
डेटा = pd.read_csv('diabetes.csv')
x = data.drop("परिणाम")
y = डेटा[“परिणाम”]
येथे आपण वापरत आहोत पांड्या आमच्या CSV फाइल डेटामध्ये फेरफार करण्यास सक्षम होण्यासाठी library, read_csv() हे Pandas चे अंगभूत फंक्शन आहे जे आम्हाला आमच्या फाईलमधील व्हॅल्यू 'डेटा' नावाच्या व्हेरिएबलमध्ये संग्रहित करण्यास अनुमती देते.
व्हेरिएबल x मध्ये परिणाम (लेबल) डेटाशिवाय आमचा डेटासेट आहे. आम्ही data.drop() फंक्शनसह हे साध्य करतो जे x साठी लेबल काढून टाकते, तर y मध्ये फक्त परिणाम (लेबल) डेटा असतो.
बिल्डिंग अनुक्रमिक मॉडेल
पायरी 1: लायब्ररी आयात करणे
प्रथम, आम्हाला आमच्या मॉडेलसाठी आवश्यक असलेल्या काही पॅरामीटर्ससह टेन्सरफ्लो आणि केरा आयात करणे आवश्यक आहे. खालील कोड आम्हाला हे करण्याची परवानगी देतो:
tensorflow tf म्हणून आयात करा
tensorflow आयात केरा पासून
tensorflow.keras.models वरून अनुक्रमिक आयात करा
tensorflow.keras.layers वरून सक्रियकरण, दाट आयात करा
tensorflow.keras.optimizers वरून Adam आयात करा
tensorflow.keras.metrics वरून categorical_crossentropy आयात करा
आमच्या मॉडेलसाठी आम्ही दाट थर आयात करत आहोत. हे पूर्णपणे जोडलेले स्तर आहेत; म्हणजे, लेयरमधील प्रत्येक नोड पुढील लेयरमधील दुसर्या नोडशी पूर्णपणे जोडलेला असतो.
आम्ही देखील आयात करत आहोत सक्रिय नोड्सवर पाठवलेल्या डेटा स्केलिंगसाठी आवश्यक कार्य. अनुकूलक तोटा कमी करण्यासाठी देखील आयात केले गेले आहेत.
अॅडम हा एक प्रसिद्ध ऑप्टिमायझर आहे जो आमचे मॉडेल अपडेट नोड गणना अधिक कार्यक्षमतेने करतो. categorical_crossentropy जे आहे नुकसान कार्याचा प्रकार (वास्तविक आणि अंदाजित लेबल मूल्यांमधील फरक मोजतो) जे आम्ही वापरणार आहोत.
पायरी 2: आमचे मॉडेल डिझाइन करणे
मी तयार करत असलेल्या मॉडेलमध्ये एक इनपुट (16 युनिट्ससह), एक लपविलेले (32 युनिट्ससह) आणि एक आउटपुट (2 युनिटसह) लेयर आहे. हे आकडे निश्चित नाहीत आणि दिलेल्या समस्येवर पूर्णपणे अवलंबून असतील.
युनिट्स आणि लेयर्सची योग्य संख्या सेट करणे ही एक प्रक्रिया आहे जी सरावाने ओव्हरटाइम सुधारली जाऊ शकते. अॅक्टिव्हेशन हे आमच्या डेटाला नोडमधून पास करण्यापूर्वी आम्ही ज्या प्रकारची स्केलिंग करणार आहोत त्याच्याशी संबंधित आहे.
या कार्यासाठी Relu आणि Softmax हे प्रसिद्ध सक्रियकरण कार्ये आहेत.
मॉडेल = अनुक्रमिक([
दाट(युनिट्स = 16, इनपुट_आकार = (1,), सक्रियकरण = 'relu'),
दाट (युनिट्स = 32, सक्रियकरण = 'रेलू'),
दाट (युनिट्स = 2, सक्रियकरण = 'सॉफ्टमॅक्स')
])
मॉडेलचा सारांश कसा असावा ते येथे आहे:
मॉडेलचे प्रशिक्षण
आमचे मॉडेल दोन टप्प्यांत प्रशिक्षित केले जाईल, पहिले मॉडेल संकलित करणे (मॉडेल एकत्र ठेवणे) आणि नंतर दिलेल्या डेटासेटवर मॉडेल फिट करणे.
हे model.compile() फंक्शन आणि त्यानंतर model.fit() फंक्शन वापरून करता येते.
model.compile(ऑप्टिमायझर = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
'अचूकता' मेट्रिक निर्दिष्ट केल्याने आम्हाला प्रशिक्षणादरम्यान आमच्या मॉडेलच्या अचूकतेचे निरीक्षण करता येते.
आमची लेबले 1 आणि 0 च्या स्वरूपात असल्याने, आम्ही वास्तविक आणि अंदाजित लेबलांमधील फरक मोजण्यासाठी बायनरी लॉस फंक्शन वापरणार आहोत.
डेटासेट 10 (बॅच_साइज) च्या बॅचमध्ये देखील विभाजित केला जात आहे आणि 30 वेळा (युग) मॉडेलमधून पास केला जाईल. दिलेल्या डेटासेटसाठी, x हा डेटा असेल आणि y डेटाशी संबंधित लेबले असतील.
अंदाज वापरून चाचणी मॉडेल
आमच्या मॉडेलचे मूल्यमापन करण्यासाठी, आम्ही predict() फंक्शन वापरून चाचणी डेटावर अंदाज बांधतो.
अंदाज = model.predict(x)
आणि तेच!
तुम्हाला आता चांगले समजले पाहिजे दीप लर्निंग ऍप्लिकेशन, न्यूरल नेटवर्क्स, ते सर्वसाधारणपणे कसे कार्य करतात आणि पायथन कोडमध्ये मॉडेल कसे तयार करावे, प्रशिक्षित करावे आणि चाचणी कशी करावी.
मला आशा आहे की हे ट्यूटोरियल तुम्हाला तुमची स्वतःची डीप लर्निंग मॉडेल्स तयार आणि तैनात करण्यासाठी किकस्टार्ट देईल.
लेख उपयुक्त असल्यास आम्हाला टिप्पण्यांमध्ये कळवा.
प्रत्युत्तर द्या