Мазмұны[Жасыру][Көрсету]
«Графикалық нейрондық желілер» (GNN) деп аталатын терең оқыту әдістері графикалық доменде жұмыс істейді. Бұл желілер соңғы уақытта әртүрлі салаларда, соның ішінде компьютерлік көру, кеңес беру жүйелері және комбинаторлық оңтайландыру, бірнеше атауға ие болды.
Сонымен қатар, бұл желілер күрделі жүйелерді, соның ішінде әлеуметтік желілерді, ақуыз-белоктың өзара әрекеттесу желілерін, білім графиктерін және басқаларды зерттеудің бірнеше салаларында көрсету үшін пайдаланылуы мүмкін.
Евклидтік емес кеңістік - бұл суреттер сияқты деректердің басқа түрлерінен айырмашылығы, графикалық деректер жұмыс істейтін орын. Түйіндерді жіктеу, сілтемелерді болжау және кластерлік деректер үшін графикалық талдау қолданылады.
Бұл мақалада біз графикті қарастырамыз нейрондық желі егжей-тегжейлі, оның түрлері, сондай-ақ PyTorch көмегімен практикалық мысалдар келтіріңіз.
Сонымен, График дегеніміз не?
График - түйіндер мен шыңдардан тұратын деректер құрылымының түрі. Әртүрлі түйіндер арасындағы байланыс шыңдар арқылы анықталады. Түйіндердегі бағыт көрсетілсе, график бағытталған деп аталады; әйтпесе, ол бағытталмаған.
Графиктерді жақсы қолдану - бұл а-дағы әртүрлі адамдар арасындағы қарым-қатынастарды модельдеу әлеуметтік желі. Сілтемелер мен алмасулар сияқты күрделі жағдайлармен күресу кезінде графиктер өте пайдалы.
Олар ұсыныс жүйелері, семантикалық талдау, әлеуметтік желі талдауы және үлгіні тану арқылы қолданылады
. Графикке негізделген шешімдерді жасау – күрделі және өзара байланысты деректерді терең түсінуді ұсынатын жаңа өріс.
Графикалық нейрондық желі
Графикалық нейрондық желілер - бұл графикалық деректер пішімінде жұмыс істей алатын арнайы нейрондық желілер. Графиктерді енгізу және конволюционды нейрондық желілер (CNN) оларға айтарлықтай әсер етеді.
Графикалық нейрондық желілер түйіндерді, жиектерді және графиктерді болжауды қамтитын тапсырмаларда қолданылады.
- CNN суреттерді жіктеу үшін қолданылады. Сол сияқты, классты болжау үшін GNN графикалық құрылымды көрсететін пиксельдік торға қолданылады.
- Қайталанатын нейрондық желілер арқылы мәтінді санаттау. GNNs сонымен қатар фразадағы әрбір сөз түйін болатын графикалық архитектуралармен қолданылады.
Түйіндерді, жиектерді немесе толық графиктерді болжау үшін GNN құру үшін нейрондық желілер қолданылады. Мысалы, түйін деңгейіндегі болжам спамды анықтау сияқты мәселені шеше алады.
Сілтемені болжау кеңес беруші жүйелердегі әдеттегі жағдай және шеттік болжау мәселесінің мысалы болуы мүмкін.
Графиктік нейрондық желі түрлері
Нейрондық желілердің көптеген түрлері бар және олардың көпшілігінде конволюционды нейрондық желілер бар. Біз осы бөлімде ең танымал GNN туралы білеміз.
Графикалық конволюциялық желілер (GCNs)
Оларды классикалық CNN-мен салыстыруға болады. Ол жақын орналасқан түйіндерді қарау арқылы сипаттамаларға ие болады. Активтендіру функциясын GNN түйіндік векторларды біріктіріп, шығысты тығыз қабатқа жібергеннен кейін сызықты еместікті қосу үшін пайдаланады.
Ол шын мәнінде Графиктің конвульсиясынан, сызықтық қабаттан және үйренуші емес белсендіру функциясынан тұрады. GCN екі негізгі сортта келеді: Спектрлік конволюциялық желілер және кеңістіктік конволюциондық желілер.
Графикалық автоматты кодтаушы желілер
Ол графиктерді көрсету жолын үйрену үшін кодтағышты және кіріс графиктерін қайта құруға тырысу үшін декодерді пайдаланады. Кодер мен дешифраторды байланыстыратын кедергі қабаты бар.
Автокодерлер класс балансын өңдеуде тамаша жұмыс істейтіндіктен, олар сілтемелерді болжауда жиі пайдаланылады.
Қайталанатын графикалық нейрондық желілер (RGNNs)
Бір түйіннің көптеген қатынасы бар көп реляциялық желілерде ол оптималды диффузия үлгісін үйренеді және графиктерді басқара алады. Тегістігін арттыру және артық параметрлеуді азайту үшін графтық нейрондық желінің осы түрінде регуляризаторлар қолданылады.
Жақсырақ нәтиже алу үшін RGNN аз өңдеу қуатын қажет етеді. Олар мәтінді құру, сөйлеуді тану, машиналық аударма, суретті сипаттау, бейнені белгілеу және мәтінді қорытындылау үшін қолданылады.
Жабық нейрографиялық желілер (GGNNs)
Ұзақ мерзімді тәуелді тапсырмаларға келетін болсақ, олар RGNN-ден асып түседі. Ұзақ мерзімді тәуелділіктерге түйінді, жиекті және уақытша қақпаларды қосу арқылы қақпалы графикалық нейрондық желілер қайталанатын графикалық нейрондық желілерді жақсартады.
Қақпалар Gated Recurrent Units (GRUs) сияқты жұмыс істейді, өйткені олар әртүрлі кезеңдерде деректерді еске түсіру және ұмыту үшін пайдаланылады.
Pytorch көмегімен графикалық нейрондық желіні енгізу
Біз назар аударатын нақты мәселе түйіндерді санаттау мәселесі болып табылады. Бізде үлкен әлеуметтік желі бар musae-github, GitHub әзірлеушілері үшін ашық API-ден құрастырылған.
Жиектер кемінде 10 репозиторийде жұлдызшасы бар әзірлеушілерді (платформа пайдаланушыларын) білдіретін түйіндер арасындағы өзара ізбасарлық қатынастарды көрсетеді (mutual сөзі бағытталмаған қатынасты көрсететінін ескеріңіз).
Түйіннің орналасқан жері, жұлдызшамен белгіленген репозиторийлер, жұмыс беруші және электрондық пошта мекенжайы негізінде түйін сипаттамалары шығарылады. GitHub пайдаланушысы веб-әзірлеуші немесе a машиналық оқыту әзірлеушісі біздің міндетіміз.
Әрбір пайдаланушының лауазым атауы осы мақсатты функция үшін негіз болды.
PyTorch орнатылуда
Бастау үшін алдымен орнату керек PyTorch. Оны құрылғыңызға сәйкес конфигурациялауға болады Мұнда. Міне менікі:
Модульдерді импорттау
Енді біз қажетті модульдерді импорттаймыз
Деректерді импорттау және зерттеу
Келесі қадам деректерді оқу және белгілер файлынан алғашқы бес жолды және соңғы бес жолды салу болып табылады.
Төрт бағанның тек екеуі — түйіннің идентификаторы (яғни, пайдаланушы) және ml_target, егер пайдаланушы машиналық оқыту қауымдастығының мүшесі болса, 1, ал басқа жағдайда 0 — бұл жағдайда бізге қатысты.
Тек екі класс бар екенін ескере отырып, енді біздің міндетіміз екілік классификация мәселесі екеніне сенімді бола аламыз.
Маңызды сыныптық теңгерімсіздіктердің нәтижесінде классификатор аз ұсынылған сыныпты бағалаудың орнына қай сыныптың көпшілік екенін болжауы мүмкін, бұл сынып тепе-теңдігін ескеретін тағы бір маңызды фактор етеді.
Гистограмманы (жиілікті бөлу) сызу кейбір теңгерімсіздікті анықтайды, себебі басқа сыныптарға қарағанда машиналық оқытудан (белгі = 1) сыныптар аз.
Мүмкіндіктерді кодтау
Түйіндердің сипаттамалары бізге әрбір түйінмен байланысты мүмкіндік туралы хабарлайды. Деректерді кодтау әдісімізді енгізу арқылы біз сол сипаттарды лезде кодтай аламыз.
Біз бұл әдісті көрсету үшін желінің кішкене бөлігін (мысалы, 60 түйін) инкапсуляциялау үшін пайдаланғымыз келеді. Код осы жерде берілген.
Графиктерді құрастыру және көрсету
Біз геометриялық алауды қолданамыз. Біздің графикті құру үшін деректер.
Әртүрлі (міндетті емес) қасиеттері бар бір графикті модельдеу үшін қарапайым Python нысаны болып табылатын деректер пайдаланылады. Осы классты және келесі атрибуттарды (олардың барлығы алау тензоры) пайдалану арқылы біз графикалық нысанды жасаймыз.
Кодталған түйін мүмкіндіктеріне бөлінетін x мәнінің пішіні [түйіндер саны, мүмкіндіктер саны] болып табылады.
y пішіні [түйіндер саны] болып табылады және ол түйін белгілеріне қолданылады.
жиек индексі: бағытталмаған графикті сипаттау үшін бірдей екі түйінді байланыстыратын, бірақ қарама-қарсы бағытта орналасқан екі бөлек бағытталған жиектердің болуына мүмкіндік беру үшін бастапқы жиектер индекстерін кеңейту керек.
Бірі 100-ден 200-ге дейін, екіншісі 200-ден 100-ге дейін бағытталған жиектер жұбы, мысалы, 100 және 200 түйіндері арасында қажет. Егер жиек индекстері берілген болса, бағытталмаған графикті осылай көрсетуге болады. [2,2*түпнұсқа жиектер саны] тензор пішіні болады.
Біз графикті көрсету үшін сызба сызба әдісін жасаймыз. Бірінші қадам - біртекті желімізді NetworkX.draw көмегімен салуға болатын NetworkX графигіне айналдыру.
Біздің GNN үлгісін жасап, оны жаттықтырыңыз
Біз кодтау деректерін light=False арқылы орындау арқылы деректердің барлық жинағын кодтаудан бастаймыз, содан кейін бүкіл графикті құрастыру үшін light=False арқылы құрылымдық графты шақырамыз. Біз бұл үлкен графикті салуға әрекет жасамаймыз, өйткені ресурстары шектеулі жергілікті құрылғыны пайдаланып жатырсыз деп ойлаймын.
0 және 1 цифрларының көмегімен әрбір нақты маскаға қандай түйіндердің тиесілі екенін анықтайтын екілік векторлар болып табылатын маскалар жаттығу кезеңінде қандай түйіндерді қосу керектігін хабарлау үшін және қорытынды фазасына қандай түйіндер сынақ деректері екенін айту үшін пайдаланылуы мүмкін. Алау геометриялық.түрлендіреді.
Түйін деңгейін бөлуді AddTrainValTestMask сыныбының жаттығу маскасы, val маскасы және сынақ маскасы сипаттары арқылы қосуға болады, олар графикті алу және маскаларымыздың қалай жасалуын қалайтынымызды көрсетуге мүмкіндік береді.
Біз тек 10%-ын оқыту үшін пайдаланамыз және деректердің 60%-ын сынақ жинағы ретінде пайдаланамыз, ал 30%-ын тексеру жинағы ретінде пайдаланамыз.
Енді біз екі GCNConv қабатын жинаймыз, олардың біріншісінде кіріс мүмкіндіктері ретінде графиктегі мүмкіндіктер санына тең шығыс мүмкіндіктер саны бар.
Біздің сыныптарымыздың санына тең шығыс түйіндерін қамтитын екінші қабатта біз relu белсендіру функциясын қолданамыз және жасырын мүмкіндіктерді береміз.
Жиек индексі және жиек салмағы - GCNConv алға функцияда қабылдай алатын көптеген x опцияларының екеуі, бірақ біздің жағдайымызда бізге тек алғашқы екі айнымалы керек.
Біздің модель графиктегі әрбір түйіннің класын болжай алатынына қарамастан, біз әлі де фазаға байланысты әрбір жиынтық үшін дәлдік пен жоғалтуды жеке анықтауымыз керек.
Мысалы, жаттығу кезінде біз жаттығулардың дәлдігі мен жоғалуын анықтау үшін тек жаттығулар жиынтығын қолданғымыз келеді, сондықтан біздің маскаларымыз дәл осы жерде пайдалы болады.
Тиісті жоғалту мен дәлдікті есептеу үшін біз маскаланған жоғалту және бүркеме дәлдік функцияларын анықтаймыз.
Модельді жаттықтыру
Енді біз алаудың қолданылатын оқу мақсатын анықтадық. Адам - шебер оңтайландырушы.
Біз валидацияның дәлдігін қадағалай отырып, белгілі бір дәуірлер үшін тренинг өткіземіз.
Біз сонымен қатар әртүрлі дәуірлердегі жаттығулардың жоғалтулары мен дәлдіктерін жоспарлаймыз.
Графикалық нейрондық желінің кемшіліктері
GNN пайдаланудың бірнеше кемшіліктері бар. GNNa-ны қашан қолдану керек және машиналық оқыту үлгілерінің өнімділігін қалай жақсарту керектігі біз оларды жақсырақ түсінгеннен кейін бізге түсінікті болады.
- GNN әдетте үш қабаты бар таяз желілер болғанымен, нейрондық желілердің көпшілігі өнімділікті жақсарту үшін тереңдей алады. Осы шектеуге байланысты біз үлкен деректер жиынында алдыңғы қатарда жұмыс істей алмаймыз.
- Модельді графиктерге үйрету қиынырақ, өйткені олардың құрылымдық динамикасы динамикалық.
- Бұл желілердің жоғары есептеу шығындарына байланысты өндіріске арналған модельді масштабтау қиындықтар туғызады. Егер сіздің графикалық құрылымыңыз үлкен және күрделі болса, өндіріс үшін GNN-ді масштабтау қиын болады.
қорытынды
Соңғы бірнеше жылда GNN графикалық домендегі машиналық оқыту мәселелеріне арналған қуатты және тиімді құралдарға айналды. Бұл мақалада графикалық нейрондық желілердің негізгі шолуы берілген.
Осыдан кейін үлгіні үйрету және сынау үшін пайдаланылатын деректер жинағын құруды бастауға болады. Оның қалай жұмыс істейтінін және не істей алатынын түсіну үшін сіз әлдеқайда алысқа баруға және оны басқа деректер жиынтығын пайдалана отырып үйретуге болады.
Кодтау құтты болсын!
пікір қалдыру