Data Mining et Machine Learning

John Samuel
CPE Lyon

Year: 2023-2024
Email: john.samuel@cpe.fr

Creative Commons License

Data Mining

Objectifs

  1. Apprentissage machine
  2. Apprentissage profond
  3. Apprentissage par renforcement
  4. Licences de données, éthique et vie privée

3.1. Apprentissage machine

Neurones biologiques

Neurone biologique1
  1. https://en.wikipedia.org/wiki/File:Neuron3.png

3.1. Apprentissage machine

Introduction

Réseaux de neurones artificiels

3.1. Apprentissage machine

Réseau de neurones

Les réseaux de neurones sont couramment utilisés dans le domaine de l'apprentissage machine, en particulier dans des tâches telles que la classification, la régression, la reconnaissance d'images, le traitement du langage naturel, et bien d'autres. Un réseau de neurones artificiels est une collection d'unités interconnectées appelées neurones artificiels. Ces réseaux sont inspirés de la structure du cerveau biologique

3.1. Apprentissage machine

Réseau de neurones

3.1. Apprentissage machine

Les couches

Les neurones sont organisés en couches. Il existe généralement trois types de couches dans un réseau de neurones :

3.1. Apprentissage machine

Les couches

3.1. Apprentissage machine

L'entraînement

L'objectif global de l'entraînement est d'ajuster les poids du réseau de manière à ce qu'il puisse généraliser à de nouvelles données, produisant des résultats précis pour des exemples qu'il n'a pas vu pendant l'entraînement.

3.1. Apprentissage machine

L'entraînement

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Neurones

Chaque neurone artificiel a des entrées, qui peuvent être les valeurs caractéristiques d'un échantillon de données externe, et produit une seule sortie. Cette sortie peut être envoyée à plusieurs autres neurones, formant ainsi la structure interconnectée du réseau neuronal. La fonction d'activation joue un rôle crucial dans le calcul de la sortie d'un neurone. Le processus comprend les étapes suivantes :

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Neurones

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Connexions et poids: Le réseau de neurones est constitué de connexions, où chaque connexion transmet la sortie d'un neurone comme entrée à un autre neurone. Chaque connexion possède un poids qui représente son importance relative dans la transmission du signal.

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Fonction de propagation

Calcul de l'entrée d'un neurone : La fonction de propagation calcule l'entrée d'un neurone en prenant la somme pondérée des sorties de ses prédécesseurs, où chaque sortie est multipliée par le poids de la connexion correspondante. Cela peut être représenté mathématiquement comme suit :

\[ \text{Entrée du Neurone} = \sum_{i=1}^{n} (\text{Sortie du Prédécesseur}_i \times \text{Poids}_i) \] où \(n\) est le nombre de connexions d'entrée.

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Fonction de propagation

Ajout d'un terme de biais : Un terme de biais peut être ajouté au résultat de la propagation. Le terme de biais est un paramètre supplémentaire, souvent représenté par \(b\) dans les équations, qui permet au modèle d'apprendre un décalage ou une translation. Cela donne la forme finale de l'entrée du neurone :

\[ \text{Entrée du Neurone} = \sum_{i=1}^{n} (\text{Sortie du Prédécesseur}_i \times \text{Poids}_i) + \text{Biais} \]

3.1. Apprentissage machine

Composants des réseaux de neurones artificiels

Fonction de propagation

Fonction d'Activation : Après avoir calculé l'entrée du neurone, celle-ci est passée à travers une fonction d'activation. Cette fonction introduit une non-linéarité dans le modèle, permettant au réseau de neurones de capturer des relations complexes et d'apprendre des modèles non linéaires. Certaines des fonctions d'activation couramment utilisées comprennent :

3.1. Apprentissage machine

Perceptron

Le perceptron est un algorithme d'apprentissage supervisé utilisé pour la classification binaire. Il est conçu pour résoudre des problèmes où l'objectif est de déterminer si une entrée donnée appartient ou non à une classe particulière.

3.1. Apprentissage machine

Perceptron

3.1. Apprentissage machine

Perceptron

Perceptron en mettant à jour sa limite linéaire à mesure que d'autres exemples de formation sont ajoutés.1
  1. Source: https://en.wikipedia.org/wiki/File:Perceptron_example.svg

3.1. Apprentissage machine

Perceptron

Perceptron

3.1. Apprentissage machine

Perceptron: Définition formelle

3.1. Apprentissage machine

Perceptron: Définition formelle

3.1. Apprentissage machine

