Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Premiers pas en deep learning avec Keras - Breizhcamp 2017

Premiers pas en deep learning avec Keras - Breizhcamp 2017

Premiers pas en deep learning avec Keras - Breizhcamp 2017

Manuel Verriez

April 20, 2017
Tweet

More Decks by Manuel Verriez

Other Decks in Science

Transcript

  1. deeP le)ning Reconnaissance d'images Un masque à gaz Détection d'éléments

    Une lampe Une statuette Un visage Reconnaissance de voix Ok Google! Traitement langage naturel Who is Hamlet's uncle? Conduite autonome Tout droit? Jeux Quel coup ?
  2. Classifions du vin avec Keras Alcool Acide malique Alcalinité des

    cendres Magnesium Phénols … OD280/OD315 Proline https://archive.ics.uci.edu/ml/datasets/Wine
  3. Classifions du vin avec Keras Alcool Acide malique Cendres Alcalinité

    des cendres Magnesium Phénols Flavanoïdes Non-Flavanoïdes Proanthocyanidins Intensité de la couleur Teinte OD280/OD315 Proline Producteur Input Output https://archive.ics.uci.edu/ml/datasets/Wine
  4. Classifions du vin avec Keras https://archive.ics.uci.edu/ml/datasets/Wine Alcool Acide malique Cendres

    Alcalinité des cendres Magnesium Phénols Flavanoïdes Non-Flavanoïdes Proanthocyanidins Intensité de la couleur Teinte Producteur Input Output ? Bouteille #1
  5. Classifions du vin avec Keras https://archive.ics.uci.edu/ml/datasets/Wine Alcool Acide malique Cendres

    Alcalinité des cendres Magnesium Phénols Flavanoïdes Non-Flavanoïdes Proanthocyanidins Intensité de la couleur Teinte Producteur Input Output 14.23 1.71 2.43 15.6 Producteur numéro 3 ! ? 40 15 1 10 14.6 18 21 Bouteille #1
  6. Classifions du vin avec Keras https://archive.ics.uci.edu/ml/datasets/Wine Alcool Acide malique Cendres

    Alcalinité des cendres Magnesium Phénols Flavanoïdes Non-Flavanoïdes Proanthocyanidins Intensité de la couleur Teinte Producteur Input Output 6 2 5 1,23 Producteur numéro 2 ! ? 14 7 9 1,2 14.6 18 21 Bouteille #2
  7. Modèle linéaire X (Vin) Y (Régression binômiale) Softmax (Y) Catégories

    (Producteurs) Y = W*X+B Softmax(Y) Cross- Entropy
  8. Réseau de neurones (MLP) -2 7 1 3 6 2

    5 -2*6 +7*2 + 5 + 3 Poids Biais ReLU
  9. Réseau de neurones - Entraînement -1 6 4 2 6

    2 5 -1*6 +6*2 + 4*5 + 2 Poids Biais ReLU Itération(s) suivante(s) - Optimisation
  10. Réseau de neurones - Entraînement -1 4 5 2 6

    2 5 -1*6 +4*2 + 5*5+ 2 Poids Biais Dernière itération ReLU
  11. Classifions du vin avec Keras MLP avec Keras. 1 “Input

    Layer” avec 13 noeuds en entrée + 1 (biais) 1 “Hidden Layer” avec 16 neurones 1 “Output Layer” avec 3 noeuds de sortie
  12. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20)
  13. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Model : Sequential ou Functional
  14. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Layer : Dense, Activation, Dropout, Flatten, Reshape, Permute, Merge, convolutional, recurrent, etc.
  15. Introduction à Keras model = Sequential() model.add(Dense(32, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Activation : softmax,softplus, softsign, relu, tanh, sigmoid, hard_sigmoid, linear
  16. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Initialisation des poids : uniform, lecun, normal, zero, one, etc.
  17. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation('sigmoid')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Objectives : categorical_crossent ropy, mse, binary_crossentropy, custom function, etc..
  18. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation('sigmoid')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Optimizer : adam, SGD, RMSProp, Adagrad, etc.
  19. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation('sigmoid')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Metrics : accuracy, mse, categorical_accurac y, etc.
  20. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) On entraîne le modèle avec X en entrée, y en sortie visée.
  21. Introduction à Keras model = Sequential() model.add(Dense(16, input_dim = 13,

    init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Donne le nombre itérations
  22. Introduction à Keras ras model = Sequential() model.add(Dense(16, input_dim =

    13, init='uniform', bias=True)) model.add(Activation('relu')) model.add(Dense(3, init='uniform')) model.add(Activation(‘softmax’)) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X, y, nb_epoch=200, validation_split=.20) Teste le modèle sur 20% des données
  23. Convolution (Petit) Réseau de neurones Input tile Output (Présence d'une

    bouteille) Répété pour chaque image (7x7) 1 0
  24. Classifions les images avec Keras Keras fournit des modèles pré-entrainés

    sur des catégories ImageNet: • VGG16 • VGG19 • Xception • Resnet50 • InceptionV3
  25. Classifions les images avec Keras Option #3 : Utilisation d'un

    réseau existant et ajout de nos catégories
  26. Que peut-on faire avec un RNN? • Génération de texte

    • Traduction automatisée • Reconnaissance vocale • Auto-tag d’images • Combiné avec CNN • Analyse sémantique • ...
  27. Compréhension de texte avec Keras Compréhension de texte: Facebook bAbI

    dataset (https://research.fb.com/projects/babi/) John travelled to the hallway. Walt journeyed to the bathroom. Daniel went back to the bathroom. John moved to the bedroom. Where is Walt? → bathroom Startup.ML Deep Learning Conference: François Chollet on Keras https://www.youtube.com/watch?v=YimQOpSRULY Single fact
  28. Compréhension de texte avec Keras Compréhension de texte: Facebook bAbI

    dataset (https://research.fb.com/projects/babi/) Startup.ML Deep Learning Conference: François Chollet on Keras https://www.youtube.com/watch?v=YimQOpSRULY Jesse is thirsty. Where will Jesse go? kitchen Jesse journeyed to the kitchen. Why did Jesse go to the kitchen? → thirsty Motivations
  29. Compréhension de texte avec Keras Compréhension de texte: Facebook bAbI

    dataset (https://research.fb.com/projects/babi/) Startup.ML Deep Learning Conference: François Chollet on Keras https://www.youtube.com/watch?v=YimQOpSRULY Mary and Daniel went to the bathroom. Then they journeyed to the hallway. Where is Daniel? →hallway Associations
  30. Compréhension de texte avec Keras Mary journeyed to the bathroom.

    ['Mary', 'journeyed', 'to', 'the', 'bathroom'] [4, 25, 2, 7, 102] Embedding 0.12 0.78 0.88 .. 0.47 0.98 0.66 0.45 0.10 .. 0.44 0.13 .. .. .. .. .. .. 0.11 0.07 0.94 0.7 0.8 0.45 RNN
  31. RNN avec Keras Compréhension de texte: MemNN network Startup.ML Deep

    Learning Conference: François Chollet on Keras https://www.youtube.com/watch?v=YimQOpSRULY
  32. RNN avec Keras input_encoder = Sequential() input_encoder.add(Embedding(input_dim=vocab_size, output_dim=64)) input_encoder.add(LSTM(64, return_sequences=False))

    # output shape: (samples, 64) question_encoder = Sequential() question_encoder.add(Embedding(input_dim=vocab_size, output_dim=64)) question_encoder.add(LSTM(64, return_sequences=False)) # output shape: (samples, 64) model = Sequential() model.add(Merge([input_encoder, question_encoder], mode='concat',concat_axis=-1)) # output shape: (samples, 64*2) model.add(Dense(vocab_size)) model.add(Activation('softmax')) # output a probability distribution over all words model.compile(optimizer='adam', loss='categorical_crossentropy') print 'Training - reporting test accuracy after every iterations over the training data...' model.fit([inputs_train, queries_train], answers_train, batch_size=32, nb_epoch=50, show_accuracy=True, validation_data=([inputs_test, queries_test], answers_test)) Startup.ML Deep Learning Conference: François Chollet on Keras https://bitbucket.org/fchollet/keras_workshop
  33. Pour aller plus loin • Import / export des modèles

    (avec ou sans poids) au format HDF5 • Import des modèles Keras vers Deeplearning4j • Distribution • GPU / Instances avec Tensorflow • Spark ( https://github.com/maxpumperla/elephas )
  34. Pour conclure Keras: https://keras.io Créé par François Chollet Août 2016

    - https://twitter.com/fchollet/status/765212287531495424
  35. Références Liens et références: https://keras.io https://archive.ics.uci.edu/ml/datasets/Wine http://ahogrammer.com/2016/11/15/deep-learning-enables-you-to-hide-screen-when-your-boss-is-approaching/ http://www.image-net.org/ https://yanpanlau.github.io/2016/10/11/Torcs-Keras.html http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/

    https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional-neural-networks- f40359318721#.qpo3wxhaq https://www.youtube.com/watch?v=YimQOpSRU Crédits images: http://www.amc.com Crédits icônes: http://www.flaticon.com/packs/essential-collection http://www.flaticon.com/packs/celebrations