Comment optimiser l'entraînement d'un algorithme grâce à l'apprentissage automatique

Découvrez les étapes essentielles pour entraîner efficacement un algorithme à l’aide des techniques d’apprentissage automatique. Ce guide complet aborde les principes fondamentaux, la préparation des données, la sélection des modèles et les méthodes d’évaluation nécessaires pour obtenir des performances optimales. Découvrez les meilleures pratiques et les stratégies avancées pour améliorer la précision et l’efficacité de vos modèles d’apprentissage automatique. Approfondissez votre compréhension et votre maîtrise de l’entraînement des algorithmes dans divers domaines.

Introduction à l’apprentissage d’un algorithme

À mesure que la technologie progresse, nos habitudes évoluent elles aussi. Dans l’ensemble, la technologie a pour but de nous faciliter la vie. Il suffit de penser à la façon dont nos téléphones se déverrouillent grâce à la reconnaissance faciale, à la manière dont nous suivons les livreurs de repas jusqu’à notre porte, ou encore aux applications qui nous aident à identifier les feuilles et les oiseaux que nous rencontrons lors de nos randonnées.

Tout comme elle transforme notre quotidien, la technologie modifie également notre façon de mener nos recherches. Cependant, en tant que chercheurs, nous voulons comprendre le fonctionnement de nos algorithmes, car il se passe bien plus de choses que nous ne le pensons lorsque notre application d’identification d’oiseaux nous propose une correspondance ou qu’une autre application nous invite à nous lever du canapé pour aller chercher notre pizza.

La plupart d’entre nous ont déjà entendu parler de termes tels que « apprentissage automatique », « traitement d’images » et « réseaux neuronaux » ; certains de ces termes sont souvent associés à la notion quelque peu inquiétante d’« intelligence artificielle ». L’idée est que la machine apprend en quelque sorte par elle-même, ce qui fait naître la crainte qu’elle puisse surpasser l’être humain.

En même temps, nous nous sommes tous déjà retrouvés, à un moment ou à un autre, à hurler sur notre « smartphone », notre « téléviseur » ou notre « montre connectée » après une expérience particulièrement frustrante, en traitant l’appareil de tout sauf « intelligent » ! Comprendre comment les machines apprennent nous permet d’utiliser efficacement cette technologie, et c’est exactement ce que ce blog s’efforce de faire.

Téléphone basique - algorithme d'apprentissage

Dans cet article, nous nous penchons sur les différentes méthodes permettant d’entraîner un algorithme afin d’illustrer le concept d’apprentissage automatique. De manière générale, on distingue deux types d’apprentissage : l’apprentissage supervisé et l’apprentissage non supervisé.

Comment entraîner votre algorithme : méthodes d’apprentissage supervisé et non supervisé

Imaginons que vous deviez entraîner des algorithmes pour classer des chocolats – et qui n’en rêverait pas ? Vous commencez donc par entraîner un algorithme afin qu’il puisse distinguer ce qui est du chocolat de ce qui ne l’est pas. Ensuite, vous entraînez un autre algorithme pour identifier toutes les variantes possibles d’une tablette de chocolat.

Pour le premier « problème », à savoir déterminer ce qui est du chocolat et ce qui ne l’est pas, vous pourriez commencer par alimenter l’algorithme avec une grande quantité de données sur divers produits alimentaires. Vous pourriez vous rendre au supermarché le plus proche, choisir différents emballages alimentaires et saisir leurs ingrédients dans l’algorithme. Vous pourriez ensuite classer chaque emballage contenant du cacao comme « chocolat » et tout le reste comme « non-chocolat ».

Voici ce que l’algorithme apprendrait de vous : si la liste des ingrédients contient du cacao, le produit peut être classé comme du chocolat. Bien que cela semble assez simple, cela peut entraîner des faux positifs : que se passe-t-il si vous avez simplement des noix enrobées de chocolat ? Ou un sachet de chocolat à boire ? Vous ne voulez pas que ces produits soient classés avec les tablettes de chocolat. Vous essayez donc de donner à votre algorithme des règles plus sophistiquées : par exemple, le produit doit être une tablette solide, peser un certain poids, ou peut-être qu’un codeur humain doit le classer comme « option de dessert valable », « option de cadeau valable », etc.