Perceptron : Étapes

  1. Initialiser les poids et les seuils
  2. Pour chaque exemple, \((x_j, d_j)\) dans l'ensemble d'entraînement
    • Calculer la sortie actuelle : \[y_j(t)= f[w(t).x_j]\] \[= f[w_0(t)x_{j,0} + w_1(t)x_{j,1} + w_2(t)x_{j,2} + \dotsb + w_n(t)x_{j,n}]\]
    • Calculer le poids: \[w_i(t + 1) = w_i(t) + r. (d_j-y_j(t))x_{j,i}\]
    \(r\) est le taux d'apprentissage.

3.1. Apprentissage machine

Perceptron : Étapes

  1. Répétez l'étape 2 jusqu'à l'erreur d'itération \[\frac{1}{s} (Σ |d_j - y_j(t)|)\] est inférieur au seuil spécifié par l'utilisateur \(\gamma\), ou un nombre prédéterminé d'itérations ont été effectuées, où \(s\) est à nouveau la taille de l'ensemble de l'échantillon.

3.1. Apprentissage machine

Fonction d'Échelon (Step Function)

Le perceptron utilise généralement une fonction d'activation simple, et la fonction d'échelon (step function) est fréquemment choisie pour cette tâche.

Définition

La fonction d'échelon attribue une sortie de 1 si la somme pondérée des entrées dépasse un certain seuil, et 0 sinon.

\( f(x) = \begin{cases} 1 & \text{si } x \geq \text{seuil} \\ 0 & \text{sinon} \end{cases} \)

3.1. Apprentissage machine

Fonction d'activation: fonction d'identité

Équation

\[f(x)=x\]

Dérivée

