טיש פון קאָנטענץ[באַהאַלטן][ווייַזן]
די טיף לערנען טעקניקס באקאנט ווי "גראַף נעוראַל נעטוואָרקס" (GNNs) אַרבעטן אין די גראַפיק פעלד. די נעטוואָרקס האָבן לעצטנס געפֿונען נוצן אין אַ פאַרשיידנקייַט פון פעלדער, אַרייַנגערעכנט קאָמפּיוטער זעאונג, רעקאָממענדאַטאָר סיסטעמען און קאָמבינאַטאָריאַל אַפּטאַמאַזיישאַן, צו נאָמען אַ ביסל.
אין אַדישאַן, די נעטוואָרקס קענען זיין גענוצט צו פאָרשטעלן קאָמפּלעקס סיסטעמען, אַרייַנגערעכנט געזעלשאַפטלעך נעטוואָרקס, פּראָטעין-פּראָטעין ינטעראַקשאַן נעטוואָרקס, וויסן גראַפס, און אנדערע אין עטלעכע פעלדער פון לערנען.
די ניט-עוקלידיאַן פּלאַץ איז ווו גראַפיק דאַטן אַרבעטן, אין קאַנטראַסט צו אנדערע טייפּס פון דאַטן ווי בילדער. אין סדר צו קלאַסיפיצירן נאָודז, פאָרויסזאָגן פֿאַרבינדונגען און קנויל דאַטן, גראַפיק אַנאַליסיס איז געניצט.
אין דעם אַרטיקל, מיר וועלן ונטערזוכן די גראַפיק נעוראַל נעטוואָרק אין דעטאַל, זייַן טייפּס, און צושטעלן פּראַקטיש ביישפילן ניצן PyTorch.
אַזוי, וואָס איז גראַפיק?
א גראַפיק איז אַ טיפּ פון דאַטן סטרוקטור וואָס איז קאַמפּרייזד פון נאָודז און ווערטיקס. די קאַנעקשאַנז צווישן די פאַרשידן נאָודז זענען באשלאסן דורך די ווערטיקאַלז. אויב די ריכטונג איז אנגעוויזן אין די נאָודז, די גראַפיק איז געזאגט צו זיין דירעקטעד; אַנדערש, עס איז אַנטרעקטיד.
א גוטע אַפּלאַקיישאַן פון גראַפס איז מאָדעלינג די באַציונגען צווישן פאַרשידן מענטשן אין אַ געזעלשאַפטלעך נעץ. ווען איר האַנדלען מיט קאָמפּלעקס צושטאנדן, אַזאַ ווי לינקס און יקסטשיינדזשיז, גראַפס זענען זייער נוציק.
זיי זענען באנוצט דורך רעקאָמענדאַציע סיסטעמען, סעמאַנטיק אַנאַליסיס, געזעלשאַפטלעך נעץ אַנאַליסיס און מוסטער דערקענונג
. שאפן גראַפיק-באזירט סאַלושאַנז איז אַ שפּאָגל נייַ פעלד וואָס אָפפערס אַן ינסייטפאַל פארשטאנד פון קאָמפּלעקס און ינטעררילייטיד דאַטן.
גראַפיק נעוראַל נעטוואָרק
גראַפיק נעוראַל נעטוואָרקס זענען ספּעשאַלייזד נוראַל נעץ טייפּס וואָס קענען אַרבעטן אויף אַ גראַפיק דאַטן פֿאָרמאַט. גראַפיק עמבעדדינג און קאַנוואַלושאַנאַל נעוראַל נעטוואָרקס (CNNs) האָבן אַ באַטייטיק פּראַל אויף זיי.
גראַפיק נעוראַל נעטוואָרקס זענען אָנגעשטעלט אין טאַסקס וואָס אַרייַננעמען פּרידיקטינג נאָודז, עדזשאַז און גראַפס.
- CNN ס זענען געניצט צו קלאַסיפיצירן בילדער. סימילאַרלי, צו פאָרויסזאָגן אַ קלאַס, GNNs זענען געווענדט צו די פּיקסעל גריד וואָס רעפּראַזענץ די גראַפיק סטרוקטור.
- טעקסט קאַטאַגעריזיישאַן ניצן ריקעראַנס נעוראַל נעטוואָרקס. GNNs זענען אויך געניצט מיט גראַפיק אַרקאַטעקטשערז ווו יעדער וואָרט אין אַ פראַזע איז אַ נאָדע.
אין סדר צו פאָרויסזאָגן נאָודז, עדזשאַז אָדער גאַנץ גראַפס, נעוראַל נעטוואָרקס זענען געניצט צו שאַפֿן GNNs. א פּראָגנאָז אויף די נאָדע מדרגה, פֿאַר בייַשפּיל, קענען סאָלווע אַ פּראָבלעם ווי ספּאַם דיטעקשאַן.
פֿאַרבינדונג פּראָגנאָז איז אַ טיפּיש פאַל אין רעקאָממענדאַטאָר סיסטעמען און קען זיין אַ ביישפּיל פון אַ פּראָגנאָז פּראָגנאָז פּראָבלעם.
גראַפיק נעוראַל נעטוואָרק טייפּס
עס זענען עטלעכע טייפּס פון נעוראַל נעץ, און קאַנוואַלושאַנאַל נעוראַל נעטוואָרקס זענען פאָרשטעלן אין רובֿ פון זיי. מיר וועלן לערנען וועגן די מערסט באַוווסט GNNs אין דעם טייל.
גראַפיק קאָנוואָלוטיאָנאַל נעטוואָרקס (GCNs)
זיי זענען פאַרגלייַכלעך צו קלאַסיש CNNs. עס אַקווייערז קעראַקטעריסטיקס דורך קוקן בייַ נירביי נאָודז. די אַקטאַוויישאַן פֿונקציע איז געניצט דורך GNNs צו לייגן ניט-לינעאַריטי נאָך אַגגרעגייטינג נאָדע וועקטאָרס און שיקן די רעזולטאַט צו די געדיכט שיכטע.
עס איז קאַמפּרייזד פון גראַפיק קאַנוואַלושאַן, אַ לינעאַר שיכטע און אַ ניט-לערנער אַקטאַוויישאַן פֿונקציע, אין עסאַנס. GCNs קומען אין צוויי הויפּט ווערייאַטיז: ספּעקטראַל קאָנוואָלוטיאָנאַל נעטוואָרקס און ספּיישאַל קאָנוואָלוטיאָנאַל נעטוואָרקס.
גראַפיק אַוטאָ ענקאָדער נעטוואָרקס
עס ניצט אַ ענקאָדער צו לערנען ווי צו פאָרשטעלן גראַפס און אַ דעקאָדער צו פּרובירן צו רעקאָנסטרוירן אַרייַנשרייַב גראַפס. עס איז אַ באַטאַלנעק שיכטע קאַנעקטינג די ענקאָדער און דיקאָודער.
זינט אַוטאָ ענקאָדערס טאָן אַ ויסגעצייכנט אַרבעט פון האַנדלינג קלאַס וואָג, זיי זענען אָפט געניצט אין לינק פאָרויסזאָגן.
ריקעראַנט גראַפיק נעוראַל נעטוואָרקס (RGNNs)
אין מולטי-ריליישאַנאַל נעטוואָרקס, ווו אַ איין נאָדע האט פילע באַציונגען, עס לערנט די אָפּטימאַל דיפיוזשאַן מוסטער און קענען פירן די גראַפס. אין סדר צו פאַרגרעסערן סמודנאַס און רעדוצירן יבער-פּאַראַמעטעריזאַטיאָן, רעגולאַטאָריז זענען געניצט אין דעם פאָרעם פון גראַפיק נעוראַל נעץ.
אין סדר צו באַקומען בעסער אַוטקאַמז, RGNNs דאַרפן ווייניקער פּראַסעסינג מאַכט. זיי זענען געניצט פֿאַר טעקסט דור, רעדע דערקענונג, מאַשין איבערזעצונג, בילד באַשרייַבונג, ווידעא טאַגינג און טעקסט סאַמעריזיישאַן.
גאַטעד נעוראַל גראַפיק נעטוואָרקס (GGNNs)
ווען עס קומט צו לאַנג-טערמין אָפענגיק טאַסקס, זיי העכערן RGNNs. דורך אַרייַנגערעכנט נאָדע, ברעג און טעמפּעראַל טויערן אויף לאַנג-טערמין דיפּענדאַנסיז, גייטיד גראַפיק נעוראַל נעטוואָרקס פֿאַרבעסערן ריקעראַנט גראַפיק נעוראַל נעטוואָרקס.
די טויערן פונקציאָנירן ענלעך צו Gated Recurrent Units (GRUs) אין אַז זיי זענען געניצט צו צוריקרופן און פאַרגעסן דאַטן אין פאַרשידן סטאַגעס.
ימפּלעמענטינג גראַפיק נעוראַל נעטוואָרק ניצן פּיטאָרטש
דער ספּעציפיש אַרויסגעבן וואָס מיר וועלן פאָקוס אויף איז אַ פּראָסט נאָדע קאַטאַגעריזיישאַן אַרויסגעבן. מיר האָבן אַ סייזאַבאַל געזעלשאַפטלעך נעץ גערופן musae-github, וואָס איז געווען קאַמפּיילד פֿון די עפענען אַפּי, פֿאַר גיטהוב דעוועלאָפּערס.
עדזשאַז ווייַזן די קעגנצייַטיק נאכגייער באַציונגען צווישן די נאָודז, וואָס רעפּראַזענץ דעוועלאָפּערס (פּלאַטפאָרמע יוזערז) וואָס האָבן שטערנקלאר אין בייַ מינדסטער 10 ריפּאַזאַטאָריז (באַמערקונג אַז די וואָרט קעגנצייַטיק ינדיקייץ אַן אַנרעקטיד שייכות).
באַזירט אויף די נאָדע ס אָרט, שטערנקלאר ריפּאַזאַטאָריז, באַלעבאָס, און E- בריוו אַדרעס, נאָדע קעראַקטעריסטיקס זענען ריטריווד. פּרידיקטינג אויב אַ GitHub באַניצער איז אַ וועב דעוועלאָפּער אָדער אַ מאַשין לערנען דעוועלאָפּער איז אונדזער אַרבעט.
דער אַרבעט טיטל פון יעדער באַניצער געדינט ווי די יקער פֿאַר דעם טאַרגאַטינג פונקציע.
ינסטאָלינג PyTorch
צו אָנהייבן, מיר ערשטער דאַרפֿן צו ינסטאַלירן פּיטאָרטש. איר קענען קאַנפיגיער עס לויט דיין מאַשין פֿון דאָ. דאָ איז מייַן:
ימפּאָרטינג מאַדזשולז
איצט מיר אַרייַנפיר די נייטיק מאַדזשולז
ימפּאָרטינג און ויספאָרשן די דאַטן
די פאלגענדע שריט איז צו לייענען די דאַטן און פּלאַנעווען די ערשטער פינף ראָוז און די לעצטע פינף ראָוז פון די לאַבעלס טעקע.
בלויז צוויי פון די פיר שפאלטן - די נאָדע ס שייַן (ד"ה באַניצער) און ml_target, וואָס איז 1 אויב דער באַניצער איז אַ מיטגליד פון דער מאַשין לערנען קהל און 0 אַנדערש - זענען באַטייַטיק פֿאַר אונדז אין דעם סיטואַציע.
געגעבן אַז עס זענען בלויז צוויי קלאסן, מיר קענען איצט זיין זיכער אַז אונדזער אַרבעט איז אַ ביינערי קלאַסאַפאַקיישאַן אַרויסגעבן.
ווי אַ רעזולטאַט פון באַטייטיק קלאַס ימבאַלאַנסיז, די קלאַססיפיער קענען נאָר יבערנעמען וואָס קלאַס איז די מערהייַט אלא ווי יוואַליוייטינג די אַנדעררעפּרעסענטעד קלאַס, מאכן קלאַס וואָג אן אנדער קריטיש פאַקטאָר צו באַטראַכטן.
פּלאַטינג די כיסטאַגראַם (אָפטקייַט פאַרשפּרייטונג) ריווילז עטלעכע ימבאַלאַנס ווייַל עס זענען ווייניקערע קלאסן פון מאַשין לערנען (לייבל = 1) ווי פון די אנדערע קלאסן.
שטריך קאָדירונג
די קעראַקטעריסטיקס פון די נאָודז מיטטיילן אונדז וועגן די שטריך וואָס איז פארבונדן מיט יעדער נאָדע. דורך ימפּלאַמענינג אונדזער אופֿן צו ענקאָוד דאַטן, מיר קענען טייקעף ענקאָוד די קעראַקטעריסטיקס.
מיר ווילן צו נוצן דעם אופֿן צו ענקאַפּסאַלייט אַ קליין טייל פון די נעץ (זאָגן, 60 נאָודז) פֿאַר ווייַז. דער קאָד איז ליסטעד דאָ.
דיזיינינג און ווייַז גראַפס
מיר וועלן נוצן דזשיאַמעטריק שטורקאַץ. דאַטן צו בויען אונדזער גראַפיק.
צו מאָדעל אַ איין גראַפיק מיט פאַרשידענע (אַפּשאַנאַל) פּראָפּערטיעס, דאַטן וואָס איז אַ פּשוט פּיטהאָן כייפעץ איז געניצט. דורך ניצן דעם קלאַס און די פאלגענדע אַטריביוץ - וואָס אַלע זענען שטורקאַץ טענסער - מיר וועלן מאַכן אונדזער גראַפיק כייפעץ.
די פאָרעם פון די ווערט x, וואָס וועט זיין אַלאַקייטיד צו די ענקאָודיד נאָדע פֿעיִקייטן, איז [נומער פון נאָודז, נומער פון פֿעיִקייטן].
די פאָרעם פון י איז [נומער פון נאָודז], און עס וועט זיין געווענדט צו די נאָדע לאַבעלס.
ברעג אינדעקס: אין סדר צו באַשרייַבן אַן אַנרעקטיד גראַפיק, מיר דאַרפֿן צו יקספּאַנד די אָריגינעל ברעג ינדיסיז אין סדר צו לאָזן די עקזיסטענץ פון צוויי פאַרשידענע דירעקטעד עדזשאַז וואָס פֿאַרבינדונג די זעלבע צוויי נאָודז אָבער פונט אין פאַרקערט אינסטרוקציעס.
א פּאָר פון עדזשאַז, איינער ווייזן פון נאָדע 100 צו 200 און די אנדערע פון 200 צו 100, איז פארלאנגט, פֿאַר בייַשפּיל, צווישן נאָודז 100 און 200. אויב די ברעג ינדיסעס זענען צוגעשטעלט, דעמאָלט דאָס איז ווי די אַנרעקטיד גראַפיק קענען זיין רעפּריזענטיד. [2,2 * נומער פון אָריגינעל עדזשאַז] וועט זיין די טענסאָר פאָרעם.
מיר מאַכן אונדזער ציען גראַפיק אופֿן צו ווייַזן אַ גראַפיק. דער ערשטער שריט איז צו יבערמאַכן אונדזער כאָומאַדזשיניאַס נעץ אין אַ NetworkX גראַפיק, וואָס קענען זיין ציען מיט NetworkX.draw.
מאַכן אונדזער GNN מאָדעל און באַן עס
מיר אָנהייבן דורך קאָדירונג די גאנצע גאַנג פון דאַטן דורך עקסאַקיוטינג ענקאָוד דאַטן מיט ליכט = פאַלש און דאַן רופן בויען גראַפיק מיט ליכט = פאַלש צו בויען די גאנצע גראַפיק. מיר וועלן נישט פּרווון צו ציען דעם גרויס גראַפיק ווייַל איך פאַרשאַפן איר נוצן אַ היגע מאַשין וואָס האט לימיטעד רעסורסן.
מאַסקס, וואָס זענען ביינערי וועקטאָרס וואָס ידענטיפיצירן וואָס נאָודז געהערן צו יעדער ספּעציפיש מאַסקע מיט די דידזשאַץ 0 און 1, קענען ווערן גענוצט צו געבנ צו וויסן די טריינינג פאַסע וואָס נאָודז זאָל זיין אַרייַנגערעכנט בעשאַס טריינינג און צו זאָגן די ינפעראַנס פאַסע וואָס נאָודז זענען די פּראָבע דאַטן. שטורקאַץ דזשיאַמעטריק.טראַנזפאָרמס.
א נאָדע-מדרגה שפּאַלטן קענען זיין מוסיף מיט די טריינינג מאַסקע, וואַל מאַסקע און פּרובירן מאַסקע פּראָפּערטיעס פון די AddTrainValTestMask קלאַס, וואָס קענען זיין גענוצט צו נעמען אַ גראַפיק און געבן אונדז צו ספּעציפיצירן ווי מיר וועלן צו בויען אונדזער מאַסקס.
מיר נאָר נוצן 10% פֿאַר טריינינג און נוצן 60% פון די דאַטן ווי די פּראָבע שטעלן, און 30% ווי די וואַלאַדיישאַן שטעלן.
איצט מיר וועלן אָנלייגן צוויי GCNConv לייַערס, דער ערשטער פון וואָס האט אַ רעזולטאַט שטריך ציילן וואָס איז גלייַך צו די נומער פון פֿעיִקייטן אין אונדזער גראַפיק ווי אַרייַנשרייַב פֿעיִקייטן.
אין די רגע שיכטע, וואָס כּולל רעזולטאַט נאָודז גלייַך צו די נומער פון אונדזער קלאסן, מיר צולייגן אַ רעלו אַקטאַוויישאַן פֿונקציע און צושטעלן די לייטאַנט פֿעיִקייטן.
ברעג אינדעקס און ברעג וואָג זענען צוויי פון די פילע אָפּציעס X וואָס GCNConv קענען אָננעמען אין די פאָרויס פונקציע, אָבער אין אונדזער סיטואַציע, מיר נאָר דאַרפֿן די ערשטער צוויי וועריאַבאַלז.
טראָץ דער פאַקט אַז אונדזער מאָדעל וועט קענען צו פאָרויסזאָגן די קלאַס פון יעדער נאָדע אין די גראַפיק, מיר נאָך דאַרפֿן צו באַשטימען די אַקיעראַסי און אָנווער פֿאַר יעדער גאַנג סעפּעראַטלי דיפּענדינג אויף די פאַסע.
פֿאַר בייַשפּיל, בעשאַס טריינינג, מיר נאָר ווילן צו נוצן די טריינינג שטעלן צו באַשליסן די אַקיעראַסי און טריינינג אָנווער, און דעריבער דאָס איז ווו אונדזער מאַסקס קומען אין האַנטיק.
צו רעכענען די צונעמען אָנווער און אַקיעראַסי, מיר וועלן דעפינירן די פאַנגקשאַנז פון מאַסקט אָנווער און מאַסקט אַקיעראַסי.
טריינינג די מאָדעל
איצט אַז מיר האָבן דיפיינד די טריינינג ציל פֿאַר וואָס די שטורקאַץ וועט זיין געוויינט. Adam איז אַ בעל אָפּטימיזער.
מיר וועלן אָנפירן די טריינינג פֿאַר אַ זיכער נומער פון עפּאָס און האַלטן אַן אויג אויף די וואַלאַדיישאַן אַקיעראַסי.
מיר אויך פּלאַנעווען די לאָססעס און אַקיעראַסי פון די טריינינג אין פאַרשידענע עפּאָקס.
דיסאַדוואַנטידזשיז פון גראַפיק נעוראַל נעטוואָרק
ניצן GNNs האט אַ ביסל דיסאַדוואַנטידזשיז. ווען צו נוצן GNNa און ווי צו פֿאַרבעסערן די פאָרשטעלונג פון אונדזער מאַשין לערנען מאָדעלס וועט זיין קלאָר צו אונדז נאָך מיר האָבן אַ בעסער פארשטאנד פון זיי.
- בשעת GNNs זענען פּליטקע נעטוואָרקס, טיפּיקלי מיט דריי לייַערס, רובֿ נעוראַל נעטוואָרקס קענען גיין טיף צו פֿאַרבעסערן פאָרשטעלונג. מיר קענען נישט דורכפירן די קאַטינג ברעג אויף גרויס דאַטאַסעץ רעכט צו דעם באַגרענעצונג.
- עס איז מער שווער צו באַן אַ מאָדעל אויף גראַפס, ווייַל זייער סטראַקטשעראַל דינאַמיק איז דינאַמיש.
- רעכט צו דער הויך קאַמפּיוטיישאַנאַל קאָס פון די נעטוואָרקס, סקיילינג די מאָדעל פֿאַר פּראָדוקציע גיט טשאַלאַנדזשיז. סקיילינג די GNNs פֿאַר פּראָדוקציע וועט זיין טשאַלאַנדזשינג אויב דיין גראַפיק סטרוקטור איז ריזיק און קאָמפּליצירט.
סאָף
אין די לעצטע יאָרן, GNNs האָבן דעוועלאָפּעד צו שטאַרק און עפעקטיוו מכשירים פֿאַר מאַשין לערנען ישוז אין די גראַפיק פעלד. א פונדאַמענטאַל איבערבליק פון גראַפיק נעוראַל נעטוואָרקס איז געגעבן אין דעם אַרטיקל.
נאָך דעם, איר קענען אָנהייבן קריייטינג די דאַטאַסעט וואָס וועט זיין געניצט צו באַן און פּרובירן די מאָדעל. צו פֿאַרשטיין ווי עס פאַנגקשאַנז און וואָס עס איז טויגעוודיק פון, איר קענען אויך גיין פיל ווייַטער און באַן עס מיט אַ אַנדערש סאָרט פון דאַטאַסעט.
מזל קאָדירונג!
לאָזן אַ ענטפֿערן