- Graph Neural Networks (GNN) ऐसे मॉडल हैं जो node, edge, global context और connectivity structure को साथ में संभालते हैं, इसलिए वे ऐसे डेटा के लिए उपयुक्त हैं जहाँ node का क्रम बदलने पर भी वही graph उसी अर्थ में प्रोसेस होना चाहिए
- molecule, social network और citation network के अलावा image के pixel grid और text token sequence को भी graph की तरह देखा जा सकता है, लेकिन graph का आकार और connectivity अलग-अलग होने के कारण इन्हें सामान्य array input की तरह संभालना कठिन होता है
- GNN prediction problems को graph, node और edge स्तर में बाँटा जाता है, और एक ही family के model input structure को बनाए रखते हुए अलग-अलग स्तर के label predict कर सकते हैं
- मुख्य operation message passing है, जिसमें पड़ोसी node और edge की जानकारी इकट्ठा करके update किया जाता है, और कई layer stack करने पर दूर के k-hop पड़ोसियों की जानकारी भी representation में शामिल हो जाती है
- वास्तविक performance layer depth, embedding dimension, aggregation function, और node·edge·global representation के बीच message flow पर निर्भर करती है; parameter या depth बढ़ाने से हमेशा सबसे अच्छा परिणाम नहीं मिलता
Graph data और GNN की बुनियादी अवधारणाएँ
- graph, entities को दर्शाने वाले node और node के बीच संबंध दर्शाने वाले edge से मिलकर बनता है
- node, edge और पूरे graph में अतिरिक्त जानकारी संग्रहीत की जा सकती है
- node में atom type, pixel RGB value, document embedding जैसी features डाली जा सकती हैं
- edge में bond type या relation type जैसी जानकारी डाली जा सकती है
- पूरे graph में global context रखा जा सकता है
- edge को directed edge या undirected edge के रूप में व्यक्त किया जा सकता है
- GNN node·edge·global context को learnable तरीके से transform करता है, और node का क्रम बदलने पर भी एक ही graph structure को एक ही अर्थ में संभालना चाहिए
वह डेटा जिसे graph के रूप में व्यक्त किया जा सकता है
- image को आम तौर पर 244×244×3 जैसे array के रूप में व्यक्त किया जाता है, लेकिन हर pixel को node मानकर और adjacent pixel को edge से जोड़कर इसे regular graph के रूप में भी देखा जा सकता है
- boundary पर न होने वाला pixel ठीक 8 पड़ोसी रखता है
- हर node में RGB value दर्शाने वाला 3-dimensional vector संग्रहीत होता है
- text को character, word या token को node और अगले token की ओर जाने वाले edge के साथ एक directed graph के रूप में देखा जा सकता है
- यह RNN की token sequence representation से जुड़ता है
- Transformer को token के बीच relation सीखने वाले fully connected graph के रूप में देखा जा सकता है
- image और text की structure बहुत regular होती है, इसलिए graph representation कई बार redundant हो सकती है
- image का adjacency matrix grid connectivity के कारण band जैसी structure रखता है
- text का adjacency matrix diagonal जैसी structure के करीब होता है क्योंकि हर शब्द आम तौर पर केवल आगे-पीछे के शब्दों से जुड़ा होता है
- molecule को atom को node और covalent bond को edge मानकर graph के रूप में व्यक्त करना सुविधाजनक है
- single bond, double bond आदि में atom pair और bond type के अनुसार दूरी अलग हो सकती है
- social network में व्यक्ति, संस्था और संगठन को node तथा संबंधों को edge के रूप में model किया जाता है
- citation network में paper को node और एक paper द्वारा दूसरे paper को cite करने के संबंध को directed edge के रूप में व्यक्त किया जाता है
- हर paper node में abstract के word embedding जैसी जानकारी जोड़ी जा सकती है
- computer vision के scene object, machine learning model, programming code और mathematical equation को भी variable या object को node और operation या relation को edge बनाकर graph के रूप में व्यक्त किया जा सकता है
Graph prediction problems के तीन स्तर
- Graph-level task पूरे graph के लिए एक property predict करता है
- जैसे molecule graph किस तरह की गंध देगा, या क्या वह disease-related receptor से bind करेगा
- image classification या sentence sentiment analysis की तरह पूरे input को एक label दिया जाता है
- Node-level task graph के भीतर हर node की property या role predict करता है
- Zach का karate club dataset राजनीतिक टकराव के बाद व्यक्ति node को इस आधार पर classify करने का task है कि वह किस club के प्रति loyal रहेगा
- यह image segmentation में हर pixel की role labeling या sentence में हर शब्द की part-of-speech prediction जैसा है
- Edge-level task edge की property या उसके existence को predict करता है
- image scene understanding में object को node मानकर उनके बीच relation है या नहीं, यह predict करना इसका उदाहरण है
- सभी node pair को fully connected मानकर prediction के आधार पर edge हटाकर sparse graph बनाया जा सकता है
- graph generation और graph prediction explanation भी संबंधित research area हैं
Graph को neural network input बनाने की कठिनाइयाँ
- सामान्य machine learning model rectangle या grid-shaped array input के लिए बने होते हैं, इसलिए graph की connectivity structure को ज्यों का त्यों देना कठिन होता है
- graph में अधिकतम चार तरह की जानकारी हो सकती है
- node
- edge
- global context
- connectivity
- node·edge·global context को feature matrix में बदला जा सकता है, लेकिन connectivity को व्यक्त करना अधिक कठिन है
- adjacency matrix को tensor बनाना आसान है, लेकिन इसकी सीमाएँ हैं
- graph में node की संख्या लाखों तक हो सकती है
- प्रति node edge की संख्या बहुत अलग हो सकती है
- adjacency matrix बहुत sparse हो जाता है, इसलिए space efficiency कम होती है
- एक ही graph connectivity को कई adjacency matrix व्यक्त कर सकते हैं, इसलिए neural network हमेशा एक जैसा परिणाम देगा इसकी गारंटी नहीं होती
- adjacency list sparse graph के लिए अधिक उपयुक्त है
- यह जानकारी कि edge
e_knoden_iऔरn_jको जोड़ता है,(i, j)tuple के रूप में store की जाती है - adjacency matrix के
O(n_nodes^2)की जगह edge की संख्या के अनुपात मेंO(n_edges)representation मिलती है
- यह जानकारी कि edge
- वास्तविक tensor representation में node·edge·global value scalar नहीं बल्कि vector होते हैं
- node tensor
[n_nodes]नहीं बल्कि[n_nodes, node_dim]के रूप में होता है
- node tensor
GNN layer और pooling
- सबसे सरल GNN अभी graph connectivity का उपयोग नहीं करता, बल्कि node·edge·global context पर अलग-अलग MLP लगाकर नई embedding सीखता है
- हर node vector एक ही तरीके से update होता है
- हर edge vector भी update होता है
- global context vector भी एक embedding के रूप में update होता है
- GNN input graph की connectivity नहीं बदलता
- output graph वही adjacency list और उतनी ही feature vector की संख्या बनाए रखता है
- बदलती हैं तो node·edge·global context की embedding
- prediction के लिए pooling का उपयोग किया जाता है
- जिन embedding को इकट्ठा करना है उन्हें gather करके matrix में जोड़ा जाता है
- इकट्ठा की गई embedding को आम तौर पर sum जैसे operation से aggregate किया जाता है
- node prediction में यदि node information पहले से मौजूद है, तो हर node embedding पर linear classifier लगाया जा सकता है
- यदि node prediction के लिए आवश्यक जानकारी केवल edge में है, तो edge information को pool करके node तक पहुँचाना होगा
- यदि edge prediction के लिए आवश्यक जानकारी केवल node में है, तो node information को edge की ओर इकट्ठा करके prediction में उपयोग किया जाता है
- पूरे graph की prediction में सभी node या edge information को इकट्ठा करके global representation में aggregate किया जाता है
- यह CNN के Global Average Pooling जैसी भूमिका निभाता है
- molecule toxic है या किसी खास गंध वाला है, यह predict करना इसका उदाहरण है
Message passing से connectivity structure का उपयोग
- simple GNN layer के अंदर graph connectivity का उपयोग नहीं करता और केवल prediction से ठीक पहले pooling में इसका उपयोग करता है
- अधिक शक्तिशाली GNN layer के भीतर message passing करता है ताकि connectivity structure embedding update में शामिल हो
- message passing तीन चरणों में काम करता है
- हर node पड़ोसी node embedding या message को gather करता है
- message को sum जैसी aggregation function से aggregate किया जाता है
- इकट्ठा किए गए message को learnable update function से पास किया जाता है
- message passing standard convolution जैसा है
- image में pixel निश्चित संख्या के पड़ोसी pixel की जानकारी इकट्ठा करता है
- graph में node बदलती संख्या के पड़ोसी node की जानकारी इकट्ठा करता है
- कई GNN layer stack करने पर दूर के node की जानकारी भी शामिल होती है
- 3 layer के बाद एक node 3-step दूर के node की जानकारी तक शामिल कर सकता है
- message passing केवल node के बीच ही नहीं, बल्कि edge के बीच और node व edge के बीच भी किया जा सकता है
Edge representation और global representation
- dataset में हमेशा node·edge·global context तीनों जानकारी मौजूद हो, ऐसा ज़रूरी नहीं है
- यदि केवल edge information हो और node prediction चाहिए, तो edge information को pool करके node तक भेजा जा सकता है
- node और edge information का आकार या रूप अलग हो सकता है, इसलिए उन्हें जोड़ने का तरीका एक design choice बन जाता है
- edge space से node space या इसके उलट linear mapping सीखी जा सकती है
- दोनों representation को concatenate करके update function में डाला जा सकता है
- graph की कौन-सी property किस क्रम में update होगी, यह GNN design का हिस्सा है
- पहले node update करके फिर edge update किया जा सकता है
- पहले edge update करके फिर node update किया जा सकता है
- node-to-node, edge-to-edge, node-to-edge, edge-to-node representation को जोड़ने वाला weave तरीका भी संभव है
- दूर स्थित node के बीच कई बार message passing करने पर भी information का कुशल आदान-प्रदान कठिन हो सकता है
- k layer में information अधिकतम k-step तक ही फैलती है
- global representation
Umaster node या context vector की तरह सभी node और edge से जुड़ी भूमिका निभा सकता है- यह दूर स्थित node और edge के बीच information transfer का पुल बनता है
- यह पूरे graph का अधिक समृद्ध representation बना सकता है
- नई node embedding को पड़ोसी node, connected edge, global information आदि को concatenate करके condition किया जा सकता है
- linear mapping के बाद उन्हें जोड़ना या feature-wise modulation लागू करना भी संभव है
GNN Playground और molecule odor prediction उदाहरण
- GNN Playground छोटे molecular graph के graph-level prediction problem पर काम करता है
- data, Leffingwell Odor Dataset है, जिसमें molecule और odor perception label शामिल हैं
- experiment में molecular graph “pungent” गंध देता है या नहीं, इसे एक single binary label के रूप में classify किया जाता है
- pungent का अर्थ तीखी और प्रमुख गंध है
- allyl alcohol वाला garlic और mustard, तथा peppermint-flavored candy में प्रयुक्त piperitone इसके उदाहरण हैं
- molecule को atom को node और bond को edge के रूप में व्यक्त किया जाता है
- node में Carbon, Nitrogen, Oxygen, Fluorine atom identity का one-hot encoding होता है
- edge में single, double, triple, aromatic bond type का one-hot encoding होता है
- model template में sequential GNN layer के बाद sigmoid activation वाला linear model जोड़ा जाता है
- design choice चार axis से नियंत्रित होती हैं
- GNN layer की संख्या, यानी depth
- हर property की embedding dimension
- pooling की aggregation function: max, mean, sum
- node·edge·global representation में से किन properties को update करना है और किन पर message passing करना है
- browser में चलने वाला Playground tfjs पर काम करता है
- high-dimensional graph embedding को PCA से 2D में घटाकर decision boundary के आसपास की representation visualise की जाती है
Experiment में दिखे GNN design trends
- performance data, graph construction method और featurization method पर निर्भर करती है
- parameter की संख्या बढ़ने से performance का संबंध दिखा, लेकिन GNN कम parameter के साथ भी high-performance model खोज सकता था
- लगभग 3k parameter पर भी high-performance model मिला
- embedding dimension बढ़ने पर average performance और lower-bound performance बेहतर होने की प्रवृत्ति थी, लेकिन best-performing model छोटे dimension में भी मिले
- layer की संख्या बढ़ने पर average performance बढ़ने की प्रवृत्ति थी, लेकिन सर्वोत्तम model 3 या 4 layer नहीं बल्कि 2 layer पर मिला
- 4 layer पर performance lower bound गिर गया
- अधिक layer से information अधिक दूर तक broadcast होती है, लेकिन कई iteration के कारण node representation dilute होने का जोखिम रहता है
- aggregation function में sum average performance में बहुत थोड़ा बेहतर दिखा, लेकिन max या mean से भी समान रूप से अच्छे model बनाए जा सकते थे
- node·edge·global properties के बीच message transfer जितना अधिक था, average model performance उतनी बेहतर होने की प्रवृत्ति थी
- यह task global representation-केंद्रित था, इसलिए global property को explicitly सीखना performance बढ़ाने की ओर झुका
- node representation, edge representation से अधिक उपयोगी दिखे क्योंकि अधिक जानकारी node property में मौजूद थी
अधिक जटिल graph और batch learning
- message passing framework अधिक जटिल graph structure पर भी लागू किया जा सकता है
- Multigraph में एक ही node pair कई प्रकार के edge साझा कर सकते हैं
- social network में acquaintance, friend, family जैसे relation type को edge type बनाया जा सकता है
- अलग edge type के लिए अलग message passing step रखे जा सकते हैं
- nested graph में एक node स्वयं एक graph का प्रतिनिधित्व कर सकता है
- molecular network में node एक molecule और edge एक molecule को दूसरे में बदलने वाली reaction को दर्शा सकता है
- molecule-level GNN और reaction-network-level GNN को बारी-बारी से train किया जा सकता है
- hypergraph में edge दो node के बजाय कई node से जुड़ सकता है
- node community की पहचान करके पूरे community से जुड़े hyper-edge रखे जा सकते हैं
- graph में node और edge की संख्या स्थिर नहीं होती, इसलिए सामान्य fixed-size mini-batch learning कठिन होती है
- graph batch learning का मुख्य बिंदु ऐसे subgraph बनाना है जो बड़े graph के महत्वपूर्ण गुणों को सुरक्षित रखें
- citation network में subgraph sampling स्वाभाविक हो सकती है
- molecule में subgraph का अर्थ नया छोटा molecule हो सकता है, इसलिए यह एक मजबूत manipulation बन जाती है
- जब बड़ा graph memory में फिट नहीं होता, तब graph sampling विशेष रूप से महत्वपूर्ण हो जाती है
- Cluster-GCN और GraphSaint जैसी architecture और training strategy इससे संबंधित हैं
Graph के लिए उपयुक्त inductive bias
- जब model को data की symmetry और regularity का लाभ उठाने के लिए design किया जाता है, तो वह बेहतर prediction performance, कम training time, कम parameter और बेहतर generalization दिखा सकता है
- image model translation-invariant convolution का उपयोग करते हैं ताकि object image में कहीं भी हो, उसे वही object माना जाए
- text में token order महत्वपूर्ण होता है, इसलिए RNN sequential processing करता है और Transformer family model sentence के अलग-अलग हिस्सों पर ध्यान दे सकते हैं
- graph में edge·node·global element के बीच relation महत्वपूर्ण होता है, इसलिए relational inductive bias की ज़रूरत होती है
- explicit relation के रूप में adjacency structure को सुरक्षित रखना चाहिए
- graph symmetry के रूप में permutation invariance को सुरक्षित रखना चाहिए
- model को node या edge order से स्वतंत्र होकर काम करना चाहिए और variable-size input संभालना चाहिए
Aggregation operation का चयन
- पड़ोसी node और edge information की pooling एक शक्तिशाली GNN architecture का मुख्य चरण है
- हर node के पड़ोसियों की संख्या अलग होती है, और output input order से स्वतंत्र होना चाहिए, इसलिए differentiable और permutation-invariant aggregation function चाहिए
- प्रमुख उम्मीदवार sum, mean, max हैं
- तीनों variable-size input लेते हैं और input order से स्वतंत्र output देते हैं
- कोई एक operation हमेशा सर्वोत्तम नहीं होता
- mean तब उपयोगी है जब पड़ोसियों की संख्या बहुत अलग हो या local neighborhood features का normalized view चाहिए
- max तब उपयोगी है जब local neighborhood में किसी एक प्रमुख feature को उभारना हो
- sum local feature distribution दिखाता है और normalized न होने के कारण outlier को भी उभार सकता है
- व्यवहार में sum का उपयोग अक्सर होता है
- Principal Neighborhood Aggregation कई aggregation operation को concatenate करता है और node degree के अनुसार बदलने वाला scaling function जोड़ता है
- Tetrahedral Chirality जैसे domain-specific aggregation operation भी design किए जा सकते हैं
GCN, matrix multiplication और graph traversal
- k layer और 1-degree neighbor lookup वाले GCN या MPNN को आकार k के subgraph embedding पर काम करने वाले neural network के रूप में देखा जा सकता है
- किसी node का updated representation k-distance के भीतर के पड़ोसियों की जानकारी को सीमित रूप से दर्शाता है
- edge representation को भी इसी तरह समझा जा सकता है
- adjacency matrix
Aऔर node feature matrixXका गुणनAX, sum aggregation वाले simple message passing को लागू करता हैA_i,kधनात्मक होने का अर्थ है किnode_iऔरnode_kके बीच edge मौजूद है- matrix multiplication को पड़ोसी node के किसी specific feature dimension के मानों को इकट्ठा करने वाले operation के रूप में देखा जा सकता है
- sparse
Aमें 0 वाले सभी पद जोड़ने की आवश्यकता नहीं होती, इसलिए adjacency list अधिक efficient है - adjacency-list-आधारित implementation, sum के अलावा अन्य aggregation operation उपयोग करने में भी सुविधाजनक है
- adjacency matrix की power
A^Kलंबाई K के walk से जुड़ती हैA^2_ijnode_iसेnode_jतक लंबाई 2 के walk की संख्या गिनता है- यही intuition
A^3सेA^kतक जारी रहती है
Attention, explainability और generative model
- Graph Attention Networks पड़ोसी जानकारी को साधारण sum से नहीं बल्कि weighted sum से इकट्ठा करते हैं
- score function
f(node_i, node_j)central node और पड़ोसी node की relevance गणना करता है - softmax से weight को normalize करके task के लिए महत्वपूर्ण पड़ोसियों को अधिक महत्व दिया जा सकता है
- pairwise score computation permutation invariance बनाए रखता है
- score function
- Transformer को attention mechanism वाला GNN माना जा सकता है
- character token जैसे element को fully connected graph के node के रूप में model किया जाता है
- attention हर node pair के लिए edge embedding और weight की गणना करता है
- अंतर यह है कि GNN sparse connectivity pattern मानता है, जबकि Transformer सभी connection को model करता है
- GNN explainability model reliability, debugging और scientific discovery के लिए महत्वपूर्ण हो सकती है
- molecule में किसी विशेष subgraph की उपस्थिति महत्वपूर्ण हो सकती है
- citation network में paper की connectivity degree महत्वपूर्ण हो सकती है
- GNNExplainer task के लिए महत्वपूर्ण संबंधित subgraph निकालने के तरीके से काम करता है
- attribution technique graph के कुछ हिस्सों को importance rank देती है
- graph generative model सीखे गए distribution से नए graph sample करते हैं या दिए गए starting point वाले graph को पूरा करते हैं
- किसी खास property वाले नए molecular graph को drug candidate के रूप में design करने जैसे application हैं
- graph generation की मुख्य कठिनाई graph topology को model करना है
- topology का आकार बहुत बदल सकता है और उसमें
N_nodes^2terms हो सकते हैं - adjacency matrix को image की तरह autoencoder से सीधे model किया जा सकता है
- केवल मौजूद edge और कुछ non-existing edge को predict करके
N_nodes^2का बोझ घटाया जा सकता है - एक और तरीका node और edge की addition/deletion जैसी discrete action दोहराकर graph को sequentially बनाना है
- topology का आकार बहुत बदल सकता है और उसमें
सारांश
- graph, image और text से अलग strengths और constraints वाला structured data type है
- GNN graph के node·edge·global context को update करते हुए connectivity structure और permutation invariance को संभालता है
- pooling, message passing, edge representation, global representation और aggregation function का चयन GNN design के मुख्य तत्व हैं
- वास्तविक performance केवल depth, dimension और parameter count पर नहीं, बल्कि इस बात पर भी बहुत निर्भर करती है कि graph की कौन-सी properties आपस में message exchange करती हैं और graph को कैसे construct किया गया है
1 टिप्पणियां
Hacker News पर टिप्पणियां
फिजिक्स सिमुलेशन (जैसे computational fluid dynamics) में GNN इस्तेमाल करने वाले कई पेपर हैं। ऐसे applications में problem domain को discretize करने वाली unstructured mesh graph structure से बहुत अच्छी तरह मेल खाती है
असल में, अक्सर हर mesh/graph का इस्तेमाल किसी एक खास problem को हल करने के लिए एक बार ही होता है, इसलिए किसी specific graph के लिए GNN को train करने का बहुत मतलब नहीं बनता। फिर भी ज़्यादातर पेपर ऐसा ही करते रहे, शायद इसलिए कि अलग-अलग meshes/graphs और simulation parameters के हिसाब से अच्छी तरह adapt होने वाला GNN बनाने का तरीका अभी नहीं मिला है। उत्सुकता है कि ऐसी generalization संभव कराने वाला breakthrough जल्द आएगा या नहीं
शायद optimal performance के लिए अलग tokenizer की जरूरत पड़ेगी
काम की quality बहुत ऊंची है, लेकिन अफसोस है कि distill.pub कोई sustainable रास्ता नहीं खोज पाया [1]
GNN पर कम चर्चा होने की एक वजह datasets की कमी हो सकती है [2]। यह समस्या semantic web क्षेत्र को भी प्रभावित कर चुकी है
[1] https://distill.pub/2021/distill-hiatus/
[2] https://huggingface.co/datasets?task_categories=task_categor...
अगर field लोकप्रिय है, तो छोटे और engaging videos बनाने की incentive रखने वाले लोग बहुत होते हैं, इसलिए काफी abstract math level पर भी quality अक्सर अच्छी मिलती है। Visuals abstract concepts की intuition पाने में सचमुच मदद करते हैं, और 3Blue1Brown यह पहले ही साबित कर चुका है। GNN के लिए भी 10 मिनट से कम के कुछ अच्छे videos देख लेने भर से literature में जाने की जमीन मिल जाती है
GNNs से मुझे निजी तौर पर काफी निराशा हुई। मैंने research में कुछ बार इन्हें apply किया, लेकिन कभी ठीक से काम नहीं बना
लंबे समय तक GNNs को CNN की generalization की तरह पेश किया गया, लेकिन CNN ज्यादा powerful हैं क्योंकि उनमें “neighbor weights” ज्यादा meaningful होते हैं। वे relative positional relationships सीखते हैं। GNNs आम तौर पर, जैसा यहां बताया गया है, pooling पर निर्भर करते हैं। CNN image output कर सकते हैं, लेकिन GNN से graph output करना आसान नहीं है। Topology अभी भी पहले से तय करनी पड़ती है, और कभी-कभी training के दौरान भी। असली निर्णायक बात performance है। GNNs, CNNs की तुलना में अविश्वसनीय रूप से धीमे हैं
आजकल इन्हीं वजहों से लगता है कि attention ने GNNs की जगह काफी हद तक ले ली है। Pooling की जगह attention इस्तेमाल करने वाले GNNs भी बनाए जा सकते हैं, लेकिन उसका बहुत मतलब नहीं बनता। Graph को आम तौर पर सिर्फ mask matrix बनाने के लिए traverse किया जाता है, और बाकी में साधारण transformer इस्तेमाल होता है। शुरू से ही अगर कोई distance metric मौजूद हो, तो अक्सर graph adjacency की भी जरूरत नहीं पड़ती
कहीं न कहीं किसी के लिए GNNs बहुत उपयोगी जरूर होंगे, लेकिन मेरे अनुभव में वे nail खोजता हुआ hammer जैसे थे
लगभग बाकी सभी cases में अतिरिक्त structure का इस्तेमाल कर इसे ज्यादा efficient बनाया जा सकता है। अगर order define किया जा सकता है तो sequential model, Euclidean/Riemannian structure हो तो CNN या manifold-aware model, global state की जरूरत न हो तो point-cloud network, explicit hierarchy हो तो उस modality का U-Net version, वगैरह
GNNs इसलिए शानदार हैं क्योंकि 1) वे relation की concept को ही encode करते हैं और 2) उनका पूरी तरह general discretized differential equations से अच्छा संबंध है। complex systems/dynamical systems वाले व्यक्ति के तौर पर यह दिलचस्प है, लेकिन अगर specialize किया जा सके तो फिर भी आसान तरीके मौजूद हैं
आपने जो वजहें बताईं, उनके कारण यह संयोग नहीं लगता कि GNNs मुख्यतः recommendation जैसे क्षेत्रों में लोकप्रिय हैं, जहां domain model खुद graph जैसा महसूस होता है। ऐसे क्षेत्रों में useful topology तक पहुंचने की छलांग कम बड़ी होती है
मुझे निजी तौर पर ज्यादा झुंझलाहट इस बात से हुई कि ऐसे कई graph-type domains में data logs जैसा behavior-based machine/human data होता है, और categorical dimensions बहुत ज्यादा होती हैं। Graph वाला हिस्सा मदद करता है, लेकिन categorical dimensions को अच्छी तरह पकड़ना भी उतना ही जरूरी है, और इसे अच्छी तरह करने के लिए अक्सर random forests जैसे model से बाहर के तरीकों की ओर जाना पड़ता है। वहीं से शुरुआत करना आसान होता है, और GNN वाला हिस्सा “थोड़ा बेहतर improvement” पाने के लिए काम काफी बढ़ा देता है
बेशक, अगर यही core business हो और millions of dollars दांव पर हों, तो इसे justify किया जा सकता है। फिर भी ज्यादातर operations teams के लिए यह कठिन है। असल में, pygraphistry users के साथ अक्सर xgboost + umap जैसा कुछ करके आगे बढ़ जाते हैं। सिर्फ RGCN को ठीक से चलाना भी काफी मेहनत मांगता है
GNNs fixed topology पर काम करते लगते हैं। अगर graph topology के किसी transformation को approximate करना हो, तो क्या करना चाहिए? उदाहरण के लिए graph layout सीखना, या किसी program के abstract syntax tree को data flow graph में बदलना
GNN का मूल यह है कि यह topology निर्दिष्ट करने वाले graph के ज़रिए “पड़ोसी” की अवधारणा को स्पष्ट रूप से condition करता है और इस तरह मनमानी topology तक generalize करता है। Graph layout पर यहाँ कोशिश की गई थी और https://github.com/limbo018/DREAMPlace ने काफी ध्यान खींचा, लेकिन हाल में इससे जुड़ा विवाद भी है https://www.semanticscholar.org/paper/The-False-Dawn%3A-Reev...
Graph transformation पर भी शोध हो रहा है https://arxiv.org/abs/2012.01470। हालांकि यह कठिन समस्या है, क्योंकि implicit तौर पर graph matching problem को हल करना पड़ता है
काश distill फिर वापस आ जाए
यह वाकई अफसोस की बात है कि distill.pub नए submissions नहीं ले रहा
मुझे जानना है कि वह interactive visualization software क्या है। D3.js है क्या?
मुझे खुद को बहुत बेवकूफ-सा लग रहा है। उस page पर 4 nodes (a,b,c,d) वाला example है, और दिखाता है कि कुल 24 possible combinations हैं
जब nodes की संख्या दी हो, और edges को भी consider करना हो, तो इसे calculate करने का generalized formula क्या होगा, यह जानना चाहता हूँ। लेख में यह समझाया नहीं लगता, और मुझे लगता है शायद यह factorial हो सकता है
अगर आप इससे और familiar होना चाहते हैं, तो यह site काफी अच्छा overview देती लगती है: https://www.geeksforgeeks.org/mathematics-combinatorics-basi...
हर edge मौजूद हो सकती है या नहीं भी, इसलिए शायद binomial coefficient को 2 से multiply भी किया जा सकता है