Nga Julie Wang, Amelia Woodward, Tracy Cai si pjesë e projektit të kursit Stanford CS224W.

Trafiku është kudo, në rrugë, autostrada, rrjete hekurudhore dhe në zonat e këmbësorëve. Detyra e parashikimit të mbingarkesës së trafikut në të ardhmen bazuar në të dhënat historike dhe të drejtpërdrejta është shumë e rëndësishme për të gjithë - nga kompanitë që përpiqen të dorëzojnë mallrat në kohë deri tek individët që thjesht përpiqen të shkojnë në lojën e ardhshme të Dodger. Metodat tradicionale dhe të mësimit të makinerive që janë aplikuar historikisht për këtë problem shpesh nuk arrijnë të kapin marrëdhëniet hapësinore të qenësishme në të dhënat e trafikut.

Interpretimi i trafikut në një format grafik lejon modelimin që kap lidhjet hapësinore midis pikave të trafikut. Si rezultat, rrjetet neurale grafike (GNN) po zhvillohen dhe eksperimentohen me qëllim të parashikimit të trafikut. Ky postim eksploron përdorimin e GNN-ve për parashikimin e trafikut, dhe në veçanti eksploron modelin ST-GAT të zhvilluar nga Zhang et al në “Rrjetet e vëmendjes me grafikun hapësinor-kohor: Një qasje e të mësuarit të thellë për parashikimin e trafikut”. Ne paraqesim zbatimin tonë me burim të hapur të modelit ST-GAT (nuk ka një bazë kodi të disponueshme publikisht nga autorët e punimit), si dhe një shpjegim të modelit, mjeteve të parapërpunimit të të dhënave dhe rezultateve.

Ju mund ta gjeni zbatimin tonë të modelit ST-GAT në repon e mëposhtme: https://github.com/jswang/stgat_traffic_prediction

Për më tepër, ne ofrojmë një bashkëpunim për lehtësinë e eksplorimit të materialit:



Grupi i të dhënave

Ne përdorim grupin e të dhënave PeMSD7 të siguruar nga Sistemi i Matjes së Performancës Caltrans, i cili ka më shumë se 39,000 stacione sensori që mbledhin të dhëna në kohë reale në të gjithë Kaliforninë [3]. Të dhënat e PeMSD7 përbëhet nga të dhënat e shpejtësisë në kohë reale të mbledhura nga 228 stacione sensori në Distriktin 7 të Kalifornisë nga 1 maji deri më 30 qershor 2012 (harta më poshtë tregon vendndodhjen e sensorit në distriktin e shtatë, që mbulon kryesisht zonën e Los Anxhelosit). Këto të dhëna të shpejtësisë grumbullohen më pas çdo 5 minuta.

Përpunimi paraprak: Të dhënat e trafikut në grafikët e trafikut

Ne e transformojmë grupin e të dhënave të papërpunuara në një grup të dhënash grafikësh për qëllime përfaqësimi dhe trajnimi. Në mënyrë të veçantë, për çdo pikë kohore të grumbulluar t, ne ndërtojmë një grafik

ku Vështë një grup nyjesh matëse trafiku. Çdo veçori e nyjes v_tështë shpejtësia mesatare e trafikut e matur në nyjen në kohën t. Në grupin tonë të të dhënave ka 228 nyje secila që përfaqëson një vendndodhje sensori në sistemin e matjes së trafikut LA. Eështë grupi i skajeve që lidhin nyjet në Vdhe Wështë matrica e afërsisë. Ne lidhim secilën nyje bazuar në distancën midis sensorëve të matjes së trafikut. Një 1 përdoret nëse nyjet janë më shumë se një distancë e caktuar kufiri larg, një 0 përdoret ndryshe. Një vetë lak shtohet gjithashtu për çdo nyje.

Së fundi, për çdo pikë kohore, ne ndërtojmë një objekt të dhënash që përmban të gjitha nyjet dhe matjet e tyre të trafikut në atë kohë.

MODELI ST-GAT

Ne e konsiderojmë modelin ST-GAT për parashikimin e shpejtësisë mesatare të trafikut në një rrjet trafiku siç është paraqitur nga Zhang et al.

