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