3 types d’apprentissage en Machine Learning
L’apprentissage supervisé
C’est le plus courant. On demande au système d’apprendre une fonction de prédiction à partir d’exemples labellisés, où on connaît ce qu’on essaye de prédire.
Exemple : demander à notre machine de reconnaître une photo de chien, après lui avoir montré des millions de photos de chiens.
L’apprentissage non supervisé
C’est exactement l’inverse, on va demander au système de fournir ses résultats lui-même, sans lui donner d’exemples au préalable. On viendra labelliser ses réponses par la suite.
Exemple : demander à notre machine de séparer des consommateurs par comportement d’achat. La machine décidera peut-être de regrouper les personnes qui n’achètent que les produits qui sont en soldes.
L’apprentissage par renforcement
On retrouve souvent ce type d’apprentissage dans les jeux ou dans les véhicules autonomes. Le système apprend en interagissant avec son environnement et en apprenant des conséquences de ses actions. Le système est donc confronté à un dilemme : l’exploitation ou l’exploration.
- Exploitation : le système choisira des actions en fonction de ce qu’il a appris des conséquences de ses actions passées.
- Exploration : le système fera de nouveaux choix sans se baser sur ce qu’il connaît.
Quelle différence avec les réseaux de neurones ?
Le réseau de neurones
Le réseau de neurones c’est un type d’algorithmes, pas un type d’apprentissage. Le réseau de neurones peut être utilisé avec les trois types d’apprentissages cités précédemment.
L’avantage du réseau de neurones, c’est que le système va pouvoir prendre en compte de nombreux types d’inputs, et des relations complexes entre ces inputs. Là où un algorithme classique de Machine Learning réussit à modéliser une relation linéaire, simple, entre ses données d’entrée, les réseaux de neurones peuvent modéliser des relations plus complexes et donc traiter des images, des vidéos etc… C’est très puissant.
Quelles applications concrètes ?
Chez BBC Sounds j’ai mis en place un algorithme de recommandation (apprentissage supervisé). A partir de plein de données d’entrée, l’algorithme va recommander à chaque utilisateur des contenus à écouter. L’idée étant de lui recommander des contenus qu’il aime, mais aussi de lui faire découvrir des contenus qu’il ne connaît pas encore et qu’il aimera.
L’algorithme mis en place ici est appelé Factorization Machines et prend en compte les données d’écoute de l’utilisateur pour lequel on essaie de faire des recommandations – quel contenu l’utilisateur a écouté les 6 derniers mois, mais aussi celles d’autres utilisateurs – y a t-il des utilisateurs qui ont eu un comportement d’écoute similaire et desquels on pourrait apprendre quel contenu recommander? On parle de collaborative filtering. L’algorithme prend aussi en compte les caractéristiques des contenus consultés – genre, durée, ancienneté du contenu etc.
Des conseils pour choisir le bon algorithme, la bonne méthode ?
- Il faut déjà comprendre dans quel type d’apprentissage on se trouve. Supervisé, non supervisé, par renforcement ?
- Ensuite on peut essayer plusieurs algorithmes pour trouver celui qui collera le mieux à nos données.
- Dans un cas business, préférer un algorithme un peu moins performant mais avec des résultats compréhensibles, contrairement au Deep Learning qui est souvent plus performant mais pour lequel on a du mal à comprendre et justifier les enseignements.