État de l'Intelligence Artificielle appliquée à l'Ingénierie de la Qualité 2021-2022
Section 1 : Premiers pas

Chapitre 4 par Sogeti & Capgemini Engineering

Le deep Learning pour le test

Métier ●○○○○
Technique ●●●●○

Download the "Section 1: Get Started" as a PDF

Use the site navigation to visit other sections and download further PDF content

By submitting this form, I understand that my data will be processed by Sogeti as described in the Privacy Policy.*

Pourquoi lire ce chapitre:

Comprendre les bases du Deep Learning par des illustrations concrètes en matière de Qualité et de Test

Vous avez peut-être vu ou entendu parler des matchs de 2016 entre AlphaGo et le grand maître du go sud-coréen Lee Sedol. Le programme AlphaGo de Google DeepMind a battu ce dernier 4 à 1 lors de la finale de la série. Cette victoire sur Lee est significative car c'était la première fois qu'un programme d'intelligence artificielle battait un joueur de Go de premier rang. L'équipe à l'origine d'AlphaGo l'a d'abord exposé à une variété de jeux amateurs, puis l'a forcé à jouer contre des milliers de versions différentes de lui-même, apprenant à chaque fois de ses erreurs. AlphaGo s'est amélioré au fil du temps, devenant de plus en plus performant en matière d'apprentissage et de prise de décision. Ceci est très pertinent car cette excellente application de l'apprentissage profond est applicable à l'ingénierie de la qualité.

Terminologie

Dans la continuité du chapitre précédent, le Deep Learning est un sous-ensemble de l'apprentissage automatique en intelligence artificielle qui utilise des réseaux neuronaux pour apprendre de manière non supervisée à partir de données non structurées ou non étiquetées. Il est également appelé réseau neuronal profond ou apprentissage neuronal profond. Le Deep Learning est réalisé par l'utilisation d'un réseau neuronal artificiel qui se comporte de manière très similaire au cerveau humain et permet à la machine d'analyser les données dans une structure très proche de celle des humains. Les systèmes de Deep Learning sont autoprogrammées et n'ont pas besoin d'intervention humaine pour leur indiquer comment utiliser les données. Cela est possible grâce aux quantités massives de données que nous collectons et consommons - les données servent de carburant aux modèles de Deep Learning. La disponibilité d'un tel volume de données d'entraînement est une condition nécessaire à du Deep Learning.

​De nombreuses applications et services d'intelligence artificielle (IA) tirent parti de l'apprentissage profond pour accroître l'automatisation en exécutant des tâches analytiques et physiques sans intervention humaine. Les solutions de libre-service en ligne et les chatbots en sont plusieurs exemples. Les voitures sans conducteur intègrent une variété de modèles d'apprentissage profond pour la reconnaissance des panneaux de signalisation et des piétons.

Le Deep Learning est utilisé en pratique à des fins d'ingénierie de la qualité. Plus loin dans le rapport[1], nous nous pencherons sur les façons dont la vision par ordinateur, un sous-domaine du Deep Learning, peut bénéficier à l'ingénierie de la qualité. À ses débuts, il était utilisé pour comparer deux images, voire pour remplacer les cadres traditionnels d'automatisation des tests. Son champ d'application continue de s'étendre à la classification, à la restauration et à la segmentation d'images, à la détection d'objets, à la reconnaissance de textes (même les chiffres manuscrits peuvent être reconnus), etc.

 


[1] This report’s section "Automate & See" discusses how computer vision is being applied to quality engineering.

Les réseaux de neurones

​Un réseau neuronal est formé de couches interconnectées de calculateurs logiciels appelés "neurones" en apprentissage profond. Le réseau peut ingérer et traiter des données d'entrée via plusieurs couches qui apprennent chacune des caractéristiques de plus en plus complexes des données. Le réseau peut ensuite faire des déductions sur les données, vérifier que ses déductions sont correctes et appliquer ce qu'il a appris pour faire des déductions sur les nouvelles données entrantes. Par exemple, une fois qu'il a appris comment un objet apparaît, il peut le reconnaître dans une nouvelle image.

