Machine learning appliqué à la finance · Essentiel · 8 min
Introduction au deep learning
Objectif: Présenter réseaux de neurones, entraînement, modèles séquentiels, besoins en données et raisons de préférer parfois un modèle simple.
Avant de continuer
Il faut connaître les séries temporelles et KNN/SVM, pour situer le deep learning parmi les autres approches.
Vocabulaire
- Rétropropagation (backpropagation)
- L'algorithme qui calcule le gradient de la fonction de perte par rapport à chaque poids du réseau, couche par couche en partant de la sortie, pour permettre l'entraînement par descente de gradient.
- Modèle séquentiel (RNN/LSTM)
- Une architecture de réseau conçue pour traiter des séquences ordonnées (comme une série temporelle), en conservant une mémoire interne des observations précédentes.
Intuition
Un réseau de neurones empile plusieurs couches de combinaisons linéaires suivies de fonctions non-linéaires (activations), ce qui lui permet en théorie d'approximer des fonctions arbitrairement complexes — au prix d'avoir besoin de beaucoup plus de données et de perdre l'interprétabilité directe des modèles vus jusqu'ici.
Définition
Quel problème ? Approximer des fonctions très complexes et non-linéaires, en particulier pour des données non structurées (texte, image, séquences longues) où les modèles précédents (M12-1 à M12-5) atteignent leurs limites. Quand l'utiliser ? Quand on dispose de beaucoup de données et que les relations sont trop complexes pour une régression, un arbre ou un SVM. Quand l'éviter ? En finance de marché, très souvent : les données sont relativement rares (des décennies d'historique restent "peu" de données comparé à la vision par ordinateur), le signal est bruité, et l'interprétabilité est souvent exigée par la régulation ou la gestion des risques — un modèle plus simple, correctement validé, est souvent préférable. Un réseau feedforward calcule une sortie par composition de couches a = f(Wx+b) ; l'entraînement ajuste les poids W par descente de gradient, le gradient de chaque couche étant calculé par rétropropagation. Pour des séquences temporelles, des architectures récurrentes (RNN, LSTM) conservent un état interne d'une observation à l'autre.
Utilité
Quelles données/sortie ? Idéalement de grands volumes de données (des dizaines de milliers d'observations au minimum), en entrée comme en sortie potentiellement des structures complexes (séquences, texte). Comment l'entraîner/évaluer ? Optimiser les poids par descente de gradient stochastique sur de nombreuses époques, avec des techniques de régularisation spécifiques (dropout, arrêt anticipé) pour limiter le surapprentissage ; évaluer avec les mêmes principes de séparation train/test que les autres modèles, mais avec une vigilance accrue car un réseau profond peut mémoriser des jeux de données de taille modeste. Pourquoi (ou pourquoi pas) ce modèle ? Sa flexibilité est à la fois sa force et son principal risque en finance : elle permet de capturer des motifs complexes, mais aussi de "halluciner" des motifs qui ne sont que du bruit historique.
Exemple concret
Passe avant d'un petit réseau à une couche cachée (2 neurones, ReLU), pour une entrée normalisée x=[0,5 ; −0,3]. Couche cachée : neurone 1 = 0,4×0,5+(−0,2)×(−0,3)+0,1=0,36 → ReLU(0,36)=0,36 ; neurone 2 = 0,1×0,5+0,3×(−0,3)+(−0,05)=−0,09 → ReLU(−0,09)=0 (ce neurone est "éteint"). Couche de sortie (sigmoïde) : z=0,5×0,36+(−0,8)×0+0,02=0,20 → sortie=1/(1+e^{−0,20})≈0,55, soit une probabilité prédite de 55% (par exemple, "probabilité que le signal soit positif demain"). Le neurone 2, mis à zéro par ReLU, n'a aucune influence sur ce résultat — un exemple concret de la non-linéarité en action.
Toujours bloqué ? Une autre façon de voir les choses
Un réseau de neurones profond est comme un très grand nombre de curseurs interconnectés en cascade (contrairement au seul niveau de curseurs de la régression linéaire) : cette flexibilité supplémentaire lui permet en théorie d'approcher n'importe quelle forme de relation, mais elle rend aussi beaucoup plus facile de "régler" les curseurs pour coller parfaitement au bruit des données d'entraînement plutôt qu'au vrai signal sous-jacent — un peu comme un tailleur avec trop de degrés de liberté qui finit par coudre un vêtement qui ne va qu'à un seul mannequin très particulier.
Formule indispensable
Variables, unités et hypothèses
- — Fonction d'activation non-linéaire (ReLU, sigmoïde, tanh...), sans laquelle empiler des couches resterait équivalent à une seule couche linéaire
- — Taux d'apprentissage (learning rate), qui contrôle la taille des pas de la descente de gradient
Hypothèses: Réseau feedforward simple ; les architectures récurrentes (RNN/LSTM) ajoutent une dépendance à l'état de la couche à la date précédente.
Unités: Sans dimension pour les poids ; dépend des données en entrée/sortie.
Exemple concret: Sans fonction d'activation non-linéaire f, la composition de plusieurs couches linéaires resterait mathématiquement équivalente à une seule couche linéaire — c'est la non-linéarité qui donne au réseau sa puissance d'approximation. Dans notre exemple, ReLU(−0,09)=0 : la fonction "casse" la linéarité précisément en écrêtant les valeurs négatives à zéro.
Calcul détaillé
1) Normaliser les données en entrée (indispensable pour la stabilité de l'entraînement) : ici x=[0,5 ; −0,3]. 2) Choisir une architecture (nombre de couches, de neurones par couche, fonction d'activation) : ici 1 couche cachée de 2 neurones, ReLU, puis sortie sigmoïde. 3) Entraîner par descente de gradient stochastique sur plusieurs époques, en surveillant la perte sur un jeu de validation séparé pour détecter le surapprentissage (arrêt anticipé si la perte de validation cesse de baisser). 4) Comparer systématiquement à un modèle plus simple (régression, forêt aléatoire) : si le gain de performance ne justifie pas la perte d'interprétabilité et le risque de surapprentissage, préférer le modèle simple.
Exemple de code Python
from tensorflow import keras
# Un petit réseau feedforward : 2 couches cachées, sortie = probabilité binaire
modele = keras.Sequential([
keras.layers.Dense(16, activation="relu", input_shape=(X_train.shape[1],)),
keras.layers.Dropout(0.3), # régularisation contre le surapprentissage
keras.layers.Dense(8, activation="relu"),
keras.layers.Dense(1, activation="sigmoid"),
])
modele.compile(optimizer="adam", loss="binary_crossentropy", metrics=["AUC"])
arret_anticipe = keras.callbacks.EarlyStopping(patience=5, restore_best_weights=True)
modele.fit(X_train, y_train, validation_split=0.2, epochs=100, callbacks=[arret_anticipe])Interprétation
Un écart croissant entre la perte d'entraînement (qui continue de baisser) et la perte de validation (qui remonte) est le signal classique de surapprentissage, et doit déclencher un arrêt anticipé ou un renforcement de la régularisation. Un réseau qui ne bat pas significativement un modèle plus simple (régression, forêt aléatoire) sur le jeu de test n'apporte aucune valeur ajoutée réelle, malgré sa complexité supérieure.
Pièges
Utiliser un réseau profond par défaut, "parce que c'est plus moderne", sans avoir d'abord établi qu'un modèle plus simple est insuffisant — en finance de marché, la simplicité est souvent préférable, faute de données suffisantes pour justifier la flexibilité additionnelle. Autre piège : sous-estimer le besoin en données d'un réseau profond, qui peut mémoriser un petit jeu de données (quelques milliers d'observations) sans jamais généraliser correctement, contrairement à une régression régularisée qui reste raisonnable même avec peu de données.
Application métier
Une équipe de recherche quantitative n'utilise un réseau profond qu'après avoir démontré, sur un jeu de test hors échantillon rigoureusement séparé, qu'il bat significativement un modèle plus simple (régression régularisée, forêt aléatoire) — sans quoi la perte d'interprétabilité (exigée par la validation des modèles et le risk management) n'est jamais justifiée par un gain de performance réel.
Question d'entretien (en anglais)
Q.Why might a deep neural network actually underperform a simple linear regression on a market returns prediction task, despite being theoretically more powerful?
Voir une réponse modèle
A.Theoretical flexibility cuts both ways: a deep network has far more parameters to fit, which means it needs proportionally more data to learn a genuine signal rather than memorize noise. Financial returns are notoriously close to a random walk with a low signal-to-noise ratio, and even decades of daily data amount to a relatively small dataset compared to what deep learning typically needs. Given that, a deep network is much more likely to overfit — to find spurious patterns in the training data's noise that look great in-sample but carry no real predictive power out-of-sample — while a simple, properly regularized linear regression is far more constrained and tends to generalize better under those conditions. I'd always benchmark the deep model against the simple one on a held-out test set before trusting the added complexity.
Trois points à retenir
- 1Un réseau de neurones empile des couches linéaires et des activations non-linéaires, entraînées par rétropropagation et descente de gradient.
- 2Sa flexibilité nécessite beaucoup de données ; en finance de marché, elle est souvent un handicap plutôt qu'un avantage face à des modèles plus simples.
- 3Toujours comparer à un modèle simple : la complexité doit se justifier par un gain de performance réel, pas supposé.
Approfondir / démonstration
Le théorème d'approximation universelle garantit qu'un réseau avec une seule couche cachée suffisamment large peut approximer arbitrairement bien n'importe quelle fonction continue sur un domaine borné — mais ce résultat théorique ne dit rien sur le nombre de données nécessaires pour effectivement apprendre cette approximation, ni sur la difficulté pratique de l'optimisation (minima locaux, gradients qui s'annulent dans les réseaux récurrents profonds, motivant l'architecture LSTM avec ses portes qui régulent explicitement le flux d'information dans le temps). En pratique, la théorie de l'apprentissage statistique enseigne que la complexité d'un modèle doit être mise en balance avec la quantité de données disponibles (dimension de Vapnik-Chervonenkis), ce qui explique pourquoi les modèles plus simples des notions précédentes restent souvent préférables sur des données financières relativement rares et bruitées.