Tester l’IA – algorithmes de détection

On parle de plus en plus de l’IA qui n’a jamais semblé aussi proche. Le test ne fait pas exception, on aborde ses possibilités et même des cas d’usages concrets où l’IA aide le testeur. L’IA se retrouve donc être un logiciel que l’on doit tester! Hors les mécaniques de ces IA sont totalement différentes de celles des logiciels aux résultats attendus.

A noter: dans cet article j’utiliserai la définition de l’imaginaire commun (la définition française est plus large): un logiciel capable d’apprendre et d’évoluer.

Dans cet article je vais me concentrer sur des IA simples que j’appelle « algorithmes de détection » dont le rôle est, tel un test de détection (maternité, Sida, cancer, CoviD…) doit définir si un élément testé est, ou n’est pas, lié à l’élément recherché. On peut penser notamment à des IA comme les IA d’accompagnement aux décisions judiciaires ou encore des IA permettant de savoir si une maintenance de serveurs, lignes internet (ou tout autre sujet) doit être effectuée sur une zone définie.

Dans cet article je vais vous présenter certaines bases sur comment tester ces IA.

Le test de l’IA commence par les données

Le shift left s’applique évidemment à l’IA. Je dirais même que dans le cas de l’IA c’est encore plus important que dans de nombreux autres contextes car la qualité des entrants, dans le cas de l’IA les données, définit le fonctionnel et la pertinence des réponses!

Il est donc essentiel de bien définir ses données, en avoir suffisamment, les formater correctement et évidemment savoir comment on souhaite les analyser. Des données non représentatives, ou introduisant des biais mènent rapidement à des dérives qui font la une de l’actualité et rendent l’IA contre-productive. Si vous voulez en savoir plus sur la gestion des données je vous invite à lire cet article.

Lorsque les données sont récoltées, sélectionnées et formatées il faut entraîner l’IA qui n’a sans cela aucune possibilité de proposer des résultats. Une tactique d’entraînement usuelle est la constitution de 2 groupes de données parmi les données à disposition:

  • des données d’entraînement représentant souvent aux alentours de 90% des données. Ces données peuvent être traitées avec les résultats que l’on attend. On peut par exemple penser à une IA de détection de contenu haineux sur les réseaux sociaux. Les posts se trouvant tagués manuellement « haineux » ou « non haineux » et permettant à l’IA de trouver des similarités
  • des données de test, représentant le reste des données, pour analyser la pertinence des résultats de l’IA suite à l’entraînement. Ces données pouvant avoir été préalablement identifiées (haineux ou non haineux dans notre exemple) mais sans que l’IA ait axé à cette information

On voit ici l’intérêt d’avoir des données fiables, représentatives et non biaisées. L’IA va repérer des similarités et en déduire des probabilités. Dans notre exemple si l’on ne propose que des posts sur Trump ou la politique en post haineux alors l’IA pourra ne considérer comme haineux que des posts parlant de Trump ou de politique et passer à côté de harcèlement lié au jeux vidéos ou au sport.

Les indicateurs sont les amis des testeurs d’IA

Suite à l’entraînement il faut tester la qualité de l’IA qui en ressort.

Avoir 100% raison est peu probable. L’intérêt est de savoir si l’IA est pertinente. Dans le cas des IA de détection, et donc notre exemple sur les posts haineux, il y a un ensemble d’indicateur qui sert régulièrement et qui ensemble permet d’avoir des résultats intéressants.

Ces indicateurs sont liés au principe de faux-positifs et faux négatifs. Les résultats dans notre exemples peuvent être représentés dans ce tableau:

Les indicateurs souvent utilisés sont:

  • La précision (Pr) : la pertinence des positifs proposés par l’IA : VP / (VP + FP)

Les posts haineux remontés par l’IA le sont-ils vraiment ? Dans le cas contraire il n’est pas intéressant d’analyser les résultats… mais cela peut vite conduire à un affaiblissement de la détection

  • Le recall (Re): la capacité à trouver l’ensemble des positifs : VP/(VP+FN)

