Machine learning pour tous

1 186 vues

Publié le

Que faire quand vous avez du mal à trier et prioriser des informations ? La solution s'appelle Machine Learning. Le principe est simple : faire faire les apprentissages à une application pour qu'elle puisse classer, categoriser ou caracteriser différentes informations, sans les connaître initialement. Cela s'applique au spam, aux traductions ou même à la qualité de code. Le Machine Learning est parfois difficile à prendre en main avec de gros projets, alors nous verrons comment en faire sur des données plus modestes, et plus accessibles.

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 186
Sur SlideShare
0
Issues des intégrations
0
Intégrations
118
Actions
Partages
0
Téléchargements
26
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Machine learning pour tous

  1. 1. MACHINE LEARNING POUR TOUS L'éducation a des racines amères, mais ses fruits sont doux Forum AFUP, Paris, 2015
  2. 2. AGENDA Comment enseigner à un ordinateur Application à la recherche de code dans les commentaires Des apprentissages complexes
  3. 3. INTERVENANT Damien Seguy Directeur technique à Exakat Services d'analyse de code
  4. 4. APPLICATIONS Detection de fraude et estimation du risque Traduction automatique ou la transcription automatique Reconnaissance de caractères ou de visages Les diagnostics médicaux La reconnaissance de bon code PHP
  5. 5. MACHINE LEARNING Machine : l'ordinateur Learning : apprentissage Il se bâtit un modèle tout seul : phase d'entrainement Il propose alors des prédictions : phase d'utilisation
  6. 6. APPRENTISSAGE SURPERVISÉ Données Historiques Apprentissage ModèleDonnées réelles Résultat
  7. 7. APPLICATION PRATIQUE Détecter du code dans les commentaires Un problème classique Un bon problème de machine learning Complexe, pas de solution simple Permet de faire des tests avec beaucoup de données
  8. 8. THE FANN EXTENSION ext/fann (https://pecl.php.net/package/fann) Fast Artificial Neural Network http://leenissen.dk/fann/wp/ Réseaux Neuronaux en PHP
  9. 9. RÉSEAUX NEURONAUX Imitation de la nature Couche d'entrée Couche de sortie Neurones intermédiaires et couches de neurones
  10. 10. RÉSEAUX NEURONAUX Imitation de la nature Couche d'entrée Couche de sortie Neurones intermédiaires et couches de neurones
  11. 11. INITIALISATION <?php $num_layers  = 1; $num_input  = 5; $num_neurons_hidden = 3; $num_output  = 1; $ann = fann_create_standard($num_layers, $num_input,  $num_neurons_hidden, $num_output); // fonction d'activation fann_set_activation_function_hidden($ann,  FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output($ann,  FANN_SIGMOID_SYMMETRIC);
  12. 12. EXPERTISE // Test if the if is in a compressed format // none need yet // icon // There is a parser specified in `Parser::$KEYWORD_PARSERS` // Show generated config file in a <textarea> // numGlyphs + 1 // $a && $b and multidimensional // $result should exist, regardless of $_message // if(ob_get_clean()){ //$annots .= ' /StructParent '; // $cfg['Servers'][$i]['controlpass'] = 'pmapass';
  13. 13. VECTEUR D'ENTRÉE 'length' : taille du commentaire 'countDollar' : présence du $ 'countEqual' : présence du = 'countObjectOperator' présence du -> 'countSemicolon' : présence de ;
  14. 14. DONNÉES D'ENTRÉE 46 5 1 825 0 0 0 1 0 37 2 0 0 0 0 55 2 2 0 1 1 61 2 1 3 1 1 ...  * This file is part of Exakat.  *  * Exakat is free software: you can redist  * it under the terms of the GNU Affero Ge  * the Free Software Foundation, either ve  * (at your option) any later version.  *  * Exakat is distributed in the hope that   * but WITHOUT ANY WARRANTY; without even   * MERCHANTABILITY or FITNESS FOR A PARTIC  * GNU Affero General Public License for m  *  * You should have received a copy of the   * along with Exakat.  If not, see <http:/  *  * The latest code can be found at <http:/  * */ // $x[3] or $x[] and multidimensional //if ($round == 3) { die('Round '.$round); //$this->errors[] = $this->language->get('
  15. 15. APPRENTISSAGE $max_epochs  = 500000; $desired_error  = 0.001; // apprentissage lui-même if (fann_train_on_file($ann,  'leçon.data',  $max_epochs,  $epochs_between_reports,  $desired_error)) {         fann_save($ann, 'appris.out'); } fann_destroy($ann); ?>
  16. 16. APPRENTISSAGE 47 leçons 5 caractéristiques 3 neurones Durée d'exécution : 5,711 s
  17. 17. EXPLOITATION Données Historiques Apprentissage ModèleDonnées réelles Résultat
  18. 18. EXPLOITATION <?php  $ann = fann_create_from_file('appris.out');  $commentaire = "//$gvars = $this->getGraphicVars();"; $input  = makeVector($commentaire); $resultats = fann_run($ann, $input);  if ($resultats[0] > 0.8) {       print ""$commentaire" : -> $resultats[0] %n";  }  ?>
  19. 19. DONNÉES RÉELLES Testé sur 14093 cas Durée d'exécution 367.01ms Trouvé 665 cas (5%)
  20. 20. 99.999893 // $cfg['Servers'][$i]['controlhost'] = '';     99.999928 //$_SESSION['Import_message'] = $message->getDisplay();     /* 99.999928 if (defined('SESSIONUPLOAD')) {     // write sessionupload back into the loaded PMA session     $sessionupload = unserialize(SESSIONUPLOAD);     foreach ($sessionupload as $key => $value) {         $_SESSION[$key] = $value;     }     // remove session upload data that are not set anymore     foreach ($_SESSION as $key => $value) {         if (mb_substr($key, 0, mb_strlen(UPLOAD_PREFIX))             == UPLOAD_PREFIX             && ! isset($sessionupload[$key])         ) {             unset($_SESSION[$key]);         }     }
  21. 21. 98.780382 //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232     99.361396 // We have server(s) => apply default configuration      98.383027 // Duration = as configured     99.999928 // original -> translation mapping     97.590065 // = (   59 x 84   ) mm  = (  2.32 x 3.31  ) in    
  22. 22. Vrai positif Faux positif Vrai négatif Faux négatif Rapporté par le RN Objectif
  23. 23. Vrai positif Faux positif Vrai négatif Faux négatif Rapporté par le RN Objectif // $cfg['Servers'][$i]['table_coords'] = 'pma__tabl //(isset($attribs['height'])?$attribs['height']: 1) // if ($key != null) did not work for index "0"     // the PASSWORD() function     99.999923 73.295981 99.999851 2.104115
  24. 24. BILAN 665 code trouvés 72% de faux positifs mais après nettoyage facile, il reste 23% de faux positif Analyse de 14k commentaires en 367 ms // = (   59 x 84   ) mm  = (  2.32 x 3.31  ) in    
  25. 25. RETROACTION Amélioration de la base d'entrainement Ajout/retraits de caractéristiques Changement de configuration du RN Nouvel apprentissage Nouvelle validation Données réelles Données Historiques Apprentissage Modèle Résultat Rétraction
  26. 26. AMÉLIORATION DE LA BASE Augmentation de la taille Variété des situations Inclusion des cas particuliers rencontrés Accumulation d'expérience
  27. 27. REVUE DES CARACTÉRISTIQUES Ajouts de nouvelles caractéristiques Retrait des caractéristiques moins pertinentes
  28. 28. CONFIGURATION DU RN Vecteurs d'entrée Couches intermédiaires 
 et neurones cachés Fonction d'activation Vecteur de sortie
  29. 29. PILOTAGE AUTOMATIQUE Tester sur différentes
 configurations Identifier les résultats Idéalement, retirer 
 les faux positifs Résultats Nombre de couches Nombre de neurones
  30. 30. SYNOPSIS Selection d'une base de données d'apprentissage Configuration du RN Apprentissage Validation sur des données de tests Retroaction
  31. 31. AUTRESTECHNIQUES Réseaux Bayésiens Algorithmes génétiques Apprentissage par renforcement
  32. 32. APPRENTISSAGE PAR RENFORCEMENT Logiciel Monde réel Récompense ActionRéaction
  33. 33. FILTRES BAYESIENS
  34. 34. ALGORITHMES GÉNÉTIQUES Population Population Selection Reproduction PopulationVariations
  35. 35. QUELQUES OUTILS PHP ext/fann Langage R https://github.com/kachkaev/php-r Scikit-learn https://github.com/scikit-learn/scikit-learn Mahout https://mahout.apache.org/
  36. 36. MERCI @exakat http://joind.in/talk/view/15265
  37. 37. AUTRES CONFIGURATIONS Fonction d'activation FANN_SIGMOID_SYMMETRIC FANN_LINEAR FANN_THRESHOLD FANN_SIN_SYMMETRIC
  38. 38. Linéaire Seuil Tangeante Gaussienne Quadratique Sigmoide
  39. 39. QUELLES APPLICATIONS? Non-déterministe Elimination de tout ce qui est systématique à trouver Accès à l'expertise et aux vecteurs de caractéristiques Couche finale après les résultats Classification, priorisation, approximation rapide

×