Përkufizimi i detyrës

Në mënyrë të veçantë, në çdo nyje dhe duke pasur parasysh shpejtësitë mesatare të trafikut në F intervale të njëpasnjëshme të dallueshme, ne dëshirojmë të parashikojmë shpejtësinë mesatare të trafikut në intervalet totale të ardhshme H.

Këtu F i referohet numrit të hapave të kohës së kaluar që po shqyrtohen në mënyrë sekuenciale dhe H i referohet numrit të vulave kohore të ardhshme. Pastaj ne mund të përgjithësojmë detyrën e parashikimit në të gjitha stacionet e sensorëve në grupin e të dhënave (d.m.th. të gjitha nyjet në grafik), për të zgjidhur parashikimin:

Ky problem trajtohet nga modeli ST-GAT siç përshkruajmë më poshtë, i cili përbëhet nga faza të shumta:

1. Përpunimi paraprak i të dhënave: bashkimi i të dhënave hapësinore dhe kohore duke përdorur speed2vec

2. Një ST-GAT i përbërë nga një rrjet i vëmendjes së grafikut (GAT) dhe një rrjet nervor periodik (RNN) i ndjekur nga një shtresë lineare plotësisht e lidhur

Përpunimi paraprak i të dhënave: bashkimi i të dhënave hapësinore dhe kohore duke përdorur speed2vec

Për të trajnuar Rrjetin tonë Neural Grafik (GNN), ne duhet të kapim informacione hapësinore dhe kohore. Në veçanti, për të shtuar varësinë kohore në vektorin e veçorive, në vend që thjesht të marrim shpejtësinë mesatare në kohën t si veçori, ne do të ndërtojmë një veçori h_t që është një vektor e Fmatjeve të mëparshme. Duke ndjekur Zhang et al [1], ne zgjedhim të veçojmë me shpejtësitë nga 12 pikat e mëparshme kohore, kështu që F = 12. Marrim veçoritë:

Në punim, Zhang et al i referohen këtij procesi të krijimit të një dritareje rrëshqitëse të veçorive si speed2vec.

SHEMBULL I LODRAVE: SPEED2VEC

Këtu është një shembull i shpejtë për të ilustruar se si funksionon futja.

Supozoni se kemi të dhëna nga katër sensorë nga ora 8:45 deri në 9:10 të mëngjesit. Për çdo sensor v, kemi një rekord shpejtësie në çdo vulë kohore, të dhënë ngav_tnë kohënt.

Shqyrtoni shembullin e lodrës ku zgjedhim F = 3 (gjatësia e veçorisë 3) dhe, siç përshkruhet, kemi N = 4 (numri i përgjithshëm i sensorëve është 4). Supozoni se marrim lexime të sensorëve nga të dhënat në intervale 5 minutash midis orës 8:45 dhe 9:10 të mëngjesit. Pastaj grafiku më poshtë tregon vektorin e veçorive që mund të ndërtojmë në lidhje me pikat kohore 8:55, 9, 9:05 dhe 9:10, duke pasur parasysh informacionin nga tre pikat e mëparshme kohore. Ne shohim se po ndërtojmë një dritare rrëshqitëse të veçorive kohore e cila kap shpejtësinë mesatare të trafikut në hapat e mëparshëm kohorë.

Vini re se meqenëse shpejtësitë e mëparshme na duhen nga 3 pika kohore, atëherë nuk mund të veçojmë plotësisht dy pikat e para kohore, 8:45 dhe 8:50, pa informacion për intervalet kohore edhe më të hershme.

Pastaj, duke marrë në konsideratë të gjitha nyjet në V në kohën t, ne mund të ndërtojmë një matricë tipare tredimensionale në të gjitha nyjet N DHE në të gjitha T pikat kohore në grupin e të dhënave, e cila ka dimensionet [T, F, N] të dhëna nga

Këtu dimensioni i gjatësisë Fnuk tregohet në mënyrë eksplicite në paraqitjen e matricës së mësipërme.

SHEMBULL KODI: SPEED2VEC

Këtu është një mostër e të dhënave kompjuterikespeed2vec-të veçuara në zbatimin tonë.