Au fur et à mesure que vous ajoutez des critères, votre algorithme apprend. Il apprend à partir des critères que vous lui fournissez et vous supervisez ce qu’il apprend. D’où le nom d’« apprentissage supervisé ». L’algorithme sera bientôt assez intelligent pour reconnaître un nouveau produit – qui ne figure pas dans la liste des paquets que vous lui avez fournis et qui proviennent de votre supermarché local – et déterminer s’il s’agit ou non de « chocolat ». Il fondera cette décision sur les critères qu’il aura appris de vous, et rien d’autre. Cela signifie que si vous ne lui avez pas fourni de chocolat ruby pour qu’il apprenne, il ne classera pas le chocolat ruby comme du chocolat. Si vos développeurs détestent le chocolat blanc et ne le classent pas comme une option de cadeau valable, votre algorithme ne le fera pas non plus.

Apprentissage automatique supervisé

Imaginez maintenant le deuxième problème : vous souhaitez que votre algorithme classe tous les types de fourrages ou de saveurs que peut avoir une barre chocolatée. Vous prendriez à nouveau un échantillon de votre supermarché local : certaines avec des noisettes, peut-être à l’orange, aux raisins secs, d’autres fourrées à l’alcool, mais cette liste ne serait pas exhaustive. Il serait extrêmement fastidieux de créer un algorithme d’apprentissage supervisé capable de classer chaque chocolat rencontré en fonction de son fourrage.

Pour ma part, je n’aurais jamais pensé à fournir à mon algorithme toutes les différentes variétés de fourrages à la réglisse avant de déménager au Danemark — ce qui signifie que mon algorithme supervisé n’aurait pas été capable de les classer. Dans ce cas, je pourrais choisir de créer un algorithme d’apprentissage non supervisé. Pour ce faire, je lui fournirais autant de variété que possible : des chocolats provenant des différents pays où j’ai vécu, des chocolats provenant des pays que j’ai visités, des chocolats provenant des pays où mes amis ont voyagé.

En entraînant l’algorithme sur toutes ces données, j’espère qu’il identifiera des catégories couvrant toutes les garnitures possibles pour une barre chocolatée. Peut-être qu’il se limitera aux fruits, aux noix et à la liqueur, comme je l’ai fait au départ, ou peut-être qu’il définira 10 catégories couvrant toute la gamme des chocolats utilisés pour l’entraînement. Quoi qu’il en soit, je ne connaîtrai pas son processus d’apprentissage, mais seulement les classifications finales obtenues.

Même si ce type d’apprentissage peut sembler être une « boîte noire », il ne faut pas oublier qu’il repose toujours sur les données que nous fournissons à l’algorithme. Dans cet exemple, si je lui fournis des ingrédients pour qu’il apprenne à classer les chocolats, c’est tout ce dont l’algorithme dispose pour prendre une décision. Il ne peut pas soudainement déterminer lesquels de ces chocolats constituent de bons cadeaux de pendaison de crémaillère. Nous facilitons simplement notre travail de codage en définissant toutes les catégories possibles, ou les exceptions à une catégorie.

Transposer ces connaissances dans iMotions

Lorsque nous commençons à combiner différents algorithmes, nous pouvons élaborer des solutions plus intelligentes à nos problèmes. Imaginez que l’on forme un ensemble d’algorithmes pour obtenir une fonctionnalité spécifique (une application pour choisir le chocolat parfait, ça vous dit ?) comme un entonnoir : on commence par former un algorithme pour traiter les grandes questions telles que « quel est le composant fondamental du chocolat » ? Ensuite, vous passez à l’entraînement d’un autre algorithme pour approfondir ce qui constitue le chocolat, et ainsi de suite – amenant vos algorithmes à devenir progressivement de plus en plus précis pour résoudre le problème très complexe suivant : quel est le chocolat parfait à offrir à quelqu’un ?

Chez iMotions, nous avons toute une série de problèmes complexes que nous aimons résoudre à l’aide d’algorithmes d’apprentissage automatique performants. Bon nombre de nos solutions font appel à l’apprentissage automatique, comme l’un de nos algorithmes de classification pour le suivi oculaire par webcam, appelé « modèles de Markov », et même certains des algorithmes développés par nos partenaires spécialisés dans l’analyse des expressions faciales. Penchons-nous sur notre plateforme iMotions, et plus particulièrement sur le suivi oculaire par webcam, pour voir comment l’apprentissage automatique mesure le suivi oculaire et améliore la qualité de vos données.

Lorsque vous créez une étude en ligne dans iMotions, vous avez la possibilité de l’envoyer à des centaines de participants via un lien afin de recueillir leurs mouvements oculaires (et leurs expressions faciales) grâce à leur webcam. Cela semble incroyablement compliqué, mais il ne s’agit en réalité que d’une série d’algorithmes d’apprentissage automatique appliqués étape par étape.

Première étape : où se trouve l’iris ?

