Considérations d’ordre technique
Déploiement
Pour améliorer la performance de la variable explicative, on pourrait élargir l’espace dans lequel l’ordinateur cherche les hyper-paramètres. Pour cela, il suffit d’enrichir le dictionnaire qui se trouve dans src/models/train_model.py avec d’autres valeurs, comme nous l’illustrons ci-dessous pour le modèle A.
105 all_params = {'num_hidden': [75, 35],
106 'learn_rate': [0.001],
107 'lambda': [0, 0.01],
108 'dropout': [0, 0.2],
109 'num_epochs': [10000],
110 'activation': ['relu']}
Évidemment, élargir le champ de recherche se fait au détriment du temps, puisque le nombre de modèles à former et à évaluer augmente de façon exponentielle.
Les scripts Python de la Solution type ne fonctionnent que sur les systèmes Linux.
Solutions de rechange
Une des principales décisions techniques retenues pour la Solution type était d’utiliser un RNA pour l’apprentissage automatique. Pour cela, nous avons créé un perceptron multicouche (MLP) par rétropropagation. L’idée était de chercher la simplicité, car le perceptron est la forme la plus rudimentaire du RNA. Le réseau de neurones récurrents (RNR) demeure cependant une bonne solution de rechange, car son comportement dynamique dans le temps se prête bien aux séries chronologiques. Les réseaux long short-term memory (LSTM) sont de très puissants RNR et on devrait en envisager l’utilisation pour obtenir une meilleure performance avec les problèmes d’une plus grande complexité.
L’usage d’un réseau de neurones artificiels n’est pas obligatoire. Effectuer des prévisions avec des données chronologiques suppose presque toujours un problème de régression dans lequel la prévision a une valeur réelle. D’autres modèles comme ceux recourant à la régression linéaire ou à la régression polynomiale peuvent s’avérer d’une grande efficacité. Vous pourriez donc les envisager si le jeu de données est relativement modeste ou repose lourdement sur la capacité d’interpréter le modèle, car les RNA sont moins efficaces sur ce plan.
Côté logiciels, le développement du modèle repose sur les bibliothèques Python Keras et TensorFlow. La décision a été prise en raison de la popularité de Python et de ces deux bibliothèques, mais aussi parce que la combinaison Python + Keras est idéale pour les débutants. Il existe cependant d’autres bibliothèques d’apprentissage automatique en Python (Theano, PyTorch, scikit-learn). En C++, on trouvera CNTK et Caffe, de Microsoft, ou Torch en langage C. Elles sont toutes généralement plus rapides que les applications Python.
Architecture des données
Ne s’applique pas à ce Propulseur
Sécurité
Ne s’applique pas à ce Propulseur
Réseau
Ne s’applique pas à ce Propulseur
Mise à l’échelle
Une des forces de l’apprentissage profond réside dans les nettes améliorations observées au niveau de la performance dès que le volume de données utilisé pour former le modèle augmente. Outre le réglage des hyper-paramètres, la solution de référence s’adaptera au jeu de données. Bien sûr, la meilleure performance a un coût. Dans le cas présent, le prix à payer ne se résume pas à la collecte d’un plus grand nombre de données, il faudra aussi plus de puissance de calcul et plus de temps.
Pour gérer les contraintes computationnelles, on pourrait songer à utiliser plusieurs GPU. La solution de référence n’en utilise qu’un, mais Keras et TensorFlow peuvent en maîtriser plusieurs. À mesure que le jeu de données grandit, ou que le nombre de nœuds du réseau neuronal se multiplie, augmenter le nombre de GPU raccourcira la durée de la formation parce que les unités de traitement graphique sont d’une grande efficacité avec les multiplications matricielles.
Disponibilité
Ne s’applique pas à ce Propulseur
Interface utilisateur
Ne s’applique pas à ce Propulseur
API
Ne s’applique pas à ce Propulseur
Coût
Rassembler assez de puissance de calcul figure parmi les principaux coûts associés à la formation d’un réseau neuronal. L’entraînement du modèle devient beaucoup plus onéreux à mesure que le volume de données augmente ou que le réseau grandit. Vous devrez aussi déterminer si les calculs se feront en nuage ou sur les lieux.
Le coût des données requises pour former le RNA est un autre aspect à prendre en considération. De nos jours, la puissance des modèles d’apprentissage automatique vient essentiellement des données avec lesquelles on les entraîne, pas de la façon dont on met en place le modèle. Souvent, c’est le prix des données qui empêche le développement de modèles intelligents.
Licence d’exploitation
Les codes BluWave-ai sont couverts par la licence MIT.
Les données du modèle A viennent d’ISO New England et sont disponibles aux conditions décrites sur le site https://www.iso-ne.com. Celles du modèle B viennent du gouvernement du Canada.
Code source
On trouvera le code source de la Solution type dans le dépôt BluWave-ai.
Glossaire
Expressions et abréviations employées dans ce document et le Propulseur
Expression |
Description |
Apprentissage automatique |
Cadre servant à produire un modèle sans programmation explicite |
Apprentissage profond |
Apprentissage automatique avec des réseaux de neurones artificiels |
Apprentissage supervisé |
Apprentissage automatique avec données de formation étiquetées |
ATIR |
Accélérateur technologique pour l’innovation et la recherche. Quand la version n’est pas précisée, correspond à la plateforme pilote pour les Propulseurs (nuage hybride combinant nuage public et nuage privé, plutôt que le service privé d’infonuagique habituel de l’ATIR) |
Charge |
Électricité consommée par un composant |
Cible, quantité étudiée |
Quantité qu’on désire prévoir |
GPU |
Unité de traitement graphique |
Hyper-paramètre |
Paramètre établi avant la formation du modèle, plutôt que dérivé durant la formation |
LSTM |
Long Short-Term Memory (type de réseau neuronal) |
MLP |
Perceptron multicouche |
Modèle de régression |
Modèle produisant une valeur numérique |
Perceptron |
Réseau de neurones à une couche |
Rétropropagation |
Technique utilisée pour ajuster les facteurs de pondération d’un réseau neuronal |
RNA |
Réseau de neurones artificiels |
RNR |
Réseau de neurones récurrents |
Série chronologique |
Données séquentielles prélevées à intervalles réguliers dans le temps |