Në konfigurim kemi llogaritur numrin e sloteve config[‘N_SLOT’] që mund të krijohen në vlerën e çdo dite të të dhënave (d.m.th. numri i veçorive me gjatësiF=12 që mund të prodhohen duke përdorur një dritare rrëshqitëse.

Ne hapim një dritare rrëshqitëse përgjatë të dhënave të shpejtësisë. Për çdo sekuencë të mundshme të njëpasnjëshme të gjatësisëF, ne ndërtojmë një vektor tiparspeed2vecme shpejtësi trafiku nga dritaret e njëpasnjëshme kohore. Ky vektor tipar kapet në g.x dhe shpejtësitë në hapat kohorë të ardhshëmH, kapen në g.yformë të së vërtetës tokësore për parashikimet e ardhshme të shpejtësisë së trafikut.

Ne ofrojmë gjithashtu një tutorial të vogël më poshtë për përdorimin e Pytorch Geometric për të ndërtuar një InMemoryDataset të veçorive të grafikut.

SHEMBULL KODI: NDËRTIMI I NJË TË DHËNAVE NË MEMORI PYG PËR TRAJNIM

Ne shkruam klasën e mëposhtme, TrafficDataset, e cila është ndërtuar në PyGInMemoryDatasetnë mënyrë që të mund të ushqejmë lehtësisht të dhënat e veçuaraspeed2vecnë model. >

raw_file_names është një funksion që kthen shtegun drejt CSV-së së papërpunuar që përmban shpejtësi mesatare të trafikut.

processed_file_namesështë një funksion që kthen shtegun drejt të dhënave të përpunuara për qëllime të ringarkimit.

download shkarkon skedarët e kërkuar për grupin e të dhënave të papërpunuara.

process në fakt ndërton TrafficDataset duke lexuar në të dhënat e papërpunuara CSV, duke normalizuar të dhënat nëpërmjet metodës z_score dhe për çdo pikë kohore duke ndërtuar një objekt Data me një veçori bazuar në përpuniminspeed2vecqë ne më parë përshkruar. Për më tepër, një parashikim bazë i së vërtetës nxirret dhe ruhet si pjesë e grupit të të dhënave.

Modeli: Përvijimi dhe trajnimi

Duke përdorur grupin tonë të të dhënave të trajnimit të përpunuar speed2vec, ne jemi në gjendje të trajnojmë një model ST-GAT i cili parashikon rrjedhën mesatare të trafikut në çdo nyje në pikat e ardhshme kohore.

Dy komponentët kryesorë të modelit ST-GAT janë një rrjet i vëmendjes së grafikut (GAT) dhe një rrjet nervor i përsëritur (RNN). Arkitektura e përgjithshme e propozuar nga Zhang et al është përfshirë në figurën më poshtë.

Rrjeti i vëmendjes në grafik

Faza e parë e modelit është një rrjet i vëmendjes grafiki cili mëson veçoritë e fshehura me informacionin e vëmendjes për të krijuar ngulitje të reja të nyjeve. Ndryshe nga GCN e cila përdor shumën e veçorive të nyjeve fqinje për konvolucionin, GAT përdor një mekanizëm vëmendjeje.

Në një model tradicional GCN, një algoritëm i kalimit të mesazhit përdoret për të përhapur veçoritë e nyjeve në nyjet e tjera të lidhura në grafik.
Këto mesazhe grumbullohen dhe transformohen dhe formojnë një paraqitje të re të grafikut.

Në ST-GAT, rrjeti standard Graph Convolutional është shtuar me vëmendje.

Një mekanizëm i vëmendjes është krijuar për të tërhequr vëmendjen e modelit në pjesët më të rëndësishme të informacionit në vektorët e mesazheve hyrëse. Duke folur matematikisht, kjo formulohet si: duke pasur parasysh një grup karakteristikash të nyjeve

ku N është numri i nyjeve dhe Fnumri i veçorive, ne i transformojmë tiparet hyrëse në veçori të nivelit më të lartë nëpërmjet një matrice të peshës së përbashkët të një hapësire tjetër të veçorive në mënyrë që

dhe a(.)është një funksion i mekanizmit të vëmendjes që harton lidhjen midis hyrjes së lartë të paraqitur në dimensione të një rezultati. Ky rezultat dikton se sa duhet të fokusohet modeli në marrëdhënien midis këtyre dy pikave të të dhënave.

Me marrjen e koeficientëve të vëmendjes, Zhang et al dhe aplikojnë si një funksion softmax (për të normalizuar koeficientët e vëmendjes), ashtu edhe një funksion aktivizimi të njësisë lineare të korrigjuar me rrjedhje (Leaky ReLU). Pra, koeficienti përfundimtar i normalizuar i vëmendjes i marrë është

Duke i bashkuar të gjitha këto, shohim se ST-GAT përditëson paraqitjen e brendshme të një nyje duke përdorur sa vijon:

Kalimi i mesazhit dhe vëmendja e GAT-it janë ilustruar në diagramin e mëposhtëm që vjen drejtpërdrejt nga letra e Zhang et al.

Tani, për të rritur ekspresivitetin e vëmendjes, Zhang et al përdorin në fakt një mekanizëmvëmendjeje me shumë koka. Ajo që do të thotë kjo është se ata aplikojnë mekanizma K të pavarur të vëmendjes. Në rastin e letrës dhe zbatimit tonë, K = 8. Në mënyrë intuitive, vëmendja me shumë koka i lejon modelit të mësojë se shumë tipare të ndryshme të modelit mund të jenë vërtet të rëndësishme, në vend që t'i jepet modelit vetëm një shans për të mësuar "çfarë është e rëndësishme".

Matematikisht, ne kryejmë K grupe të ndryshme të mekanizmit të konvolucionit GAT, një për secilën prej kokave K. Më pas, për t'i marrë parasysh të gjitha këto, mund të bashkohen të gjitha tiparet e daljes së bashku, ose të merret mesatarja. Këto opsione janë ilustruar më poshtë. Në këtë zbatim, ne marrim mesataren mbi të gjitha kokat e vëmendjes.

IMPLEMENTIMI PRAKTIK GATI

Në zbatimin tonë, ne përdorim modelin GATConv të Pytorch Geometric për të kryer kalimin e mesazhit të bazuar në vëmendje të përshkruar më sipër.

in_channels jepet nga N x T (d.m.th. numri i nyjeve në grafik * numri i grafikëve të trafikut në grup;

out_channels është specifikuar në punimin e Zhang et al të jetë 32. Ne gjithashtu përdorim braktisjen dhe zgjedhim të përdorim mesataren për të kombinuar rezultatet e vëmendjes me shumë kokë.

Rrjeti nervor i përsëritur për mësimin e veçorive të përkohshme

Pasi kemi mësuar informacion hapësinor rreth të dhënave duke përdorur modelin GAT, ne tani e ushqejmë daljen e GAT në një RNN. RNN mëson aspektet kohore të të dhënave për parashikimet e ardhshme.

Rrjetet nervore të përsëritura (RNN) janë një lloj rrjeti nervor që përdorin daljet nga shtresa e mëparshme si hyrje në shtresën tjetër dhe gjithashtu kanë gjendje të fshehura. Ato përdoren shpesh për parashikime të serive kohore. Zhang et al përdorin njësi të kujtesës afatshkurtër të gjatë (LSTMs), të cilat janë një variant praktik dhe shumë i përdorur i RNN-ve. LSTM-të përdorin një koleksion të njësive të hyrjes dhe gjendjeve të qelizave për të kontrolluar rrjedhën e informacionit dhe për të zgjidhur çdo problem që haset me problemin e gradientit në zhdukje.

Një LSTM përmban tre lloje të njësive të hyrjes, të cilat për disa pika të dhënash në kohën tkanë: portën hyrëse i_t, portën harrese f_t, dhe një dalje porta, o_t. Së bashku, këto tre porta vendosin nëse do të shtojnë ose heqin informacion në një gjendje qelize.

Duke pasur parasysh pikën e të dhënave x_t(që në këtë pikë është vektor i veçorisë së transformuar në shumë kohë të h_t për disa nyje vnë kohën t em>),dalja e qelizës c_t dhe dalja e shtresës së fshehur h_t, me matricat përkatëse të peshës të formës W_xx dhe vektorët e paragjykimit të formës b_xx, mund të llogarisim sa vijon:

Modeli ST-GAT përdor dy shtresa LSTM dhe një shtresë lineare plotësisht të lidhur për të trajnuar mbi sekuencat e përkohshme. Diagrami i mëposhtëm tregon se si modeli ST-GAT lidh bllokun RNN dhe bllokun hapësinor për një vektor të veçorive hyrëse të vetme

Vini re se blloqet e hyrjes blu korrespondojnë me vlerën e një grafiku të tërë të matjeve të shpejtësisë në një moment të vetëm në kohë.

Pas zbatimit të Zhang et al, ne përdorim shtresën LSTM të PyTorch për të krijuar dy shtresa LSTM. E para ka një madhësi të fshehur prej 32 dhe e dyta ka një madhësi të shtresës së fshehur prej 128.

Së fundi, ne aplikojmë një shtresë lineare plotësisht të lidhur në daljen RNN për të nxjerrë parashikime për pikat e ardhshme Hkohore, ku për ne, H=9.

Për qartësi të mëtejshme, ne ofrojmë një diagram të të dhënave të trajnimit ndërsa kalojnë nga dalja GAT, përmes pjesës RNN të ST-GAT dhe përmes një shtrese lineare.

Dimensionet në figurën më poshtë janë F=12, N=228 dhe batch_size=50.

Për t'i vendosur dimensionet në kontekst, ne po parashikojmë shpejtësinë e trafikut për 9*5 = 45 minutat e ardhshme bazuar në 12*5 = 60 minutat e mëparshme. Ne e bëjmë këtë për të 50 grafikët e trafikut në grup. Tensori i parashikimit është i dimensioneve [9, 50, 228], pasi ne parashikojmë pikat kohore të ardhshme H=9 nga pikat kohore të mëparshme F=12 për secilën nyje ( stacioni sensor) në të 50 grafikët e trafikut në grup. Më në fund mund të riformësojmë për qëllime të parashikimit në një tensor dydimensional me dimensione të dhëna nga [madhësia_batch * num_nodes, num pikat kohore të parashikimit] = [50 x 288, 9] = [11400, 9].

SHEMBULL I LODRAVE

Në shembullin tonë të lodrës nga më parë, nëse do të kishim F=3, do të përpiqeshim të prodhonim parashikimet e mëposhtme. (Diagrami supozon se ne gjithashtu kemi akses në shpejtësitë mesatare të trafikut në 8:45 të mëngjesit, 8:50 të mëngjesit gjithashtu).

Zbatimi i modelit

Arkitektura jonë e modelit është kapur nga klasa ST_GAT në Python si më poshtë:

Duke ecur nëpër kodin: në inicializiminST-GAT ne thërrasim klasën GATConv në Pytorch Geometric për bllokun GAT dhe përdorim Pytorch LSTM për ndërtimin e fazës RNN të modelit. Pas letrës, ne inicializojmë peshat duke përdorur fillimin e Xavier. Në funksionin përpara ne kryejmë një kalim përpara përmes modelit, duke riformuar hyrjen sipas nevojës për t'iu përshtatur shtresave të mëposhtme. Ju mund të shihni një analizë të plotë të dimensionalitetit në komentet tona në linjë (shih pamjen e ekranit ose GitHub të lidhur drejtpërdrejt).

Trajnimi i modelit

Për të trajnuar modelin, ne stërvitemi duke përdorur humbjen e gabimit mesatar në katror (MSE), e cila njihet edhe si L2 Loss. Në mënyrë specifike, ne marrim parashikimin përfundimtar nga vektori i tipareve të parashikuar që korrespondon me parashikimin mesatar të shpejtësisë së trafikut në kohën t + Hdhe llogarisim humbjen midis parashikimeve dhe shpejtësive mesatare të së vërtetës tokësore në kohën përkatëse pikë.

Për më tepër, ne stërvitemi në një ndarje treni / val / testi prej 34 / 5 / 5 ku 34 është informacioni i parashikimit të trafikut për 34 ditë dhe informacioni i trafikut me vlerë 5 është 5 ditë.

Vlerësimi dhe rezultatet

Për të vlerësuar performancën e modelit ST_GAT, Zhang et al përdorin tre metrika të ndryshme të saktësisë: gabimi mesatar absolut (MAE), gabimi mesatar i përqindjes absolute (MAPE) dhe gabimi mesatar në katror (RMSE). Formulat e tyre janë dhënë më poshtë:

Në zbatimin e kodit tonë, kjo korrespondon me kryerjen e sa vijon:

Në punimin e Zhang et al, ata arrijnë performancën e mëposhtme kur parashikojnë intervalet e ardhshme kohore 3,6,9 (që korrespondojnë me periudha kohore 15, 30 dhe 45 minuta respektivisht).

Këtu janë rezultatet që trajnojnë modelin tonë për të parashikuar 45 minutat e ardhshme të trafikut bazuar në orët e mëparshme të matjeve.

Në zbatimin tonë, ne ishim në gjendje të arrinim vlerat e mëposhtme në grupin e trenit, vlefshmërisë dhe testimit, duke iu afruar rezultateve të optimizuara me hiperparametra të dhëna në punim për intervalin kohor prej 45 minutash.

Vizualizimi i parashikimeve

Ne vizualizojmë parashikimet tona që rezultojnë pas 1 epoke (nën përshtatje), 60 epokash (parashikimet më të mira) dhe 200 epokash (mbi përshtatje).

Për më tepër, ne e bëjmë zbatimin tonë të modelit ST-GAT të disponueshëm me burim të hapur në Github. Shpresojmë se ky do të jetë një burim i vlefshëm për të provuar modelin GAT në shtëpi, si për parashikimin e trafikut ashtu edhe për detyra të tjera grafike që kanë veçori hapësinore dhe kohore.

Me kohë dhe burime shtesë, do të ishim kureshtarë të eksploronim disa drejtime interesante të kërkimit të mëtejshëm. Në anën e të dhënave dhe të veçorive, do të ishte interesante të eksplorohej se sa mirë performon modeli, duke pasur parasysh informacione shtesë në lidhje me drejtimet e rrugëve, kontrollin e trafikut dhe motin në parashikimin për të përmirësuar më tej performancën. Ne gjithashtu do të donim të mendonim për strategji edhe më të mira të optimizimit të hiperparametrave në mënyrë që të zvogëlojmë mbipërshtatjen në grupin e të dhënave të trajnimit. Së fundi, ne do të dëshironim gjithashtu të eksploronim ndikimin e ndryshimeve arkitekturore si rritja e numrit të shtresave LSTM ose duke provuar mekanizma të ndryshëm gjenerues të vëmendjes që shfaqen në literaturë.

Gjeni zbatimin tonë në: https://github.com/jswang/stgat_traffic_prediction

Gjeni bashkëpunëtorin tonë i cili kalon nëpër kodin këtu:

https://colab.research.google.com/drive/1NUIQDgj9NXDqtPN_9k_YxKhJN43p3Gho?usp=sharing

Referencat

[1] C. Zhang, J. J. Q. Yu dhe Y. Liu, “Spatial-Temporal Graph Attention Networks: A Deep Learning Approach for Traffic Forecasting”, në IEEE Access, vëll. 7, fq. 166246–166256, 2019, doi: 10.1109/AKSES.2019.2953888.

[2] Yu, Bing dhe Yin, Haoteng dhe Zhu, Zhanxing, "Rrjetet konvolucionale të grafikut hapësinor-kohor: një kornizë e mësimit të thellë për parashikimin e trafikut", në Punimet e Konferencës së Përbashkët Ndërkombëtare të Njëzet e Shtatë mbi Inteligjencën Artificiale, 2018, doi. /ijcai.2018/505

[3] Burimi i të dhënave të Sistemit të Matjes së Performancës (PeMS). Marrë më 17 tetor 2021, nga https://dot.ca.gov/programs/traffic-operations/mpr/pems-source.