સામગ્રીનું કોષ્ટક[છુપાવો][બતાવો]
"ગ્રાફ ન્યુરલ નેટવર્ક્સ" (GNNs) તરીકે ઓળખાતી ડીપ લર્નિંગ તકનીકો ગ્રાફ ડોમેનમાં કાર્ય કરે છે. આ નેટવર્ક્સનો તાજેતરમાં વિવિધ ક્ષેત્રોમાં ઉપયોગ જોવા મળ્યો છે, જેમાં કોમ્પ્યુટર વિઝન, ભલામણકર્તા સિસ્ટમ્સ અને કોમ્બીનેટોરિયલ ઓપ્ટિમાઇઝેશનનો સમાવેશ થાય છે.
વધુમાં, આ નેટવર્ક્સનો ઉપયોગ જટિલ પ્રણાલીઓનું પ્રતિનિધિત્વ કરવા માટે થઈ શકે છે, જેમાં સામાજિક નેટવર્ક્સ, પ્રોટીન-પ્રોટીન ક્રિયાપ્રતિક્રિયા નેટવર્ક્સ, જ્ઞાન આલેખ અને અભ્યાસના વિવિધ ક્ષેત્રોમાં અન્યનો સમાવેશ થાય છે.
બિન-યુક્લિડિયન જગ્યા એ છે જ્યાં ચિત્રો જેવા અન્ય પ્રકારના ડેટાથી વિપરીત ગ્રાફ ડેટા કાર્ય કરે છે. નોડ્સનું વર્ગીકરણ કરવા, લિંક્સ અને ક્લસ્ટર ડેટાની આગાહી કરવા માટે, ગ્રાફ વિશ્લેષણનો ઉપયોગ કરવામાં આવે છે.
આ લેખમાં, અમે ગ્રાફનું પરીક્ષણ કરીશું ન્યુરલ નેટવર્ક વિગતવાર, તેના પ્રકારો, તેમજ PyTorch નો ઉપયોગ કરીને વ્યવહારુ ઉદાહરણો પ્રદાન કરો.
તો, ગ્રાફ શું છે?
ગ્રાફ એ નોડ્સ અને શિરોબિંદુઓથી બનેલા ડેટા સ્ટ્રક્ચરનો એક પ્રકાર છે. વિવિધ ગાંઠો વચ્ચેના જોડાણો શિરોબિંદુઓ દ્વારા નક્કી કરવામાં આવે છે. જો દિશા ગાંઠોમાં સૂચવવામાં આવે છે, તો ગ્રાફને નિર્દેશિત કહેવામાં આવે છે; અન્યથા, તે દિશાહીન છે.
આલેખની સારી એપ્લિકેશન એ વિવિધ વ્યક્તિઓ વચ્ચેના સંબંધોનું મોડેલિંગ છે સામાજિક નેટવર્ક. જટિલ સંજોગો સાથે કામ કરતી વખતે, જેમ કે લિંક્સ અને એક્સચેન્જ, આલેખ ખૂબ મદદરૂપ થાય છે.
તેઓ ભલામણ પ્રણાલી, સિમેન્ટીક વિશ્લેષણ, સામાજિક નેટવર્ક વિશ્લેષણ અને પેટર્ન ઓળખ દ્વારા કાર્યરત છે
. ગ્રાફ-આધારિત સોલ્યુશન્સ બનાવવું એ એકદમ નવું ક્ષેત્ર છે જે જટિલ અને આંતરસંબંધિત ડેટાની સમજદાર સમજ આપે છે.
ગ્રાફ ન્યુરલ નેટવર્ક
ગ્રાફ ન્યુરલ નેટવર્ક્સ વિશિષ્ટ ન્યુરલ નેટવર્ક પ્રકારો છે જે ગ્રાફ ડેટા ફોર્મેટ પર કાર્ય કરી શકે છે. ગ્રાફ એમ્બેડિંગ અને કન્વોલ્યુશનલ ન્યુરલ નેટવર્ક્સ (CNNs) તેમના પર નોંધપાત્ર અસર કરે છે.
ગ્રાફ ન્યુરલ નેટવર્ક્સ એવા કાર્યોમાં કાર્યરત છે જેમાં અનુમાનિત ગાંઠો, ધાર અને ગ્રાફનો સમાવેશ થાય છે.
- CNN નો ઉપયોગ છબીઓને વર્ગીકૃત કરવા માટે થાય છે. તેવી જ રીતે, વર્ગની આગાહી કરવા માટે, GNN એ પિક્સેલ ગ્રીડ પર લાગુ કરવામાં આવે છે જે ગ્રાફ સ્ટ્રક્ચરને રજૂ કરે છે.
- રિકરન્સ ન્યુરલ નેટવર્કનો ઉપયોગ કરીને ટેક્સ્ટનું વર્ગીકરણ. GNN નો ઉપયોગ ગ્રાફ આર્કિટેક્ચર સાથે પણ થાય છે જ્યાં શબ્દસમૂહમાં દરેક શબ્દ નોડ હોય છે.
નોડ્સ, કિનારીઓ અથવા સંપૂર્ણ ગ્રાફની આગાહી કરવા માટે, ન્યુરલ નેટવર્કનો ઉપયોગ GNN બનાવવા માટે થાય છે. નોડ સ્તર પર અનુમાન, દાખલા તરીકે, સ્પામ શોધ જેવી સમસ્યાને ઉકેલી શકે છે.
ભલામણકર્તા સિસ્ટમમાં લિંકની આગાહી એ એક લાક્ષણિક કેસ છે અને તે ધાર મુજબની આગાહી સમસ્યાનું ઉદાહરણ હોઈ શકે છે.
ગ્રાફ ન્યુરલ નેટવર્ક પ્રકારો
ન્યુરલ નેટવર્કના અસંખ્ય પ્રકારો અસ્તિત્વમાં છે અને તેમાંના મોટાભાગનામાં કન્વોલ્યુશનલ ન્યુરલ નેટવર્ક્સ હાજર છે. આપણે આ ભાગમાં સૌથી વધુ જાણીતા GNN વિશે જાણીશું.
ગ્રાફ કન્વોલ્યુશનલ નેટવર્ક્સ (GCNs)
તેઓ ક્લાસિક CNN સાથે તુલનાત્મક છે. તે નજીકના ગાંઠો જોઈને લાક્ષણિકતાઓ મેળવે છે. સક્રિયકરણ કાર્યનો ઉપયોગ GNN દ્વારા નોડ વેક્ટર્સને એકત્ર કર્યા પછી અને આઉટપુટને ગાઢ સ્તર પર મોકલ્યા પછી બિન-રેખીયતા ઉમેરવા માટે થાય છે.
તે સારમાં, ગ્રાફ કન્વોલ્યુશન, રેખીય સ્તર અને બિન-શિખનાર સક્રિયકરણ કાર્યથી બનેલું છે. GCN બે મુખ્ય પ્રકારોમાં આવે છે: સ્પેક્ટ્રલ કન્વોલ્યુશનલ નેટવર્ક્સ અને સ્પેશિયલ કન્વોલ્યુશનલ નેટવર્ક્સ.
ગ્રાફ ઓટો-એન્કોડર નેટવર્ક્સ
તે ગ્રાફનું પ્રતિનિધિત્વ કેવી રીતે કરવું તે શીખવા માટે એન્કોડરનો ઉપયોગ કરે છે અને ઇનપુટ ગ્રાફનું પુનઃનિર્માણ કરવાનો પ્રયાસ કરવા માટે ડીકોડરનો ઉપયોગ કરે છે. એન્કોડર અને ડીકોડરને જોડતો અવરોધ સ્તર છે.
ઓટો-એન્કોડર્સ વર્ગ સંતુલનને સંભાળવાનું ઉત્તમ કાર્ય કરે છે, તેથી તેઓનો વારંવાર લિંક અનુમાનમાં ઉપયોગ થાય છે.
રિકરન્ટ ગ્રાફ ન્યુરલ નેટવર્ક્સ (RGNNs)
મલ્ટિ-રિલેશનલ નેટવર્ક્સમાં, જ્યાં એક નોડ અસંખ્ય સંબંધો ધરાવે છે, તે શ્રેષ્ઠ પ્રસાર પેટર્ન શીખે છે અને ગ્રાફનું સંચાલન કરી શકે છે. સ્મૂથનેસ વધારવા અને ઓવર-પેરામીટરાઇઝેશન ઘટાડવા માટે, ગ્રાફ ન્યુરલ નેટવર્કના આ સ્વરૂપમાં રેગ્યુલરાઇઝર્સનો ઉપયોગ કરવામાં આવે છે.
વધુ સારા પરિણામો મેળવવા માટે, RGNN ને ઓછી પ્રોસેસિંગ પાવરની જરૂર પડે છે. તેનો ઉપયોગ ટેક્સ્ટ જનરેશન, સ્પીચ રેકગ્નિશન, મશીન ટ્રાન્સલેશન, પિક્ચર ડિસ્ક્રિપ્શન, વિડિયો ટેગિંગ અને ટેક્સ્ટ સારાંશ માટે થાય છે.
ગેટેડ ન્યુરલ ગ્રાફ નેટવર્ક્સ (GGNNs)
જ્યારે લાંબા ગાળાના આશ્રિત કાર્યોની વાત આવે છે, ત્યારે તેઓ RGNN ને પાછળ રાખી દે છે. લાંબા ગાળાની અવલંબન પર નોડ, એજ અને ટેમ્પોરલ ગેટનો સમાવેશ કરીને, ગેટેડ ગ્રાફ ન્યુરલ નેટવર્ક રિકરન્ટ ગ્રાફ ન્યુરલ નેટવર્કને વધારે છે.
ગેટ્સ ગેટેડ રિકરન્ટ યુનિટ્સ (જીઆરયુ) ની જેમ જ કાર્ય કરે છે જેમાં તેઓ વિવિધ તબક્કામાં ડેટાને યાદ કરવા અને ભૂલી જવા માટે વપરાય છે.
Pytorch નો ઉપયોગ કરીને ગ્રાફ ન્યુરલ નેટવર્કનું અમલીકરણ
અમે જે વિશિષ્ટ મુદ્દા પર ધ્યાન કેન્દ્રિત કરીશું તે સામાન્ય નોડ વર્ગીકરણ મુદ્દો છે. અમારી પાસે એક મોટું સામાજિક નેટવર્ક છે જેને કહેવાય છે musae-ગીથબ, જે GitHub વિકાસકર્તાઓ માટે ઓપન API માંથી સંકલિત કરવામાં આવ્યું હતું.
કિનારીઓ નોડ્સ વચ્ચેના પરસ્પર અનુયાયી સંબંધો દર્શાવે છે, જે વિકાસકર્તાઓ (પ્લેટફોર્મ વપરાશકર્તાઓ) નું પ્રતિનિધિત્વ કરે છે જેમણે ઓછામાં ઓછા 10 રિપોઝીટરીઝમાં અભિનય કર્યો છે (નોંધ કરો કે મ્યુચ્યુઅલ શબ્દ અનિર્દેશિત સંબંધ સૂચવે છે).
નોડના સ્થાન, તારાંકિત રીપોઝીટરીઝ, એમ્પ્લોયર અને ઈમેલ એડ્રેસના આધારે, નોડ લાક્ષણિકતાઓ પુનઃપ્રાપ્ત કરવામાં આવે છે. જો કોઈ GitHub વપરાશકર્તા વેબ ડેવલપર છે અથવા એ મશીન લર્નિંગ ડેવલપર આપણું કાર્ય છે.
દરેક વપરાશકર્તાનું જોબ શીર્ષક આ લક્ષ્યીકરણ કાર્ય માટે આધાર તરીકે સેવા આપે છે.
PyTorch ઇન્સ્ટોલ કરી રહ્યું છે
શરૂ કરવા માટે, આપણે પ્રથમ ઇન્સ્ટોલ કરવાની જરૂર છે પાયટોર્ચ. તમે તેને તમારા મશીન અનુસાર ગોઠવી શકો છો અહીં. અહીં મારું છે:
મોડ્યુલો આયાત કરી રહ્યા છીએ
હવે, અમે જરૂરી મોડ્યુલો આયાત કરીએ છીએ
ડેટા આયાત અને અન્વેષણ
નીચેનું પગલું એ ડેટા વાંચવાનું છે અને લેબલ્સ ફાઇલમાંથી પ્રથમ પાંચ પંક્તિઓ અને છેલ્લી પાંચ પંક્તિઓનું પ્લોટિંગ કરવાનું છે.
ચાર કૉલમમાંથી માત્ર બે જ - નોડનું id (એટલે કે, વપરાશકર્તા) અને ml_target, જે 1 છે જો વપરાશકર્તા મશીન લર્નિંગ સમુદાયનો સભ્ય હોય અને અન્યથા 0 - આ પરિસ્થિતિમાં અમારા માટે સુસંગત છે.
આપેલ છે કે ત્યાં માત્ર બે વર્ગો છે, હવે આપણે ચોક્કસ કહી શકીએ કે અમારું કાર્ય દ્વિસંગી વર્ગીકરણનો મુદ્દો છે.
નોંધપાત્ર વર્ગના અસંતુલનના પરિણામે, વર્ગીકૃત કરનાર અન્ડરપ્રેઝેન્ટેડ વર્ગનું મૂલ્યાંકન કરવાને બદલે માત્ર કયો વર્ગ બહુમતી છે તે ધારી શકે છે, વર્ગ સંતુલનને ધ્યાનમાં લેવાનું બીજું નિર્ણાયક પરિબળ બનાવે છે.
હિસ્ટોગ્રામ (ફ્રિકવન્સી ડિસ્ટ્રિબ્યુશન)નું પ્લોટિંગ કરવાથી અમુક અસંતુલન દેખાય છે કારણ કે મશીન લર્નિંગ (લેબલ=1)ના અન્ય વર્ગો કરતાં ઓછા વર્ગો છે.
લક્ષણ એન્કોડિંગ
નોડ્સની લાક્ષણિકતાઓ અમને દરેક નોડ સાથે સંકળાયેલી વિશેષતા વિશે જણાવે છે. ડેટાને એન્કોડ કરવાની અમારી પદ્ધતિનો અમલ કરીને, અમે તે લાક્ષણિકતાઓને તરત જ એન્કોડ કરી શકીએ છીએ.
અમે આ પદ્ધતિનો ઉપયોગ નેટવર્કના નાના ભાગને (કહો કે, 60 નોડ્સ)ને ડિસ્પ્લે માટે કરવા માટે કરવા માંગીએ છીએ. કોડ અહીં સૂચિબદ્ધ છે.
આલેખ ડિઝાઇન અને પ્રદર્શિત કરવું
અમે ભૌમિતિક ટોર્ચનો ઉપયોગ કરીશું. અમારા ગ્રાફ બનાવવા માટે ડેટા.
અલગ-અલગ (વૈકલ્પિક) પ્રોપર્ટીઝ સાથે સિંગલ ગ્રાફનું મોડેલ બનાવવા માટે, ડેટા કે જે એક સરળ પાયથોન ઑબ્જેક્ટ છે તેનો ઉપયોગ કરવામાં આવે છે. આ વર્ગ અને નીચેના લક્ષણોનો ઉપયોગ કરીને - જે તમામ ટોર્ચ ટેન્સર્સ છે - અમે આપણું ગ્રાફ ઑબ્જેક્ટ બનાવીશું.
મૂલ્ય xનું સ્વરૂપ, જે એન્કોડેડ નોડ સુવિધાઓને ફાળવવામાં આવશે, તે છે [નોડ્સની સંખ્યા, સુવિધાઓની સંખ્યા].
y નો આકાર [નોડ્સની સંખ્યા] છે, અને તે નોડ લેબલ પર લાગુ કરવામાં આવશે.
ધાર અનુક્રમણિકા: એક નિર્દેશિત ગ્રાફનું વર્ણન કરવા માટે, આપણે મૂળ ધાર સૂચકાંકોને વિસ્તૃત કરવાની જરૂર છે જેથી બે અલગ-અલગ નિર્દેશિત કિનારીઓ અસ્તિત્વમાં રહે જે સમાન બે ગાંઠોને જોડે પરંતુ વિરુદ્ધ દિશામાં નિર્દેશ કરે.
ધારની જોડી, એક નોડ 100 થી 200 સુધી અને બીજી 200 થી 100 સુધીની, જરૂરી છે, દાખલા તરીકે, નોડ 100 અને 200 વચ્ચે. જો ધાર સૂચકાંકો પ્રદાન કરવામાં આવે, તો આ રીતે અનિર્દેશિત ગ્રાફને રજૂ કરી શકાય છે. [2,2*મૂળ ધારની સંખ્યા] ટેન્સર સ્વરૂપ હશે.
ગ્રાફ પ્રદર્શિત કરવા માટે અમે અમારી ડ્રો ગ્રાફ પદ્ધતિ બનાવીએ છીએ. પહેલું પગલું એ આપણા એકરૂપ નેટવર્કને NetworkX ગ્રાફમાં રૂપાંતરિત કરવાનું છે, જે પછી NetworkX.draw નો ઉપયોગ કરીને દોરવામાં આવી શકે છે.
અમારું GNN મોડેલ બનાવો અને તેને તાલીમ આપો
અમે લાઈટ=ફોલ્સ સાથે એન્કોડ ડેટા એક્ઝિક્યુટ કરીને ડેટાના સમગ્ર સેટને એન્કોડ કરીને શરૂઆત કરીએ છીએ અને પછી આખો ગ્રાફ બનાવવા માટે કન્સ્ટ્રક્ટ ગ્રાફને light=False સાથે કૉલ કરીએ છીએ. અમે આ મોટા આલેખને દોરવાનો પ્રયાસ કરીશું નહીં કારણ કે હું માનું છું કે તમે સ્થાનિક મશીનનો ઉપયોગ કરી રહ્યાં છો જેમાં મર્યાદિત સંસાધનો છે.
માસ્ક, જે દ્વિસંગી વેક્ટર્સ છે જે 0 અને 1 અંકોનો ઉપયોગ કરીને દરેક ચોક્કસ માસ્કના કયા ગાંઠો છે તે ઓળખે છે, તેનો ઉપયોગ તાલીમ તબક્કાને સૂચિત કરવા માટે કરી શકાય છે કે તાલીમ દરમિયાન કયા ગાંઠો શામેલ કરવા જોઈએ અને અનુમાનના તબક્કાને જણાવવા માટે કે કયા ગાંઠો પરીક્ષણ ડેટા છે. ટોર્ચ geometric.transforms.
AdTrainValTestMask ક્લાસના ટ્રેનિંગ માસ્ક, val માસ્ક અને ટેસ્ટ માસ્ક પ્રોપર્ટીઝનો ઉપયોગ કરીને નોડ-લેવલ સ્પ્લિટ ઉમેરી શકાય છે, જેનો ઉપયોગ ગ્રાફ લેવા માટે થઈ શકે છે અને અમે અમારા માસ્ક કેવી રીતે બાંધવા માગીએ છીએ તે સ્પષ્ટ કરવા માટે અમને સક્ષમ કરે છે.
અમે તાલીમ માટે માત્ર 10% નો ઉપયોગ કરીએ છીએ અને 60% ડેટાનો ટેસ્ટ સેટ તરીકે ઉપયોગ કરીએ છીએ જ્યારે 30% નો ઉપયોગ માન્યતા સેટ તરીકે કરીએ છીએ.
હવે, અમે બે GCNConv સ્તરોને સ્ટેક કરીશું, જેમાંથી પ્રથમમાં આઉટપુટ ફીચરની ગણતરી છે જે આપણા ગ્રાફમાં ઇનપુટ ફીચર્સ તરીકેની સુવિધાઓની સંખ્યા જેટલી છે.
બીજા સ્તરમાં, જેમાં અમારા વર્ગોની સંખ્યા જેટલી આઉટપુટ નોડ હોય છે, અમે રેલુ એક્ટીવેશન ફંક્શન લાગુ કરીએ છીએ અને ગુપ્ત સુવિધાઓ પૂરી પાડીએ છીએ.
એજ ઇન્ડેક્સ અને એજ વેઇટ એ ઘણા વિકલ્પોમાંથી બે છે જે GCNConv ફોરવર્ડ ફંક્શનમાં સ્વીકારી શકે છે, પરંતુ અમારી પરિસ્થિતિમાં, અમને ફક્ત પ્રથમ બે ચલોની જરૂર છે.
અમારું મોડેલ ગ્રાફમાં દરેક નોડના વર્ગની આગાહી કરવામાં સક્ષમ હશે તે હકીકત હોવા છતાં, અમારે હજી પણ તબક્કાના આધારે દરેક સેટ માટે અલગથી ચોકસાઈ અને નુકસાન નક્કી કરવાની જરૂર છે.
દાખલા તરીકે, તાલીમ દરમિયાન, અમે માત્ર ચોકસાઈ અને તાલીમની ખોટ નક્કી કરવા માટે તાલીમ સેટનો ઉપયોગ કરવા માંગીએ છીએ, અને તેથી આ તે છે જ્યાં અમારા માસ્ક કામમાં આવે છે.
યોગ્ય નુકશાન અને ચોકસાઈની ગણતરી કરવા માટે, અમે માસ્ક કરેલ નુકશાન અને માસ્ક કરેલ ચોકસાઈના કાર્યોને વ્યાખ્યાયિત કરીશું.
મોડેલની તાલીમ
હવે અમે તાલીમ હેતુ વ્યાખ્યાયિત કર્યો છે કે જેના માટે ટોર્ચનો ઉપયોગ કરવામાં આવશે. એડમ એક માસ્ટર ઑપ્ટિમાઇઝર છે.
માન્યતાની ચોકસાઈ પર નજર રાખીને અમે અમુક ચોક્કસ યુગો માટે તાલીમનું સંચાલન કરીશું.
અમે વિવિધ યુગમાં તાલીમના નુકસાન અને સચોટતાનું પણ કાવતરું ઘડીએ છીએ.
ગ્રાફ ન્યુરલ નેટવર્કના ગેરફાયદા
GNN નો ઉપયોગ કરવાના થોડા ગેરફાયદા છે. GNNa નો ઉપયોગ ક્યારે કરવો અને અમારા મશીન લર્નિંગ મૉડલ્સના પ્રદર્શનને કેવી રીતે વધારવું તે બંને અમને વધુ સારી રીતે સમજ્યા પછી અમને સ્પષ્ટ કરવામાં આવશે.
- જ્યારે GNN છીછરા નેટવર્ક્સ છે, સામાન્ય રીતે ત્રણ સ્તરો સાથે, મોટાભાગના ન્યુરલ નેટવર્ક પ્રભાવને સુધારવા માટે ઊંડા જઈ શકે છે. આ મર્યાદાને કારણે અમે મોટા ડેટાસેટ્સ પર અત્યાધુનિક પ્રદર્શન કરવામાં અસમર્થ છીએ.
- ગ્રાફ પર મોડેલને તાલીમ આપવી વધુ મુશ્કેલ છે, કારણ કે તેમની માળખાકીય ગતિશીલતા ગતિશીલ છે.
- આ નેટવર્ક્સના ઉચ્ચ કોમ્પ્યુટેશનલ ખર્ચને લીધે, ઉત્પાદન માટે મોડેલનું માપન પડકારો રજૂ કરે છે. જો તમારું ગ્રાફ માળખું વિશાળ અને જટિલ હોય તો ઉત્પાદન માટે GNN નું માપન કરવું પડકારજનક રહેશે.
ઉપસંહાર
છેલ્લાં કેટલાંક વર્ષોમાં, GNN એ ગ્રાફ ડોમેનમાં મશીન લર્નિંગ સમસ્યાઓ માટે શક્તિશાળી અને અસરકારક સાધનો તરીકે વિકાસ કર્યો છે. ગ્રાફ ન્યુરલ નેટવર્ક્સની મૂળભૂત ઝાંખી આ લેખમાં આપવામાં આવી છે.
તે પછી, તમે ડેટાસેટ બનાવવાનું શરૂ કરી શકો છો જેનો ઉપયોગ મોડેલને તાલીમ આપવા અને પરીક્ષણ કરવા માટે કરવામાં આવશે. તે કેવી રીતે કાર્ય કરે છે અને તે શું સક્ષમ છે તે સમજવા માટે, તમે વધુ દૂર જઈ શકો છો અને તેને અલગ પ્રકારના ડેટાસેટનો ઉપયોગ કરીને તાલીમ આપી શકો છો.
હેપી કોડિંગ!
એક જવાબ છોડો