L’inLab FIB està col·laborant actualment en un projecte anomenat Intelibus, conjuntament amb l’empresa de mobilitat Autocorb i la companyia TIC de desenvolupament software Geoactio, per a desenvolupar un sistema de predicció de l’ocupació de passatgers als busos.
Què és entrenar un model?
Quan parlem d’entrenar una xarxa neuronal, el que volem en realitat és ajustar els paràmetres d’una funció (xarxa neuronal) perquè aprengui una tasca concreta; que aprengui a mapejar uns inputs a uns outputs. Això s’aconsegueix utilitzant grans quantitats dades per a anar minimitzant l’error de predicció del model respecte a aquestes. Si us sona la “regla de la cadena” que us van ensenyar per a derivar i pensàveu que mai més sentiríeu a parlar d’ella, doncs bé, el procés d’entrenament d’una xarxa neuronal es basa principalment en l’enginyosa aplicació d’aquesta regla, la qual ens permet calcular com s’han d’anar modificant els paràmetres de la xarxa per a minimitzar l’error de predicció iterativament.
En el nostre cas, volem que el model aprengui a calcular l’ocupació dels busos a cada una de les parades per on passen. De manera que al model li hem de donar com a input una representació numèrica (vectors) de la informació del bus, la parada, el calendari, etc. i volem que ens retorni el nombre de passatgers que hi haurà, tal com es mostra a la següent imatge. Amb històrics d’uns mesos anteriors ja podem arribar a obtenir una precisió prou bona de predicció.
La gràcia d’utilitzar xarxes neuronals és que ens permeten, amb un únic model, poder predir sobre qualsevol de les línies de bus a cada una de les parades, sense haver de fer un model o algorisme especialitzat per a cada una de les línies. Això simplifica la complexitat d’implementació a l’hora de portar-ho a producció i permet també aplicar-ho en altres ciutats fàcilment, on les línies i les parades seran completament diferents.
Series temporals: Xarxes neuronals recurrents
Tot i això, ho podem arribar a fer millor. El model que acabem de presentar no té en compte l’ocupació prèvia de les parades anteriors, la qual és una informació molt rellevant, i saber-la pot condicionar molt l’ocupació de la pròxima parada. Per a aquests tipus de problemes on es tracten seqüències hi ha un tipus de xarxes neuronals anomenades xarxes recurrents (Recurrent Neural Networks), que ens permeten treballar amb sèries temporals tenint en compte els valors anteriors d’ocupació per a predir-ne la de la següent parada. Per a fer-se una idea de com són, la següent imatge mostra un esquema simplificat de com és el flux d’informació dels inputs fins als outputs. El que fan, en resum, és anar codificant la informació de les parades prèvies de forma compacta per a, finalment, obtenir un vector (ht) que conté tota la informació comprimida de la seqüència a partir del qual podem predir el valor d’ocupació següent. Així doncs, amb aquesta arquitectura de xarxa neuronal obtenim millors resultats, ja que el model pot arribar a captar els canvis i patrons en l’ocupació de passatgers al llarg del temps.
En conclusió, veiem que aquests models basats en xarxes neuronals són molt versàtils, i permeten resoldre una gran diversitat de problemes de manera molt eficaç i acurada si disposem de les dades necessàries.
Referències
Predicció d’ocupacions a l’autobús (https://www.autocorb.com/prediccio-ocupacions-bus/)
Neural Networks and Deep Learning (http://neuralnetworksanddeeplearning.com/)
Understanding Neural Networks (https://towardsdatascience.com/understanding-neural-networks-19020b758230)
Hochreiter, Sepp & Schmidhuber, Jürgen. (1997). Long Short-term Memory. Neural computation. 9. 1735-80. 10.1162/neco.1997.9.8.1735.