مواد جي جدول[لڪ][ڏسو]
ڊيپ لرننگ ٽيڪنڪ جيڪي ”گراف نيورل نيٽ ورڪ“ (GNNs) جي نالي سان سڃاتي وينديون آهن گراف ڊومين ۾ هلنديون آهن. انهن نيٽ ورڪن کي تازو ئي مختلف شعبن ۾ استعمال مليا آهن، جن ۾ ڪمپيوٽر وژن، سفارش ڪندڙ نظام، ۽ گڏيل اصلاح، چند نالا شامل آهن.
ان کان علاوه، اهي نيٽ ورڪ پيچيده سسٽم جي نمائندگي ڪرڻ لاء استعمال ڪري سگھجن ٿيون، بشمول سماجي نيٽ ورڪ، پروٽين-پروٽين جي رابطي جا نيٽ ورڪ، علم گراف، ۽ ٻين مطالعي جي ڪيترن ئي شعبن ۾.
غير euclidean خلا آهي جتي گراف ڊيٽا ڪم ڪري ٿو، ٻين قسمن جي ڊيٽا جي برعڪس جهڙوڪ تصويرون. نوڊس کي درجه بندي ڪرڻ لاءِ، ڳنڍڻن جي اڳڪٿي ڪرڻ، ۽ ڪلستر ڊيٽا، گراف تجزيو استعمال ڪيو ويندو آهي.
هن آرٽيڪل ۾، اسان گراف جي جانچ ڪنداسين اعصابي نيٽ ورڪ تفصيل سان، ان جا قسم، گڏو گڏ PyTorch استعمال ڪندي عملي مثال ڏيو.
پوء، گراف ڇا آهي؟
گراف هڪ قسم جي ڊيٽا جي جوڙجڪ آهي جيڪا نوڊس ۽ عمودي مان ٺهيل آهي. مختلف نوڊس جي وچ ۾ ڪنيڪشن عمودي طرفان طئي ٿيل آهن. جيڪڏهن هدايت نوڊس ۾ اشارو ڪيو ويو آهي، گراف کي چيو ويندو آهي هدايت ڪئي وڃي؛ ٻي صورت ۾، اهو اڻ سڌي طرح آهي.
گرافس جي هڪ سٺي ايپليڪيشن مختلف ماڻهن جي وچ ۾ لاڳاپن کي ماڊل ڪندي آهي سوشل نيٽورڪ. جڏهن پيچيده حالتن سان معاملو ڪرڻ، جهڙوڪ لنڪس ۽ ايڪسچينج، گراف تمام مددگار هوندا آهن.
اهي سفارش واري نظام، لفظي تجزيي، سماجي نيٽ ورڪ تجزيي، ۽ نمونن جي سڃاڻپ پاران ملازمت آهن
. گراف جي بنياد تي حل ٺاهڻ هڪ بلڪل نئون ميدان آهي جيڪو پيش ڪري ٿو پيچيده ۽ باضابطه ڊيٽا جي بصيرت واري سمجھ.
گراف نيورل نيٽورڪ
گراف نيورل نيٽ ورڪ خاص نيورل نيٽ ورڪ جا قسم آهن جيڪي گراف ڊيٽا فارميٽ تي هلائي سگهن ٿيون. گراف ايمبيڊنگ ۽ ڪنووليشنل نيورل نيٽ ورڪ (CNNs) انهن تي اهم اثر رکن ٿا.
گراف نيورل نيٽ ورڪ انهن ڪمن ۾ استعمال ڪيا ويا آهن جن ۾ اڳڪٿي ڪندڙ نوڊس، ڪنڊن ۽ گراف شامل آهن.
- CNN جي تصويرن کي درجه بندي ڪرڻ لاء استعمال ڪيو ويندو آهي. اهڙي طرح، هڪ طبقي جي اڳڪٿي ڪرڻ لاء، GNNs کي پکسل گرڊ تي لاڳو ڪيو ويو آهي جيڪو گراف جي جوڙجڪ جي نمائندگي ڪري ٿو.
- بار بار نيورل نيٽ ورڪ استعمال ڪندي متن جي درجه بندي. GNNs پڻ استعمال ڪيا ويا آھن گراف آرڪيٽيڪچر سان جتي جملي ۾ ھر لفظ ھڪڙو نوڊ آھي.
نوڊس، ڪنڊن، يا مڪمل گرافس جي اڳڪٿي ڪرڻ لاءِ، نيورل نيٽ ورڪ استعمال ڪيا ويندا آھن GNNs ٺاھڻ لاءِ. نوڊ جي سطح تي هڪ اڳڪٿي، مثال طور، هڪ مسئلو حل ڪري سگهي ٿو جهڙوڪ اسپام ڳولڻ.
لنڪ جي اڳڪٿي هڪ عام صورت آهي سفارش ڪندڙ سسٽم ۾ ۽ ٿي سگهي ٿو هڪ مثالي نموني جي اڳڪٿي واري مسئلي جو.
گراف نيورل نيٽ ورڪ جا قسم
ڪيتريون ئي نيورل نيٽ ورڪ جا قسم موجود آهن، ۽ Convolutional Neural Networks انهن مان اڪثريت ۾ موجود آهن. اسان هن حصي ۾ سڀ کان وڌيڪ معروف GNN بابت سکندا سين.
گراف Convolutional Networks (GCNs)
اهي کلاسک سي اين اين جي مقابلي ۾ آهن. اهو ويجھي نوڊس کي ڏسڻ سان خاصيتون حاصل ڪري ٿو. ايڪٽيوشن فنڪشن GNNs پاران استعمال ڪيو ويندو آهي غير لڪيريت شامل ڪرڻ لاءِ نوڊ ویکٹرز کي گڏ ڪرڻ ۽ ٻاھرين پرت ڏانھن ٻاھر موڪلڻ کان پوءِ.
اهو ٺهيل آهي گراف ڪنوليشن، هڪ لڪير پرت، ۽ هڪ غير سکيا ڏيندڙ ايڪٽيوشن فنڪشن، جوهر ۾. GCNs ٻن مکيه قسمن ۾ اچن ٿا: اسپيڪٽرل ڪنوولوشنل نيٽ ورڪ ۽ اسپيشل ڪنوولوشنل نيٽ ورڪ.
گراف آٽو انڪوڊر نيٽ ورڪ
اهو هڪ انڪوڊر استعمال ڪري ٿو سکڻ لاءِ ته ڪيئن پيش ڪجي گرافس ۽ هڪ ڊيڪوڊر ان پٽ گرافس کي ٻيهر ٺاهڻ جي ڪوشش ڪرڻ لاءِ. انڪوڊر ۽ ڊيڪوڊر کي ڳنڍيندڙ هڪ رڪاوٽ پرت آهي.
جيئن ته آٽو-انڪوڊرز ڪلاس بيلنس کي سنڀالڻ جو هڪ بهترين ڪم ڪندا آهن، اهي اڪثر ڪڙي جي اڳڪٿي ۾ استعمال ٿيندا آهن.
بار بار گراف نيورل نيٽ ورڪ (RGNNs)
گھڻن-رابطي واري نيٽ ورڪن ۾، جتي ھڪڙي نوڊ جا ڪيترائي لاڳاپا آھن، اھو سکي ٿو بھترين ڊفيوژن وارو نمونو ۽ گراف کي منظم ڪري سگھي ٿو. نرمي کي وڌائڻ ۽ اوور-پيراميٽرائيزيشن کي گھٽائڻ لاءِ، ريگولرائيزر استعمال ڪيا ويندا آھن ھن شڪل ۾ گراف نيورل نيٽ ورڪ.
بهتر نتيجا حاصل ڪرڻ لاءِ، RGNNs کي گھٽ پروسيسنگ پاور جي ضرورت آھي. اهي استعمال ڪيا ويندا آهن ٽيڪسٽ نسل، تقرير جي سڃاڻپ، مشين جي ترجمي، تصوير جي وضاحت، وڊيو ٽيگنگ، ۽ ٽيڪسٽ اختصار.
گيٽيڊ نيورل گراف نيٽ ورڪ (GGNNs)
جڏهن اهو ڊگهي مدت تي منحصر ڪمن تي اچي ٿو، اهي آر جي اين اينز کي ختم ڪن ٿا. نوڊ، کنڊ، ۽ عارضي دروازن کي ڊگھي مدت جي انحصار تي شامل ڪرڻ سان، گيٽ گراف نيورل نيٽ ورڪ بار بار گراف نيورل نيٽ ورڪ کي وڌايو.
دروازا ساڳيءَ طرح ڪم ڪن ٿا Gated Recurrent Units (GRUs) جنهن ۾ اهي مختلف مرحلن ۾ ڊيٽا کي ياد ڪرڻ ۽ وسارڻ لاءِ استعمال ٿين ٿا.
Pytorch استعمال ڪندي گراف نيورل نيٽورڪ کي لاڳو ڪرڻ
مخصوص مسئلو جنهن تي اسان ڌيان ڏينداسين هڪ عام نوڊ درجه بندي وارو مسئلو آهي. اسان وٽ ھڪڙو وڏو سماجي نيٽ ورڪ آھي جنھن کي سڏيو ويندو آھي 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 گراف ۾ تبديل ڪرڻ آهي، جيڪو پوءِ NetworkX.draw استعمال ڪندي ٺاهي سگهجي ٿو.
اسان جي GNN ماڊل ٺاهيو ۽ ان کي تربيت ڏيو
اسان شروع ڪريون ٿا ڊيٽا جي پوري سيٽ کي انڪوڊ ڪندي انڪوڊ ڊيٽا کي ايگزيڪيوٽو ڪندي light=False ۽ پوءِ ڪال ڪري Construct graph with light=False پوري گراف کي ٺاهڻ لاءِ. اسان هن وڏي گراف کي ڪڍڻ جي ڪوشش نه ڪنداسين ڇو ته مان سمجهان ٿو ته توهان مقامي مشين استعمال ڪري رهيا آهيو جنهن جا محدود وسيلا آهن.
ماسڪ، جيڪي بائنري ویکٹر آهن جيڪي سڃاڻپ ڪن ٿا ته ڪهڙن نوڊس جو تعلق هر مخصوص ماسڪ سان آهي انگن 0 ۽ 1 کي استعمال ڪندي، ٽريننگ جي مرحلي کي مطلع ڪرڻ لاءِ استعمال ڪري سگهجي ٿو ڪهڙن نوڊس کي ٽريننگ دوران شامل ڪيو وڃي ۽ انفرنس مرحلي کي ٻڌائڻ لاءِ ته ڪهڙا نوڊس ٽيسٽ ڊيٽا آهن. مشعل geometric.transforms.
ھڪڙو نوڊ-سطح جي تقسيم شامل ڪري سگھجي ٿو ٽريننگ ماسڪ، وال ماسڪ، ۽ ٽيسٽ ماسڪ پراپرٽيز کي استعمال ڪندي AddTrainValTestMask ڪلاس، جيڪو گراف وٺڻ لاءِ استعمال ٿي سگھي ٿو ۽ اسان کي اھو بيان ڪرڻ جي قابل بڻائي ٿو ته اسان پنھنجي ماسڪ کي ڪيئن ٺاھڻ چاھيون ٿا.
اسان صرف استعمال ڪريون ٿا 10٪ ٽريننگ لاءِ ۽ 60٪ ڊيٽا استعمال ڪريون ٿا ٽيسٽ سيٽ جي طور تي جڏهن 30٪ استعمال ڪريون ٿا تصديق سيٽ جي طور تي.
ھاڻي، اسان ٻن GCNConv تہن کي اسٽيڪ ڪنداسين، جن مان پھرين ھڪڙي آئوٽ پُٽ فيچر جي ڳڻپ آھي جيڪا اسان جي گراف ۾ خصوصيتن جي تعداد جي برابر آھي ان پٽ فيچرز جي طور تي.
ٻئي پرت ۾، جنهن ۾ اسان جي طبقن جي تعداد جي برابر آئوٽ نوڊس شامل آهن، اسان هڪ ريلو ايڪٽيويشن فنڪشن لاڳو ڪريون ٿا ۽ لڪير خاصيتن کي فراهم ڪريون ٿا.
ايج انڊيڪس ۽ ايج ويٽ ٻن ڪيترن ئي اختيارن مان آھن x جيڪي GCNConv قبول ڪري سگھن ٿا فارورڊ فنڪشن ۾، پر اسان جي صورتحال ۾، اسان کي صرف پھرين ٻن متغيرن جي ضرورت آھي.
ان حقيقت جي باوجود ته اسان جو ماڊل گراف ۾ هر نوڊ جي درجي جي اڳڪٿي ڪرڻ جي قابل هوندو، اسان کي اڃا تائين هر سيٽ جي درستگي ۽ نقصان جو اندازو لڳائڻو پوندو الڳ الڳ مرحلي جي لحاظ کان.
مثال طور، ٽريننگ دوران، اسان صرف ٽريننگ سيٽ کي استعمال ڪرڻ چاهيون ٿا درستي ۽ تربيتي نقصان جو اندازو لڳائڻ لاءِ، ۽ تنهن ڪري هي اهو آهي جتي اسان جا ماسڪ هٿ ۾ اچن ٿا.
مناسب نقصان ۽ درستگي کي ڳڻڻ لاءِ، اسان نقاب ٿيل نقصان ۽ نقاب جي درستگي جي ڪمن جي وضاحت ڪنداسين.
ماڊل جي تربيت
هاڻي ته اسان ٽريننگ جو مقصد بيان ڪيو آهي جنهن لاءِ مشعل استعمال ڪئي ويندي. آدم هڪ ماسٽر اصلاح ڪندڙ آهي.
تصديق جي درستگي تي نظر رکڻ دوران اسان دورن جي هڪ خاص تعداد لاءِ تربيت ڪنداسين.
اسان مختلف دورن ۾ تربيت جي نقصانن ۽ درستگين کي پڻ پلاٽ ڪريون ٿا.
گراف نيورل نيٽ ورڪ جا نقصان
GNNs استعمال ڪرڻ جا ڪجھ نقصان آھن. GNNa کي ڪڏھن استعمال ڪيو وڃي ۽ اسان جي مشين لرننگ ماڊلز جي ڪارڪردگيءَ کي ڪيئن وڌائڻو آھي، ٻئي اسان کي انھن جي بھتر سمجھ کان پوءِ واضح ڪيو ويندو.
- جڏهن ته GNNs اٿلي نيٽ ورڪ آهن، عام طور تي ٽن تہن سان، اڪثر نيورل نيٽ ورڪ ڪارڪردگي کي بهتر بڻائڻ لاءِ گہرا ٿي سگهن ٿا. اسان هن حد جي ڪري وڏي ڊيٽا سيٽن تي ڪم ڪرڻ جي قابل نه آهيون.
- گرافس تي ماڊل کي تربيت ڏيڻ وڌيڪ ڏکيو آهي، ڇاڪاڻ ته انهن جي ساخت جي متحرڪ متحرڪ آهن.
- انهن نيٽ ورڪن جي اعلي حسابي قيمتن جي ڪري، پيداوار لاء ماڊل اسڪيلنگ کي چئلينج پيش ڪري ٿو. پيداوار لاءِ GNNs کي ماپڻ مشڪل ٿيندو جيڪڏھن توھان جو گراف جو ڍانچو وڏو ۽ پيچيده آھي.
ٿڪل
گذريل ڪجھ سالن کان، GNNs گراف ڊومين ۾ مشين سکيا جي مسئلن لاء طاقتور ۽ موثر اوزار ۾ ترقي ڪئي آھي. گراف نيورل نيٽ ورڪ جو هڪ بنيادي جائزو هن مضمون ۾ ڏنو ويو آهي.
ان کان پوء، توهان ڊيٽابيس ٺاهڻ شروع ڪري سگهو ٿا جيڪو ٽريننگ ۽ ماڊل کي جانچڻ لاء استعمال ڪيو ويندو. اهو سمجهڻ لاءِ ته اهو ڪيئن ڪم ڪري ٿو ۽ اهو ڇا ڪرڻ جي قابل آهي، توهان پڻ تمام گهڻو اڳتي وڃو ۽ ان کي مختلف قسم جي ڊيٽا سيٽ استعمال ڪندي ٽريننگ ڪري سگهو ٿا.
ڪوڊنگ خوش!
جواب ڇڏي وڃو