Salut tout le monde! Je travaille sur une tâche de prévision impliquant des données 3D avec une forme (t, h, w), où chaque trame correspond à un instantané quotidien. J’essaie de modéliser les dépendances spatiales et temporelles, mais je rencontre certains problèmes et j’aimerais des conseils pour améliorer les performances du modèle.
Installation
- J’aplatit chacun (h, w) cadre en (n), où n est le nombre d’emplacements spatiaux valides.
- L’ensemble de données complet devient une série chronologique (t, n).
- J’ai divisé les données chronologiquement en ensembles Train, Val et Test. Donc, pas de mélange lors de la division de mes données
Construction de graphiques
- Pour chaque séquence (par exemple, 7 jours), je construis une séquence de graphiques semi-dynamique (je ne sais pas comment l’appeler).
- Caractéristiques du nœud: (valeur, h, w), où le "valeur" change quotidiennement.
- Adges: statique à travers la séquence basée sur:
- Seuil de distance euclidienne
- Corrélation de Pearson calculée sur la séquence
- Caractéristiques de bord: direction (angle au nord) et distance
- Perte: Mae (illustré ci-dessous)
https://preview.redd.it/qf160okfu2se1.png?width=1979&format=png&auto=webp&s=1a447b88192feae1ca19b6be1befc666aea1a71eee
Modèle
- Encodeur spatial: 4 couches GNN (mise à jour Edge → Aggrégation de bord → Mise à jour du nœud)
- Des connexions de saut, de l’auto-attention récemment ajoutées et des unités cachées accrues
- Encodeur temporel: LSTM à 2 couches
- Tête de prédiction: couche à action
Comportement actuel
- Initialement, les couches GNN apprenaient à peine. Les couches LSTM et FF ont dominé.
- Après avoir ajouté des connexions de saut et de l’attention de l’auto, le comportement GNN s’est quelque peu amélioré, mais la perte globale est toujours élevée
- La formation est lente, il est donc difficile d’itérer rapidement
- Je prototypage actuellement en utilisant seulement 3 lots pour la formation / validation pour suivre le comportement plus facilement. J’ai environ 500 lots au total.
MATTENDES DE MISE À JOUR
Suivi de la norme L2 des changements de poids entre les couches:
https://preview.redd.it/x8smklgku2se1.png?width=1920&format=png&auto=webp&s=07153d7b052c89f0f256e2e13f06f2431df4ee24
J’essaie actuellement de comprendre comment sortir de ce plateau d’apprentissage. Le modèle commence à converger rapidement mais s’aplatit ensuite (autour de Mae ≈ 5), même avec un taux d’apprentissage et une désintégration programmés en place.
Serait-ce un cas de sur-complication de l’architecture? Le passage de MAE à une fonction de perte différente aiderait-il la stabilité de l’optimisation ou le flux de gradient?
De plus, si quelqu’un a des conseils sur de meilleures façons d’intégrer l’apprentissage spatial dès le début (par exemple, via la pré-formation ou la régularisation) ou des conseils généraux pour accélérer la convergence dans les pipelines GNN + LSTM, j’aimerais l’entendre!