TD Apprentissage
1 Applications directes
1.1 Exercice 1: Différentiation automatique
- Différentier la fonction \[f(x) = x^3 + 2x \, sin(x)\] en \(x = 2\) et \(x = 4\).
- Calculer le gradient de la fonction \[g(x,y) = x + y + xy + sin(x)sin(y)\] en \((x,y) = (0,0)\) et \((x,y) = (1,4)\).
- Minimiser la fonction \(u(x) = (x-1)^2 cos(x)\) avec une descente de gradient. Y-a-t-il plusieurs minimums locaux (tracer la fonction!) ?
- Minimiser la fonction \(v(x,y) = (x+1)^2 + y^2 + cos(x)*y^2\) avec une descente de gradient en partant du point \((1.5,2.6)\)?
1.2 Exercice 2: Chargement d’un dataset
- Charger le dataset FashionMNIST.
- Afficher le premier élément du dataset ainsi que le label associé.
- Séparer le dataset en un dataset de test et d’entraînement.
- Créer un dataloader avec une taille de batch de 8.
- Afficher les données du premier batch.
1.3 Exercice 3: Apprentissage
- Créer le modèle défini dans le premier cours:
- une première couche cachée de 512 paramètres
- une deuxième couche cachée de 512 paramètres
- on utilise la fonction d’activation RELU
- Choisir et définir une fonction de coût.
- Effectuer une descente de gradient stochastique pour le dataset de l’exo 2.
- Tester les prédictions du modèle sur le dataset de test.
2 Approfondir
2.1 Exercice 4: apprendre la fonction sinus
Le but de cet exercice est d’apprendre la fonction \(sin\) entre \(-10\) et \(10\).
- Créer un réseau de neurones avec 1 couche cachée de 10 neurones.
- Créer un dataset d’entraînement à partir de la fonction \(sin\).
- Apprendre la fonction \(sin\). En cas de problèmes, essayer de rajouter des neurones dans la couche cachée, de changer le learning rate ou encore le nombre d’epochs.
2.2 Exercice 5: influence des paramètres
Reprendre le code de l’exercice 3.
- Étudier l’influence de la taille du batch sur la qualité de l’apprentissage. Pour cela, on affichera la précision atteinte en fonction du temps de calcul.
- Étudier l’influence du learning rate.
- Essayer l’algorithme d’apprentissage Adam.