अनुक्रमणिका[लपवा][दाखवा]
"ग्राफ न्यूरल नेटवर्क" (GNNs) म्हणून ओळखल्या जाणार्या सखोल शिक्षण तंत्र ग्राफ डोमेनमध्ये कार्य करतात. या नेटवर्क्सना अलीकडेच संगणक दृष्टी, शिफारस प्रणाली आणि संयोजन ऑप्टिमायझेशन यासह विविध क्षेत्रांमध्ये वापरल्याचे आढळले आहे.
याव्यतिरिक्त, या नेटवर्क्सचा वापर जटिल प्रणालींचे प्रतिनिधित्व करण्यासाठी केला जाऊ शकतो, ज्यामध्ये सोशल नेटवर्क्स, प्रोटीन-प्रोटीन परस्परसंवाद नेटवर्क, ज्ञान आलेख आणि अभ्यासाच्या अनेक क्षेत्रांमध्ये इतरांचा समावेश आहे.
चित्रांसारख्या इतर प्रकारच्या डेटाच्या विपरीत, नॉन-युक्लिडियन जागा जिथे आलेख डेटा कार्य करतो. नोड्सचे वर्गीकरण करण्यासाठी, लिंक्सचा अंदाज लावण्यासाठी आणि क्लस्टर डेटासाठी, आलेख विश्लेषण वापरले जाते.
या लेखात, आम्ही आलेख तपासू मज्जासंस्थेसंबंधीचा नेटवर्क तपशीलवार, त्याचे प्रकार, तसेच PyTorch वापरून व्यावहारिक उदाहरणे देतात.
तर, आलेख म्हणजे काय?
आलेख हा नोड्स आणि शिरोबिंदूंनी बनलेला डेटा स्ट्रक्चरचा एक प्रकार आहे. विविध नोड्समधील कनेक्शन शिरोबिंदूंद्वारे निर्धारित केले जातात. नोड्समध्ये दिशा दर्शविल्यास, आलेख निर्देशित केला जातो असे म्हटले जाते; अन्यथा, ते दिशाहीन आहे.
आलेखांचा एक चांगला उपयोग म्हणजे a मधील विविध व्यक्तींमधील संबंधांचे मॉडेलिंग सामाजिक नेटवर्क. दुवे आणि देवाणघेवाण यासारख्या गुंतागुंतीच्या परिस्थितीला सामोरे जाताना आलेख खूप उपयुक्त ठरतात.
ते शिफारस प्रणाली, सिमेंटिक विश्लेषण, सोशल नेटवर्क विश्लेषण आणि नमुना ओळख द्वारे नियुक्त केले जातात
. आलेख-आधारित सोल्यूशन्स तयार करणे हे एक नवीन फील्ड आहे जे जटिल आणि परस्परसंबंधित डेटाची अंतर्ज्ञानी समज देते.
ग्राफ न्यूरल नेटवर्क
ग्राफ न्यूरल नेटवर्क हे विशेष प्रकारचे न्यूरल नेटवर्क आहेत जे ग्राफ डेटा फॉरमॅटवर ऑपरेट करू शकतात. ग्राफ एम्बेडिंग आणि कॉन्व्होल्युशनल न्यूरल नेटवर्क (सीएनएन) यांचा त्यांच्यावर महत्त्वपूर्ण प्रभाव पडतो.
ग्राफ न्यूरल नेटवर्क अशा कार्यांमध्ये नियोजित केले जातात ज्यात नोड्स, कडा आणि आलेख यांचा समावेश होतो.
- CNN चा वापर प्रतिमांचे वर्गीकरण करण्यासाठी केला जातो. त्याचप्रमाणे, वर्गाचा अंदाज लावण्यासाठी, आलेख रचना दर्शविणाऱ्या पिक्सेल ग्रिडवर GNN लागू केले जातात.
- पुनरावृत्ती न्यूरल नेटवर्क वापरून मजकूर वर्गीकरण. GNN चा वापर ग्राफ आर्किटेक्चरसह देखील केला जातो जेथे वाक्यांशातील प्रत्येक शब्द नोड असतो.
नोड्स, कडा किंवा पूर्ण आलेखांचा अंदाज घेण्यासाठी, न्यूरल नेटवर्कचा वापर GNN तयार करण्यासाठी केला जातो. नोड स्तरावरील अंदाज, उदाहरणार्थ, स्पॅम शोध सारख्या समस्येचे निराकरण करू शकते.
लिंक प्रेडिक्शन ही शिफारस करणार्या सिस्टीममधील एक सामान्य केस आहे आणि ती एज-निहाय अंदाज समस्येचे उदाहरण असू शकते.
आलेख न्यूरल नेटवर्क प्रकार
न्यूरल नेटवर्कचे असंख्य प्रकार अस्तित्वात आहेत आणि त्यापैकी बहुतेकांमध्ये कॉन्व्होल्युशनल न्यूरल नेटवर्क्स आहेत. या भागात आपण सर्वात प्रसिद्ध GNN बद्दल जाणून घेणार आहोत.
ग्राफ कन्व्होल्युशनल नेटवर्क्स (GCNs)
ते क्लासिक सीएनएनशी तुलना करता येतात. हे जवळच्या नोड्स पाहून वैशिष्ट्ये प्राप्त करते. सक्रियकरण कार्य GNNs द्वारे नोड वेक्टर एकत्रित केल्यानंतर आणि दाट स्तरावर आउटपुट पाठविल्यानंतर नॉन-लाइनरिटी जोडण्यासाठी वापरले जाते.
हे आलेख कन्व्होल्यूशन, एक रेखीय स्तर आणि नॉन-लर्नर ऍक्टिव्हेशन फंक्शन यांनी बनलेले आहे. GCN दोन मुख्य प्रकारांमध्ये येतात: स्पेक्ट्रल कॉन्व्होल्यूशनल नेटवर्क्स आणि स्पेशियल कॉन्व्होल्यूशनल नेटवर्क्स.
आलेख स्वयं-एनकोडर नेटवर्क
आलेखांचे प्रतिनिधित्व कसे करायचे हे शिकण्यासाठी ते एन्कोडर आणि इनपुट आलेखांची पुनर्रचना करण्याचा प्रयत्न करण्यासाठी डीकोडर वापरते. एन्कोडर आणि डीकोडरला जोडणारा अडथळा स्तर आहे.
स्वयं-एनकोडर्स वर्ग शिल्लक हाताळण्याचे उत्कृष्ट कार्य करत असल्याने, ते वारंवार दुव्याच्या अंदाजामध्ये वापरले जातात.
आवर्ती आलेख न्यूरल नेटवर्क (RGNNs)
बहु-रिलेशनल नेटवर्क्समध्ये, जेथे एकाच नोडमध्ये अनेक संबंध असतात, ते इष्टतम प्रसार पॅटर्न शिकते आणि आलेख व्यवस्थापित करू शकते. गुळगुळीतपणा वाढवण्यासाठी आणि ओव्हर-पॅरामीटरायझेशन कमी करण्यासाठी, ग्राफ न्यूरल नेटवर्कच्या या स्वरूपात रेग्युलरायझर्सचा वापर केला जातो.
चांगले परिणाम मिळविण्यासाठी, RGNN ला कमी प्रक्रिया शक्ती आवश्यक आहे. ते मजकूर निर्मिती, उच्चार ओळख, मशीन भाषांतर, चित्र वर्णन, व्हिडिओ टॅगिंग आणि मजकूर सारांश यासाठी वापरले जातात.
गेटेड न्यूरल ग्राफ नेटवर्क (GGNNs)
जेव्हा दीर्घकालीन अवलंबित कार्यांचा विचार केला जातो तेव्हा ते RGNN ला मागे टाकतात. दीर्घकालीन अवलंबित्वांवर नोड, एज आणि टेम्पोरल गेट्स समाविष्ट करून, गेट ग्राफ न्यूरल नेटवर्क्स वारंवार आलेख न्यूरल नेटवर्क वाढवतात.
गेट्स गेटेड रिकरंट युनिट्स (जीआरयू) प्रमाणेच कार्य करतात कारण त्यांचा वापर विविध टप्प्यात डेटा आठवण्यासाठी आणि विसरण्यासाठी केला जातो.
पायटोर्च वापरून ग्राफ न्यूरल नेटवर्कची अंमलबजावणी करणे
आम्ही ज्या विशिष्ट समस्येवर लक्ष केंद्रित करणार आहोत ती सामान्य नोड वर्गीकरण समस्या आहे. आमच्याकडे नावाचे एक मोठे सोशल नेटवर्क आहे musae-github, जे GitHub डेव्हलपरसाठी ओपन API वरून संकलित केले होते.
एज नोड्समधील म्युच्युअल फॉलोअर संबंध दर्शवतात, जे डेव्हलपर (प्लॅटफॉर्म वापरकर्ते) चे प्रतिनिधित्व करतात ज्यांनी किमान 10 रिपॉझिटरीजमध्ये तारांकित केले आहे (लक्षात ठेवा की म्युच्युअल शब्द अनिर्देशित संबंध दर्शवतो).
नोडच्या स्थानावर आधारित, तारांकित भांडार, नियोक्ता आणि ईमेल पत्ता, नोड वैशिष्ट्ये पुनर्प्राप्त केली जातात. GitHub वापरकर्ता वेब डेव्हलपर असल्यास किंवा ए मशीन लर्निंग डेव्हलपर आमचे कार्य आहे.
प्रत्येक वापरकर्त्याचे जॉब शीर्षक या लक्ष्यीकरण कार्यासाठी आधार म्हणून काम करते.
PyTorch स्थापित करत आहे
सुरू करण्यासाठी, आम्हाला प्रथम स्थापित करणे आवश्यक आहे पाय टोर्च. तुम्ही ते तुमच्या मशीननुसार कॉन्फिगर करू शकता येथे. हे माझे आहे:
मॉड्यूल्स आयात करत आहे
आता, आम्ही आवश्यक मॉड्यूल आयात करतो
डेटा आयात आणि एक्सप्लोर करणे
खालील पायरी म्हणजे डेटा वाचणे आणि लेबल फाइलमधील पहिल्या पाच पंक्ती आणि शेवटच्या पाच पंक्ती प्लॉट करणे.
चार स्तंभांपैकी फक्त दोनच- नोडचा आयडी (म्हणजे, वापरकर्ता) आणि ml_target, जो वापरकर्ता मशीन लर्निंग समुदायाचा सदस्य असल्यास 1 असेल आणि अन्यथा 0- या परिस्थितीत आमच्यासाठी उपयुक्त आहेत.
फक्त दोन वर्ग आहेत हे लक्षात घेता, आम्ही आता खात्री बाळगू शकतो की आमचे कार्य बायनरी वर्गीकरण समस्या आहे.
लक्षणीय वर्ग असमतोलाचा परिणाम म्हणून, वर्गीकरणकर्ता कमी प्रतिनिधित्व केलेल्या वर्गाचे मूल्यमापन करण्याऐवजी कोणता वर्ग बहुसंख्य आहे हे गृहीत धरू शकतो, वर्ग संतुलन हा विचार करण्यासाठी आणखी एक महत्त्वाचा घटक बनवतो.
हिस्टोग्राम (वारंवारता वितरण) प्लॉट केल्याने काही असंतुलन दिसून येते कारण इतर वर्गांच्या तुलनेत मशीन लर्निंग (लेबल=1) कमी वर्ग आहेत.
वैशिष्ट्य एन्कोडिंग
नोड्सची वैशिष्ट्ये आम्हाला प्रत्येक नोडशी संबंधित असलेल्या वैशिष्ट्याची माहिती देतात. डेटा एन्कोड करण्यासाठी आमची पद्धत लागू करून, आम्ही ती वैशिष्ट्ये त्वरित एन्कोड करू शकतो.
नेटवर्कचा एक छोटासा भाग (म्हणजे, 60 नोड्स) डिस्प्लेसाठी एन्कॅप्स्युलेट करण्यासाठी आम्हाला ही पद्धत वापरायची आहे. कोड येथे सूचीबद्ध आहे.
आलेख डिझाइन आणि प्रदर्शित करणे
आम्ही टॉर्च भौमितिक वापरु. आमचा आलेख तयार करण्यासाठी डेटा.
भिन्न (पर्यायी) गुणधर्मांसह एकल आलेख मॉडेल करण्यासाठी, एक साधा Python ऑब्जेक्ट असलेला डेटा वापरला जातो. या वर्गाचा आणि खालील गुणधर्मांचा वापर करून - जे सर्व टॉर्च टेन्सर आहेत - आपण आपला आलेख ऑब्जेक्ट तयार करू.
मूल्य x चे स्वरूप, जे एन्कोड केलेल्या नोड वैशिष्ट्यांना वाटप केले जाईल, [नोड्सची संख्या, वैशिष्ट्यांची संख्या] आहे.
y चा आकार [नोड्सची संख्या] आहे, आणि तो नोड लेबलांवर लागू केला जाईल.
एज इंडेक्स: अनिर्देशित आलेखाचे वर्णन करण्यासाठी, समान दोन नोड्सला जोडणाऱ्या परंतु विरुद्ध दिशेने निर्देशित केलेल्या दोन भिन्न निर्देशित कडा अस्तित्वात ठेवण्यासाठी आम्हाला मूळ किनार निर्देशांकांचा विस्तार करणे आवश्यक आहे.
नोड 100 ते 200 आणि दुसरा 200 ते 100 मधील नोड्स 100 आणि 200 मधील कड्यांची एक जोडी आवश्यक आहे. जर धार निर्देशांक प्रदान केले असतील, तर अशा प्रकारे अनिर्देशित आलेख दर्शविला जाऊ शकतो. [2,2*मूळ कडांची संख्या] टेन्सर फॉर्म असेल.
आलेख प्रदर्शित करण्यासाठी आम्ही आमची ड्रॉ आलेख पद्धत तयार करतो. पहिली पायरी म्हणजे आमच्या एकसंध नेटवर्कचे नेटवर्कएक्स आलेखामध्ये रूपांतर करणे, जे नंतर NetworkX.draw वापरून काढले जाऊ शकते.
आमचे GNN मॉडेल बनवा आणि त्याला प्रशिक्षण द्या
आम्ही संपूर्ण आलेख तयार करण्यासाठी light=False सह एन्कोड डेटा कार्यान्वित करून आणि नंतर construct graph ला light=False कॉल करून डेटाचा संपूर्ण संच एन्कोड करून सुरुवात करतो. आम्ही हा मोठा आलेख काढण्याचा प्रयत्न करणार नाही कारण तुम्ही मर्यादित संसाधने असलेले स्थानिक मशीन वापरत आहात असे मी गृहित धरत आहे.
मुखवटे, जे बायनरी वेक्टर आहेत जे अंक 0 आणि 1 वापरून प्रत्येक विशिष्ट मुखवटाचे कोणते नोड्स आहेत हे ओळखतात, प्रशिक्षणादरम्यान कोणत्या नोड्सचा समावेश करावा हे प्रशिक्षण टप्प्याला सूचित करण्यासाठी आणि कोणते नोड्स चाचणी डेटा आहेत हे अनुमान फेज सांगण्यासाठी वापरले जाऊ शकतात. टॉर्च geometric.transforms.
AddTrainValTestMask क्लासचे ट्रेनिंग मास्क, व्हॅल मास्क आणि टेस्ट मास्क गुणधर्म वापरून नोड-लेव्हल स्प्लिट जोडले जाऊ शकते, ज्याचा उपयोग आलेख घेण्यासाठी केला जाऊ शकतो आणि आम्हाला आमचे मुखवटे कसे बांधायचे आहेत हे निर्दिष्ट करण्यास सक्षम करते.
आम्ही फक्त 10% प्रशिक्षणासाठी वापरतो आणि 60% डेटा चाचणी सेट म्हणून वापरतो तर 30% प्रमाणीकरण सेट म्हणून वापरतो.
आता, आम्ही दोन GCNConv लेयर्स स्टॅक करू, ज्यातील पहिल्यामध्ये आउटपुट फीचरची संख्या आहे ती इनपुट फीचर्स म्हणून आमच्या आलेखामधील वैशिष्ट्यांच्या संख्येइतकी आहे.
दुसऱ्या लेयरमध्ये, ज्यामध्ये आमच्या वर्गांच्या संख्येइतके आउटपुट नोड्स आहेत, आम्ही एक relu सक्रियकरण फंक्शन लागू करतो आणि गुप्त वैशिष्ट्ये पुरवतो.
एज इंडेक्स आणि एज वेट हे अनेक पर्यायांपैकी दोन x आहेत जे GCNConv फॉरवर्ड फंक्शनमध्ये स्वीकारू शकतात, परंतु आमच्या परिस्थितीत, आम्हाला फक्त पहिल्या दोन व्हेरिएबल्सची आवश्यकता आहे.
आमचे मॉडेल आलेखामधील प्रत्येक नोडच्या वर्गाचा अंदाज लावण्यास सक्षम असेल हे असूनही, आम्हाला अद्याप टप्प्यावर अवलंबून प्रत्येक सेटसाठी अचूकता आणि तोटा निश्चित करणे आवश्यक आहे.
उदाहरणार्थ, प्रशिक्षणादरम्यान, आम्ही अचूकता आणि प्रशिक्षणाचे नुकसान निश्चित करण्यासाठी फक्त प्रशिक्षण संच वापरू इच्छितो आणि म्हणूनच आमचे मुखवटे येथेच उपयोगी पडतात.
योग्य तोटा आणि अचूकतेची गणना करण्यासाठी, आम्ही मुखवटा केलेले नुकसान आणि मुखवटा घातलेल्या अचूकतेची कार्ये परिभाषित करू.
मॉडेलचे प्रशिक्षण
आता आम्ही प्रशिक्षणाचा उद्देश परिभाषित केला आहे ज्यासाठी टॉर्चचा वापर केला जाईल. अॅडम एक मास्टर ऑप्टिमायझर आहे.
प्रमाणीकरणाच्या अचूकतेवर लक्ष ठेवून आम्ही काही विशिष्ट युगांसाठी प्रशिक्षण आयोजित करू.
आम्ही वेगवेगळ्या युगांमध्ये प्रशिक्षणाचे नुकसान आणि अचूकता देखील प्लॉट करतो.
ग्राफ न्यूरल नेटवर्कचे तोटे
GNN वापरण्याचे काही तोटे आहेत. GNNa कधी वापरायचे आणि आमच्या मशीन लर्निंग मॉडेल्सची कार्यक्षमता कशी वाढवायची हे दोन्ही आम्हाला अधिक चांगल्या प्रकारे समजल्यानंतर आम्हाला स्पष्ट केले जाईल.
- GNN उथळ नेटवर्क आहेत, विशेषत: तीन स्तरांसह, बहुतेक न्यूरल नेटवर्क कार्यप्रदर्शन सुधारण्यासाठी खोलवर जाऊ शकतात. या मर्यादेमुळे आम्ही मोठ्या डेटासेटवर अत्याधुनिक कामगिरी करू शकत नाही.
- आलेखांवर मॉडेल प्रशिक्षित करणे अधिक कठीण आहे, कारण त्यांची संरचनात्मक गतिशीलता गतिमान आहे.
- या नेटवर्क्सच्या उच्च संगणकीय खर्चामुळे, उत्पादनासाठी मॉडेल स्केल करणे आव्हाने प्रस्तुत करते. तुमची आलेख रचना मोठी आणि क्लिष्ट असल्यास उत्पादनासाठी GNN स्केलिंग करणे आव्हानात्मक असेल.
निष्कर्ष
गेल्या काही वर्षांमध्ये, GNN ने ग्राफ डोमेनमधील मशीन लर्निंग समस्यांसाठी शक्तिशाली आणि प्रभावी साधने विकसित केली आहेत. ग्राफ न्यूरल नेटवर्कचे मूलभूत विहंगावलोकन या लेखात दिले आहे.
त्यानंतर, तुम्ही डेटासेट तयार करणे सुरू करू शकता जो मॉडेलला प्रशिक्षण देण्यासाठी आणि चाचणी करण्यासाठी वापरला जाईल. ते कसे कार्य करते आणि ते काय सक्षम आहे हे समजून घेण्यासाठी, तुम्ही खूप पुढे जाऊ शकता आणि वेगळ्या प्रकारचे डेटासेट वापरून प्रशिक्षित करू शकता.
शुभेच्छा कोडिंग!
प्रत्युत्तर द्या