فهرست[پټ][ښکاره]
د ژورې زده کړې تخنیکونه چې د "ګراف عصبي شبکې" (GNNs) په نوم پیژندل کیږي د ګراف ډومین کې کار کوي. دې شبکو په دې وروستیو کې په مختلفو برخو کې کارول موندلي، پشمول د کمپیوټر لید، سپارښتونکي سیسټمونه، او مشترک اصلاح کول، د څو نومولو لپاره.
برسېره پردې، دا شبکې د پیچلو سیسټمونو استازیتوب کولو لپاره کارول کیدی شي، پشمول د ټولنیزو شبکو، پروټین - پروټین متقابل عمل شبکې، د پوهې ګراف، او نور د مطالعې په څو برخو کې.
غیر یوکلیډین ځای هغه ځای دی چیرې چې د ګراف ډیټا کار کوي ، د نورو ډولونو معلوماتو لکه عکسونو برعکس. د نوډونو د طبقه بندي کولو لپاره، د لینکونو وړاندوینه، او کلستر ډاټا، د ګراف تحلیل کارول کیږي.
پدې مقاله کې به موږ ګراف معاینه کړو عصبي شبکه په تفصیل سره، د هغې ډولونه، او همدارنګه د PyTorch په کارولو سره عملي مثالونه وړاندې کوي.
نو، ګراف څه شی دی؟
ګراف د معلوماتو جوړښت یو ډول دی چې له نوډونو او عمودیو څخه جوړ شوی دی. د مختلفو نوډونو تر مینځ اړیکې د عمودی پواسطه ټاکل کیږي. که سمت په نوډونو کې ښودل شوی وي، ګراف ته ویل کیږي چې لارښوونه کیږي؛ که نه نو، دا غیر مستقیم دی.
د ګرافونو ښه تطبیق د مختلفو اشخاصو ترمنځ د اړیکو ماډل کول دي ټولنيز جال. کله چې د پیچلو شرایطو سره معامله وکړئ، لکه اړیکې او تبادلې، ګرافونه خورا ګټور دي.
دوی د سپارښتنې سیسټمونو، سیمانټیک تحلیل، د ټولنیزو شبکو تحلیل، او د نمونې پیژندنې لخوا ګمارل شوي
. د ګراف پر بنسټ د حلونو رامینځته کول یو نوی ساحه ده چې د پیچلو او یو بل سره تړلي ډیټا بصیرت پوهه وړاندې کوي.
ګراف عصبي شبکه
د ګراف عصبي شبکې ځانګړي عصبي شبکې ډولونه دي چې کولی شي د ګراف ډیټا فارمیټ کې کار وکړي. د ګراف سرایت کول او قانع کونکي عصبي شبکې (CNNs) په دوی باندې د پام وړ اغیزه لري.
د ګراف عصبي شبکې په دندو کې ګمارل شوي چې د وړاندوینې نوډونه ، څنډې او ګرافونه پکې شامل دي.
- CNN د عکسونو طبقه بندي کولو لپاره کارول کیږي. په ورته ډول، د ټولګي د وړاندوینې لپاره، GNNs د پکسل گرډ ته پلي کیږي چې د ګراف جوړښت استازیتوب کوي.
- د تکراري عصبي شبکو په کارولو سره د متن درجه بندي. GNNs د ګراف جوړښتونو سره هم کارول کیږي چیرې چې په یوه جمله کې هره کلمه یو نوډ دی.
د نوډونو، څنډو، یا بشپړ ګرافونو وړاندوینې لپاره، عصبي شبکې د GNNs رامینځته کولو لپاره کارول کیږي. د نوډ په کچه وړاندوینه، د بیلګې په توګه، د سپیم کشف په څیر ستونزه حل کولی شي.
د لینک وړاندوینه د وړاندیز کونکي سیسټمونو کې یوه عادي قضیه ده او ممکن د څنډې په څیر د وړاندوینې ستونزې یوه بیلګه وي.
د عصبي شبکې ډولونه ګراف
د عصبي شبکو بې شمیره ډولونه شتون لري، او د Convolutional Neural Networks په ډیری برخه کې شتون لري. موږ به پدې برخه کې د خورا مشهور GNNs په اړه زده کړو.
د ګراف تصادفي شبکې (GCNs)
دوی د کلاسیک CNNs سره پرتله کیږي. دا د نږدې نوډونو په کتلو سره ځانګړتیاوې ترلاسه کوي. د فعالولو فنکشن د GNNs لخوا کارول کیږي ترڅو د نوډ ویکتورونو راټولولو او تولید کثافت ته لیږلو وروسته غیر خطي اضافه کړي.
دا د ګراف کنولوشن، یو خطي پرت، او د غیر زده کونکي فعالیت فعالیت څخه جوړ شوی، په اصل کې. GCNs په دوه اصلي ډولونو کې راځي: سپیکٹرل کنولوشنل شبکې او ځایي کنولوشنل شبکې.
د ګراف آټو-انکوډر شبکې
دا یو کوډر کاروي ترڅو زده کړي چې څنګه د ګرافونو نمایندګي وکړي او یو ډیکوډر د ان پټ ګرافونو بیا جوړولو هڅه کولو لپاره. دلته یو خنډ پرت شتون لري چې کوډر او کوډر سره وصل کوي.
څرنګه چې د اتوماتیک کوډ کونکي د ټولګي توازن اداره کولو لپاره خورا ښه دنده ترسره کوي، دوی په مکرر ډول د لینک وړاندوینې کې کارول کیږي.
تکراري ګراف عصبي شبکې (RGNNs)
په څو اړخیزو شبکو کې، چیرې چې یو واحد نوډ ډیری اړیکې لري، دا د غوره خپریدو نمونه زده کوي او کولی شي ګرافونه اداره کړي. د نرموالي د زیاتوالي او د ډیر پیرامیټریزیشن کمولو لپاره، د ګراف عصبي شبکې په دې بڼه کې منظم کونکي کارول کیږي.
د غوره پایلو ترلاسه کولو لپاره، RGNNs لږ پروسس ځواک ته اړتیا لري. دوی د متن تولید، د وینا پیژندنې، د ماشین ژباړې، د انځور تشریح، ویډیو ټیګ کولو، او د متن لنډیز کولو لپاره کارول کیږي.
ګیټډ عصبي ګراف شبکې (GGNNs)
کله چې دا د اوږدې مودې پورې تړلو کارونو ته راځي، دوی د RGNNs څخه ښه کوي. په اوږدمهاله انحصارونو کې د نوډ، څنډې، او لنډمهاله دروازو په شمول، د ګیټ شوي ګراف عصبي شبکې تکراري ګراف عصبي شبکې ته وده ورکوي.
دروازې د Gated Recurrent Units (GRUs) سره ورته کار کوي چې دوی په مختلفو مرحلو کې د معلوماتو یادولو او هیرولو لپاره کارول کیږي.
د Pytorch په کارولو سره د ګراف عصبي شبکې پلي کول
ځانګړې مسله چې موږ به یې تمرکز وکړو د عام نوډ کټګورۍ مسله ده. موږ د پام وړ ټولنیز شبکه لرو چې نوم یې دی musae-github، کوم چې د GitHub پراختیا کونکو لپاره د خلاص API څخه ترتیب شوی و.
څنډې د نوډونو تر مینځ د متقابل پیروانو اړیکې ښیې ، کوم چې پراختیا کونکي (د پلیټ فارم کارونکي) استازیتوب کوي چې لږترلږه 10 ذخیره کې ستوري شوي دي (یادونه وکړئ چې متقابل کلمه غیر مستقیم اړیکه په ګوته کوي).
د نوډ موقعیت پراساس، ستوري شوي ذخیره، کار ورکوونکي، او بریښنالیک پته، د نوډ ځانګړتیاوې بیرته اخیستل کیږي. وړاندوینه کول که د GitHub کاروونکي د ویب پراختیا کونکي وي یا a د ماشین زده کړې پراختیا کونکی زموږ دنده ده.
د هر کارونکي د دندې سرلیک د دې هدف کولو فعالیت لپاره د اساس په توګه کار کاوه.
د PyTorch نصب کول
د پیل کولو لپاره، موږ باید لومړی نصب کړو پینټورچ. تاسو کولی شئ دا د خپل ماشین له مخې تنظیم کړئ دلته. دلته زما دی:
د ماډلونو واردول
اوس، موږ اړین ماډلونه واردوو
د معلوماتو واردول او سپړنه
لاندې مرحله د معلوماتو لوستل او د لیبل فایل څخه لومړی پنځه قطارونه او وروستي پنځه قطارونه پلاټ کول دي.
له څلورو کالمونو څخه یوازې دوه - د نوډ id (یعني کارن) او ml_target، کوم چې 1 دی که چیرې کارن د ماشین زده کړې ټولنې غړی وي او 0 بل ډول - پدې حالت کې زموږ لپاره اړین دي.
دې ته په پام سره چې یوازې دوه ټولګي شتون لري، موږ اوس ډاډه یو چې زموږ دنده د بائنری درجه بندي مسله ده.
د پام وړ ټولګي د عدم توازن په پایله کې، طبقه بندي کوالی شي د ټیټې درجې طبقې د ارزونې پر ځای چې کوم طبقه اکثریت ده، د ټولګي توازن بل مهم فکتور په پام کې نیسي.
د هسټوګرام پلیټ کول (د فریکونسی ویش) یو څه نابرابري څرګندوي ځکه چې د ماشین زده کړې (لیبل = 1) څخه د نورو ټولګیو په پرتله لږ ټولګي شتون لري.
د فیچر کوډ کول
د نوډ ځانګړتیاوې موږ ته د هغه ځانګړتیا په اړه خبر ورکوي چې د هر نوډ سره تړاو لري. د ډیټا کوډ کولو لپاره زموږ میتود پلي کولو سره ، موږ کولی شو سمدستي دا ځانګړتیاوې کوډ کړو.
موږ غواړو د دې میتود څخه کار واخلو ترڅو د شبکې کوچنۍ برخه (وایئ، 60 نوډونه) د نندارې لپاره ځای په ځای کړو. کوډ دلته لیست شوی دی.
د ګرافونو ډیزاین او ښودل
موږ به د مشعل جیومیټریک څخه کار واخلو. زموږ د ګراف جوړولو لپاره ډاټا.
د مختلف (اختیاري) ملکیتونو سره د یو واحد ګراف ماډل کولو لپاره، ډاټا چې یو ساده Python څیز دی کارول کیږي. د دې ټولګي او لاندې ځانګړتیاو په کارولو سره - چې ټول د مشعل ټینسرونه دي - موږ به خپل ګراف اعتراض جوړ کړو.
د ارزښت 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 دوه پرتونه وخورئ، چې لومړی یې د محصول ځانګړتیاو شمیره لري چې زموږ په ګراف کې د ان پټ ځانګړتیاوو په توګه د ځانګړتیاوو شمیر سره مساوي دي.
په دویمه طبقه کې چې زموږ د ټولګیو د شمیر سره مساوي محصول نوډونه لري، موږ د ریلو فعالولو فعالیت پلي کوو او پټې ځانګړتیاوې وړاندې کوو.
د څنډې شاخص او د څنډې وزن دوه له ډیری انتخابونو x څخه دي چې GCNConv کولی شي په راتلونکي فعالیت کې ومني ، مګر زموږ په وضعیت کې ، موږ یوازې لومړی دوه متغیرونو ته اړتیا لرو.
د دې حقیقت سره سره چې زموږ ماډل به وکوالی شي په ګراف کې د هر نوډ ټولګي وړاندوینه وکړي، موږ لاهم اړتیا لرو چې د هرې سیټ لپاره دقیقیت او زیان په جلا توګه د مرحلې پورې اړه ولري.
د مثال په توګه ، د روزنې په جریان کې ، موږ یوازې د روزنې سیټ کارول غواړو ترڅو دقت او روزنې زیان وټاکو ، او له همدې امله دا هغه ځای دی چې زموږ ماسکونه په کار راځي.
د مناسب تاوان او دقت محاسبه کولو لپاره، موږ به د ماسک شوي ضایع او د ماسک شوي درستیت دندې تعریف کړو.
د ماډل روزنه
اوس چې موږ د روزنې هدف تعریف کړی د کوم لپاره چې مشعل به کارول کیږي. آدم یو ماسټر اصلاح کونکی دی.
موږ به د یو ټاکلي شمیر وختونو لپاره روزنه ترسره کړو پداسې حال کې چې د اعتبار دقت ته سترګې په لار یو.
موږ د مختلف دورونو په اوږدو کې د روزنې زیانونه او دقت هم په ګوته کوو.
د ګراف عصبي شبکې زیانونه
د GNNs کارول یو څو زیانونه لري. کله چې GNNa استخدام کړو او زموږ د ماشین زده کړې ماډلونو فعالیت ته وده ورکولو څرنګوالی دواړه به موږ ته روښانه شي وروسته له دې چې موږ د دوی په اړه ښه پوهیږو.
- پداسې حال کې چې GNNs لږې شبکې دي، په ځانګړې توګه د دریو پرتونو سره، ډیری عصبي شبکې کولی شي د فعالیت ښه کولو لپاره ژورې ته لاړ شي. موږ نشو کولی د دې محدودیت له امله په لوی ډیټاسیټونو کې په کافي برخه کې ترسره کړو.
- په ګرافونو کې د ماډل روزنه خورا ستونزمنه ده، ځکه چې د دوی ساختماني متحرکات متحرک دي.
- د دې شبکو د لوړ کمپیوټري لګښتونو له امله، د تولید لپاره د ماډل اندازه کول ننګونې وړاندې کوي. د تولید لپاره د GNNs اندازه کول به ننګونه وي که ستاسو د ګراف جوړښت خورا لوی او پیچلي وي.
پایله
په تیرو څو کلونو کې، GNNs په ګراف ډومین کې د ماشین زده کړې مسلو لپاره پیاوړي او اغیزمن وسیلو ته وده ورکړې. په دې مقاله کې د ګراف عصبي شبکو بنسټیز نظر ورکول کیږي.
له هغې وروسته، تاسو کولی شئ د ډیټاسیټ رامینځته کول پیل کړئ چې د ماډل روزنې او ازموینې لپاره به وکارول شي. د دې لپاره چې پوه شئ چې دا څنګه کار کوي او د څه شي وړتیا لري، تاسو کولی شئ ډیر لرې لاړ شئ او د مختلف ډول ډیټاسیټ په کارولو سره یې روزنه ورکړئ.
خوښ کوډینګ!
یو ځواب ورکړئ ووځي