Faites de l'identité de l'agent l'une des fonctionnalités et entraînez-vous sur toutes les données. Entraînez-vous probablement sur un mini-lot de 128 agents par exemple à la fois: parcourez la série chronologique du début à la fin pour ces 128 agents, puis sélectionnez un nouveau mini-lot d'agents. Pour chaque mini-lot, exécutez une tranche de disons 50 pas de temps, puis backprop. Gardez les états finaux de cette tranche et exécutez les 50 pas de temps suivants, à partir de ces états finaux. Rincez et répétez jusqu'à la fin des pas de temps, pour ce mini-lot de ~ 128 agents.
En plaçant l'identité de chaque agent comme l'une des fonctionnalités, vous permettez au réseau de:
- apprendre de toutes vos données, maximisant ainsi l'utilisation de vos données, et
- apprendre les caractéristiques uniques de chaque agent, de sorte qu'il ne se contente pas de faire la moyenne de tous les agents ensemble
- lorsque vous prédisez l'avenir d'un agent spécifique, assurez-vous d'utiliser les fonctionnalités d'ID d'agent correspondantes et le réseau ajustera les prévisions en conséquence.
Edit: Alpo Jose a écrit:
ok, dois-je utiliser un encodage à chaud pour faire l'identité de l'agent?
Oooh, c'est vrai. Il y en a 20 000. C'est beaucoup. Je pense que ce que vous voudrez peut-être faire est de les «intégrer». Avoir une couche de recherche, qui prend un identifiant d'agent (exprimé sous la forme d'un entier, d'un index) et génère un vecteur de grande dimension, comme quelque chose comme un vecteur de longueur 50-300, probablement un vecteur dont la longueur correspond approximativement à la taille cachée de votre LSTM.
Mathématiquement, une table de recherche, également appelée «couche d'intégration», équivaut à transformer les ID d'agent en vecteurs uniques, puis à passer par une couche linéaire (entièrement connectée). Cependant, les exigences en mémoire sont très réduites pour la couche d'intégration.
En termes de ce que la couche d'intégration apprendra, au fur et à mesure que vous l'entraînerez, la couche d'intégration formera une sorte de représentation latente de chaque agent. La représentation latente ne sera probablement pas lisible / interprétable en aucune façon, mais permettra au modèle d'apprendre des choses comme «ok cet agent, 1524, est relativement efficace, mais pas le week-end; où comme 1526 est grand chaque jour; etc ....'. Les dimensions latentes du vecteur d'intégration pourraient en fait signifier des choses, mais personne n'essaie jamais de comprendre ce qu'elles signifient (je pense que ce serait difficile / impossible). Cependant, les incorporations par agent de grande dimension permettent au modèle d'apprendre quelque chose sur le comportement de chaque agent et de le modéliser dans les prédictions de séries chronologiques.