S1C4 picture 1.png

Un réseau neuronal est structuré comme le cerveau humain et se compose de neurones artificiels, également appelés "nœuds". Ces nœuds sont empilés les uns à côté des autres en trois couches :

  1. La couche d'entrée
  2. La ou les couches cachées
  3. La couche de sortie

Les données fournissent des informations à chaque nœud sous la forme d'entrées. Le nœud multiplie les entrées par des poids aléatoires, les calcule et les modifie avec un biais. Enfin, des fonctions non linéaires, également appelées fonctions d'activation, sont appliquées pour déterminer le neurone à activer.

Les principaux algorithmes de Deep Learning: 
  1. Réseaux neuronaux convolutifs (CNN)
  2. Réseaux neuronaux récurrents (RNN)
  3. Réseaux de mémoire à long terme (LSTM)
  4. Réseaux adversariaux génératifs (GAN)
  5. Encodeurs automatiques

Les réseaux neuronaux convolutifs (CNN)

S1C4 picture 2.png

Fundamentaux

Ce que c'est

Les réseaux neuronaux convolutifs (ConvNet/CNN) sont un type d'algorithme d'apprentissage profond optimisé pour le traitement des données dont la topologie est en forme de grille, comme les images. Il hiérarchise (poids et biais apprenables) divers aspects/objets de l'image et est capable de les différencier les uns des autres.

Quand les utiliser

Les CNN sont largement utilisés pour identifier des images satellites, traiter des images médicales, prévoir des séries chronologiques et détecter des anomalies.

Comment cela fonctionne
  1. Le réseau neuronal convolutif (CNN) reçoit une image comme une collection de pixels et la traite.
  2. Il identifie les caractéristiques uniques de l'image dans les couches cachées.
  3. Le CNN peut maintenant classer une autre image si elle contient les mêmes caractéristiques uniques que l'image classée.

Cas d'utilisation en Qualité Logicielle

  • Identification des objets affichés :
    Identifier les différents objets/éléments de l'interface utilisateur sur l'affichage du système en cours de test et les traiter pour effectuer la vérification et la validation.

  • Identification de l'état du système en fonction de la détection d'objets:
    Identifier l'état actuel du système en surveillant les indicateurs sur une interface utilisateur du système testé.

  • Comparaison d'images :
    Comparez des images complexes pour trouver des similitudes. Par exemple, comparaison d'écritures manuscrites.

  • Prévision du nombre de défauts:
    Prédiction de séries temporelles pour le nombre de défauts entrants sur la base du comptage historique des défauts entrants quotidiens.

Les réseaux neuronaux récurrents (RNN)

S1C4 picture 3.png

Fondamentaux

Ce que c'est

Un réseau neuronal récurrent fonctionne en enregistrant la sortie d'une couche particulière et en la réinjectant à l'entrée afin de prédire la sortie de la couche.

Quand l'utiliser

Les RNN sont fréquemment utilisés dans diverses applications, notamment le sous-titrage d'images, l'analyse des séries temporelles, le traitement du langage naturel, la reconnaissance de l'écriture manuscrite et la traduction automatique.

Comment cela fonctionne-t-il?

  • Au temps t-1, la sortie alimente l'entrée au temps t.
  • De même, au temps t, la sortie alimente l'entrée au temps t+1.
  • Les RNN sont capables de traiter des entrées de longueur arbitraire.
  • Le calcul tient compte des données historiques, et la taille du modèle n'augmente pas proportionnellement à la taille de l'entrée.

