Guillaume Chevalier - Deep learning avec tensor flow
- 2. AI, ML, DL… ?
Réseaux de neurones linéaires (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 3. AI, ML, DL… ?
Réseaux de neurones linéaires (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 6. GPU vs CPU : Loi de Moore
GFLOPS =
Giga A.K.A. (10³)³
FLoating
Point
Operations
Per
Second.
- 8. Ray Kurzweil
Directeur de l'ingénierie de
Google
Un futuriste bien connu
Sur ses 147 prédictions depuis les
années 1990, Kurzweil dit avoir
un taux d'exactitude de 86%
Selon lui, la singularité arrivera en
2029 environ
Page wiki intéressante :
https://en.wikipedia.org/wiki/Predictions_made_by_Ray_Kurzweil
- 9. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 15. Analogie : régression linéaire, les moindres carrés
But : créer un modèle mathématique en fonction des données.
Fonction d’objectif à minimiser :
E = Σ( (y - Y)² )
Modèle :
Y = a⋅x + b
Apprentissage itératif :
a = a - k*dE/da
b = b - k*dE/db
- 16. Minimiser l’erreur à la sortie du réseau:
E = Erreur quadratique totale (Mean Squared Error - MSE).
Puis, apprentissage par ajustement des poids:
Comparaison des résultats pour apprentissage
- 17. Plan :
y(x) = a⋅x + b
Plan d'un plan :
Avec h(x) = a⋅x + b :
y(x) = c⋅h(x) + d = c⋅(a⋅x + b) + d
y(x) = m⋅x + e
⇒ Le plan d’un plan reste un plan.
Non-linéarités
- 19. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 21. Une solution : ReLU
Utiliser le “Rectifier Linear Unit” (ReLU, à droite) :
- 22. Solution supplémentaire : Highway network
Couches de neurones “highway” avec connections résiduelles :
Simple addition entre les entrées et les sorties d’une même couche.
Permet une propagation aisée des gradients lors de la dérivation.
- 23. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 26. Vue détaillée d’un RNN sur 4 temps : plusieurs
sorties
Aussi : Backpropagation Through Time (BPTT)
- 31. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 40. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 46. “king - man + woman = queen”
Mathématique des mots possibles et fonctionne pour :
Masculin vs féminin
Singulier vs pluriel
Changer les temps de verbes
Pays vers capitales, et l’inverse
Etc…
1 mot = 1 vecteur
- 47. Exemples
En pratique : cela peut être fait avec des architectures
Skip-gram ou CBOW à la seq2seq ou à la word2vec.
- 51. Traiter différents types de signaux
Combiner avec les CNN qui sont très utile pour des données spatiales
(CNN pas abordés dans cette présentation)
- 52. Applications possibles… beaucoup !
Traduction dans n’importe quelle langues (E.x.: Google Traduction)
Texte vers images, ou images vers texte (E.x.: Google Images)
Synthétisation/interprétation d’audio ou de voix (E.x.: Siri)
Systèmes de recommandation (E.x.: Netflix, Youtube)
Vision: interprétation/génération de vidéo
Prédiction des marchés boursiers pour le trading à haute fréquence
Analyse de sentiments à partir de textes (peut être combiné pour la prédiction de marchés boursiers)
Génération de texte / chatbots (E.x.: Siri? Cleverbot?)
Transfert de style visuel pour les images
- 55. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 56. Mécanisme d’attention
Attention (a.tɑ̃.sjɔ̃) :
« L'attention est la prise de possession par l'esprit, sous une forme claire et vive,
d'un objet ou d'une suite de pensées parmi plusieurs qui semblent possibles
[…] Elle implique le retrait de certains objets afin de traiter plus efficacement les
autres » — William James
- 65. AI, ML, DL… ?
Réseaux de neurones (NN)
Vers des architectures plus profondes
Réseaux de neurones récurrents (RNN)
Long Short-Term Memory cells (LSTM RNN)
Encodeurs, Décodeurs, Séquences vers séquences (seq2seq)
Autres modèles avancés
Exercices
- 66. TensorFlow
Graphe pour un réseau de
neurones à 2 couches avec
ReLU, pour classification.
Puis à droite, un graphe
comparatif simplifié pour
une régression linéaire.
y
MSE
y_model
x
- 67. Régression linéaire avec TensorFlow
import tensorflow as tf
import numpy as np
trX, trY = someTrainingData(...) # Données linéaires avec un peu de bruit
X = tf.placeholder("float") # Données d’entrée du graphe TensorFlow
Y = tf.placeholder("float")
w = tf.Variable(0.0, name="weights") # Variable modifiable pour l’apprentissage
y_model = tf.multiply(X, w)
cost = tf.square(Y - y_model) # MSE (minimiser une “loss” selon les moindres carrés)
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) # Demander “train_op” plus tard roulera une étape d’optimisation
with tf.Session() as sess: # Rouler le graphe dans une session pour l’entrainement
tf.global_variables_initializer().run() # Initialiser les variables (ici, seulement “w”)
for i in range(100):
for (x, y) in zip(trX, trY): # Pour chaques données disponibles
sess.run(train_op, feed_dict={X: x, Y: y}) # Étape d’entrainement
prediction = sess.run(y_model, feed_dict={X: trX[0]}) # Prédiction pour le premier point d'entrainement
- 68. Démo et Exercices
Avec TensorFlow :
https://github.com/guillaume-chevalier/LSTM-Human-Activity-Recognition
https://github.com/guillaume-chevalier/seq2seq-signal-prediction
Tout cela est aussi accessible dans le ZIP au lien drive envoyé par courriel :
https://drive.google.com/drive/folders/0B1BexDr8jCulME16NlVIN3J1akk?usp=sharing