Мазмуну[Жашыруу][Көрсөтүү]
"График нейрон тармактары" (GNNs) деп аталган терең үйрөнүү ыкмалары графикалык доменде иштейт. Бул тармактар акыркы убакта ар кандай тармактарда, анын ичинде компьютердик көрүү, рекомендациялоочу системалар жана комбинатордук оптималдаштыруу, бир нечесин атоо үчүн колдонула баштады.
Мындан тышкары, бул тармактар татаал системаларды, анын ичинде социалдык тармактарды, белок-белоктун өз ара аракеттенүү тармактарын, билим графиктерин жана башка изилдөөлөрдүн бир нече тармактарында көрсөтүү үчүн колдонулушу мүмкүн.
Евклиддик эмес мейкиндик - бул сүрөттөр сыяктуу маалыматтардын башка түрлөрүнөн айырмаланып, графикалык маалыматтар иштеген жер. Түйүндөрдү классификациялоо, шилтемелерди болжолдоо жана кластердик маалыматтар үчүн графикалык анализ колдонулат.
Бул макалада биз Графиканы карап чыгабыз нейрон Network майда-чүйдөсүнө чейин, анын түрлөрү, ошондой эле PyTorch колдонуу менен практикалык мисалдарды берүү.
Ошентип, Graph деген эмне?
График - түйүндөрдөн жана чокулардан турган маалымат структурасынын бир түрү. Ар кандай түйүндөрдүн ортосундагы байланыштар чокулары менен аныкталат. Түйүндөрдө багыт көрсөтүлсө, график багытталган деп айтылат; антпесе, ал багытталбайт.
Графиктерди жакшы колдонуу - бул ар кандай адамдардын ортосундагы мамилелерди моделдөө социалдык тармак. Шилтемелер жана алмашуулар сыяктуу татаал жагдайлар менен күрөшүүдө графиктер абдан пайдалуу.
Алар сунуш системалары, семантикалык талдоо, коомдук тармактарды талдоо жана үлгү таануу тарабынан колдонулат
. Графикке негизделген чечимдерди түзүү - бул татаал жана бири-бири менен байланышкан маалыматтарды терең түшүнүүнү сунуш кылган жаңы тармак.
График нейрон тармагы
Графиктик нейрон тармактары – бул графикалык маалымат форматында иштей ала турган атайын нейрон тармактарынын түрлөрү. График киргизүү жана конволюциялык нейрон тармактары (CNN) аларга олуттуу таасирин тийгизет.
График нейрон тармактары түйүндөрдү, четтерди жана графиктерди болжолдоону камтыган тапшырмаларда колдонулат.
- CNN сүрөттөрдү классификациялоо үчүн колдонулат. Ошо сыяктуу эле, классты болжолдоо үчүн, GNNs график түзүмүн көрсөткөн пикселдик торчого колдонулат.
- Рекурренттик нейрон тармактарын колдонуу менен текстти категориялоо. GNNs ошондой эле фразадагы ар бир сөз түйүн болгон график архитектурасында колдонулат.
Түйүндөрдү, четтерди же толук графиктерди болжолдоо үчүн, нейрон тармактары GNN түзүү үчүн колдонулат. Түйүн деңгээлинде болжолдоо, мисалы, спам аныктоо сыяктуу көйгөйдү чече алат.
Шилтемени болжолдоо сунуш кылуучу системалардагы типтүү окуя болуп саналат жана алдын ала айтуу көйгөйүнүн мисалы болушу мүмкүн.
Нейрондук тармактардын түрлөрү
Нейрондук тармактардын көптөгөн түрлөрү бар жана алардын көпчүлүгүндө Convolutional нейрон тармактары бар. Биз бул бөлүктө эң белгилүү GNNлер жөнүндө билебиз.
Графикалык конволюциялык тармактар (GCNs)
Алар классикалык CNN менен салыштырууга болот. Ал жакын жайгашкан түйүндөрдү карап мүнөздөмөлөрдү алат. Активдештирүү функциясы түйүн векторлорун топтоп, жыш катмарга чыгарууну жөнөткөндөн кийин сызыктуу эместикти кошуу үчүн GNN тарабынан колдонулат.
Ал түпкүлүгүндө Графиктин айлануусунан, сызыктуу катмардан жана үйрөнүүчү эмес активдештирүү функциясынан турат. GCNs эки негизги сортто келет: Спектрдик Convolutional Networks жана мейкиндик Convolutional Networks.
Графикалык Auto-Encoder Networks
Ал графиктерди көрсөтүүнү үйрөнүү үчүн коддоочуну жана киргизилген графиктерди реконструкциялоого аракет кылуу үчүн декодерди колдонот. Кодер менен декодерди туташтырган тар моюн катмары бар.
Автокодерлор класс балансын башкарууда эң сонун жумуш аткаргандыктан, алар шилтемени болжолдоодо көп колдонулат.
Кайталануучу графикалык нейрон тармактары (RGNNs)
Бир түйүн көптөгөн мамилелерге ээ болгон көп реляциялык тармактарда, ал оптималдуу диффузия үлгүсүн үйрөнүп, графиктерди башкара алат. Жылмакайлыкты жогорулатуу жана ашыкча параметрлештирүүлөрдү азайтуу үчүн графиктик нейрон тармагынын бул формасында регуляризаторлор колдонулат.
Жакшы натыйжаларды алуу үчүн, RGNNs азыраак иштетүү күчүн талап кылат. Алар текстти түзүү, кепти таануу, машина которуу, сүрөттү сыпаттоо, видеону белгилөө жана текстти жалпылоо үчүн колдонулат.
Дарбазаланган нейрографиялык тармактар (GGNNs)
Узак мөөнөттүү көз каранды милдеттерге келгенде, алар RGNNлерден ашып түшүшөт. Узак мөөнөттүү көз карандылыктарга түйүн, чет жана убактылуу дарбазаларды кошуу менен, дарбазалуу графикалык нейрон тармактары кайталануучу графикалык нейрон тармактарын жакшыртат.
Дарбазалар Gated Recurrent Units (GRUs) сыяктуу иштешет, анткени алар ар кандай этаптарда маалыматтарды кайра чакырып алуу жана унутуу үчүн колдонулат.
Pytorch аркылуу графикалык нейрон тармагын ишке ашыруу
Биз көңүл бура турган конкреттүү маселе түйүндөрдү категориялаштыруу маселеси. Бизде чоң социалдык тармак бар musae-github, GitHub иштеп чыгуучулары үчүн ачык APIден түзүлгөн.
Четтер кеминде 10 репозиторийде жылдызы бар иштеп чыгуучуларды (платформанын колдонуучуларын) билдирген түйүндөр ортосундагы өз ара жолдоочу мамилелерин көрсөтөт (өз ара деген сөз багытталбаган мамилени көрсөтөт).
Түйүндүн жайгашкан жерине, жылдызчаланган репозиторийлерге, иш берүүчүгө жана электрондук почта дарегине жараша түйүн мүнөздөмөлөрү чыгарылат. GitHub колдонуучусу веб-иштеп чыгуучу же а машина үйрөнүү иштеп чыгуучусу биздин милдетибиз.
Ар бир колдонуучунун жумуш наамы бул максаттуу функция үчүн негиз болуп кызмат кылган.
PyTorch орнотулууда
Баштоо үчүн, биз биринчи орнотуу керек PyTorch. Сиз аны машинаңызга ылайык конфигурациялай аласыз бул жерде. Мына меники:
Модулдарды импорттоо
Азыр, биз керектүү модулдарды импорттоо
Маалыматтарды импорттоо жана изилдөө
Кийинки кадам маалыматтарды окуу жана энбелгилер файлынан биринчи беш сапты жана акыркы беш сапты түзүү.
Төрт мамычанын экөөсү гана — түйүндүн идентификатору (б.а. колдонуучу) жана ml_target, эгерде колдонуучу машина үйрөнүү коомчулугунун мүчөсү болсо, 1 жана 0 башкасы — бул кырдаалда бизге тиешелүү.
Болгону эки класс бар экенин эске алсак, эми биздин милдетибиз бинардык классификация маселеси экенине шектенбесек болот.
Класстын олуттуу дисбаланстарынын натыйжасында классификатор аз көрсөтүлгөн класска баа бербестен, кайсы класс көпчүлүк экенин болжолдой алат, бул класс тең салмактуулугун дагы бир маанилүү факторго айландырат.
Гистограмманы түзүү (жыштыктарды бөлүштүрүү) кээ бир дисбалансты көрсөтөт, анткени башка класстарга караганда машиналык үйрөнүүдөн класстар азыраак (белги=1).
Функцияларды коддоо
Түйүндөрдүн мүнөздөмөлөрү бизге ар бир түйүн менен байланышкан өзгөчөлүк жөнүндө маалымат берет. Маалыматтарды коддоо ыкмасын ишке ашыруу менен биз ошол мүнөздөмөлөрдү заматта коддой алабыз.
Биз дисплей үчүн тармактын кичинекей бөлүгүн (мисалы, 60 түйүн) инкапсуляциялоо үчүн бул ыкманы колдонгубуз келет. Код бул жерде келтирилген.
Дизайн жана графиктерди көрсөтүү
Биз геометриялык факелди колдонобуз. биздин графикти куруу үчүн маалыматтар.
Ар кандай (милдеттүү эмес) касиеттери бар бир графикти моделдөө үчүн жөнөкөй Python объектиси болгон маалыматтар колдонулат. Бул классты жана төмөнкү атрибуттарды колдонуу менен, алардын баары факел тензорлору болуп саналат, биз графикалык объектибизди түзөбүз.
Коддолгон түйүн өзгөчөлүктөрүнө бөлүнүүчү x маанисинин формасы [түйүндөрдүн саны, өзгөчөлүктөрдүн саны].
y формасы [түйүндөрдүн саны] жана ал түйүн энбелгилерине колдонулат.
жээк индекси: Багытталбаган графикти сүрөттөө үчүн, бир эле эки түйүндү байланыштырган, бирок карама-каршы багыттарды көрсөткөн эки башка багытталган четтердин болушуна жол берүү үчүн баштапкы чектин индекстерин кеңейтишибиз керек.
Мисалы, 100 жана 200 түйүндөрүнүн ортосунда бири 200дөн 100гө чейин, экинчиси 100дөн 200гө чейин караган жуп кырлар талап кылынат. Эгерде четки индекстер берилсе, анда багытталбаган графикти ушундайча көрсөтүүгө болот. [2,2*баштапкы четтердин саны] тензордук форма болот.
Графикти көрсөтүү үчүн биз графикти тартуу ыкмасын түзөбүз. Биринчи кадам - бул бир тектүү тармагыбызды NetworkX графигине айландыруу, аны NetworkX.draw аркылуу тартса болот.
Биздин GNN моделин жасап, аны үйрөтүңүз
Биз коддоо берилиштерин light=False менен аткарып, анан бүт графикти түзүү үчүн light=False менен конструкция графигин чакырып, маалыматтардын бардык топтомун коддоодон баштайбыз. Биз бул чоң графикти тартууга аракет кылбайбыз, анткени сиз ресурстары чектелген жергиликтүү машинаны колдонуп жатасыз деп ойлойм.
0 жана 1 цифраларынын жардамы менен ар бир конкреттүү маскага кайсы түйүндөр таандык экенин аныктаган бинардык векторлор болгон маскалар тренингдин жүрүшүндө кайсы түйүндөр камтылуусу керектиги жөнүндө окутуу фазасына кабарлоо үчүн жана тыянак фазасына кайсы түйүндөр тесттик маалыматтар экенин айтуу үчүн колдонулушу мүмкүн. Факел геометриялык.өзгөрүүлөр.
Түйүн деңгээлиндеги бөлүнүүнү AddTrainValTestMask классынын машыгуу маскасы, валь маскасы жана тест маскасы касиеттери аркылуу кошууга болот, ал графикти алуу үчүн колдонулушу мүмкүн жана маскаларыбызды кантип курууну каалай турганыбызды көрсөтүүгө мүмкүнчүлүк берет.
Биз жөн гана 10% окутуу үчүн колдонобуз жана 60% маалыматтарды тест топтому катары колдонобуз, ал эми валидация топтому катары 30% колдонобуз.
Эми биз эки GCNConv катмарын топтойбуз, алардын биринчисинде киргизүү өзгөчөлүктөрү катары биздин графиктеги функциялардын санына барабар чыгуучу функциялардын саны бар.
Биздин класстардын санына барабар чыгуу түйүндөрүн камтыган экинчи катмарда биз relu активдештирүү функциясын колдонобуз жана жашыруун функцияларды беребиз.
Edge индекси жана четинин салмагы - GCNConv алдыга функцияда кабыл ала турган көптөгөн варианттардын экөөсү, бирок биздин шартта бизге биринчи эки өзгөрмө гана керек.
Биздин моделибиз графиктеги ар бир түйүндүн классын алдын ала айта ала турганына карабастан, биз дагы эле фазага жараша ар бир топтомдун тактыгын жана жоготууларын аныктообуз керек.
Мисалы, машыгуу учурунда биз машыгуунун тактыгын жана жоготууларын аныктоо үчүн гана колдонгубуз келет, ошондуктан биздин маскаларыбыз бул жерде жардамга келет.
Тиешелүү жоготууларды жана тактыкты эсептөө үчүн биз маскаланган жоготуу жана маскаланган тактык функцияларын аныктайбыз.
Моделди үйрөтүү
Эми биз факел кандай максатта колдонула турганын аныктадык. Адам мыкты оптимизатор болуп саналат.
Биз валидациянын тактыгына көз салып, белгилүү бир сандагы доорлор үчүн тренинг өткөрөбүз.
Биз ошондой эле ар кандай доорлор боюнча машыгуунун жоготууларынын жана тактыгынын схемасын түзөбүз.
Графиктик нейрон тармагынын кемчиликтери
GNN колдонуунун бир нече кемчиликтери бар. GNNaны качан колдонуу керек жана машина үйрөнүү моделдерибиздин натыйжалуулугун кантип жогорулатуу керектиги, биз аларды жакшыраак түшүнгөнүбүздөн кийин айкын болот.
- GNNs адатта үч катмардан турган тайыз тармактар болуп саналат, ал эми көпчүлүк нейрон тармактары ишти жакшыртуу үчүн тереңдей алат. Бул чектөөдөн улам биз чоң маалымат топтомдорунда эң алдыңкы деңгээлде иштей албайбыз.
- Графиктер боюнча моделди даярдоо кыйыныраак, анткени алардын структуралык динамикасы динамикалуу.
- Бул тармактардын жогорку эсептөө чыгымдарынан улам, өндүрүш үчүн моделди масштабдоо кыйынчылыктарды жаратат. Эгерде сиздин графиктин структурасы чоң жана татаал болсо, өндүрүш үчүн GNNди масштабдоо кыйынга турат.
жыйынтыктоо
Акыркы бир нече жыл ичинде GNNs графикалык доменде машинаны үйрөнүү маселелери үчүн күчтүү жана натыйжалуу куралдарга айланды. Графиктик нейрон тармактарынын негизги серепи бул макалада берилген.
Андан кийин, сиз моделди окутуу жана сыноо үчүн колдонула турган маалымат топтомун түзө баштасаңыз болот. Анын кандайча иштешин жана эмнеге жөндөмдүү экенин түшүнүү үчүн, сиз дагы бир топ алыс барып, аны башка типтеги маалымат топтомун колдонуп үйрөтсөңүз болот.
Коддошууңуз менен!
Таштап Жооп