Cas d'utilisation en Qualité logicielle

  • Test multilingue:
    Traduisez les données de test textuelles d'une langue à l'autre pour les tests d'applications multilingues.

  • Classification des commits:
    Identifier les commits de correction de bogues pour analyser leurs commentaires, classer les commits en fonction de leur objectif, comme l'amélioration des fonctionnalités, la correction des bogues, les changements fonctionnels, les changements non fonctionnels et les tâches de remaniement.

  • Analyse du taux de défectuosité: 
    Le taux de défauts peut être déterminé en analysant la série chronologique des défauts entrants sur une période donnée.

  • Comparaison d'images:
    Comparez des images complexes pour trouver des similitudes. Par exemple, comparaison d'écritures manuscrites.

Les réseaux de mémoire à long terme (LSTM)

S1C4 picture 4.png

Fondamentaux

Ce que c'est

Les LSTM sont une sous-classe de réseaux neuronaux récurrents (RNN) capables d'apprendre et de mémoriser des dépendances à long terme. Leur comportement par défaut consiste à se souvenir d'informations passées pendant de longues périodes de temps. Ils sont avantageux pour la prédiction de séries temporelles car ils conservent des informations sur les entrées précédentes.

Quand l'utiliser

Les LSTM sont utilisés pour les prédictions de séries temporelles, la reconnaissance vocale, la composition musicale et le développement pharmaceutique.

Comment cela fonctionne-t-il?

  • Pour commencer, ils ignorent les aspects non pertinents de l'état précédent.
  • Ils mettent ensuite à jour les valeurs de l'état des cellules de manière sélective.
  • Enfin, la sortie de composants spécifiques de l'état de la cellule.

Cas d'utilisation en Qualité logicielle

  • Prévision du nombre de défauts :
    Prédiction de séries temporelles pour le nombre de défauts entrants sur la base du comptage historique des défauts entrants quotidiens.

  • Validation des mises en production :
    Prédire l'état de préparation d'un produit pour sa sortie en se basant sur des données provenant de sources multiples dans l'environnement de production.

  • Valider les données visuelles par classification ::
    Validez les données visuelles comme les clips vidéo, les images en les classant sur la base du contenu visuel.

Les réseaux antagonistes génératifs (GANs)

S1C4 picture 5.png

Fondamentaux

Ce que c'est

Un réseau antagoniste génératif (GAN) est une sous-classe de cadres d'apprentissage automatique dans lesquels une paire de réseaux neuronaux, un générateur et un discriminateur, s'affrontent pour effectuer une tâche, ce qui permet d'améliorer les performances de la tâche.

Par exemple, un GAN entraîné sur des photographies peut générer de nouvelles photographies qui, pour des observateurs humains, semblent au moins superficiellement authentiques et présentent diverses caractéristiques réalistes.

Quand l'utiliser

Lorsqu'on ne dispose pas de suffisamment de données pour entraîner un modèle algorithmique, les GAN peuvent générer de nouvelles données synthétiques représentatives des données réelles. En outre, ils peuvent identifier de nouveaux vecteurs d'attaque de cyberattaques et de logiciels malveillants, ainsi que des transactions frauduleuses par carte de crédit.

Comme le générateur tente constamment de créer de nouvelles représentations des données réelles avec de légères variations, il peut générer des types d'attaques ou de transactions frauduleuses inconnues jusqu'alors.