\[f'(x)=1\]

Fonction d'identité

3.1. Apprentissage machine

Fonction d'activation: pas binaire

Équation

\[f(x) = \begin{cases} 0 & \text{for } x < 0\\ 1 & \text{for } x \ge 0 \end{cases} \]

Dérivée

\[f'(x) = \begin{cases} 0 & \text{for } x \ne 0\\ ? & \text{for } x = 0\end{cases}\]

Pas binaire

3.1. Apprentissage machine

Fonction d'activation: fonction sigmoïde

Équation

\[f(x)=\sigma(x)=\frac{1}{1+e^{-x}}\]

Dérivée

\[f'(x)=f(x)(1-f(x))\]

La fonction sigmoïde

3.1. Apprentissage machine

Fonction d'activation: TanH

Équation

\[f(x)=\tanh(x)=\frac{(e^{x} - e^{-x})}{(e^{x} + e^{-x})}\]

Dérivée

\[f'(x)=1-f(x)^2\]

TanH

3.1. Apprentissage machine

Fonction d'activation: Rectified linear unit: ReLU

Équation

\[f(x) = \begin{cases} 0 & \text{for } x \le 0\\ x & \text{for } x > 0\end{cases} = \max\{0,x\}= x \textbf{1}_{x>0}\]

Dérivée

\[f'(x) = \begin{cases} 0 & \text{for } x \le 0\\ 1 & \text{for } x > 0\end{cases}\]

Unité linéaire rectifiée (ReLU)

3.1. Apprentissage machine

Fonction d'activation: Gaussien

Équation

\[f(x)=e^{-x^2}\]

Dérivée

\[f'(x)=-2xe^{-x^2}\]

Gaussien

3.1. Apprentissage machine

Perceptron multiclasse

3.2. Apprentissage profond

Un réseau de neurones profond, également connu sous le nom de réseau de neurones profondément hiérarchisé ou réseau neuronal profond (DNN pour Deep Neural Network en anglais), est un type de réseau de neurones artificiels qui comprend plusieurs couches de traitement, généralement plus de deux. Ces réseaux sont appelés "profonds" en raison de leur architecture empilée de couches, permettant la création de représentations hiérarchiques complexes des données.

Architecture en couches : Les réseaux de neurones profonds sont composés de multiples couches, généralement divisées en trois types principaux :

3.2. Apprentissage profond

L'entraînement de réseaux de neurones profonds peut nécessiter des volumes importants de données et de puissance de calcul.

3.2. Apprentissage profond

Apprentissage profond

3.2. Apprentissage profond

Exemple: Tensorflow

# Importation des bibliothèques nécessaires de TensorFlow
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD

# Étape 1: Création d'un modèle séquentiel
model = Sequential()

# Étape 2: Ajout d'une couche dense avec une fonction d'activation ReLU
# La couche a 4 neurones, une fonction d'activation 'relu', et prend une entrée de forme (3,)
model.add(Dense(4, activation='relu', input_shape=(3,)))

3.2. Apprentissage profond

Exemple: Tensorflow

# Étape 3: Ajout d'une couche dense de sortie avec une fonction d'activation softmax
# La couche a 2 neurones pour une tâche de classification binaire, et softmax est utilisé
# pour obtenir des probabilités
model.add(Dense(units=2, activation='softmax'))

# Étape 4: Compilation du modèle
# Utilisation de la descente de gradient stochastique (SGD) comme optimiseur avec un taux d'apprentissage de 0.01
# La fonction de perte est 'mean_squared_error' pour un problème de régression
# Les performances du modèle seront mesurées en termes de 'accuracy' (précision)
sgd = SGD(lr=0.01)
model.compile(loss='mean_squared_error', optimizer=sgd, metrics=['accuracy'])

3.2. Apprentissage profond

3.2. Apprentissage profond

Source: https://playground.tensorflow.org/

3.2. Apprentissage profond

Source: https://playground.tensorflow.org/

3.2. Apprentissage profond

Composants des réseaux de neurones artificiels

Organisation

Un réseau de neurones profond est une architecture complexe où l'information circule de la couche d'entrée à travers les couches cachées jusqu'à la couche de sortie. Chaque connexion entre les neurones est associée à un poids qui est ajusté pendant le processus d'apprentissage pour optimiser les performances du modèle sur la tâche spécifique. L'utilisation de plusieurs couches cachées permet au réseau d'apprendre des représentations de plus en plus abstraites et complexes des données.

3.2. Apprentissage profond

Composants des réseaux de neurones artificiels

Organisation

3.2. Apprentissage profond

Composants des réseaux de neurones artificiels

Organisation et connectivité

Connectivité entièrement connectée: Dans une connectivité entièrement connectée, chaque neurone d'une couche est connecté à chaque neurone de la couche suivante. Cela signifie que toutes les informations de la couche précédente sont transmises à chaque neurone de la couche suivante. C'est la configuration la plus courante dans les couches totalement connectées, généralement présentes dans les parties du réseau proches de la sortie.

3.2. Apprentissage profond

Réseaux de neurones convolutionnels

Source: https://en.wikipedia.org/wiki/File:Deep_Learning.jpg

3.2. Apprentissage profond

Réseaux de neurones convolutionnels

3.2. Apprentissage profond

Réseaux de neurones convolutionnels

Les réseaux de neurones convolutionnels (CNN) sont une classe d'architectures de réseaux neuronaux conçues principalement pour l'analyse des images. Ils ont été particulièrement efficaces dans des tâches telles que la classification d'images, la détection d'objets, et la segmentation d'images.

3.2. Apprentissage profond

Réseaux de neurones convolutionnels

3.2. Apprentissage profond

Réseaux de neurones convolutionnels

3.2. Apprentissage profond

Réseaux de neurones convolutionnels: architecture

3.2. Apprentissage profond

Réseaux de neurones convolutionnels: architecture

En résumé, les CNN suivent une architecture hiérarchique, où les couches convolutives apprennent des caractéristiques locales, et ces caractéristiques sont ensuite combinées dans les couches suivantes pour former des représentations plus complexes. La non-linéarité introduite par la fonction d'activation ReLU est cruciale pour permettre au modèle d'apprendre des relations non linéaires dans les données.

3.2. Apprentissage profond

Noyau (traitement d'image)

Un noyau dans le contexte du traitement d'images, également appelé filtre ou masque, est une petite matrice qui est appliquée sur une image à l'aide d'une opération de convolution. L'objectif de l'application de ces noyaux est de réaliser diverses opérations de filtrage sur l'image, telles que la détection de contours, l'amélioration des détails, la mise en évidence de certaines caractéristiques, etc.

3.2. Apprentissage profond

Noyau (traitement d'image)

3.2. Apprentissage profond

Noyau (traitement d'image)

3.3. Apprentissage par renforcement

Apprentissage par renforcement

  • L'apprentissage par renforcement (Reinforcement Learning - RL) est une branche de l'apprentissage automatique inspirée des théories de la psychologie animale.
  • Agent autonome : RL implique un agent autonome interagissant avec un environnement.
  • Prise de décision : L'agent prend des décisions en fonction de son état actuel.
  • Récompenses et pénalités : L'environnement fournit à l'agent des récompenses, qui peuvent être positives ou négatives.
  • Objectif : L'objectif est de maximiser la somme des récompenses cumulatives au fil du temps.

3.4. Licences, Ethiques et la vie privé

Licences, Éthique et la vie privé

3.4. Licences, Ethiques et la vie privé

Exemples: Creative Commons (CC)

3.4. Licences, Ethiques et la vie privé

Exemples: Creative Commons (CC)

3.4. Licences, Ethiques et la vie privé

Données ouvertes

3.4. Licences, Ethiques et la vie privé

Données ouvertes liées (Linked Open data: LOD)

3.4. Licences, Ethiques et la vie privé

Données archivées

Références

Ressources en ligne

Références

Couleurs

Images