Home IREN: Introduction aux réseaux neuronnaux
Post
Cancel

IREN: Introduction aux réseaux neuronnaux

Lien de la note Hackmd

Index du cours

Un neurone

  • On reflechis selon les impulsions electriques dans notre cerveau
  • Il y a des seuils pour les impulsions electriques

  • Poid: $w_0$
  • Energie de la part du voisin: $x_0$
  • Si on a une mauvaise “connexion”, on recoit pas ou peu les informations des voisins
  • On a une fonction d’activation $f$ (seuil) pour savoir si on ressort du neurone
  • A la sortie on a une combinaison lineaire de l’entree de base
    • La fonction d’activation casse la linearite
    • Les problemes ne se reglent pas lineairement a chaque fois

Les maths d’un neurone

  1. $z=b+\sum_iw_ix_i$
  2. $y=\sigma(z)$

avec

  • les $i$ entrees $x_i$
  • $b$ le biais
  • $w_i$ les poids
  • $\sigma$ la fonction d’activation

  • ReLU:
    • cancer ? $2,5$ en reponse
  • Logistique (sigmoide)
    • vrai ou faux
  • Tangente hyperbolique
    • Varie de $-1$ a $1$
    • Choisi entre vrai ou faux

Un premier reseau neuronal

Évaluer les couples d’entrée $(1,1)$, $(0,1)$, $(1,0)$ et $(0,0)$ avec $\sigma$ une logistique

  • $(0,0) = 0$

Construction d’un reseau neuronal

Pour construire un réseau neuronal par apprentissage supervisé il faut :

  • un grand jeu de données étiquetées par la sortie voulue
  • définir l’architecture du réseau avec
    • le nombre de couches
    • les types de couches
    • le nombre de nœuds par couche
    • les fonctions d’activations
    • les connexions inter-couches
    • toutes astuces qui fonctionnent
  • une fonction d’erreur pour guider la correction sur les poids
  • une méthode pour faire converger le réseau (trouver les bons poids)

En cas de problème, on sacrifie un poulet.

Les donnees

Les données doivent être

  • très nombreuses (assez pour définir toutes les inconnues du réseau)
  • de bonne qualité (pour ne pas tromper le réseau)

On appronfondira avec des exemples et l’utilisation de Pandas pour nettoyer les données.

Est-ce un champignon ? Précision suivant la qualité des étiquettes.

L’architecture du réseau

C’est la partie tactique et artistique.

L’étude des différents réseaux n’entre pas dans le cadre de ce cours d’introduction. On se limitera à quelques réseaux lors des TP.

La fonction d’erreur

La fonction d’erreur indique de combien le réseau s’est trompé par rapport à la vérité terrain ($y$ vs $t$). Elle doit

  • être dérivable
  • correspondre au problème traité

Cette fonction est aussi appelée fonction de coût (cost function ou loss function en anglais).

Exemple

  • L’erreur quadratique $E = (y − t)^2$
  • $E = \log(\cosh(y − t))$ quadratique puis linéaire lorsque l’écart croît
  • L’entropie croisée pour des probabilités (valeurs entre $0$ et $1$)
\[E=-\sum_kt_k\log(y_k)+(1-t_k)\log(1-y_k)\]

Une méthode pour trouver les bons poids

Comment l’erreur nous guide pour trouver les poids ?

Exemple

Vous êtes le directeur et tous les jours vous invitez votre équipe à déjeuner. Il y a le choix entre le plat A, B ou C. Vous payez chaque jour l’addition.

Avec les données $[(5,3,2), 114]$, $[(6,2,2), 108]$, $[(3,4,5), 147]$ qui correspondent aux quantités de chaque plat et au prix global, déduire le prix de chaque plat par une méthode d’apprentissage

Que proposez-vous ?

C’est une equations a 3 inconnues mais on veut faire apprendre au reseau de neurones.

Supposons qu’on met tous les prix a 10euros et qu’au lieu de payer 100euros pour 10 plats, on paye 114euros. Reflechir comme un reseau neuronal:

  • On augmente tous les prix
  • On augment les poids en fonction du nombre de fois ou un plat a ete prit
    • On fait un pourcentage $\rightarrow$ $50%$
      • La somme de tous les $i$ divise par $i_0$

Utilisons l’erreur pour corriger les poids

L’algorithme consiste à trouver les $w_i$ qui minimisent l’erreur :

  1. On initialise les poids à une valeur probable (disons 10 pour tous)
  2. On corrige les poids au prorata de leur part dans l’erreur $E = y − t$ :

\(w_j = w_j − \eta d_j\)

  • $d_j = \frac{E\times i_j}{\sum_ki_k}$
  • $\eta$ petit pour éviter de sur-corriger

Déroulons l’algorithme avec $\eta = \frac{1}{10}$:

  • $[(5,3,2), 114]$ Notre prix estimé est de 100.
    • $d_0=\frac{(y-t)\times i_0}{10} = -7.0$ donc $w_0=10+0.70=10.7$
    • $d_1=\frac{(y-t)\times i_1}{10} = -4.2$ donc $w_0=10+0.42=10.42$
    • $d_2=\frac{(y-t)\times i_2}{10} = -2.8$ donc $w_0=10+0.28=10.28$
  • $[(6,2,2), 108]$ Notre prix estimé est de 105.6 et on obtient
    • $w_0=10.84$, $w_1=10.46$ et $w_2=10.33$
  • $[(3,4,5), 147]$ Notre prix estimé est de 126.04 et on obtient
    • $w_0=11.37$, $w_1=11.16$ et $w_2=11.20$

On peut rejouer les données jusqu’à converger

  • la convergence peut être longue avec un petit $\eta$
  • cela peut diverger avec un trop grand $\eta$

Rétropropagation du gradient

Fonction logistique

Calculons l’influence du poids $w_{2,2}^2$ sur l’erreur quadratique $E:\frac{\delta E}{\delta w_{2,2}^2}$

La derivee partielle de $y$ par rapport a $z$ est $y(1-y)$

C’est $e^x$ qui se balade. Il croise $2$ tout panique qui lui dit “Derivee me court apres!” et part en courant pendant que $e^x$ se marre. Ensuite $e^x$ tombe sur un gars qui cherche quelqu’un, et le gars lui demande “T’as pas peur de moi ?”, $e^x$ repond “Bah non pourquoi?”, le gars lui repond “Bah parce que je suis $\frac{d}{dy}$”

Que vaut le gradient de $E :\nabla E$?

Pourquoi ce titre ?

This post is licensed under CC BY 4.0 by the author.