Comment cela fonctionne-t-il?

  • Le générateur crée une représentation synthétique des données sous-jacentes (par exemple, une image dupliquée d'une personne) qui est suffisamment précise pour augmenter le taux d'erreur du discriminateur. Le discriminateur tente de distinguer les données authentiques des données synthétiques.

    Au début, le générateur génère des motifs aléatoires que le discriminateur peut facilement distinguer des données "réelles", mais à chaque tentative, le générateur génère des données plus représentatives. Au fil du temps, le générateur deviendra extrêmement doué pour générer des données synthétiques, augmentant ainsi le taux d'erreur du discriminateur.

Cas d'utilisation en Qualité logicielle

  • Génération de données de test:
    Lorsqu'ils reçoivent un ensemble de données de test, les GAN peuvent générer des données de test symétriques pour une variété de types de données, ce qui est avantageux pour effectuer des tests fonctionnels supplémentaires sur le système testé.

  • Test de sécurité du système:
    Les GAN peuvent générer des entrées ressemblantes pour tester la sécurité d'un système d'authentification faciale ou biométrique lorsqu'il est muni d'informations d'identification autorisées.
  • Identification des anomalies dans les résultats en laboratoire :
    Les GAN peuvent être utilisés dans le domaine des soins de santé pour identifier les anomalies physiques dans les résultats de laboratoire, ce qui pourrait conduire à un diagnostic plus rapide et à des options de traitement pour les patients.

Les auto-encodeurs

S1C4 picture 6.png

Fondamentaux

Ce que c'est

Un auto-encodeur est un sous-type de réseau neuronal qui reproduit simplement son entrée à sa sortie. Il peut être qualifié de fonction d'identité. Un auto-encodeur se compose de trois éléments principaux : l'encodeur, le code et le décodeur. L'idée est qu'en copiant l'entrée sur la sortie, le réseau neuronal s'approprie les propriétés utiles de l'entrée.

Le code est la couche cachée h entre les couches d'entrée et de sortie. Elle représente les informations sur l'entrée qui sont recueillies.

Encodeur : Encode les données vers une couche cachée. Apprend les caractéristiques saillantes de la couche d'entrée.

Décodeur : Décode les données de la couche cachée pour reconstruire la couche de sortie.

Quand l'utiliser

Une exécution parfaite de la tâche de copie ne ferait que dupliquer le signal. C'est pourquoi les auto-encodeurs sont généralement soumis à des contraintes qui les obligent à se rapprocher de l'entrée, en ne conservant que les aspects les plus importants des données dans la copie. Les auto-encodeurs sont extrêmement utiles pour la réduction de la dimensionnalité et l'apprentissage des caractéristiques, car ils ne conservent que les caractéristiques les plus importantes des données d'entrée.

Comment cela fonctionne-t-il?

  • Les auto-encodeurs sont structurés de telle sorte qu'ils peuvent prendre une entrée et la transformer en une autre représentation. Ils tentent ensuite de reconstruire l'entrée originale avec le plus haut degré de précision possible.
  • En l'absence d'une image d'entrée clairement visible, il alimente un réseau neuronal auto-encodeur.
  • Les auto-codeurs chiffrent d'abord l'image, puis la compriment en une représentation plus petite.
  • L'auto-codeur décode ensuite l'image pour créer l'image reconstruite.

Cas d'utilisation en Qualité logicielle

  • Rectifier les images "bruitées" dans les systèmes médicaux :
    Réduire le bruit dans une image pour l'analyser avec plus de précision à des fins de vérification et de validation.
  • Contrôle de la qualité des lignes de production :
    Les auto-codeurs peuvent être formés pour identifier les produits défectueux sur la chaîne de production, en utilisant le flux de la caméra de la chaîne de production.

About the authors

Vivek Sejpal

Vivek Sejpal

Vivek is an passionate data scientist with more than five years of experience in analytics and machine learning. He is currently engaged in the design and development of intelligent data-driven assets for quality engineering applications. Vivek works with customers on end-to-end engagements to demonstrate the value of various Intelligent asset offerings across domains/industries. Additionally, Vivek contributes to the research and development of new intelligent assets for the purpose of resolving critical business problems through a data-driven approach that is consistent with business requirements.

Vivek Jaykrishnan

Vivek Jaykrishnan

Vivek Jaykrishnan is an enterprise test consultant and architect with extensive experience. He has over 22 years of experience leading Verification and Validation functions, including functional, system, integration, and performance testing, in leadership positions with reputable organizations. Vivek has demonstrated success working across a variety of engagement models, including outsourced product verification and validation in service organizations, independent product verification and validation in captive units, and globally distributed development in a product company. Additionally, Vivek has extensive experience developing and implementing test strategies and driving testing in accordance with a variety of development methodologies, including continuous delivery, agile, iterative development, and the waterfall model. Vivek is passionate about incorporating cognitive intelligence into testing and is also interested in exploring the frontiers of IoT testing.