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.
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. 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
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. 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
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. 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. 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('
25. Vrai positif Faux positif
Vrai négatif Faux négatif
Rapporté
par le RN
Objectif
26. 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
27. 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
28. 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
29. AMÉLIORATION DE LA BASE
Augmentation de la taille
Variété des situations
Inclusion des cas particuliers rencontrés
Accumulation d'expérience
31. CONFIGURATION DU RN
Vecteurs d'entrée
Couches intermédiaires
et neurones cachés
Fonction d'activation
Vecteur de sortie
32. 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
33. SYNOPSIS
Selection d'une base de données d'apprentissage
Configuration du RN
Apprentissage
Validation sur des données de tests
Retroaction
43. 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