SlideShare une entreprise Scribd logo
Deep Learning avec
TensorFlow, #WAQ17
Guillaume Chevalier
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
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
AI, ML, DL... ?
AI, ML, DL... ?
GPU vs CPU : Loi de Moore
GFLOPS =
Giga A.K.A. (10³)³
FLoating
Point
Operations
Per
Second.
Évolution des composantes du iPhone
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
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
Inspiré du neurone biologique
Le neurone artificiel
GFLOPS !
Réseaux de neurones
3 couches (layers)
2 couches (layers)
Représentation de fonctions : régression et
classification
Processus d’apprentissage supervisé
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
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
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
Quelques fonctions d’activation (non-linéarités)
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
Problèmes avec réseaux profonds
Non linéarité d’une non linéarité d’une […] = 0
Une solution : ReLU
Utiliser le “Rectifier Linear Unit” (ReLU, à droite) :
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.
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
(Feedforward) (Decoder) (Encoder) (seq2seq) (seq2seq)
Réseaux de neurones récurrents
Vue détaillée d’un RNN sur 4 temps
Vue détaillée d’un RNN sur 4 temps : plusieurs
sorties
Aussi : Backpropagation Through Time (BPTT)
Autre visualisation
Autre visualisation
Architecture bidirectionnelle
Plusieurs couches (stacked cells)
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
Problèmes de profondeur avec les RNNs...
Problèmes de profondeur avec les RNNs...
ლ(ಠ益ಠლ)
Solution : Long Short-Term Memory cells (LSTM)
RNN :
LSTM :
Solution : Long Short-Term Memory cells (LSTM)
RNN :
Solution : Long Short-Term Memory cells (LSTM)
LSTM :
Guillaume Chevalier - Deep learning avec tensor flow
Équations de la cellule LSTM
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
Encodeurs
Encodent l’information pour créer un état de la pensée
Décodeurs
Décodent un état de pensée en une autre séquence temporelle.
Encodeur + Décodeur = seq2seq
Une séquence vers une séquence :
Générer des phrases
Inversion des phrases pour la traduction
[…] think I ⇒ Je pense […]
“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
Exemples
En pratique : cela peut être fait avec des architectures
Skip-gram ou CBOW à la seq2seq ou à la word2vec.
Similarité cosinus
Exemple high-level de traitement de phrases
The cat sat on the mat
Exemple high-level de traitement de phrases
The cat sat on the mat
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)
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
Transfert de style
“Neural Style Transfer”. Maintenant mieux que “Deep Dream”.
+
=
Transfert de style : autres essais
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
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
Décodeur avec attention
Détails du mécanisme d’attention
Similarité cosinus
Exemple sur une phrase
Exemple sur de l’audio
Exemple sur la description automatique d’images
Neural Turing Machines (NTM)
Adaptive Computation Time (ACT)
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
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
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
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
Fin
Questions?
Sources
https://github.com/guillaume-chevalier/awesome-deep-learning-resources
https://trends.google.ca/trends/explore?date=all&q=machine%20learning,deep%20learning,data%20science,computer%20programming
http://code-bg.com/blogo/?p=1114
https://www.extremetech.com/computing/189787-apples-a8-soc-analyzed-the-iphone-6-chip-is-a-2-billion-transistor-20nm-monster
https://whatsthebigdata.com/2016/10/17/visually-linking-ai-machine-learning-deep-learning-big-data-and-data-science/
https://en.wikipedia.org/wiki/Predictions_made_by_Ray_Kurzweil
http://www.sciencealert.com/google-s-director-of-engineering-claims-that-the-singularity-will-happen-by-2029
http://cs231n.github.io/neural-networks-1/
https://en.wikipedia.org/wiki/Linear_regression
https://twitter.com/jtoy/status/837360645121183744/photo/1
https://twitter.com/_rockt/status/831247449255768064/photo/1
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
http://redcatlabs.com/2015-01-15_Presentation-PyDataSG/#/
https://www.tensorflow.org/tutorials/word2vec
http://sanjaymeena.io/tech/word-embeddings/
https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/
http://eric-yuan.me/rnn2-lstm/
http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
https://www.slideshare.net/deview/2a4deeplearningatnaver
http://stackoverflow.com/questions/31487192/advantages-of-rnn-over-dnn-in-prediction
https://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/
https://esciencegroup.com/2016/03/04/fun-with-recurrent-neural-nets-one-more-dive-into-cntk-and-tensorflow/
https://research.googleblog.com/2015/11/computer-respond-to-this-email.html
http://distill.pub/2016/augmented-rnns/
https://en.wikipedia.org/wiki/Cosine_similarity
http://www.datasciencecentral.com/profiles/blogs/google-open-source-tensorflow
https://www.tensorflow.org/
https://github.com/nlintz/TensorFlow-Tutorials/blob/master/01_linear_regression.py
https://github.com/guillaume-chevalier/LSTM-Human-Activity-Recognition
https://github.com/guillaume-chevalier/HAR-stacked-residual-bidir-LSTMs
https://github.com/guillaume-chevalier/seq2seq-signal-prediction/tree/francais

Contenu connexe

Guillaume Chevalier - Deep learning avec tensor flow