Mündəricat[Gizlət][Göstər]
“Qrafik neyron şəbəkələri” (GNN) kimi tanınan dərin öyrənmə üsulları qrafik domenində işləyir. Bu şəbəkələr son zamanlarda kompüter görmə, tövsiyə sistemləri və kombinatorial optimallaşdırma da daxil olmaqla müxtəlif sahələrdə istifadəni tapmışdır.
Bundan əlavə, bu şəbəkələr mürəkkəb sistemləri, o cümlədən sosial şəbəkələri, zülal-zülal qarşılıqlı əlaqə şəbəkələrini, bilik qrafiklərini və bir sıra tədqiqat sahələrində başqalarını təmsil etmək üçün istifadə edilə bilər.
Qeyri-evklid məkanı, şəkillər kimi digər məlumat növlərindən fərqli olaraq, qrafik məlumatlarının işlədiyi yerdir. Düyünləri təsnif etmək, bağlantıları proqnozlaşdırmaq və klaster məlumatlarını təyin etmək üçün qrafik analizindən istifadə olunur.
Bu yazıda biz Qrafiki araşdıracağıq sinir Network ətraflı, onun növləri, eləcə də PyTorch istifadə edərək praktiki nümunələr verir.
Beləliklə, Qrafik nədir?
Qrafik qovşaqlardan və təpələrdən ibarət məlumat strukturunun bir növüdür. Müxtəlif qovşaqlar arasındakı əlaqələr təpələrlə müəyyən edilir. Əgər qovşaqlarda istiqamət göstərilibsə, qrafikin yönləndirildiyi deyilir; əks halda istiqamətsizdir.
Qrafiklərin yaxşı tətbiqi müxtəlif fərdlər arasındakı əlaqələrin modelləşdirilməsidir sosial şəbəkə. Əlaqələr və mübadilələr kimi mürəkkəb vəziyyətlərlə məşğul olan zaman qrafiklər çox faydalıdır.
Onlar tövsiyə sistemləri, semantik təhlil, sosial şəbəkə təhlili və nümunənin tanınması ilə istifadə olunur
. Qrafikə əsaslanan həllərin yaradılması mürəkkəb və bir-biri ilə əlaqəli məlumatların dərin başa düşülməsini təklif edən tamamilə yeni bir sahədir.
Qrafik neyron şəbəkəsi
Qrafik neyron şəbəkələri qrafik məlumat formatında işləyə bilən ixtisaslaşmış neyron şəbəkə növləridir. Qrafik yerləşdirmə və konvolyusiya neyron şəbəkələri (CNN) onlara əhəmiyyətli təsir göstərir.
Qrafik neyron şəbəkələri qovşaqların, kənarların və qrafiklərin proqnozlaşdırılmasını ehtiva edən vəzifələrdə istifadə olunur.
- CNN-lər şəkilləri təsnif etmək üçün istifadə olunur. Eynilə, bir sinfi proqnozlaşdırmaq üçün GNN-lər qrafik strukturunu təmsil edən piksel şəbəkəsinə tətbiq edilir.
- Təkrarlanan neyron şəbəkələrindən istifadə edərək mətnin təsnifatı. GNN-lər, ifadədəki hər sözün bir qovşaq olduğu qrafik arxitekturalarında da istifadə olunur.
Düyünləri, kənarları və ya tam qrafikləri proqnozlaşdırmaq üçün neyron şəbəkələri GNN yaratmaq üçün istifadə olunur. Məsələn, node səviyyəsində bir proqnoz spam aşkarlanması kimi problemi həll edə bilər.
Linkin proqnozlaşdırılması tövsiyyə sistemlərində tipik bir haldır və kənar müdrik proqnozlaşdırma probleminin nümunəsi ola bilər.
Qrafik neyron şəbəkə növləri
Çoxsaylı neyron şəbəkə növləri mövcuddur və onların əksəriyyətində Konvolutional Neyron Şəbəkələri mövcuddur. Bu hissədə ən məşhur GNN-lər haqqında öyrənəcəyik.
Qrafik Convolutional Networks (GCNs)
Onları klassik CNN-lərlə müqayisə etmək olar. Yaxınlıqdakı qovşaqlara baxaraq xüsusiyyətlər əldə edir. Aktivləşdirmə funksiyası GNN-lər tərəfindən node vektorlarını birləşdirdikdən və çıxışı sıx təbəqəyə göndərdikdən sonra qeyri-xətti əlavə etmək üçün istifadə olunur.
O, mahiyyət etibarilə Qrafik konvolyusiyadan, xətti təbəqədən və öyrənən olmayan aktivləşdirmə funksiyasından ibarətdir. GCN-lər iki əsas növdə olur: Spektral Konvolutional Şəbəkələr və Məkan Konvolyusiya Şəbəkələri.
Qrafik Avtomatik Kodlayıcı Şəbəkələr
O, qrafikləri necə təmsil etməyi öyrənmək üçün kodlayıcıdan və giriş qrafiklərini yenidən qurmağa cəhd etmək üçün dekoderdən istifadə edir. Kodlayıcı və dekoderi birləşdirən darboğaz təbəqəsi var.
Avtomatik kodlayıcılar sinif balansını idarə etmək üçün əla iş gördüklərindən, onlar bağlantı proqnozunda tez-tez istifadə olunur.
Təkrarlanan Qrafik Neyron Şəbəkələri (RGNNs)
Tək düyünün çoxsaylı əlaqələrə malik olduğu çox əlaqəli şəbəkələrdə o, optimal diffuziya modelini öyrənir və qrafikləri idarə edə bilir. Hamarlığı artırmaq və həddindən artıq parametrləşdirməni azaltmaq üçün qrafik neyron şəbəkəsinin bu formasında nizamlayıcılardan istifadə olunur.
Daha yaxşı nəticələr əldə etmək üçün RGNN-lər daha az emal gücü tələb edir. Onlar mətn yaratmaq, nitqin tanınması, maşın tərcüməsi, şəkil təsviri, video etiketləmə və mətnin xülasəsi üçün istifadə olunur.
Qapalı Neyron Qrafik Şəbəkələri (GGNNs)
Uzunmüddətli asılı vəzifələrə gəldikdə, onlar RGNN-ləri üstələyirlər. Uzunmüddətli asılılıqlara qovşaq, kənar və müvəqqəti qapıları daxil etməklə, qapalı qrafik neyron şəbəkələri təkrarlanan qrafik neyron şəbəkələrini gücləndirir.
Qapılar, Gated Recurrent Units (GRU) kimi fəaliyyət göstərir, çünki onlar müxtəlif mərhələlərdə məlumatları geri çağırmaq və unutmaq üçün istifadə olunur.
Pytorch istifadə edərək Qrafik Neyron Şəbəkəsinin həyata keçirilməsi
Diqqətini çəkəcəyimiz xüsusi məsələ ümumi qovşaqların təsnifatı məsələsidir. adlı böyük bir sosial şəbəkəmiz var Musae-github, GitHub tərtibatçıları üçün açıq API-dən tərtib edilmişdir.
Kenarlar ən azı 10 repozitoriyada ulduzu olan tərtibatçıları (platforma istifadəçiləri) təmsil edən qovşaqlar arasında qarşılıqlı izləyici münasibətlərini göstərir (qeyd edək ki, qarşılıqlı söz istiqamətsiz əlaqəni göstərir).
Düyünün yerləşdiyi yerə, ulduzlu depolara, işəgötürənə və e-poçt ünvanına əsasən, node xüsusiyyətləri əldə edilir. GitHub istifadəçisinin veb tərtibatçısı olub olmadığını proqnozlaşdırmaq maşın öyrənmə tərtibatçısı bizim vəzifəmizdir.
Hər bir istifadəçinin vəzifə adı bu hədəfləmə funksiyası üçün əsas olmuşdur.
PyTorch quraşdırılması
Başlamaq üçün əvvəlcə quraşdırmalıyıq PyTorch. Siz onu maşınınıza uyğun olaraq konfiqurasiya edə bilərsiniz burada. Budur mənim:
Modulların idxalı
İndi biz lazımi modulları idxal edirik
Məlumatların idxalı və araşdırılması
Növbəti addım məlumatları oxumaq və etiket faylından ilk beş cərgəni və son beş cərgəni çəkməkdir.
Dörd sütundan yalnız ikisi — node id (yəni istifadəçi) və ml_target, əgər istifadəçi maşın öyrənmə icmasının üzvüdürsə 1, əks halda isə 0 — bu vəziyyətdə bizim üçün uyğundur.
Yalnız iki sinif olduğunu nəzərə alsaq, indi bizim vəzifəmizin ikili təsnifat məsələsi olduğuna əmin ola bilərik.
Əhəmiyyətli sinif disbalansının nəticəsi olaraq, təsnifatçı az təmsil olunan sinfi qiymətləndirmək əvəzinə hansı sinfin çoxluq olduğunu fərz edə bilər ki, bu da sinif balansını nəzərə alınmalı olan digər mühüm amil edir.
Histoqramın tərtibi (tezlik paylanması) bəzi disbalansı aşkar edir, çünki maşın öyrənməsindən (etiket=1) digər siniflərdən daha az sinif var.
Xüsusiyyətlərin Kodlanması
Düyünlərin xüsusiyyətləri bizə hər bir node ilə əlaqəli xüsusiyyət haqqında məlumat verir. Verilənləri kodlaşdırmaq üçün metodumuzu tətbiq etməklə, biz bu xüsusiyyətləri dərhal kodlaya bilərik.
Şəbəkənin kiçik bir hissəsini (məsələn, 60 qovşaq) nümayiş etdirmək üçün əhatə etmək üçün bu üsuldan istifadə etmək istəyirik. Kod burada verilmişdir.
Qrafiklərin dizaynı və nümayişi
Həndəsi məşəldən istifadə edəcəyik. qrafikimizi qurmaq üçün məlumatlar.
Fərqli (isteğe bağlı) xassələri olan tək qrafiki modelləşdirmək üçün sadə Python obyekti olan verilənlər istifadə olunur. Bu sinifdən və aşağıdakı atributlardan (hamısı məşəl tensorları olan) istifadə etməklə biz qrafik obyektimizi yaradacağıq.
Kodlanmış qovşaq xüsusiyyətlərinə ayrılacaq x dəyərinin forması [qovşaqların sayı, xüsusiyyətlərin sayı]dır.
y forması [qovşaqların sayı]dır və o, qovşaq etiketlərinə tətbiq olunacaq.
kənar indeksi: İstiqamətsiz qrafiki təsvir etmək üçün eyni iki qovşağı birləşdirən, lakin əks istiqamətləri göstərən iki fərqli istiqamətlənmiş kənarın mövcudluğuna imkan vermək üçün orijinal kənar indekslərini genişləndirməliyik.
Məsələn, 100 və 200 qovşaqları arasında biri 200-dən 100-ə, digəri isə 100-dən 200-ə qədər olan bir cüt kənar tələb olunur. Əgər kənar indekslər təmin olunubsa, istiqamətləndirilməmiş qrafiki belə göstərmək olar. [2,2*orijinal kənarların sayı] tenzor forması olacaq.
Qrafiki göstərmək üçün çəkmə qrafiki metodumuzu yaradırıq. İlk addım, homojen şəbəkəmizi NetworkX.draw istifadə edərək tərtib edilə bilən NetworkX qrafikinə çevirməkdir.
GNN modelimizi hazırlayın və onu öyrədin
Biz kodlaşdırma məlumatını light=False ilə icra etməklə və sonra bütün qrafiki qurmaq üçün light=False ilə konstruksiya qrafikini çağırmaqla bütün verilənlər toplusunu kodlaşdırmaqla başlayırıq. Bu böyük qrafiki çəkməyə cəhd etməyəcəyik, çünki güman edirəm ki, siz məhdud resursları olan yerli maşından istifadə edirsiniz.
0 və 1 rəqəmlərindən istifadə edərək hər bir xüsusi maskaya hansı qovşaqların aid olduğunu müəyyən edən ikili vektorlar olan maskalar, təlim zamanı hansı qovşaqların daxil edilməsi lazım olduğunu təlim mərhələsinə bildirmək və nəticə çıxarma mərhələsinə hansı qovşaqların test məlumatları olduğunu söyləmək üçün istifadə edilə bilər. Məşəl həndəsi.çevirir.
AddTrainValTestMask sinifinin təlim maskası, val maskası və sınaq maskası xassələrindən istifadə edərək qovşaq səviyyəli bölünmə əlavə edilə bilər ki, bu da qrafik çəkmək və maskalarımızın necə qurulmasını istədiyimizi müəyyən etmək üçün istifadə edilə bilər.
Biz sadəcə olaraq 10%-ni təlim üçün istifadə edirik və məlumatların 60%-ni test dəsti kimi, 30%-ni isə doğrulama dəsti kimi istifadə edirik.
İndi biz iki GCNConv qatını yığacağıq, birincisinin çıxış xüsusiyyətlərinin sayı qrafikimizdəki giriş funksiyaları kimi xüsusiyyətlərin sayına bərabərdir.
Siniflərimizin sayına bərabər çıxış qovşaqlarını ehtiva edən ikinci təbəqədə biz relu aktivləşdirmə funksiyasını tətbiq edirik və gizli xüsusiyyətləri təmin edirik.
Kənar indeksi və kənar çəkisi GCNConv-un irəli funksiyada qəbul edə biləcəyi bir çox x variantından ikisidir, lakin bizim vəziyyətimizdə yalnız ilk iki dəyişənə ehtiyacımız var.
Modelimizin qrafikdəki hər bir düyünün sinifini proqnozlaşdıra bilməsinə baxmayaraq, biz yenə də fazadan asılı olaraq hər bir dəst üçün dəqiqliyi və itkini ayrıca müəyyən etməliyik.
Məsələn, məşq zamanı biz yalnız məşq dəstindən dəqiqliyi və məşq itkisini müəyyən etmək üçün istifadə etmək istəyirik və buna görə də maskalarımız burada lazımlı olur.
Müvafiq itki və dəqiqliyi hesablamaq üçün maskalı itki və maskalanmış dəqiqlik funksiyalarını müəyyən edəcəyik.
Modelin öyrədilməsi
İndi məşəlin istifadə olunacağı təlim məqsədini müəyyən etdik. Adam usta optimallaşdırıcıdır.
Doğrulamanın dəqiqliyinə diqqət yetirməklə, müəyyən dövrlər üçün təlim keçirəcəyik.
Biz həmçinin müxtəlif dövrlərdə təlimin itkiləri və dəqiqliklərinin planını tərtib edirik.
Qrafik neyron şəbəkəsinin çatışmazlıqları
GNN-lərdən istifadənin bir sıra mənfi cəhətləri var. GNNa-dan nə vaxt istifadə edilməli və maşın öyrənmə modellərimizin performansını necə artıracağımız onları daha yaxşı başa düşdükdən sonra bizə aydın olacaq.
- GNN-lər adətən üç təbəqədən ibarət dayaz şəbəkələr olsa da, əksər neyron şəbəkələri performansı yaxşılaşdırmaq üçün dərinləşə bilər. Bu məhdudiyyətə görə biz böyük verilənlər bazasında qabaqcıl performans göstərə bilmirik.
- Qrafiklər üzərində model hazırlamaq daha çətindir, çünki onların struktur dinamikası dinamikdir.
- Bu şəbəkələrin yüksək hesablama xərclərinə görə, modelin istehsal üçün miqyaslanması çətinliklər yaradır. Qrafik quruluşunuz böyük və mürəkkəbdirsə, istehsal üçün GNN-lərin miqyası çətin olacaq.
Nəticə
Son bir neçə il ərzində GNN-lər qrafik domenində maşın öyrənməsi məsələləri üçün güclü və effektiv vasitələrə çevrilmişdir. Qrafik neyron şəbəkələrinin əsas icmalı bu məqalədə verilmişdir.
Bundan sonra, modeli öyrətmək və sınaqdan keçirmək üçün istifadə ediləcək verilənlər toplusunu yaratmağa başlaya bilərsiniz. Onun necə işlədiyini və nəyə qadir olduğunu başa düşmək üçün siz daha da uzağa gedə və fərqli bir verilənlər bazasından istifadə edərək onu məşq edə bilərsiniz.
Xoşbəxt kodlaşdırma!
Cavab yaz