Introduction à la data-science et à ses outils


Master, Paris Est MLV

@comeetie

Réseau de neuronnes


Apprendre à étiqueter

Master, Paris Est-MLV

@comeetie

Neuronne formel ?

McCulloch, W. S., Pitts, W., A Logical Calculus of the Ideas Immanent in Nervous Activity, Bulletin of Mathematical Biophysics, vol. 5, pp. 115-133, 1943. $$\mathbb{R}^p\rightarrow\mathbb{R}$$ $$s=\Phi(\mathbf{x}^t\mathbf{w}+b)$$ Transformation linéaire suivie d'une transformation non-linéaire $\Phi$ :

Brique de base pour construire des réseau

Neuronne formel ?

$$\Phi(\mathbf{x}^t\mathbf{w}+b)$$ Transformation linéaire suivie d'une transformation non-linéaire $\Phi$ :

Brique de base pour construire des réseaux

Fonction d'activation

$$\Phi(\mathbf{x}^t\mathbf{w}+b)$$

Tangeante hyperbolique

Fonction d'activation

$$\Phi(\mathbf{x}^t\mathbf{w}+b)$$

Sigmoide

Fonction d'activation

$$\Phi(\mathbf{x}^t\mathbf{w}+b)$$

ReLu

Apprentissage supervisé

Perceptron Multi-couche. Agencement des neurones en couches des entrées $\mathbf{x}$ aux sorties $\mathbf{y}$ Ensemble des poids : $\theta = [(\mathbf{w}_1,b_1)...,(\mathbf{w}_M,b_m)]$

Apprentissage supervisé

Perceptron Multi-couche. Agencement des neurones en couches des entrées $\mathbf{x}$ aux sorties $\mathbf{y}$ $$G(\mathbf{x}_i,\mathbf{\theta})_r=\phi^2(b_r^2+\sum_{q=1}^Qw_{rq}^2\phi^1(b_q^1+\sum_{p=1}^Pw_{qp}^1x_{ip}))$$

Réseau : Perceptron Multi-couche

Architecture : Fonction de coût $H(G(\mathbf{x},\mathbf{\theta}),y)$, et fonction d'activation terminale :

Réseau : Perceptron Multi-couche

Apprentissage

Descente de gradient, règle de mise a jour :

$$\mathbf{\theta} \leftarrow \mathbf{\theta}-\color{red}\lambda\frac{\delta H(\mathbf{\theta})}{\delta \mathbf{\theta}}$$

Descente de gradient, règle de mise a jour :

$$\mathbf{\theta} \leftarrow \mathbf{\theta}-\color{red}\lambda\frac{\delta H(\mathbf{\theta})}{\delta \mathbf{\theta}}$$

Descente de gradient, différentiation automatique

Vrai changement !
Introduction de libraries de calcul permetant de construire automatiquement les fonctions de calcul de gradient.

Descente de gradient stochastique

$$ H(\mathbf{X},\mathbf{y},\mathbf{\theta})= \sum_{i=1}^NH(G(\mathbf{x}_i,\mathbf{\theta}),y_i)$$ Faire $m$ balayage du jeu de données (epochs)
$\Rightarrow$Faible complexité, fonctionne sur de gros jeux de données
$\Rightarrow$Variante faisant intervenir la dynamique des vecteurs de mise a jour :
rmsprop, Adam,...

Eviter le sur-apprentissage


Différentes méthodes, ex :

Eviter le sur-apprentissage

Réglage des hyperparamètres :

Architecture :

Optimisation :

Utilisation d'une estimation de l'erreur de généralisation
(ensemble de validation, validation croisée)
http://playground.tensorflow.org

Apprentissage non supervisé

Auto-encoders

Apprentissage non supervisé

Auto-encoders

Données particulières images, texte, séquences, série temporelle

Images

$\Rightarrow$ convolution, pooling, partage spatial des poids (invariance par translation)
$\begin{bmatrix}0 & 1 & 0\\1 & -4 & 1\\0 & 1 & 0 \end{bmatrix}$

Images

$\Rightarrow$ convolution, pooling, partage spatial des poids (invariance par translation)

Texte

$\Rightarrow$ one-hot encoding, position dans le dictionaire $(0,0,...,1,...,0,0)$

Exemple wordEmbeding :


Construction du jeu de données d'apprentissage :

$\Rightarrow \mathbf{W}$ position des mots dans l'espace de projection

Texte, WordEmbedding

Séquences, séries temporelles

Réseau de neuronnes récurrents (RNN)

LSTM, GRU :

https://keras.io/

Libraririe de haut niveau pour définir et apprendre les paramètres d'un réseau
from keras.layers import Input, Dense
from keras.models import Model

# This returns a tensor
inputs = Input(shape=(784,))

# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)

# This creates a model that includes
# the Input layer and three Dense layers
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(data, labels)  # starts training