පටුන[සඟවන්න][පෙන්වන්න]
"ප්රස්ථාර ස්නායු ජාල" (GNNs) ලෙස හඳුන්වන ගැඹුරු ඉගෙනුම් ක්රම ප්රස්ථාර වසම තුළ ක්රියාත්මක වේ. මෙම ජාල මෑතකදී පරිගණක දැක්ම, නිර්දේශක පද්ධති, සහ සංයුක්ත ප්රශස්තිකරණය ඇතුළු විවිධ ක්ෂේත්රවල භාවිතය සොයාගෙන ඇත.
මීට අමතරව, මෙම ජාල සමාජ ජාල, ප්රෝටීන්-ප්රෝටීන අන්තර්ක්රියා ජාල, දැනුම ප්රස්ථාර සහ වෙනත් අධ්යයන ක්ෂේත්ර කිහිපයක ඇතුළුව සංකීර්ණ පද්ධති නියෝජනය කිරීමට භාවිතා කළ හැකිය.
යුක්ලීඩීය නොවන අවකාශය යනු පින්තූර වැනි අනෙකුත් දත්ත වර්ගවලට ප්රතිවිරුද්ධව ප්රස්තාර දත්ත ක්රියාත්මක වන ස්ථානයයි. නෝඩ් වර්ගීකරණය කිරීම, සබැඳි පුරෝකථනය කිරීම සහ පොකුරු දත්ත සඳහා ප්රස්ථාර විශ්ලේෂණය භාවිතා කරයි.
මෙම ලිපියෙන් අපි ප්රස්තාරය විමසා බලමු ස්නායු ජාලය විස්තරාත්මකව, එහි වර්ග මෙන්ම PyTorch භාවිතා කරමින් ප්රායෝගික උදාහරණ සපයයි.
ඉතින්, Graph යනු කුමක්ද?
ප්රස්ථාරයක් යනු නෝඩ් සහ සිරස් වලින් සැදුම්ලත් දත්ත ව්යුහයකි. විවිධ නෝඩ් අතර සම්බන්ධතා vertices මගින් තීරණය වේ. දිශාව නෝඩ් වල දක්වා තිබේ නම්, ප්රස්තාරය යොමු කරන බව කියනු ලැබේ; එසේ නොමැති නම්, එය නොපැහැදිලි වේ.
ප්රස්ථාරවල හොඳ යෙදුමක් වන්නේ a හි විවිධ පුද්ගලයන් අතර සබඳතා ආදර්ශන කිරීමයි සමාජ ජාලය. සබැඳි සහ හුවමාරු වැනි සංකීර්ණ තත්වයන් සමඟ කටයුතු කරන විට, ප්රස්තාර ඉතා ප්රයෝජනවත් වේ.
ඔවුන් නිර්දේශ පද්ධති, අර්ථ විශ්ලේෂණ, සමාජ ජාල විශ්ලේෂණය සහ රටා හඳුනාගැනීම මගින් සේවයේ යොදවා ඇත
. ප්රස්ථාර මත පදනම් වූ විසඳුම් නිර්මාණය කිරීම සංකීර්ණ සහ අන්තර් සම්බන්ධිත දත්ත පිළිබඳ අවබෝධාත්මක අවබෝධයක් ලබා දෙන නවතම ක්ෂේත්රයකි.
ප්රස්තාර ස්නායු ජාලය
ප්රස්තාර ස්නායු ජාල යනු ප්රස්ථාර දත්ත ආකෘතියක් මත ක්රියා කළ හැකි විශේෂිත ස්නායු ජාල වර්ග වේ. ප්රස්ථාර කාවැද්දීම සහ පරිවර්තනීය ස්නායු ජාල (CNNs) ඒවාට සැලකිය යුතු බලපෑමක් ඇති කරයි.
ප්රස්ථාර ස්නායුක ජාලයන් නෝඩ්, දාර සහ ප්රස්ථාර පුරෝකථනය කිරීම ඇතුළත් කාර්යයන් සඳහා යොදා ගනී.
- පින්තූර වර්ගීකරණය කිරීමට CNN භාවිතා කරයි. ඒ හා සමානව, පන්තියක් පුරෝකථනය කිරීමට, GNNs ප්රස්ථාර ව්යුහය නියෝජනය කරන පික්සල් ජාලයට යොදනු ලැබේ.
- පුනරාවර්තන ස්නායුක ජාල භාවිතයෙන් පෙළ වර්ගීකරණය. වාක්ය ඛණ්ඩයක ඇති සෑම වචනයක්ම නෝඩයක් වන ප්රස්ථාර ගෘහනිර්මාණ සමඟ ද GNN භාවිතා වේ.
නෝඩ්, දාර හෝ සම්පූර්ණ ප්රස්ථාර පුරෝකථනය කිරීම සඳහා, GNN නිර්මාණය කිරීමට ස්නායු ජාල භාවිතා කරයි. නෝඩ් මට්ටමේ පුරෝකථනයක්, උදාහරණයක් ලෙස, අයාචිත තැපැල් හඳුනාගැනීම වැනි ගැටලුවක් විසඳාගත හැක.
සබැඳි පුරෝකථනය නිර්දේශිත පද්ධතිවල සාමාන්ය සිද්ධියක් වන අතර එය අන්තයට අනුව අනාවැකි ගැටලුවකට උදාහරණයක් විය හැකිය.
ප්රස්තාර ස්නායු ජාල වර්ග
ස්නායු ජාල වර්ග ගණනාවක් පවතින අතර, ඒවායින් බහුතරයක Convolutional Neural Networks පවතී. අපි මෙම කොටසින් වඩාත් ප්රසිද්ධ GNN ගැන ඉගෙන ගනිමු.
ප්රස්ථාර පරිවර්තන ජාල (GCNs)
ඒවා සම්භාව්ය CNN සමඟ සැසඳිය හැකිය. අසල ඇති නෝඩ් දෙස බැලීමෙන් එය ලක්ෂණ ලබා ගනී. සක්රීය කිරීමේ ශ්රිතය GNNs විසින් නෝඩ් දෛශික එකතු කිරීමෙන් සහ ප්රතිදානය ඝන ස්තරය වෙත යැවීමෙන් පසු රේඛීය නොවන බව එක් කිරීමට භාවිතා කරයි.
එය සෑදී ඇත්තේ ප්රස්ථාර සංකෝචනය, රේඛීය ස්ථරයක් සහ සාරයෙන් ඉගෙන ගන්නා නොවන සක්රීය කිරීමේ ශ්රිතයකිනි. GCNs ප්රධාන ප්රභේද දෙකකින් පැමිණේ: වර්ණාවලි පරිවර්තන ජාල සහ අවකාශීය සංකෝචන ජාල.
ප්රස්ථාර ස්වයංක්රීය-කේතක ජාල
එය ප්රස්ථාර නිරූපණය කරන ආකාරය ඉගෙන ගැනීමට සංකේතකයක් සහ ආදාන ප්රස්ථාර ප්රතිනිර්මාණය කිරීමට උත්සාහ කිරීමට විකේතකයක් භාවිතා කරයි. කේතකය සහ විකේතකය සම්බන්ධ කරන බාධක තට්ටුවක් ඇත.
ස්වයංක්රීය-කේතකයින් පන්ති ශේෂය හැසිරවීමේ විශිෂ්ට කාර්යයක් කරන බැවින්, ඒවා සම්බන්ධක පුරෝකථනයේදී නිතර භාවිතා වේ.
පුනරාවර්තන ප්රස්තාර ස්නායුක ජාල (RGNNs)
බහු-සම්බන්ධතා ජාල තුළ, තනි නෝඩයක් සම්බන්ධතා රාශියක් ඇති විට, එය ප්රශස්ත විසරණ රටාව ඉගෙන ගන්නා අතර ප්රස්ථාර කළමනාකරණය කළ හැකිය. සුමට බව වැඩි කිරීම සහ අධි-පරාමිතිකරණය අඩු කිරීම සඳහා, මෙම ප්රස්ථාර ස්නායු ජාලයේ විධිමත්කාරක භාවිතා කරනු ලැබේ.
වඩා හොඳ ප්රතිඵල ලබා ගැනීම සඳහා, RGNN සඳහා අඩු සැකසුම් බලයක් අවශ්ය වේ. ඒවා පෙළ උත්පාදනය, කථන හඳුනාගැනීම, යන්ත්ර පරිවර්තනය, පින්තූර විස්තරය, වීඩියෝ ටැග් කිරීම සහ පෙළ සාරාංශ කිරීම සඳහා යොදා ගැනේ.
Gated Neural Graph Networks (GGNNs)
දිගුකාලීන යැපෙන කාර්යයන් සම්බන්ධයෙන් ගත් කල, ඒවා RGNNs අභිබවා යයි. දිගු කාලීන පරායත්තතා මත නෝඩ්, දාරය සහ තාවකාලික ද්වාර ඇතුළත් කිරීමෙන්, ද්වාර ප්රස්ථාර ස්නායු ජාල පුනරාවර්තන ප්රස්ථාර ස්නායු ජාල වැඩි දියුණු කරයි.
ගේට්ටු ක්රියා කරන්නේ Gated Recurrent Units (GRUs) හා සමානව, ඒවා විවිධ අවධීන්හිදී දත්ත නැවත කැඳවීමට සහ අමතක කිරීමට භාවිතා කරයි.
Pytorch භාවිතයෙන් Graph Neural Network ක්රියාත්මක කිරීම
අපි අවධානය යොමු කරන විශේෂිත ගැටළුව පොදු නෝඩ් වර්ගීකරණ ගැටළුවකි. අපට විශාල සමාජ ජාලයක් ඇත musae-github, GitHub සංවර්ධකයින් සඳහා විවෘත API වෙතින් සම්පාදනය කරන ලදී.
Edges මගින් නෝඩ් අතර අන්යෝන්ය අනුගාමික සම්බන්ධතා පෙන්වයි, එය අවම වශයෙන් ගබඩා 10ක තරු කර ඇති සංවර්ධකයින් (වේදිකා භාවිතා කරන්නන්) නියෝජනය කරයි (අන්යෝන්ය යන වචනය නොපැහැදිලි සම්බන්ධතාවයක් පෙන්නුම් කරන බව සලකන්න).
නෝඩයේ පිහිටීම, තරු ලකුණු කළ ගබඩාවන්, සේවා යෝජකයා සහ විද්යුත් තැපැල් ලිපිනය මත පදනම්ව, නෝඩ් ලක්ෂණ නැවත ලබා ගනී. GitHub භාවිතා කරන්නෙකු වෙබ් සංවර්ධකයෙකු හෝ a යන්ත්ර ඉගෙනුම් සංවර්ධකයා අපගේ කාර්යය වේ.
එක් එක් පරිශීලකයාගේ රැකියා මාතෘකාව මෙම ඉලක්ක කිරීමේ කාර්යය සඳහා පදනම විය.
PyTorch ස්ථාපනය කිරීම
ආරම්භ කිරීමට, අපි මුලින්ම ස්ථාපනය කළ යුතුය පයිටෝර්ච්. ඔබට එය ඔබගේ යන්ත්රය අනුව වින්යාසගත කළ හැක මෙහි. මෙන්න මගේ:
මොඩියුල ආනයනය කිරීම
දැන්, අපි අවශ්ය මොඩියුල ආනයනය කරමු
දත්ත ආයාත කිරීම සහ ගවේෂණය කිරීම
පහත පියවර වන්නේ දත්ත කියවා ලේබල් ගොනුවෙන් පළමු පේළි පහ සහ අවසාන පේළි පහ සැලසුම් කිරීමයි.
මෙම තත්ත්වය තුළ අපට අදාළ වන්නේ තීරු හතරෙන් දෙකක් පමණි - node හි id (එනම්, පරිශීලක) සහ ml_target, පරිශීලකයා යන්ත්ර ඉගෙනුම් ප්රජාවේ සාමාජිකයෙකු නම් 1 සහ 0.
පන්ති දෙකක් පමණක් ඇති බැවින්, අපගේ කාර්යය ද්විමය වර්ගීකරණ ගැටළුවක් බව අපට දැන් සහතික විය හැක.
සැලකිය යුතු පන්ති අසමතුලිතතාවයක ප්රතිඵලයක් ලෙස, පන්ති ශේෂය සලකා බැලිය යුතු තවත් තීරනාත්මක සාධකයක් බවට පත් කරමින්, අඩු නියෝජනය කරන පන්තිය ඇගයීමට වඩා වැඩි පන්තිය කුමක්දැයි වර්ගීකරණය කරන්නාට උපකල්පනය කළ හැක.
අනෙකුත් පන්තිවලට වඩා යන්ත්ර ඉගෙනීමෙන් (label=1) පන්ති අඩු බැවින් හිස්ටෝග්රෑම් (සංඛ්යාත ව්යාප්තිය) සැලසුම් කිරීමෙන් යම් අසමතුලිතතාවයක් අනාවරණය වේ.
විශේෂාංග කේතනය
නෝඩ් වල ලක්ෂණ එක් එක් නෝඩය සමඟ සම්බන්ධ වී ඇති විශේෂාංගය අපට දන්වයි. දත්ත සංකේතනය කිරීමට අපගේ ක්රමය ක්රියාත්මක කිරීමෙන්, අපට එම ලක්ෂණ ක්ෂණිකව කේතනය කළ හැක.
ප්රදර්ශනය සඳහා ජාලයේ කුඩා කොටසක් (කියන්න, නෝඩ් 60ක්) ඇතුළත් කිරීමට අපට මෙම ක්රමය භාවිතා කිරීමට අවශ්යය. කේතය මෙහි ලැයිස්තුගත කර ඇත.
ප්රස්තාර සැලසුම් කිරීම සහ ප්රදර්ශනය කිරීම
අපි විදුලි පන්දම ජ්යාමිතික භාවිතා කරන්නෙමු. අපගේ ප්රස්ථාරය ගොඩනැගීමට දත්ත.
විවිධ (විකල්ප) ගුණාංග සහිත තනි ප්රස්ථාරයක් ආදර්ශනය කිරීමට, සරල පයිතන් වස්තුවක් වන දත්ත භාවිතා වේ. මෙම පන්තිය සහ පහත ගුණාංග භාවිතා කිරීමෙන් - ඒ සියල්ල පන්දම් ටෙන්සර් වේ - අපි අපගේ ප්රස්ථාර වස්තුව නිර්මාණය කරමු.
කේතනය කරන ලද නෝඩ් විශේෂාංග සඳහා වෙන් කරනු ලබන x අගයෙහි ස්වරූපය, [නෝඩ් ගණන, විශේෂාංග ගණන] වේ.
y හි හැඩය [නෝඩ් ගණන] වන අතර, එය නෝඩ් ලේබලවලට යොදනු ඇත.
දාර දර්ශක: නොපෙළඹුණු ප්රස්ථාරයක් විස්තර කිරීම සඳහා, එකම නෝඩ් දෙක සම්බන්ධ කරන නමුත් ප්රතිවිරුද්ධ දිශාවලට යොමු වන වෙනස් අධ්යක්ෂිත දාර දෙකක පැවැත්මට ඉඩ දීම සඳහා අපි මුල් දාර දර්ශක පුළුල් කළ යුතුය.
දාර යුගලයක්, එකක් නෝඩ් 100 සිට 200 දක්වා සහ අනෙක 200 සිට 100 දක්වා, අවශ්ය වේ, උදාහරණයක් ලෙස, නෝඩ් 100 සහ 200 අතර. දාර දර්ශක සපයා තිබේ නම්, මේ ආකාරයට යොමු නොකළ ප්රස්තාරය නිරූපණය කළ හැක. [2,2*මුල් දාර ගණන] ආතති ආකෘතිය වනු ඇත.
ප්රස්ථාරයක් පෙන්වීම සඳහා අපි අපගේ ඇඳීම් ප්රස්තාර ක්රමය නිර්මාණය කරමු. පළමු පියවර වන්නේ අපගේ සමජාතීය ජාලය NetworkX ප්රස්ථාරයක් බවට පරිවර්තනය කිරීමයි, එය NetworkX.draw භාවිතයෙන් ඇද ගත හැක.
අපගේ GNN ආකෘතිය සාදා එය පුහුණු කරන්න
අපි ආරම්භ කරන්නේ මුළු දත්ත කට්ටලයම සංකේතනය කිරීමෙන් ආලෝකය=අසත්යය සමඟ සංකේතාත්මක දත්ත ක්රියාත්මක කිරීමෙන් පසුව සම්පූර්ණ ප්රස්තාරය ගොඩනැගීම සඳහා construct graph with light=False ඇමතීමෙන්. ඔබ සීමිත සම්පත් ඇති දේශීය යන්ත්රයක් භාවිතා කරන බව මම අනුමාන කරන නිසා අපි මෙම විශාල ප්රස්ථාරය ඇඳීමට උත්සාහ නොකරමු.
0 සහ 1 ඉලක්කම් භාවිතයෙන් එක් එක් විශේෂිත වෙස් මුහුණට අයත් නෝඩ් මොනවාදැයි හඳුනා ගන්නා ද්විමය දෛශික වන වෙස් මුහුණු, පුහුණුව අතරතුර ඇතුළත් කළ යුතු නෝඩ් පුහුණු කිරීමේ අදියර දැනුම් දීමට සහ පරීක්ෂණ දත්ත කුමන නෝඩ් දැයි අනුමාන අවධියට පැවසීමට භාවිතා කළ හැකිය. පන්දම ජ්යාමිතික.පරිවර්තනය.
AddTrainValTestMask පන්තියේ පුහුණු වෙස් මුහුණ, වැල් මාස්ක් සහ පරීක්ෂණ ආවරණ ගුණාංග භාවිතයෙන් නෝඩ් මට්ටමේ බෙදීමක් එක් කළ හැක, එය ප්රස්ථාරයක් ගැනීමට සහ අපගේ වෙස්මුහුණු තැනීමට අවශ්ය ආකාරය සඳහන් කිරීමට අපට හැකි වේ.
අපි පුහුණුව සඳහා 10% පමණක් භාවිතා කරන අතර දත්ත වලින් 60% පරීක්ෂණ කට්ටලය ලෙස භාවිතා කරන අතර 30% වලංගු කිරීමේ කට්ටලය ලෙස භාවිතා කරමු.
දැන්, අපි GCNConv ස්ථර දෙකක් ගොඩගසන්නෙමු, ඉන් පළමුවැන්නෙහි ප්රතිදාන විශේෂාංග ගණන ඇති අතර එය ආදාන විශේෂාංග ලෙස අපගේ ප්රස්ථාරයේ ඇති විශේෂාංග ගණනට සමාන වේ.
අපගේ පන්ති ගණනට සමාන ප්රතිදාන නෝඩ් අඩංගු දෙවන ස්ථරයේ, අපි relu සක්රිය කිරීමේ ශ්රිතයක් යොදවා ගුප්ත විශේෂාංග සපයන්නෙමු.
Edge index සහ edge weight යනු GCNConv හට ඉදිරි ශ්රිතයේ පිළිගත හැකි බොහෝ විකල්ප x වලින් දෙකකි, නමුත් අපගේ තත්වය තුළ අපට අවශ්ය වන්නේ පළමු විචල්ය දෙක පමණි.
අපගේ ආකෘතියට ප්රස්ථාරයේ ඇති සෑම නෝඩයකම පන්තිය පුරෝකථනය කිරීමට හැකි වුවද, අදියර අනුව එක් එක් කට්ටලය සඳහා වෙන වෙනම නිරවද්යතාවය සහ අලාභය තීරණය කිරීමට අපට අවශ්ය වේ.
උදාහරණයක් ලෙස, පුහුණුව අතරතුර, අපට අවශ්ය වන්නේ නිරවද්යතාවය සහ පුහුණු පාඩුව තීරණය කිරීම සඳහා පුහුණු කට්ටලය භාවිතා කිරීමට පමණි, එබැවින් අපගේ වෙස් මුහුණු ප්රයෝජනවත් වන්නේ මෙහිදීය.
සුදුසු අලාභය සහ නිරවද්යතාවය ගණනය කිරීම සඳහා, අපි ආවරණ අලාභය සහ ආවරණ නිරවද්යතාවයේ කාර්යයන් නිර්වචනය කරන්නෙමු.
ආකෘතිය පුහුණු කිරීම
දැන් අපි පන්දම භාවිතා කරන පුහුණු අරමුණ නිර්වචනය කර ඇත. ඇඩම් යනු ප්රධාන ප්රශස්තිකරයෙකි.
වලංගු කිරීමේ නිරවද්යතාවය පිළිබඳව අවධානයෙන් සිටින අතරම අපි නිශ්චිත යුග ගණනක් සඳහා පුහුණුව පවත්වමු.
අපි විවිධ යුග පුරා පුහුණුවේ පාඩු සහ නිරවද්යතා සැලසුම් කරමු.
Graph Neural Network හි අවාසි
GNN භාවිතා කිරීමේ අවාසි කිහිපයක් ඇත. GNNa භාවිතා කළ යුත්තේ කවදාද සහ අපගේ යන්ත්ර ඉගෙනුම් ආකෘතිවල කාර්ය සාධනය වැඩි දියුණු කරන්නේ කෙසේද යන්න පිළිබඳව අපට වඩා හොඳ අවබෝධයක් ලැබීමෙන් පසුව අපට පැහැදිලි වනු ඇත.
- GNNs නොගැඹුරු ජාල වන අතර, සාමාන්යයෙන් ස්ථර තුනකින් සමන්විත වන අතර, බොහෝ ස්නායුක ජාල ක්රියාකාරීත්වය වැඩි දියුණු කිරීමට ගැඹුරට යා හැක. මෙම සීමාව නිසා විශාල දත්ත කට්ටලවල අතිමහත් ලෙස ක්රියා කිරීමට අපට නොහැකි වේ.
- ඒවායේ ව්යුහාත්මක ගතිකත්වය ගතික බැවින් ප්රස්ථාර මත ආකෘතියක් පුහුණු කිරීම වඩාත් අපහසු වේ.
- මෙම ජාලවල අධික ගණනය කිරීමේ පිරිවැය හේතුවෙන්, නිෂ්පාදනය සඳහා ආකෘතිය පරිමාණය කිරීම අභියෝග ඉදිරිපත් කරයි. ඔබේ ප්රස්ථාර ව්යුහය විශාල සහ සංකීර්ණ නම් නිෂ්පාදනය සඳහා GNN පරිමාණය කිරීම අභියෝගාත්මක වනු ඇත.
නිගමනය
පසුගිය වසර කිහිපය තුළ, GNNs ප්රස්ථාර වසම තුළ යන්ත්ර ඉගෙනීමේ ගැටළු සඳහා ප්රබල සහ ඵලදායී මෙවලම් බවට වර්ධනය වී ඇත. ප්රස්ථාර ස්නායු ජාල පිළිබඳ මූලික දළ විශ්ලේෂණයක් මෙම ලිපියේ දක්වා ඇත.
ඊට පසු, ඔබට ආකෘතිය පුහුණු කිරීමට සහ පරීක්ෂා කිරීමට භාවිතා කරන දත්ත කට්ටලය නිර්මාණය කිරීම ආරම්භ කළ හැකිය. එය ක්රියාත්මක වන ආකාරය සහ එහි හැකියාව කුමක්ද යන්න තේරුම් ගැනීමට, ඔබට තවත් බොහෝ දුර ගොස් වෙනත් ආකාරයේ දත්ත කට්ටලයක් භාවිතයෙන් එය පුහුණු කළ හැකිය.
සුබ කේතීකරණයක්!
ඔබමයි