La première chose que font nos algorithmes, c’est de repérer où se trouve le visage d’un participant. Cela ne signifie pas pour autant qu’ils identifient votre visage en particulier, comme le ferait votre téléphone pour se déverrouiller. Vous vous souvenez à quoi servent les différents algorithmes ? Celui-ci se contente de repérer les visages humains : s’agit-il d’un visage ou non ?

Vous pouvez constater cela en action avant même de commencer l’étude, lorsque la plateforme en ligne effectue une vérification préliminaire pour s’assurer que vos participants sont correctement assis. Une fois le visage identifié, nos algorithmes peuvent repérer les différentes parties du visage. Sans cette étape, l’algorithme ne saurait pas où chercher vos yeux. Cela signifie que l’algorithme a été entraîné à repérer les pupilles, ce qui lui permet ensuite de les identifier quel que soit l’endroit où elles se trouvent sur l’écran, c’est-à-dire même lorsqu’elles sont filmées par la caméra sous différents angles.

Une fois encore, il est important de comprendre que ces algorithmes ont été entraînés à partir de données de bonne qualité, provenant de personnes qui regardaient généralement l’appareil photo. Ainsi, si votre participant est allongé sur le canapé, dans une pièce faiblement éclairée, avec son ordinateur portable posé sur le ventre, l’algorithme pourrait avoir du mal à reconnaître le visage, sans parler de la position de l’iris, qui ne mesure que quelques pixels de large.

gros plan sur un œil

Deuxième étape : étalonnage

Il est important d’identifier correctement l’iris, car la précision de l’étape suivante – l’étalonnage – en dépend. L’algorithme suivant utilise les points de données issus des points d’étalonnage et calcule l’apparence de l’iris de ce participant lorsqu’il regarde différentes zones de l’écran.

Au cours de l’étalonnage, durant lequel nous présentons aux participants des points situés à différents endroits de l’écran, l’algorithme apprend comment les yeux se positionnent lorsqu’ils fixent ces points, qui couvrent l’ensemble de la zone de vision. Cela lui permet ensuite de calculer la position relative de l’œil par rapport à l’écran lorsque les participants regardent vos stimuli réels. C’est pourquoi il est important de suivre la procédure d’étalonnage recommandée, afin que notre algorithme puisse obtenir les informations dont il a besoin pour estimer les mouvements oculaires de vos participants.

Troisième étape : détection de la fixation

Même si la collecte de données d’oculométrie à l’aide d’une simple webcam constitue un exploit en soi, nous ne pouvons ignorer le fait que ce type de données reste très bruité. Si nous appliquions nos méthodes traditionnelles de classification des fixations et des saccades à ces données de capteur, nous commettrions l’erreur de classer à tort le bruit comme des fixations. Nous devons donc recourir une dernière fois à l’apprentissage automatique avant de pouvoir analyser notre étude, et ce, pour la classification des fixations.

Nous utilisons des modèles de Markov pour classer les fixations à partir de données d’oculométrie issues d’une webcam. Pour ce faire, nous indiquons à notre algorithme ce que sont les fixations et les saccades (respectivement, des points de données lents et proches les uns des autres à l’écran, ou des mouvements rapides sur de plus grandes distances), puis nous lui demandons de les rechercher dans l’ensemble de données concerné. Cela signifie que l’algorithme peut (1) ajuster la définition exacte de ce qu’est une fixation pour chaque participant (à quelle vitesse, à quelle distance), mais (2) identifier le bruit mieux que n’importe quel système de classification qui ne peut pas « apprendre » à partir de l’ensemble de données.

Un filtre de dispersion de durée classique, qui définit les fixations comme un ensemble de points adjacents, peut ne pas détecter le bruit spatial de faible intensité ; quant au filtre basé sur la vitesse, qui se contente de classer les mouvements rapides comme des saccades, il peut classer à tort les dérives importantes et rapides. En revanche, les modèles de Markov sont bien plus efficaces pour identifier ces anomalies chez chaque participant, ce qui nous offre de meilleures chances d’obtenir des fixations véritablement positives.

Même si notre système de suivi oculaire par webcam peut sembler être une sorte de boîte noire magique, vous savez désormais qu’il s’agit simplement d’un ensemble d’algorithmes, chacun d’entre eux susceptible de commettre des erreurs s’il ne reçoit pas les données de qualité qu’il attend, et qui ont été programmés pour exécuter chaque étape du processus par nos développeurs compétents, qui maîtrisent parfaitement le suivi oculaire.


Get Richer Data

About the author


See what is next in human behavior research

Follow our newsletter to get the latest insights and events send to your inbox.