విషయ సూచిక[దాచు][చూపండి]
"గ్రాఫ్ న్యూరల్ నెట్వర్క్లు" (GNNలు) అని పిలువబడే లోతైన అభ్యాస పద్ధతులు గ్రాఫ్ డొమైన్లో పనిచేస్తాయి. ఈ నెట్వర్క్లు ఇటీవలి కాలంలో కంప్యూటర్ విజన్, రికమండర్ సిస్టమ్లు మరియు కాంబినేటోరియల్ ఆప్టిమైజేషన్తో సహా పలు రంగాల్లో వినియోగాన్ని కనుగొన్నాయి.
అదనంగా, ఈ నెట్వర్క్లు సామాజిక నెట్వర్క్లు, ప్రోటీన్-ప్రోటీన్ ఇంటరాక్షన్ నెట్వర్క్లు, నాలెడ్జ్ గ్రాఫ్లు మరియు అనేక అధ్యయన రంగాలలోని ఇతరాలతో సహా సంక్లిష్ట వ్యవస్థలను సూచించడానికి ఉపయోగించవచ్చు.
నాన్-యూక్లిడియన్ స్పేస్ అంటే చిత్రాల వంటి ఇతర రకాల డేటాకు భిన్నంగా గ్రాఫ్ డేటా పని చేస్తుంది. నోడ్లను వర్గీకరించడానికి, లింక్లను అంచనా వేయడానికి మరియు క్లస్టర్ డేటా కోసం, గ్రాఫ్ విశ్లేషణ ఉపయోగించబడుతుంది.
ఈ వ్యాసంలో, మేము గ్రాఫ్ను పరిశీలిస్తాము న్యూరల్ నెట్వర్క్ వివరంగా, దాని రకాలు, అలాగే PyTorch ఉపయోగించి ఆచరణాత్మక ఉదాహరణలను అందిస్తాయి.
కాబట్టి, గ్రాఫ్ అంటే ఏమిటి?
గ్రాఫ్ అనేది నోడ్లు మరియు శీర్షాలతో రూపొందించబడిన ఒక రకమైన డేటా నిర్మాణం. వివిధ నోడ్ల మధ్య కనెక్షన్లు శీర్షాల ద్వారా నిర్ణయించబడతాయి. నోడ్స్లో దిశ సూచించబడితే, గ్రాఫ్ దర్శకత్వం వహించబడుతుంది; లేకుంటే, అది నిర్దేశించబడదు.
గ్రాఫ్ల యొక్క మంచి అప్లికేషన్ a లోని వివిధ వ్యక్తుల మధ్య సంబంధాలను మోడల్ చేయడం సామాజిక నెట్వర్క్. లింక్లు మరియు మార్పిడి వంటి సంక్లిష్ట పరిస్థితులతో వ్యవహరించేటప్పుడు, గ్రాఫ్లు చాలా సహాయకారిగా ఉంటాయి.
వారు సిఫార్సు వ్యవస్థలు, అర్థ విశ్లేషణ, సామాజిక నెట్వర్క్ విశ్లేషణ మరియు నమూనా గుర్తింపు ద్వారా నియమించబడ్డారు
. గ్రాఫ్-ఆధారిత పరిష్కారాలను సృష్టించడం అనేది సంక్లిష్టమైన మరియు పరస్పర సంబంధం ఉన్న డేటాపై అంతర్దృష్టితో కూడిన అవగాహనను అందించే సరికొత్త ఫీల్డ్.
గ్రాఫ్ న్యూరల్ నెట్వర్క్
గ్రాఫ్ న్యూరల్ నెట్వర్క్లు గ్రాఫ్ డేటా ఫార్మాట్లో పనిచేసే ప్రత్యేకమైన న్యూరల్ నెట్వర్క్ రకాలు. గ్రాఫ్ ఎంబెడ్డింగ్ మరియు కన్వల్యూషనల్ న్యూరల్ నెట్వర్క్లు (CNNలు) వాటిపై గణనీయమైన ప్రభావాన్ని చూపుతాయి.
గ్రాఫ్ న్యూరల్ నెట్వర్క్లు నోడ్లు, అంచులు మరియు గ్రాఫ్లను అంచనా వేయడం వంటి పనులలో ఉపయోగించబడతాయి.
- చిత్రాలను వర్గీకరించడానికి CNNలు ఉపయోగించబడతాయి. అదేవిధంగా, ఒక తరగతిని అంచనా వేయడానికి, గ్రాఫ్ నిర్మాణాన్ని సూచించే పిక్సెల్ గ్రిడ్కు GNNలు వర్తింపజేయబడతాయి.
- పునరావృత న్యూరల్ నెట్వర్క్లను ఉపయోగించి వచన వర్గీకరణ. GNNలు గ్రాఫ్ ఆర్కిటెక్చర్లతో కూడా ఉపయోగించబడతాయి, ఇక్కడ పదబంధంలోని ప్రతి పదం నోడ్ అవుతుంది.
నోడ్లు, అంచులు లేదా పూర్తి గ్రాఫ్లను అంచనా వేయడానికి, GNNలను రూపొందించడానికి న్యూరల్ నెట్వర్క్లు ఉపయోగించబడతాయి. నోడ్ స్థాయిలో ఒక అంచనా, ఉదాహరణకు, స్పామ్ గుర్తింపు వంటి సమస్యను పరిష్కరించగలదు.
లింక్ ప్రిడిక్షన్ అనేది సిఫార్సుదారు సిస్టమ్లలో ఒక సాధారణ సందర్భం మరియు అంచుల వారీగా అంచనా సమస్యకు ఉదాహరణ కావచ్చు.
గ్రాఫ్ న్యూరల్ నెట్వర్క్ రకాలు
అనేక న్యూరల్ నెట్వర్క్ రకాలు ఉన్నాయి మరియు వాటిలో మెజారిటీలో కన్వల్యూషనల్ న్యూరల్ నెట్వర్క్లు ఉన్నాయి. ఈ భాగంలో మనం బాగా తెలిసిన GNNల గురించి తెలుసుకుందాం.
గ్రాఫ్ కన్వల్యూషనల్ నెట్వర్క్లు (GCNలు)
అవి క్లాసిక్ CNNలతో పోల్చదగినవి. ఇది సమీపంలోని నోడ్లను చూడటం ద్వారా లక్షణాలను పొందుతుంది. నోడ్ వెక్టార్లను అగ్రిగేట్ చేసిన తర్వాత మరియు అవుట్పుట్ను దట్టమైన లేయర్కి పంపిన తర్వాత నాన్-లీనియారిటీని జోడించడానికి GNNలచే యాక్టివేషన్ ఫంక్షన్ ఉపయోగించబడుతుంది.
ఇది గ్రాఫ్ కన్వల్యూషన్, లీనియర్ లేయర్ మరియు నాన్-లెర్నర్ యాక్టివేషన్ ఫంక్షన్తో రూపొందించబడింది. GCNలు రెండు ప్రధాన రకాలుగా వస్తాయి: స్పెక్ట్రల్ కన్వల్యూషనల్ నెట్వర్క్లు మరియు స్పేషియల్ కన్వల్యూషనల్ నెట్వర్క్లు.
గ్రాఫ్ ఆటో-ఎన్కోడర్ నెట్వర్క్లు
గ్రాఫ్లను ఎలా సూచించాలో తెలుసుకోవడానికి ఇది ఎన్కోడర్ను మరియు ఇన్పుట్ గ్రాఫ్లను పునర్నిర్మించడానికి ప్రయత్నించడానికి డీకోడర్ను ఉపయోగిస్తుంది. ఎన్కోడర్ మరియు డీకోడర్ను కలుపుతూ అడ్డంకి పొర ఉంది.
ఆటో-ఎన్కోడర్లు క్లాస్ బ్యాలెన్స్ను నిర్వహించడంలో అద్భుతమైన పనిని చేస్తాయి కాబట్టి, అవి తరచుగా లింక్ ప్రిడిక్షన్లో ఉపయోగించబడతాయి.
పునరావృత గ్రాఫ్ న్యూరల్ నెట్వర్క్లు (RGNNలు)
బహుళ-సంబంధిత నెట్వర్క్లలో, ఒకే నోడ్ అనేక సంబంధాలను కలిగి ఉంటుంది, ఇది సరైన వ్యాప్తి నమూనాను నేర్చుకుంటుంది మరియు గ్రాఫ్లను నిర్వహించగలదు. సున్నితత్వాన్ని పెంచడానికి మరియు ఓవర్-పారామిటరైజేషన్ను తగ్గించడానికి, ఈ రూపంలో గ్రాఫ్ న్యూరల్ నెట్వర్క్లో రెగ్యులరైజర్లు ఉపయోగించబడతాయి.
మెరుగైన ఫలితాలను పొందడానికి, RGNNలకు తక్కువ ప్రాసెసింగ్ శక్తి అవసరం. అవి టెక్స్ట్ జనరేషన్, స్పీచ్ రికగ్నిషన్, మెషిన్ ట్రాన్స్లేషన్, పిక్చర్ డిస్క్రిప్షన్, వీడియో ట్యాగింగ్ మరియు టెక్స్ట్ సారాంశం కోసం ఉపయోగించబడతాయి.
గేటెడ్ న్యూరల్ గ్రాఫ్ నెట్వర్క్లు (GGNNలు)
దీర్ఘకాలిక ఆధారిత పనుల విషయానికి వస్తే, అవి RGNNలను అధిగమిస్తాయి. దీర్ఘకాలిక డిపెండెన్సీలపై నోడ్, ఎడ్జ్ మరియు టెంపోరల్ గేట్లను చేర్చడం ద్వారా, గేటెడ్ గ్రాఫ్ న్యూరల్ నెట్వర్క్లు పునరావృత గ్రాఫ్ న్యూరల్ నెట్వర్క్లను మెరుగుపరుస్తాయి.
గేట్లు వివిధ దశల్లో డేటాను రీకాల్ చేయడానికి మరియు మర్చిపోవడానికి ఉపయోగించే గేటెడ్ రికరెంట్ యూనిట్ల (GRUs) మాదిరిగానే పనిచేస్తాయి.
పైటార్చ్ ఉపయోగించి గ్రాఫ్ న్యూరల్ నెట్వర్క్ని అమలు చేస్తోంది
మేము దృష్టి పెడుతున్న నిర్దిష్ట సమస్య సాధారణ నోడ్ వర్గీకరణ సమస్య. మా వద్ద ఒక పెద్ద సామాజిక నెట్వర్క్ ఉంది musae-github, ఇది GitHub డెవలపర్ల కోసం ఓపెన్ API నుండి సంకలనం చేయబడింది.
అంచులు నోడ్ల మధ్య పరస్పర అనుచరుల సంబంధాలను చూపుతాయి, ఇవి కనీసం 10 రిపోజిటరీలలో నటించిన డెవలపర్లను (ప్లాట్ఫారమ్ వినియోగదారులు) సూచిస్తాయి (మ్యూచువల్ అనే పదం నిర్దేశించబడని సంబంధాన్ని సూచిస్తుందని గమనించండి).
నోడ్ యొక్క స్థానం, నక్షత్రం గుర్తు ఉన్న రిపోజిటరీలు, యజమాని మరియు ఇమెయిల్ చిరునామా ఆధారంగా, నోడ్ లక్షణాలు తిరిగి పొందబడతాయి. GitHub వినియోగదారు వెబ్ డెవలపర్ అయితే అంచనా వేయడం లేదా a యంత్ర అభ్యాస డెవలపర్ అనేది మన విధి.
ప్రతి వినియోగదారు యొక్క ఉద్యోగ శీర్షిక ఈ లక్ష్య విధికి ఆధారం.
PyTorchని ఇన్స్టాల్ చేస్తోంది
ప్రారంభించడానికి, మేము మొదట ఇన్స్టాల్ చేయాలి పైటోర్చ్. మీరు దీన్ని మీ మెషీన్కు అనుగుణంగా కాన్ఫిగర్ చేయవచ్చు <span style="font-family: Mandali; ">ఇక్కడ క్లిక్ చేయండి . ఇదిగో నాది:
మాడ్యూళ్లను దిగుమతి చేస్తోంది
ఇప్పుడు, మేము అవసరమైన మాడ్యూళ్ళను దిగుమతి చేస్తాము
డేటాను దిగుమతి చేయడం మరియు అన్వేషించడం
కింది దశ డేటాను చదవడం మరియు లేబుల్ ఫైల్ నుండి మొదటి ఐదు వరుసలు మరియు చివరి ఐదు వరుసలను ప్లాట్ చేయడం.
నాలుగు నిలువు వరుసలలో కేవలం రెండు మాత్రమే-నోడ్ యొక్క id (అంటే, వినియోగదారు) మరియు ml_target, వినియోగదారు మెషీన్ లెర్నింగ్ కమ్యూనిటీలో సభ్యుడు అయితే 1 మరియు లేకపోతే 0-ఈ పరిస్థితిలో మాకు సంబంధించినవి.
కేవలం రెండు తరగతులు మాత్రమే ఉన్నందున, మన పని బైనరీ వర్గీకరణ సమస్య అని ఇప్పుడు మనం నిశ్చయించుకోవచ్చు.
గణనీయమైన తరగతి అసమతుల్యత ఫలితంగా, వర్గీకరణదారు తక్కువ ప్రాతినిధ్యం లేని తరగతిని మూల్యాంకనం చేయడం కంటే ఏ తరగతి మెజారిటీ అని ఊహించవచ్చు, తరగతి సమతుల్యతను పరిగణించాల్సిన మరో కీలకమైన అంశం.
ఇతర తరగతుల కంటే మెషిన్ లెర్నింగ్ (లేబుల్=1) నుండి తక్కువ తరగతులు ఉన్నందున హిస్టోగ్రామ్ (ఫ్రీక్వెన్సీ డిస్ట్రిబ్యూషన్)ను ప్లాట్ చేయడం కొంత అసమతుల్యతను వెల్లడిస్తుంది.
ఫీచర్ ఎన్కోడింగ్
నోడ్ల లక్షణాలు ప్రతి నోడ్తో అనుబంధించబడిన లక్షణాన్ని మాకు తెలియజేస్తాయి. డేటాను ఎన్కోడ్ చేయడానికి మా పద్ధతిని అమలు చేయడం ద్వారా, మేము ఆ లక్షణాలను తక్షణమే ఎన్కోడ్ చేయవచ్చు.
డిస్ప్లే కోసం నెట్వర్క్లోని చిన్న భాగాన్ని (60 నోడ్లు చెప్పండి) ఎన్క్యాప్సులేట్ చేయడానికి మేము ఈ పద్ధతిని ఉపయోగించాలనుకుంటున్నాము. కోడ్ ఇక్కడ జాబితా చేయబడింది.
గ్రాఫ్లను రూపొందించడం మరియు ప్రదర్శించడం
మేము టార్చ్ రేఖాగణితాన్ని ఉపయోగిస్తాము. మా గ్రాఫ్ను రూపొందించడానికి డేటా.
విభిన్న (ఐచ్ఛిక) లక్షణాలతో ఒకే గ్రాఫ్ను మోడల్ చేయడానికి, సాధారణ పైథాన్ ఆబ్జెక్ట్ అయిన డేటా ఉపయోగించబడుతుంది. ఈ తరగతిని మరియు క్రింది లక్షణాలను ఉపయోగించడం ద్వారా-ఇవన్నీ టార్చ్ టెన్సర్లు-మేము మా గ్రాఫ్ వస్తువును సృష్టిస్తాము.
ఎన్కోడ్ చేయబడిన నోడ్ లక్షణాలకు కేటాయించబడే విలువ x యొక్క రూపం [నోడ్ల సంఖ్య, లక్షణాల సంఖ్య].
y ఆకారం [నోడ్ల సంఖ్య] మరియు ఇది నోడ్ లేబుల్లకు వర్తించబడుతుంది.
అంచు సూచిక: మళ్లించబడని గ్రాఫ్ను వివరించడానికి, ఒకే రెండు నోడ్లను అనుసంధానించే రెండు విభిన్న దిశల అంచుల ఉనికిని అనుమతించడానికి మేము అసలు అంచు సూచికలను విస్తరించాలి, అయితే అవి వ్యతిరేక దిశల్లో ఉంటాయి.
ఒక జత అంచులు, ఒకటి నోడ్ 100 నుండి 200 వరకు మరియు మరొకటి 200 నుండి 100 వరకు, ఉదాహరణకు, నోడ్లు 100 మరియు 200 మధ్య అవసరం. ఎడ్జ్ సూచికలు అందించబడితే, ఈ విధంగా నిర్దేశించబడని గ్రాఫ్ని సూచించవచ్చు. [2,2*అసలు అంచుల సంఖ్య] టెన్సర్ రూపం అవుతుంది.
మేము గ్రాఫ్ను ప్రదర్శించడానికి మా డ్రా గ్రాఫ్ పద్ధతిని సృష్టిస్తాము. మొదటి దశ మా సజాతీయ నెట్వర్క్ను నెట్వర్క్ఎక్స్ గ్రాఫ్గా మార్చడం, దానిని నెట్వర్క్ఎక్స్.డ్రా ఉపయోగించి డ్రా చేయవచ్చు.
మా GNN మోడల్ని తయారు చేయండి మరియు దానికి శిక్షణ ఇవ్వండి
మేము కాంతి=తప్పుతో ఎన్కోడ్ డేటాను అమలు చేయడం ద్వారా మొత్తం డేటా సెట్ను ఎన్కోడింగ్ చేయడం ద్వారా ప్రారంభిస్తాము మరియు మొత్తం గ్రాఫ్ను నిర్మించడానికి లైట్=ఫాల్స్తో కన్స్ట్రక్ట్ గ్రాఫ్ని కాల్ చేయడం ద్వారా ప్రారంభిస్తాము. మీరు పరిమిత వనరులను కలిగి ఉన్న స్థానిక యంత్రాన్ని ఉపయోగిస్తున్నారని నేను భావిస్తున్నందున మేము ఈ పెద్ద గ్రాఫ్ని గీయడానికి ప్రయత్నించము.
0 మరియు 1 అంకెలను ఉపయోగించి ప్రతి నిర్దిష్ట మాస్క్కు ఏ నోడ్లు చెందినవో గుర్తించే బైనరీ వెక్టర్స్ అయిన మాస్క్లు, శిక్షణ సమయంలో ఏ నోడ్లను చేర్చాలో శిక్షణ దశకు తెలియజేయడానికి మరియు ఏ నోడ్లు పరీక్ష డేటా అని అనుమితి దశకు తెలియజేయడానికి ఉపయోగించవచ్చు. టార్చ్ రేఖాగణిత.రూపాంతరాలు.
AddTrainValTestMask క్లాస్ యొక్క ట్రైనింగ్ మాస్క్, వాల్ మాస్క్ మరియు టెస్ట్ మాస్క్ ప్రాపర్టీలను ఉపయోగించి నోడ్-లెవల్ స్ప్లిట్ని జోడించవచ్చు, ఇది గ్రాఫ్ తీసుకోవడానికి మరియు మా మాస్క్లను ఎలా నిర్మించాలనుకుంటున్నామో పేర్కొనడానికి మాకు వీలు కల్పిస్తుంది.
మేము శిక్షణ కోసం 10%ని ఉపయోగిస్తాము మరియు 60% డేటాను పరీక్ష సెట్గా ఉపయోగిస్తాము, అయితే 30% ధ్రువీకరణ సెట్గా ఉపయోగిస్తాము.
ఇప్పుడు, మేము రెండు GCNConv లేయర్లను పేర్చాము, అందులో మొదటిది ఇన్పుట్ ఫీచర్లుగా మా గ్రాఫ్లోని లక్షణాల సంఖ్యకు సమానమైన అవుట్పుట్ ఫీచర్ గణనను కలిగి ఉంటుంది.
మా తరగతుల సంఖ్యకు సమానమైన అవుట్పుట్ నోడ్లను కలిగి ఉన్న రెండవ లేయర్లో, మేము రెలు యాక్టివేషన్ ఫంక్షన్ను వర్తింపజేస్తాము మరియు గుప్త లక్షణాలను సరఫరా చేస్తాము.
ఎడ్జ్ ఇండెక్స్ మరియు ఎడ్జ్ వెయిట్ అనేవి GCNConv ఫార్వర్డ్ ఫంక్షన్లో అంగీకరించగల అనేక ఎంపికలలో రెండు, కానీ మన పరిస్థితిలో, మనకు మొదటి రెండు వేరియబుల్స్ మాత్రమే అవసరం.
మా మోడల్ గ్రాఫ్లోని ప్రతి నోడ్ యొక్క తరగతిని అంచనా వేయగలదనే వాస్తవం ఉన్నప్పటికీ, మేము ఇప్పటికీ దశను బట్టి ప్రతి సెట్కు విడిగా ఖచ్చితత్వం మరియు నష్టాన్ని గుర్తించాలి.
ఉదాహరణకు, శిక్షణ సమయంలో, మేము ఖచ్చితత్వం మరియు శిక్షణ నష్టాన్ని గుర్తించడానికి శిక్షణా సెట్ను మాత్రమే ఉపయోగించాలనుకుంటున్నాము మరియు ఇక్కడే మా మాస్క్లు ఉపయోగపడతాయి.
తగిన నష్టం మరియు ఖచ్చితత్వాన్ని లెక్కించడానికి, మేము ముసుగు నష్టం మరియు ముసుగు ఖచ్చితత్వం యొక్క విధులను నిర్వచిస్తాము.
మోడల్ శిక్షణ
ఇప్పుడు మేము టార్చ్ ఉపయోగించబడే శిక్షణ ప్రయోజనాన్ని నిర్వచించాము. ఆడమ్ ఒక మాస్టర్ ఆప్టిమైజర్.
ధృవీకరణ ఖచ్చితత్వాన్ని గమనిస్తూనే మేము నిర్దిష్ట సంఖ్యలో యుగాల శిక్షణను నిర్వహిస్తాము.
మేము వివిధ యుగాలలో శిక్షణ యొక్క నష్టాలు మరియు ఖచ్చితత్వాలను కూడా ప్లాట్ చేస్తాము.
గ్రాఫ్ న్యూరల్ నెట్వర్క్ యొక్క ప్రతికూలతలు
GNNలను ఉపయోగించడం వల్ల కొన్ని ప్రతికూలతలు ఉన్నాయి. GNNaని ఎప్పుడు ఉపయోగించాలి మరియు మా మెషీన్ లెర్నింగ్ మోడల్ల పనితీరును ఎలా మెరుగుపరచాలి అనేవి రెండూ మనకు బాగా అర్థం చేసుకున్న తర్వాత స్పష్టంగా తెలియజేయబడతాయి.
- GNNలు నిస్సార నెట్వర్క్లు అయితే, సాధారణంగా మూడు లేయర్లతో, చాలా న్యూరల్ నెట్వర్క్లు పనితీరును మెరుగుపరచడానికి లోతుగా ఉంటాయి. ఈ పరిమితి కారణంగా మేము పెద్ద డేటాసెట్లలో అత్యాధునిక పనితీరును ప్రదర్శించలేకపోతున్నాము.
- గ్రాఫ్లపై మోడల్కు శిక్షణ ఇవ్వడం చాలా కష్టం, ఎందుకంటే వాటి నిర్మాణాత్మక డైనమిక్స్ డైనమిక్.
- ఈ నెట్వర్క్ల యొక్క అధిక గణన ఖర్చుల కారణంగా, ఉత్పత్తి కోసం మోడల్ను స్కేలింగ్ చేయడం సవాళ్లను అందిస్తుంది. మీ గ్రాఫ్ నిర్మాణం భారీగా మరియు సంక్లిష్టంగా ఉంటే ఉత్పత్తి కోసం GNNలను స్కేలింగ్ చేయడం సవాలుగా ఉంటుంది.
ముగింపు
గత కొన్ని సంవత్సరాలుగా, గ్రాఫ్ డొమైన్లో మెషిన్ లెర్నింగ్ సమస్యల కోసం GNNలు శక్తివంతమైన మరియు సమర్థవంతమైన సాధనాలుగా అభివృద్ధి చెందాయి. గ్రాఫ్ న్యూరల్ నెట్వర్క్ల యొక్క ప్రాథమిక అవలోకనం ఈ కథనంలో ఇవ్వబడింది.
ఆ తర్వాత, మీరు మోడల్కు శిక్షణ ఇవ్వడానికి మరియు పరీక్షించడానికి ఉపయోగించే డేటాసెట్ను సృష్టించడం ప్రారంభించవచ్చు. ఇది ఎలా పనిచేస్తుందో మరియు దాని సామర్థ్యం ఏమిటో అర్థం చేసుకోవడానికి, మీరు చాలా దూరం వెళ్లి వేరే రకమైన డేటాసెట్ని ఉపయోగించి దానికి శిక్షణ కూడా ఇవ్వవచ్చు.
హ్యాపీ కోడింగ్!
సమాధానం ఇవ్వూ