Cours 8 – Classification (partie 2) PDF
Document Details
Uploaded by Deleted User
Université du Québec à Trois-Rivières
Cyril Muehlethaler
Tags
Summary
This document is an academic lecture or presentation from Université du Québec à Trois-Rivières. It discusses topics in classification trees, Bayesian networks, and ensemble methods related to artificial intelligence and data analysis.
Full Transcript
2024-11-20 Cours 8 – Classification (partie 2) Cyril Muehlethaler CIPP-3162 [email protected] 20.11.2024 1...
2024-11-20 Cours 8 – Classification (partie 2) Cyril Muehlethaler CIPP-3162 [email protected] 20.11.2024 1 © Professeur Cyril Muehlethaler, UQTR 1 Classification Trees 20.11.2024 2 © Professeur Cyril Muehlethaler, UQTR 2 1 2024-11-20 Classification trees 20.11.2024 3 © Professeur Cyril Muehlethaler, UQTR 3 Classification trees Racine x1 Noeud x2 x2 Noeud y x3 y x3 Feuille (classe) Feuille (classe) y y y y Y Les feuilles fournissent un résultat Classe 1 p=0.8 sous forme d’attribution à une classe Classe 2 p=0.1 avec des probabilités de distribution. Classe 3 p=0.1 Il y a des risques de mauvaise Classe 4 p=0 classification comme avec toutes les … méthodes supervisées 20.11.2024 4 © Professeur Cyril Muehlethaler, UQTR 4 2 2024-11-20 Classification tree Arbre complet x1 x2 x2 x1 x2 x3 y x3 x3 x3 x3 y y y y y y y y x1 Arbre optimisé x2 x2 y y y x3 y y 20.11.2024 5 © Professeur Cyril Muehlethaler, UQTR 5 Classification tree x1 x2 x2 x1 x2 x3 y x3 x3 x3 x3 y y y y y y y y Comment savoir s’il est mieux de débuter la racine de l’arbre avec x1, x2 ou x3? Quelle variable est la meilleure pour la classification? Gini Index Misclassification error Cross entropy (deviance) 20.11.2024 6 © Professeur Cyril Muehlethaler, UQTR 6 3 2024-11-20 Classification tree Exemple: On cherche à savoir s’il pleut 𝑐 dehors (y), on a à disposition 2 variables Index de Gini 𝐼𝐺 = 1 − 𝑝𝑗2 (éclairs et nuages) et 142 observations 𝑗=1 pj = proportion d’échantillons qui appartiennent à la classe c pour un nœud particulier Y a-t-il des oui éclairs? non 125 2 17 2 Pluie Pluie 𝐼𝐺 𝑓𝑒𝑢𝑖𝑙𝑙𝑒 𝑔𝑎𝑢𝑐ℎ𝑒 = 1 − − = 0.210 142 142 Oui 125 Oui 57 Non 17 Non 85 57 2 85 2 𝐼𝐺 𝑓𝑒𝑢𝑖𝑙𝑙𝑒 𝑑𝑟𝑜𝑖𝑡𝑒 = 1 − − = 0.480 142 142 𝐼𝐺 𝑚𝑜𝑦𝑒𝑛𝑛𝑒 𝑛𝑜𝑒𝑢𝑑 é𝑐𝑙𝑎𝑖𝑟 = 0.5 ∙ 0.210 + 0.5 ∙ 0.480 = 𝟎. 𝟑𝟒𝟓 Y a-t-il des Si le nombre d’observation n’est pas identique à gauche et à oui nuages? non droite, on fait une moyenne pondérée (remplace 0.5 par la proportion contenue dans la feuille) Pluie Pluie Oui 87 Oui 9 Non 55 Non 133 𝐼𝐺 𝑚𝑜𝑦𝑒𝑛𝑛𝑒 𝑛𝑜𝑒𝑢𝑑 𝑛𝑢𝑎𝑔𝑒𝑠 = 0.5 ∙ 0.474 + 0.5 ∙ 0.118 = 𝟎. 𝟐𝟗𝟔 20.11.2024 7 © Professeur Cyril Muehlethaler, UQTR 7 Classification tree Est-ce qu’on aurait pu s’arrêter après le non et Le Gini Index de nuages (0.296) et meilleur directement conclure qu’il n’y a pas de pluie que celui de éclairs (0.345), donc on débute (sans se poser la question des éclairs)? notre arbre par nuages. On procède de la même manière pour tous les Oui, si le Gini Index de la case (nuage non autres nœuds jusqu’à ce que l’arbre soit (droite)) est plus petit que celui qu’on complet. souhaite ajouter (nœud éclairs) Y a-t-il des oui nuages? non Y a-t-il des Y a-t-il des oui éclairs? non oui éclairs? non Pluie Pluie Pluie Pluie Oui Oui Oui Oui Non Non Non Non Un gini score de 0 indique que toutes les instances de la case font partie de la même classe. 20.11.2024 8 © Professeur Cyril Muehlethaler, UQTR 8 4 2024-11-20 Classification tree Construire un arbre de classification consiste à déterminer séquentiellement: - Quelles sont les meilleures variables pour séparer les données - Définir le point de séparation optimal pour minimiser les erreurs de classification Une séparation est à chaque fois représentée par 2 embranchements, donc particulièrement bien adapté aux variables dichotomiques x1 y (oui/non), les arbres de classification peuvent cependant accepter: IG 160 Plusieurs niveaux: créer un nœud par niveau (p.ex. rouge, bleu, vert) 0.432 165 Variables numériques (continues): définir la valeur seuil (supérieur ou 0.421 170 inférieur à) permettant la meilleure séparation en comparant les index 0.375 Gini pour les données arrangées chronologiquement et par paliers 175 0.202 180 0.252 185 0.273 190 0.362 195 20.11.2024 9 © Professeur Cyril Muehlethaler, UQTR 9 Classification tree Dans la littérature on parle souvent de Decision Trees, qui comprennent les Classification trees et Regression trees. L’algorithme le plus populaire pour créer des schémas en arbre est le CART (Classification And Regression Tree). Il permet de créer les arbres automatiquement sur la base du Gini Index. Méthodes très puissantes et intuitives, on peut suivre et comprendre le raisonnement qui conduit à la classification (white box). Elles sont facilement interprétables et peuvent être comprises par des non-initiés. Par opposition, les réseaux de neurones sont des méthodes black box, on ne voit pas ce qui se passe dedans, quel est le raisonnement suivi, sur la base de quelles variables, etc. Les seules informations visibles sont l’input et l’output. 20.11.2024 10 © Professeur Cyril Muehlethaler, UQTR 10 5 2024-11-20 Bayesian Networks Dans le principe, similitudes évidentes avec les bayesian networks utilisés en science forensique 𝑃(𝐻𝑝 ) 𝑃(𝐸|𝐻 ,𝐼) 𝑝 𝑝 𝑃(𝐻 |𝐸,𝐼) ∙ = 𝑃(𝐻𝑑 ) 𝑃(𝐸|𝐻 ,𝐼) 𝑃(𝐻 |𝐸,𝐼) 𝑑 𝑑 20.11.2024 11 © Professeur Cyril Muehlethaler, UQTR 11 Question? Si on vous demandait de goûter une bière les yeux bandés et d’indiquer de quel type il s’agit, obtiendriez-vous de meilleurs résultats en considérant … La réponse moyenne donnée par La réponse d’un expert? 10 000 connaisseurs ? Les connaisseurs ne sont peut-être pas aussi précis que l’expert, ils devraient avoir un biais important, mais globalement ils devraient fournir de meilleurs résultats, éviter des erreurs, être plus stables et plus reproductibles → Ensemble Methods 20.11.2024 12 © Professeur Cyril Muehlethaler, UQTR 12 6 2024-11-20 Ensemble Methods (Random Forest) 20.11.2024 13 © Professeur Cyril Muehlethaler, UQTR 13 Ensemble methods Decision Tree Classifier Random Forest Classifier Une seule prédiction avec un arbre décisionnel et probabilité Multiples prédictions avec des arbres d’appartenance à une classe individuels, on choisit le vote majoritaire Classification trees = random forest Autres méthodes de classification = ensemble methods 20.11.2024 14 © Professeur Cyril Muehlethaler, UQTR 14 7 2024-11-20 Ensemble methods Principe: la loi des grands chiffres nous indique que si l’on répète un événement suffisamment de fois, on va se rapprocher de la vraie valeur. En conséquence, si on construit de nombreux modèles de prédiction, lorsqu’on les utilise ensemble on devrait augmenter les performances de prédiction. Ces techniques sont souvent référées de « Ensemble Learning » ou « Ensemble Methods ». Une notion importante rattachée à ces techniques est le « vote majoritaire ». Chaque modèle doit dans la mesure du possible être indépendant des autres, quelles sont les solutions? Stacking (multiples modèles sur les mêmes données) Équivalent du boostrap Bagging (même modèle sur des sets différents) Boosting (séquentiel/correction, poursuivre entraînement avec les « mauvais cas » jusqu’à obtenir des résultats satisfaisants) 20.11.2024 15 © Professeur Cyril Muehlethaler, UQTR 15 Stacking 20.11.2024 16 © Professeur Cyril Muehlethaler, UQTR 16 8 2024-11-20 Bagging 20.11.2024 17 © Professeur Cyril Muehlethaler, UQTR 17 Boosting 20.11.2024 18 © Professeur Cyril Muehlethaler, UQTR 18 9 2024-11-20 Bootstrapping En tirant aléatoirement des échantillons et des variables pour construire les modèles, on diminue la variance globale du modèle final. Une variance plus faible implique également un plus faible risque d’overfitting Bootstrapping Échantillons d’entraînement aléatoires « quasi » indépendants 20.11.2024 19 © Professeur Cyril Muehlethaler, UQTR 19 Weighted (pondéré) « Vote de majorité » afin de combiner les modèles pour la prédiction Donner le même poids à chacun des répondants Favoriser (diminuer) l’importance de certains répondants qu’on sait meilleurs (ou moins bons) 20.11.2024 20 © Professeur Cyril Muehlethaler, UQTR 20 10 2024-11-20 Gradient boosting La technique du Gradient Boosting est énormément utilisée pour l’apprentissage supervisé Principe: On entraîne un modèle et effectue des prédictions avec un test set On cherche les échantillons mal classifiés On entraîne un nouveau modèle sur les résidus des échantillons mal classifiés On poursuite de cette manière jusqu’à ce que les résidus deviennent négligeables, ou que les performances de classifications soient satisfaisantes Ensemble methods 20.11.2024 21 © Professeur Cyril Muehlethaler, UQTR 21 Gradient boosting Gradient boosting: amélioration séquentielle (graduelle et additive) du modèle en expliquant toujours davantage des résidus On ajoute un nouveau modèle (généralement un arbre) à ceux existants jusqu’à ce qu’on atteigne un minima Entraînement intensif afin de transformer de mauvais élèves en d’excellents prédicteurs 20.11.2024 22 © Professeur Cyril Muehlethaler, UQTR 22 11 2024-11-20 Gradient boosting 20.11.2024 23 © Professeur Cyril Muehlethaler, UQTR 23 Support Vector Machines (SVM) 20.11.2024 24 © Professeur Cyril Muehlethaler, UQTR 24 12 2024-11-20 SVM Technique extrêmement puissante et très versatile (capable de traiter des données linéaires et non-linéaires, de faire de la régression, de la classification, …) L’une des techniques les plus populaires de Machine Learning considérée par beaucoup comme celle permettant d’obtenir les meilleures performances de classification. 20.11.2024 25 © Professeur Cyril Muehlethaler, UQTR 25 SVM Principe: Placer une droite séparant les classes et étant la plus éloignée Distance la plus grande possible des échantillons. entre les deux points les plus proches La droite est généralement placée à mi-distance des deux « marges » définies par les points les plus proches (qu’on appelle support vectors) Les marges peuvent être dures (hard margins) ou plus laxistes (soft margins). Les modèles basés sur les Support Vectors hard margins doivent obligatoirement avoir une séparation linéaire des classes, et sont sensibles aux outliers 20.11.2024 26 © Professeur Cyril Muehlethaler, UQTR 26 13 2024-11-20 SVM Soft margin: on laisse la possibilité d’avoir des échantillons du « mauvais côté » de la marge. La quantité d’échantillons autorisée est un compromis entre garder les marges les plus grandes possibles et limiter les mauvaises classifications. Ce paramètre est réglé par l’hyperparamètre C. La valeur de C est à optimiser à chaque construction d’un modèle SVM. C = 50 C=1 Une faible valeur de C indique des marges plus grandes et davantage de mauvaises classifications 20.11.2024 27 © Professeur Cyril Muehlethaler, UQTR 27 SVM Données non séparables linéairement, est-ce qu’on peut produire une frontière (fonction) comme sur l’image ci-dessous? Oui, avec des polynômes d’ordre supérieur (x2, x3, x4, x5, …) Les possibilités de créer des polynômes comme fonctions discriminantes sont quasiment infinies, en ajoutant des termes, ou en augmentant le degré du polynôme. Malheureusement il y a un risque important de faire de l’overfitting et cela augmente considérablement le nombre de variables et la complexité des modèles. Il est toujours plus simple et préférable d’avoir une fonction discriminante linéaire. Solution? 20.11.2024 https://babmath.weebly.com/review-page.html 28 © Professeur Cyril Muehlethaler, UQTR 28 14 2024-11-20 SVM Problème Les données ne sont pas séparables linéairement dans l’espace considéré Solution On les projette dans un espace de plus haute- dimension au moyen de polynômes (ou autres fonctions de base) pour qu’elles deviennent linéairement séparables Kernel trick On peut faire ces étapes avec des espaces multidimensionnels énormes sans augmenter la complexité de calcul du modèle 20.11.2024 29 © Professeur Cyril Muehlethaler, UQTR 29 SVM ? x x2 Données non séparables linéairement On crée une nouvelle variable (p.ex. x2) afin de pouvoir les séparer linéairement dans le nouvel espace. x La transformation vers la nouvelle variable peut avoir plusieurs formes mathématiques. On peut utiliser tous les types de polynôme x2, x3, x4, x5, … , mais également des formules plus exotiques comme p.ex. 3/4πx3. Comment choisir le meilleur (x2)? → Kernel (noyaux) 20.11.2024 30 © Professeur Cyril Muehlethaler, UQTR 30 15 2024-11-20 SVM Les kernels sont des fonctions qui permettent de trouver rapidement le meilleur degré de polynôme (x2, x3, x4, …) et les coefficients qui offrent une séparation linéaire des données. Nous n’avons donc pas besoin de chercher la meilleure transformation des données manuellement en faisant plusieurs centaines de tests, elle est trouvée de manière systématique et automatisée par le kernel (par cross-validation). Le kernel gagne en efficacité en n’effectuant pas le calcul de la transformation de l’espace initial à l’espace multidimensionnel (x → x2). Le kernel calcule la similarité entre les points (lesquels sont les plus proches, lesquels sont les plus éloignés, ceux qui peuvent être séparés linéairement, etc) directement dans l’espace multidimensionnel. On appelle cela le kernel trick. Cela peut paraître insignifiant, mais cela permet d’économiser énormément de ressources afin de pouvoir fitter des kernel de très hautes dimensions (proche de ∞), uniquement en économisant quelques lignes de code supplémentaire dans la fonction. 20.11.2024 31 © Professeur Cyril Muehlethaler, UQTR 31 SVM https://medium.com/@zxr.nju/w hat-is-the-kernel-trick-why-is-it- important-98a98db0961d Coefficient du polynôme Degré du polynôme Paire d’échantillons Produit scalaire de 2 vecteurs représentés par: (𝒂 × 𝒃 + 𝟏) 𝒅 Coordonnées en x = (𝑎 × 𝑏 + 1) 2 Coordonnées en x transformées = 𝑎×𝑏+1 ∙ 𝑎×𝑏+1 Coefficient = 𝑎𝑏 + 𝑎2 𝑏 2 + 1 Tout ce dont on a besoin est un kernel, une paire = (𝑎, 𝑎2 , 1) ∙ (𝑏, 𝑏 2 , 1) d’échantillons, et un produit scalaire 20.11.2024 32 © Professeur Cyril Muehlethaler, UQTR 32 16 2024-11-20 SVM Pour la plupart des programmes scientifiques, utiliser une méthode SVM revient à utiliser une fonction du type: SVM (kernel = ‘’linear’’, C=1, …) Le paramètre kernel définit le type de modèle mathématique pour construire les marges. Il peut prendre de très nombreuses formes, telles que: - Linéaire Le plus général et le plus populaire. A utiliser lorsqu’on a - Polynomial peu d’informations a priori sur les données - Radial Basis Function (RBF) 2 - Gaussian 𝑒 −𝛾(𝑎−𝑏) - Sigmoid - Laplace RBF Calcule la similarité de l’échantillon inconnu avec les échantillons d’entraînement proches de lui (similaire aux - Tangente hyperbolique proches voisins) - Etc - Etc x SVM (kernel = ‘’linear’’, C=1, gamma=1) 20.11.2024 33 © Professeur Cyril Muehlethaler, UQTR 33 SVM 20.11.2024 34 © Professeur Cyril Muehlethaler, UQTR 34 17 2024-11-20 SVM Hyperparamètre γ (gamma) sert à ajuster la forme des kernels. Il sert à définir l’influence que peut avoir un échantillon sur le modèle (la distance jusqu’à laquelle son effet se fait ressentir). Augmenter gamma donne une courbe plus sensible aux échantillons locaux (la courbe est influencée par les échantillons proches), et en conséquence la marge (frontière) devient plus irrégulière et « s’enroule / s’adapte » davantage autour des échantillons https://amueller.github.io/COMS4995-s18/slides/aml-09-021418-support-vector-machines/#1 20.11.2024 35 © Professeur Cyril Muehlethaler, UQTR 35 SVM Il est difficile de prédire à l’avance quelles valeurs de C et de gamma permettront d’obtenir les meilleures capacités de prédiction. La stratégie employée est généralement de faire un grid search, en employant une technique de cross-validation identique pour chaque combinaison de valeurs. Le grid search peut être programmé et faire partie de l’apprentissage (pas besoin de le faire manuellement) https://stats.stackexchange.com/questions/192851/how-to-perform-grid- search-effectively-for-tuning-svm-parameters-in-cross-valida 20.11.2024 36 © Professeur Cyril Muehlethaler, UQTR 36 18 2024-11-20 Réseaux de neurones artificiels 20.11.2024 37 © Professeur Cyril Muehlethaler, UQTR 37 Réseaux neurones Données connues Réponses Modèle Données inconnues Prédictions « c’est une pomme » Une pomme? « c’est une orange » Quel type de fruit? « c’est une banane » Comment fonctionne notre cerveau? Comment raisonne-t-on? Récompenser les Comment est-ce qu’on prend des décisions? bonnes réponses Comment est-ce qu’on apprend? Neurones, synapses: transmission de l’information Behaviorisme, cognitivisme, constructivisme ou socioconstructivisme : apprentissage Coder et enregistrer l’information 20.11.2024 38 © Professeur Cyril Muehlethaler, UQTR 38 19 2024-11-20 Neurones https://fr.wikipedia.org/wiki/Neuromorphologie Réseau complexe de neurones Le noyau du neurone est relié aux synapses inter-connectés. Un neurone peut (arborisation terminale) par l’axone qui peut avoir une se connecter à plusieurs milliers longueur de plusieurs milliers de fois la taille du noyau. d’autres neurones et donner des Lorsque les synapses sont activées par un signal capacités de calcul décuplées. électrique, le neurone s’active à son tour et transmet un signal aux synapses qui sont attachées à lui. 20.11.2024 39 © Professeur Cyril Muehlethaler, UQTR 39 Réseaux neurones Tout ce qu’on connait est l’input et l’output Entre les deux, on place des neurones qui ont la capacité de transmettre de l’information et de modifier (mettre à jour) leur valeur → apprentissage 20.11.2024 40 © Professeur Cyril Muehlethaler, UQTR 40 20 2024-11-20 Réseaux neurones 20.11.2024 41 © Professeur Cyril Muehlethaler, UQTR 41 Fonctionnement des ANN 20.11.2024 42 © Professeur Cyril Muehlethaler, UQTR 42 21 2024-11-20 Logique mathématique Méthode historique: Un neurone est, dans sa forme simple, une boîte accueillant 2 inputs (A et B) et qui transmet un output (X). Les poids donnés à A et B permettent de mettre en place des règles basées sur la logique mathématique (A et B, A mais pas B, etc). Lorsque X = 1, le neurone s’active et transmet le signal. 0 A ou B Tout sauf Tout sauf uniquement mais pas Non-A A-B A-B 0 0 ou A-B les deux 20.11.2024 43 © Professeur Cyril Muehlethaler, UQTR 43 Perceptron L’architecture de neurone la plus utilisée en Machine Learning est le perceptron. Il ne fonctionne pas sur des règles logiques mathématiques pour des inputs A et B, mais sur une somme pondérée de plusieurs dizaines d’inputs (w1, w2, w3, w4, …). Somme pondérée des poids des variables Modification de la somme originales pondérée (on l’augmente, on la diminue, on la transmet si elle est supérieure à …, etc) 20.11.2024 44 © Professeur Cyril Muehlethaler, UQTR 44 22 2024-11-20 Entrainement Comment entraîner et améliorer un réseau de neurones? Hebb’s rule: « Cells that fire together, wire together » On souhaite renforcer les connections qui donnent un résultat correct On souhaite diminuer les connections qui donnent un résultat erroné Comment? Mise à jour du poids (wi,j) des variables originales xi, en ajoutant un facteur d’apprentissage η (learning rate) à la fonction Σ qui calcule la moyenne pondérée (𝑛𝑒𝑥𝑡 𝑠𝑡𝑒𝑝) 𝑤𝑖,𝑗 = 𝑤𝑖,𝑗 + 𝜂(𝑦𝑗 − 𝑦ො𝑗 )𝑥𝑖 20.11.2024 45 © Professeur Cyril Muehlethaler, UQTR 45 Exemple https://www.youtube.com/wa tch?v=aircAruvnKk&t=408s Quelle est la séquence d’opération qui vous permet de reconnaître un 3 comme étant le chiffre « trois »? Décomposer Il n’a pas de boucle fermée Il est composé de 2 demi-cercles Ouverture orientée vers la gauche Votre cerveau (neurones) reconnaît ces paramètres comme importants et discriminants, et vous permet de distinguer un 3 d’un 9. Si en plus de ça, on vous confirme que cette forme-là correspond bien à un 3 (supervisé, behaviourisme), alors lorsque vous en verrez un de nouveau vous aurez une bonne confiance à vous prononcer qu’il s’agit d’un 3. Les réseaux de neurones fonctionnent selon le même principe. Ils sont entraînés à reconnaître les propriétés qui se ressemblent entre les échantillons, et à les attribuer à une classe. Au début ils font de nombreuses erreurs, mais peuvent mettre à jour leur valeur. A force de refaire les mêmes erreurs, ils gagnent en précision. 20.11.2024 46 © Professeur Cyril Muehlethaler, UQTR 46 23 2024-11-20 Exemple 20.11.2024 47 © Professeur Cyril Muehlethaler, UQTR 47 Exemple Données d’origine Classe 0 1 Pixels 2 3 4 … … 20.11.2024 48 © Professeur Cyril Muehlethaler, UQTR 48 24 2024-11-20 Exemple 0 1 Pixels 2 3 4 … … Prédiction 20.11.2024 49 © Professeur Cyril Muehlethaler, UQTR 49 Exemple 0 1 Pixels Erreur 2 3 4 Backpropagation: mise à jour du poids de chacun des neurones Apprentissage 20.11.2024 50 © Professeur Cyril Muehlethaler, UQTR 50 25 2024-11-20 Exemple illustré La chaîne youtube de 3Blue1Brown est excellente Elle permet de comprendre les réseaux de neurones par des exemples illustrés et animés de très grande qualité © L’exemple illustré dans les diapositives suivantes est directement tiré de ses vidéos 20.11.2024 51 © Professeur Cyril Muehlethaler, UQTR 51 Activation Couches cachées (hidden layers) où l’apprentissage a lieu Couche initiale avec des valeurs d’activation pour chacun des neurones Couche finale (prédiction 20.11.2024 52 © Professeur Cyril Muehlethaler, UQTR 52 26 2024-11-20 Weights Chaque neurone a une valeur d’activation (sa couleur/luminosité) (a1, a2, a3, …) Le lien vers le neurone de la couche suivante a un certain poids (w1, w2, w3, …) Le poids qu’on associe à un neurone lui permet de donner davantage d’importance à certaines zones (vert vs rouge) → participe à la reconnaissance de formes 20.11.2024 53 © Professeur Cyril Muehlethaler, UQTR 53 Fonction d’activation Le nouveau neurone reçoit comme input la somme des combinaisons linéaires des valeurs d’activations et des poids (w1a1 + w2a2+ …) On pourrait prendre cette valeur d’activation et la transmettre telle quelle (fonction d’activation linéaire, input = output). Cependant une fonction linéaire ne permet pas « d’apprendre » (ce serait juste de la régression) et n’a donc pas d’intérêt. La fonction sigmoïde permet d’introduire une non-linéarité dans la fonction d’activation et ainsi apprendre des patterns plus complexes. Elle a des valeurs d’input allant de -∞ à +∞ avec une zone de transition abrupte. La fonction sigmoïde fournit comme output une valeur entre « 0/1 » (équivalent à la probabilité que le neurone soit actif). 20.11.2024 54 © Professeur Cyril Muehlethaler, UQTR 54 27 2024-11-20 Biais On peut décider de « régler » précisément notre neurone en lui disant de ne pas s’activer à 0 (inférieur ou supérieur à 0, le standard pour sigmoïde) mais seulement s’il a une valeur supérieure à 10. On appelle ça le biais. On peut attribuer un biais à chaque neurone, décidant de son activation (ou non) en fonction de la somme des liens (aiwi) de la couche précédente 20.11.2024 55 © Professeur Cyril Muehlethaler, UQTR 55 Exemple Au total, entre les différentes valeurs de poids et de biais, un réseau complet représente 13’000 paramètres variables pouvant influencer les réponses L’apprentissage du réseau de neurones = trouver les bons poids et biais 20.11.2024 56 © Professeur Cyril Muehlethaler, UQTR 56 28 2024-11-20 Cost function Le coût (erreur) est la somme des différences au carré entre la valeur d’activation des derniers neurones (la prédiction, p.ex. 0.43, 0.28, 0.88, …) et la valeur réelle (p.ex. 0 ou 1). On souhaite un coût le plus bas possible. Plus ce coût est haut, moins bonnes sont les performances de prédiction 20.11.2024 57 © Professeur Cyril Muehlethaler, UQTR 57 Cost function Bon: coût de 0.03 est bas (une seule valeur d’activation haute pour la bonne réponse, des valeurs basses pour toutes les autres) Mauvais: les valeurs d’activation sont distribuées entre plusieurs classes. Le coût est plus haut à 3.37. 20.11.2024 58 © Professeur Cyril Muehlethaler, UQTR 58 29 2024-11-20 Cycles d’entraînement Lors d’un cycle d’entraînement (aussi appelé epoch) chaque donnée passe une fois au travers de l’algorithme. Un cycle consiste à prédire le résultat de toutes les données d’entraînement (plusieurs centaines ou milliers), puis de calculer le coût moyen de toutes ces prédictions. À partir du coût, on souhaite ensuite pouvoir calculer une fonction de coût afin de prédire ce qu’il faut faire (dans quelle direction aller) pour diminuer le coût. 20.11.2024 59 © Professeur Cyril Muehlethaler, UQTR 59 Cost function Le réseau de neurone a environ 13’000 paramètres pouvant être modifiés (les poids et les biais) Input: pixels de l’image Output: les 10 catégories de chiffres La fonction de coût (cost function), elle, est calculée à partir des milliers d’échantillons d’entraînement. Input: les 13’000 paramètres Output: une seule valeur (le coût) C(w1, w2, …, w13’000) … on souhaite diminuer la cost function à chacun des cycles d’entraînement 20.11.2024 60 © Professeur Cyril Muehlethaler, UQTR 60 30 2024-11-20 Gradient descent Plutôt qu’une fonction de 13’000 variables C(w1, w2, …, w13’000) considérons à titre d’exemple qu’il y en a qu’une seule C(w) Cette fonction varie en fonction de w et possède plusieurs minimums locaux. La dérivée de la cost function nous renseigne sur sa pente. Si la pente est positive on doit se déplacer vers la gauche (ce qui va réduire la cost function), si elle est négative on doit se déplacer vers la droite Cette méthode est très efficace pour obtenir des minimums locaux, mais peut parfois avoir de la peine à trouver un minimum global 20.11.2024 61 © Professeur Cyril Muehlethaler, UQTR 61 Gradient descent Pour revenir à la situation initiale, il faut maintenant s’imaginer calculer la pente de la cost function en 13’000 dimensions ! On parle de gradient plutôt que de pente Gradient de la cost function (∇C) = endroit où la pente est la plus raide (version multivariée) On calcule le gradient de la cost function ∇C (qui nous donne la pente la plus raide) puis on fait un petit pas dans la direction inverse du gradient (-∇C), qui nous indique la pente descendante 20.11.2024 62 © Professeur Cyril Muehlethaler, UQTR 62 31 2024-11-20 Gradient descent Le gradient de la cost function ne nous indique pas seulement la direction mais également de combien les poids doivent être mis à jour afin de minimiser l’erreur globale (coût). L’inverse du gradient de la cost function nous renseigne pour chacun des poids (w1, w2, …, w13’000) , sur le signe (+ ou -) et l’ampleur (beaucoup, un tout petit peu, …) de la mise à jour nécessaire pour minimiser la cost function. Il faut se rappeler cependant que ces mises à jour concernent 1 échantillon d’entraînement. Il faut donc en faire la moyenne pour tous les échantillons d’entraînement. 20.11.2024 63 © Professeur Cyril Muehlethaler, UQTR 63 Backpropagation Une fois les erreurs de prédiction calculées, on sait comment l’activation du dernier neurone (dernière couche) doit être modifiée afin d’augmenter les performances de classification (augmenter activation neurone « 2 », diminuer toutes les autres), et on peut jouer (mettre à jour) les poids de la couche précédente. Pour décomposer la question, afin d’augmenter les performances de classification du neurone final « 2 », on souhaite que son activation soit plus haute, ce qui peut se faire par: biais (b) poids (w) des neurones précédents activation (a) des couches précédentes. 20.11.2024 64 © Professeur Cyril Muehlethaler, UQTR 64 32 2024-11-20 Backpropagation Cependant, augmenter le poids d’un lien (w) qui possède une valeur d’activation haute (blanc) aura un plus grand effet qu’augmenter le poids d’un neurone avec une valeur d’activation basse (noire). Pour cette raison, la modification des poids est toujours faite proportionnellement à l’activation du neurone précédent. De la même manière, si nous souhaitons modifier les valeurs d’activation (a) des neurones précédents, nous avons tout intérêt à augmenter ceux qui sont liés à un poids (w) positif, et diminuer ceux liés à un poids (w) négatif. Les changements des (a) sont donc proportionnels à (w). Petit rappel, on ne peut pas modifier directement les activations (a), seuls des modifications des poids précédents ces neurones sont possibles. 20.11.2024 65 © Professeur Cyril Muehlethaler, UQTR 65 Backpropagation Ce qu’on vient de voir est en quelques sortes les mises à jour espérées par le neurone final 2 afin de s’améliorer. Mais les autres neurones de la couche finale (1, 3, …, 9) auront également des modifications à proposer, qui vont affecter les neurones de la couche précédente. Les mises à jour suggérées peuvent parfois être contradictoires (augmenter vs diminuer le poids). On calcule la somme de toutes ces propositions de changements, qui nous indique globalement si ce neurone doit augmenter ou diminuer sa valeur d’activation. 20.11.2024 66 © Professeur Cyril Muehlethaler, UQTR 66 33 2024-11-20 Backpropagation La situation initiale était de modifier les poids (w) et biais (b) afin d’augmenter/diminuer l’activation du neurone de la couche finale. On est maintenant dans la même situation, mais au niveau de la couche précédente. Ces étapes de mise à jour successives vers l’arrière s’appellent backpropagation. L’exemple illustré concerne uniquement un échantillon d’entrainement « 2 », avec la backpropagation et mise à jour des poids associée (ses « souhaits »). On ne va cependant pas directement mettre à jour les poids à chaque échantillon. On va répéter cela pour chacun des échantillons d’entrainement (pas uniquement des « 2 »), des milliers de fois… et on calcule la moyenne 20.11.2024 67 © Professeur Cyril Muehlethaler, UQTR 67 Backpropagation La moyenne de toutes ces petites modifications des poids correspond plus ou moins (est proportionnelle) au négatif du gradient de la cost function (-∇C). En mettant à jour les poids selon les valeurs obtenues, on devrait améliorer globalement les performances de classification 20.11.2024 68 © Professeur Cyril Muehlethaler, UQTR 68 34 2024-11-20 Stochastic gradient descent Afin de gagner en rapidité pour le calcul de la cost function et de la backpropagation, on peut utiliser la stochastic gradient descent (mini batch). Le set est séparé en sous-groupes appelés mini batch. On prédit tous les échantillons d’entraînement de ce sous-groupe, calcule la cost function moyenne, calcule la backpropagation et met à jour les valeurs. On continue avec le mini batch suivant. C’est une solution intermédiaire entre mettre à jour les poids après chaque échantillon individuel, et les mettre à jour après TOUS les échantillons d’entraînement. On peut visualiser cela comme un homme saoul qui descend en courant et qui vacille vs un homme prudent qui fait des petits pas, mais toujours dans la bonne direction 20.11.2024 69 © Professeur Cyril Muehlethaler, UQTR 69 Entrainement Afin d’être efficace il faut BEAUCOUP de données d’entraînement !! MNIST Digits = 60’000 images + labels Le nombre de cycles d’entraînement est également important afin de s’assurer d’atteindre un minimum (local ou global) For your reference: I just trained a neural network on MNIST using TensorFlow Input is a 28x28 matrix Layer 1 - convolutional - 32 features, step size 5 Layer 2 - convolutional - 64 features, step size 5 Layer 3 - fully connected - 1024 units Layer 4 - softmax (10 output units) I trained with 50,000 examples and did 20,000 epochs over the entire data set. It took me about 3 hours on a 6-core AMD Phenom(tm) II X6 1090T Processor running at 3.2GHz. Would expect it to be quite a bit faster on a GPU though I don't have one that TensorFlow will run with. 20.11.2024 70 © Professeur Cyril Muehlethaler, UQTR 70 35 2024-11-20 Entrainement 20.11.2024 71 © Professeur Cyril Muehlethaler, UQTR 71 Interprétabilité? On peut tenter de comprendre comment fonctionne notre réseau: sur quelles caractéristiques est-ce qu’il est capable de reconnaître un chiffre, quel neurone est responsable de quelle forme, etc… Cependant en pratique, on n’en a aucune idée (black box). Les images des poids associés à chacun des premiers neurones ne ressemblent pas du tout à ce qu’on s’attend, cela semble aléatoire. On ne peut pas vraiment le comprendre ni le visualiser… mais cela fonctionne. 20.11.2024 72 © Professeur Cyril Muehlethaler, UQTR 72 36 2024-11-20 Interprétabilité? 1. Convolutionnel (CNN) Spécialisés dans le traitement des images. Excellents pour la reconnaissance visuelle en identifiant des motifs et des caractéristiques dans les images. Couches de convolution qui permettent d’extraire les formes ou caractéristiques significatives des images 2. Déconvolutionnel (DNN) Utilisés principalement pour la reconstruction d’images, par exemple améliorer la résolution d’une vieille vidéo de surveillance 3. Récurrents (RNN) Ils sont adaptés pour traiter des données séquentielles (par exemple, séquences de mots, séries temporelles). Les RNN ont des boucles récurrentes qui leur permettent de conserver une mémoire des états précédents. P.ex. prédire le mot suivant lorsqu’on tape au clavier 4. Feed-Forward (FFNN) Ces réseaux sont utilisés pour la classification et la régression. Ils sont constitués de couches de neurones où l’information se propage de l’entrée vers la sortie sans boucle récurrente. P.ex. Multilayer Perceptron (MLP) 5. Long Short-Term Memory (LSTM) Variante avancée des RNN, capables de se souvenir d’informations sur de longues périodes (réfléchir par rapport à des expériences antérieures) Utilisés dans la compréhension du langage naturel P.ex. LLM (Large Language Model), p.ex. ChatGPT Réf: https://www.data-bird.co/blog/reseaux-de-neurones 20.11.2024 73 © Professeur Cyril Muehlethaler, UQTR 73 Démo Tensorflow Playground 20.11.2024 74 © Professeur Cyril Muehlethaler, UQTR 74 37 2024-11-20 Réseaux neurones Années 80-90, les SVM sont réputés meilleurs que les ANN, mais un certain nombre de changements vont très largement populariser les ANN: ✓ Capacités computationnelles des ordinateurs ✓ ANN fonctionnent bien mieux sur des jeux de données très conséquents (plusieurs milliers ou millions d’entrées) ✓ Algorithmes d’entraînement ont été améliorés (évitent les minima locaux) ✓ Publicité et « buzz » entourant les ANN (google, facebook, amazon, youtube, …) Domaines les plus populaires de l’intelligence artificielle Reconnaissance vocale Traducteur (DeepL) Reconnaissance faciale (p.ex. https://thispersondoesnotexist.com/) Assistants virtuels (google, alexa) Conduite automatisée (tesla) Chatbots Jeux (échecs, go) 20.11.2024 75 © Professeur Cyril Muehlethaler, UQTR 75 Réseaux neurones Siri Youtube Google image 20.11.2024 76 © Professeur Cyril Muehlethaler, UQTR 76 38 2024-11-20 ChatGPT Generative Pre-trained Transformer 3 (GPT-3) is a large language model released by OpenAI in 2020. Like its predecessor, GPT-2, it is a decoder-only transformer model of deep neural network, which supersedes recurrence and convolution-based architectures with a technique known as "attention". This attention mechanism allows the model to selectively focus on segments of input text it predicts to be most relevant. It uses a 2048-tokens-long context[jargon], float16 (16-bit) precision, and a hitherto-unprecedented 175 billion parameters, requiring 350GB of storage space as each parameter takes 2 bytes of space, and has demonstrated strong "zero-shot" and "few-shot" learning abilities on many tasks. 20.11.2024 77 © Professeur Cyril Muehlethaler, UQTR 77 Deep Neural Network Un réseau de neurones avec plus de 2 couches cachées est appelé un Deep Neural Network. On les utilise pour des jeux de données complexes (nombreuses variables et échantillons). Le Deep Learning est considéré comme une catégorie particulière d’entraînement, avec des stratégies qui lui sont propres (couche pré- entrainées, ré-utilisation, régularisation, optimisation) 20.11.2024 78 © Professeur Cyril Muehlethaler, UQTR 78 39 2024-11-20 Architecture des réseaux Pour aller plus loin: 20.11.2024 79 © Professeur Cyril Muehlethaler, UQTR 79 40