Cours sur les Fondamentaux des Réseaux de Neurones et l'Apprentissage Profond (Deep Learning)
L'apprentissage profond (ou deep learning ) est une sous-catégorie de l'apprentissage automatique (machine learning , ML) qui utilise des réseaux neuronaux multicouches pour résoudre des tâches complexes. Dans ce cours, nous explorerons les bases mathématiques des réseaux neuronaux, les concepts fondamentaux de l'apprentissage profond, ainsi que les techniques utilisées pour entraîner et évaluer ces modèles.
1. Les Mathématiques Fondamentales de l'Intelligence Artificielle
Pour comprendre le fonctionnement des réseaux neuronaux, il est essentiel de maîtriser quelques notions mathématiques de base :
1.1 Scalaires, Vecteurs et Matrices
- Un scalaire est une valeur unique, par exemple un nombre réel.
- Un vecteur est un tableau ordonné de scalaires, possédant une magnitude et une direction.
- Une matrice est un tableau à deux dimensions contenant des nombres disposés en lignes et colonnes.
- Ces structures sont généralisées sous le terme de tenseurs , qui peuvent représenter des données multidimensionnelles (par exemple, les canaux RGB d'une image).
1.2 Fonctions Linéaires et Non-Linéaires
- Une fonction linéaire peut être représentée sous la forme w est le poids et b le biais. , où
- Les fonctions non-linéaires permettent aux modèles de capturer des relations complexes entre les variables. Sans activation non-linéaire, un réseau neuronal ne pourrait produire que des frontières de décision linéaires.
1.3 Dérivées et Gradients
- La dérivée mesure le taux de variation d'une fonction par rapport à ses entrées.
- En apprentissage profond, les gradients (vecteurs de dérivées partielles) sont utilisés pour ajuster les poids des neurones afin de minimiser la fonction de coût.
2. Les Réseaux de Neurones Artificiels
2.1 Le Perceptron Simple
- Le perceptron simple est le modèle neuronal le plus basique. Il prend plusieurs entrées, les multiplie par des poids, ajoute un biais, et applique une fonction d'activation (souvent une fonction en escalier).
- Limitation : Il ne peut résoudre que des problèmes linéairement séparables.
2.2 Le Perceptron Multicouches (MLP)
- Un MLP est composé de plusieurs couches de neurones, incluant des couches cachées.
- Chaque neurone dans une couche est connecté à tous les neurones de la couche suivante.
- Exemple : Un réseau avec 3 entrées, 2 couches cachées de 6 neurones chacune, et 2 sorties a 84 paramètres apprenables (poids + biais).
2.3 Fonctions d'Activation
Les fonctions d'activation introduisent de la non-linéarité dans le réseau :
- Sigmoïde : Produit une sortie entre 0 et 1, souvent utilisée pour les probabilités.
- Tanh : Produit une sortie entre -1 et 1, centrée autour de zéro.
- ReLU (Rectified Linear Unit) : Retourne x si , sinon 0. Elle est rapide à calculer et évite le problème des gradients qui s'évanouissent.
- Softmax : Utilisée dans les problèmes de classification multiclasse, elle transforme les scores en probabilités.
3. Entraînement des Réseaux de Neurones
3.1 Fonction de Coût
La fonction de coût mesure l'erreur entre les prédictions du modèle et les valeurs réelles. Exemples :
- MSE (Mean Squared Error) : Utilisé pour les problèmes de régression.
- Cross-Entropy : Utilisé pour les problèmes de classification.
3.2 Descente de Gradient
- L'algorithme de descente de gradient ajuste les poids pour minimiser la fonction de coût.
- Types :
- Batch Gradient Descent : Calcule le gradient sur tout le jeu de données.
- Stochastic Gradient Descent (SGD) : Met à jour les poids pour chaque échantillon individuel.
- Mini-Batch Gradient Descent : Combine les avantages des deux précédents en utilisant des sous-ensembles de données.
3.3 Rétropropagation (Backpropagation)
- La rétropropagation calcule les gradients en appliquant la règle de la chaîne de manière récursive.
- Elle met à jour les poids et les biais en fonction des erreurs calculées à chaque couche.
4. Techniques de Régularisation
Pour éviter le surapprentissage (overfitting ), plusieurs techniques sont utilisées :
- L1/L2 Regularization : Ajoute une pénalité aux poids pour limiter leur taille.
- Dropout : Désactive aléatoirement certains neurones pendant l'entraînement pour encourager la robustesse.
- Batch Normalization : Normalise les entrées de chaque couche pour stabiliser l'apprentissage.
5. Exemple Pratique : Régression avec un Réseau de Neurones
5.1 Objectif
Construire un réseau neuronal pour prédire la valeur médiane des maisons dans le jeu de données California Housing .
5.2 Étapes
-
Chargement des Données :
pythonfrom sklearn.datasets import fetch_california_housing
data = fetch_california_housing() -
Préparation des Données :
- Diviser les données en ensembles d'entraînement et de test.
- Standardiser les caractéristiques pour avoir une moyenne nulle et une variance unitaire.
-
Construction du Modèle :
pythonmodel = Sequential()
model.add(Dense(16, activation='relu', input_shape=(X_train.shape[1],)))
model.add(Dense(16, activation='relu'))
model.add(Dense(1)) # Couche de sortie pour la régression -
Entraînement du Modèle :
pythonmodel.compile(optimizer='adam', loss='mean_absolute_error', metrics=['mean_squared_error'])
history = model.fit(X_train, y_train, batch_size=128, epochs=500, validation_split=0.1) -
Évaluation du Modèle :
- Utiliser des métriques comme l'erreur absolue moyenne (MAE) ou l'erreur quadratique moyenne (MSE).
6. Conclusion
L'apprentissage profond repose sur des principes mathématiques solides et des techniques sophistiquées pour entraîner des modèles capables de résoudre des problèmes complexes. Comprendre ces bases est essentiel pour développer des applications efficaces en intelligence artificielle.
Questions de Réflexion
- Quelle est la différence entre une fonction linéaire et une fonction non-linéaire dans un réseau neuronal ?
- Pourquoi la rétropropagation est-elle cruciale pour l'entraînement des réseaux de neurones ?
- Expliquez comment la régularisation aide à éviter le surapprentissage.