Ce travail se fait en salle informatique, dans un notebook Python :
Le notebook programme un perceptron, sa règle d’apprentissage et la propagation dans un réseau ; des cellules de test vérifient chaque fonction sur des exemples calculés à la main.
Complétez toutes les cellules marquées « À COMPLÉTER » : tant qu’un test échoue, l’implémentation est fausse. Les graines aléatoires sont fixées : les valeurs demandées ci-dessous sont celles que doit afficher votre notebook, avec les arrondis indiqués. Certaines se lisent dans la cellule « Fiche de résultats » ; d’autres demandent de refaire une expérience en modifiant le notebook. Rédigez vos réponses sur une feuille.
Combien d’époques et de corrections la règle d’apprentissage du perceptron demande-t-elle sur donnees_separables(), avec \(\eta=0{,}1\) ? Quel est le vecteur \(w\) final, à \(10^{-2}\) près ?
Refaites l’apprentissage sur donnees_separables(graine=s) pour \(s=0,1,\dots,5\) et donnez le nombre de corrections pour chaque graine, avec \(\eta=0{,}1\) puis avec \(\eta=1\). Que constatez-vous ? Expliquez-le.
Sur les quatre points du XOR, pendant \(100\) époques, quelles valeurs prend le nombre d’exemples mal classés à la fin de chaque époque ? Que peut-on en conclure ?
Parmi les \(2000\) points obtenus par np.random.default_rng(0).uniform(-3, 3, size=(2, 2000)), combien sont reconnus par votre réseau pour la bande \(\{|x-y|\leq 1\}\) ? Combien par celui du triangle de sommets \((-1,-1)\), \((-1,1)\), \((1,1)\) ?
Modifiez le réseau de la bande pour qu’il reconnaisse \(\{|x-y|\leq 2\}\). Quels paramètres changent, et quelles sont leurs nouvelles valeurs ? Vérifiez votre réponse dans le notebook.
Que renvoie derivee_numerique(heaviside, 0.0, h) pour \(h=10^{-6}\), puis pour \(h=10^{-4}\) ? Quelle formule en \(h\) retrouvez-vous, et que faut-il en conclure pour entraîner un réseau de Heaviside par descente de gradient ?