Quel est le % des posts haineux que détecte l’algorithme ? Le but de l’algorithme est de détecter les posts haineux. Il semble donc intéressant qu’il en détecte le plus possible. La limite de cet indicateur c’est que l’on peut vite se retrouver à mettre des posts non haineux en haineux pour l’augmenter… ce qui peut avoir de graves conséquences sur la défiance et le rejet des utilisateurs

  • L’accuracy : la précision des résultats : (TP + TN) / (nombre total des données)

Quel est le % des cas où l’algorithme a raison ? Cet indicateur est évidemment pertinent car il permet d’évaluer un niveau de confiance. Néanmoins il n’est pas suffisant! Dans notre exemple, plus de 95% des posts sont vraisemblablement « non haineux », un algorithme donnant toujours un valeur « Non haineux » est donc à 95% de bons résultats… mais totalement inutile!

  • F1 : l’alliance de la précision et du recall : 2x(Pr*Re)/(Pr+Re)

Cet indicateur est plus complexe. L’idée est de proposer un compromis entre 2 indicateurs qui peuvent sembler opposés car l’augmentation de l’un entraîne avec une forte probabilité la diminution de l’autre.

En fonction des contextes les objectifs de ces indicateurs sont différents. Dans notre cas il est peut être moins grave de ne pas détecter automatiquement certains post haineux plutôt que d’être perçu comme un logiciel de censure. Dans un cas médical comme la détection de cancer c’est l’opposé qui est préférable car l’IA ouvre la voie à des examens plus approfondis. Une absence de détection entraîne donc potentiellement la mort alors qu’une détection erronée entraîne simplement une perte de temps.

Une IA de bonne qualité se retrouve être une IA qui optimise cet ensemble d’indicateurs en fonction du contexte et de l’objectif que l’on se donne pour chacun de ces derniers.

Conclusion

Il n’y a pas de solution miracle pour tester l’IA et ce même dans le cas d’IA « simple » dont le but est uniquement de définir si un élément en particulier répond ou non à un critère. Néanmoins il y a des bonnes pratiques de gestion de données et d’analyse des résultats qui permettent de se faire un idée de la qualité des résultats proposés/calculés par l’IA. La présence de l’humain reste nécessaire à tout niveau, que cela soit dans le travail initial sur les données ou encore la définition des objectifs à atteindre avec les différents indicateurs utilisés lorsque l’on décide de se baser sur des indicateurs pour définir la qualité d’une IA.

Pensez à rejoindre le groupe « Le métier du test » si vous souhaitez échanger sur le test

Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles

N’hésitez pas à faire vos propres retours d’expérience en commentaire.

3 Responses

  1. Merci Marc !

    Une question :
    L’accuracy : la précision des résultats : (TP + TN) / (nombre total des données)

    A quoi correspond TP et TN ? C’est VP et VN ?

    Bonne journée
    Etienne

    1. Oui, je pense que c’est une erreur.
      TP pour True Positif et TN True Négatif.
      Le travail et les échanges que j’ai eus sur le sujet étaient toujours en anglais ce qui explique la raison de la confusion

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

ATDD versus BDD
ATDD

BDD vs ATDD

Intro L’ATDD (Acceptance Test Driven Development) et le BDD (Behaviour Test Driven Development) sont des approches collaboratives, quasiment tout le temps implémenté dans des contextes de développement Agile, où l’on définit des tests collaborativement avant de commencer les développements. Ces similitudes font que bien souvent ces 2 méthodologies sont confondues

Lire la suite »
Avenir

Les dernières tendances du test logiciel: Présentation STLS 2017

Présentation faite lors de la Soirée du Test Logiciel  de Sophia Antipolis le 5 octobre 2017 ayant pour but d’analyser les dernières tendances du test logiciel à travers diverses études réalisées notamment celle du CFTL. [youtube https://www.youtube.com/watch?v=NM5vyJkCncg?ecver=2] [slideshare id=81151386&doc=legeard-prsentationcftl-evolutiondespratiquesdutestlogiciel-5octobre2017-brunolegeard-171024142508]

Lire la suite »
culture générale

Gérer le risque par les tests vs. La Covid-19

Dans cette période de crise sanitaire, on nous parle beaucoup de risques. Le risque de contamination, de transmission ou de développement de symptômes graves. Cette notion est également très présente dans le test logiciel et encore plus lorsqu’il s’agit de qualité logicielle. En effet, selon le contexte, et surtout la

Lire la suite »