WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Prédiction de défauts logiciel utilisant des techniques d'apprentissage automatique


par Amina Oulaceb
Université Mohammed Cherif Messadia - Master informatique en génie logiciel 2021
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Chapitre 01 : Prédiction des défauts logiciels 18

 
 
 

PC1= 0.913

LR

JW1=0.788 MC1=0.973 M=0.664 PC1=0.894

RF

JW1=0.778 MC1=0.977 M=0.688 PC1=0.909

SVM

JW1= 0.790 MC1= 0.977 M= 0.680 PC1= 0.913

PROMISE Dataset

DBN

XALAN V2.6= 0.536 ANT V 1.7= 0.77 JEDIT V4.0= 0.755 LOG4J V1.0= 0.748

LR

XALAN V2.6= 0.733 ANT V 1.7= 0.820 JEDIT V4.0= 0.755 LOG4J V1.0= 0.733

RF

XALAN V2.6= 0.743 ANT V 1.7= 0.815 JEDIT V4.0= 0.780 LOG4J V1.0= 0.759

SVM

XALAN V2.6= 0.731 ANT V 1.7= 0.813 JEDIT V4.0= 0.768 LOG4J V1.0= 0.756

AEEEM Dataset

DBN

LC=0.907 JDT= 0.793 PDE=0.86 ML= 0.868

LR

LC= 0.841 JDT= 0.856 PDE= 0.856 ML= 0.861

RF

LC= 0.917 JDT= 0.840 PDE= 0.864 ML= 0.865

SVM

LC= 0.907 JDT= 0.849 PDE= 0.861 ML= 0.869

RELINK Dataset

DBN

Apache= 0.448 Safe= 0.607 Zxing= 0.704

LR

Apache= 0.624 Safe= 0.732 Zxing= 0.679

RF

Apache= 0.691 Safe= 0.705 Zxing= 0.679

SVM

Apache= 0.660 Safe= 0.571 Zxing= 0.692

[13]

 

SVM

AR1= 0.81 AR3= 0.625

Chapitre 01 : Prédiction des défauts logiciels 19

 

SOFTLAB dataset

 

AR5= 0.833

DT

AR1= 0.901

 
 
 

AR3= 0.906

 
 
 

AR5= 0.778

 
 

BPNN

AR1= 0.918

 
 
 

AR3= 0.906

 
 
 

AR5= 0.702

 
 

RF

AR1= 0.946

 
 
 

AR3= 0.947

 
 
 

AR5= 0.818

4. Conclusion

Les techniques d'apprentissage automatique se sont avérés être des techniques de pointe pour des problèmes de prédiction des défauts logiciels. Cela permet au gestionnaire de logiciel d'allouer efficacement les ressources du projet vers les modules qui nécessitent plus d'efforts. Cela permettra éventuellement aux développeurs de corriger les bogues avant de livrer le produit logiciel aux utilisateurs finaux.

Dans ce chapitre d'état de l'art on essayer d'exposer les processus de prédiction des défauts logiciels. Nous avons aussi présenté la question de recherches qui ont posé lors de la réalisation de notre approche et nous avons clôturé le chapitre par des travaux proposés dans la littérature utilisant des différentes techniques d'apprentissage automatique dans la tâche de prédiction.

Chapitre 02 : Apprentissage

Automatique

Chapitre 2 : Apprentissage automatique 20

1. Chapitre 2 : Apprentissage automatique 21

Introduction

Depuis 1956, l'intelligence artificielle (IA) en tant que domaine scientifique a représenté un ensemble de théories et de technologies. Des programmes informatiques complexes ont été développés capables de simuler certaines caractéristiques de l'intelligence humaine (inférence, apprentissage, etc.). I'IA couvre toutes les disciplines, où se côtoient philosophes, psychologues, informaticiens et autres qui s'intéressent aux divers problématiques de l'intelligence.

L'apprentissage automatique constitue un domaine de recherche très important en intelligence artificielle, qui permet aux ordinateurs d'apprendre sans programmation explicite. Cependant, pour apprendre et se développer, les ordinateurs ont toutefois besoin de données à analyser et sur lesquelles s'entraîner. L'apprentissage automatique peut être défini comme l'étude des algorithmes qui apprennent à partir d'un ensemble d'échantillons observés pour prédire les valeurs d'échantillons invisibles. Ces algorithmes ont récemment gagné un grand intérêt et sont davantage appliqués dans les produits et services en raison de l'augmentation de la puissance de calcul, de la disponibilité de techniques d'apprentissage automatique open source et de vastes quantités de données

Parmi les techniques d'apprentissage automatique les plus importantes, l'apprentissage en profondeur qui permet de modéliser les méthodes d'apprentissage automatique de manière très abstraite, et les données sont acquises via des architectures articulées de différentes transformations non linéaires.

Dans le cadre de ce chapitre, nous allons détailler les concepts de base de l'apprentissage automatique ainsi que ses différentes techniques et les algorithmes utilisés dans chaque type. Ensuite, nous allons présenter l'apprentissage en profondeur tout en mettant l'accent sur le fonctionnement des Réseaux de Neurones à Convolution qui sont utilisés dans notre travail.

2. Apprentissage supervisé 2.1. Définition

L'apprentissage supervisé est une classe technique d'apprentissage automatique (le plus fréquemment utilisé) où l'on cherche à produire automatiquement des règles à partir d'une base de données d'apprentissage contenant des échantillons déjà étiquetés [16].

Chapitre 2 : Apprentissage automatique 22

En d'autres termes, l'apprentissage supervisé vise à estimer une fonction f: x - y telle que la sortie d'un objet de test xi (qui n'a pas été traité pendant la phase d'apprentissage) peut être prédit avec une grande précision. L'apprentissage supervisé peut être formulé de la manière suivante :

Une instance xi signifie un objet spécifique, elle est typiquement représentée par un vecteur de caractéristique de dimension D, X = {xi}i=1

?? avec D E RD et les Yi =

{y?? i }??=1

?? représentent les étiquettes de classe de l'iémeobjet. K est le nombre de variables

de sortie que peut avoir un objet d'entrée (Si Y est une valeur discrète, on parle de classification, et Si Y est une valeur continue, on parle de régression) [10].

Dans l'apprentissage supervisé, un ensemble d'exemples, « l'ensemble d'apprentissage », est soumis à l'entrée du système pendant la phase d'apprentissage. Par la suite, chaque entrée est étiquetée avec une valeur de sortie désirée [17]. La figure 2.1 illustre le processus d'apprentissage supervisé.

Figure 2.1. Processus d'apprentissage supervisé [17].

2.2. Les Techniques D'apprentissage supervisé 2.2.1. Machine à Vecteur de Support

Machine à Vecteur de Support (en anglais : Support Vector Machine (SVM)) est un algorithme d'apprentissage supervisé, le principe derrière cet algorithme est d'utiliser une ligne pour séparer les données en plusieurs catégories, de sorte que la distance entre les différents types de données et la frontière qui les sépare soit maximale [18]. Cette distance est également appelée «marge» définie comme la distance entre le point le plus proche et l'hyperplan de séparation.

Pour un hyperplan H on a :

Chapitre 2 : Apprentissage automatique 23

Marge(H) = min d (x??, H) (1)

????

Les SVM linéaires cherchent le séparateur (l'hyperplan de séparation) qui maximise la marge et on appelle cela « séparateur à vaste marge » [18].

L'hyperplan de marge maximale est obtenu en utilisant l'équation (2) :

??

??(x) = ?w??x??+ b=

???,??? + b

(2)

??=1

Le vecteur de support est la donnée la plus proche de la limite. Si ???? est un vecteur de support et H = { w . x + b = 0}, alors la marge est donnée par l'équation (3) :

Marge = 2

| w .x?? + b| (3)

||w||

Figure 2.2. Séparateur à vaste marge [19].

Pour que le classifieur SVM puisse trouver cette frontière, il est nécessaire de lui donner des données d'apprentissage. En l'occurrence, on donne au classifieur SVM un ensemble de points. A partir de ces données, le classifieur SVM estimera la position la plus raisonnable de la frontière [18].

Une fois la phase d'apprentissage est terminée, le classifieur SVM a ainsi trouvé, à partir de données d'apprentissage, l'emplacement supposé de la frontière. En quelque sorte, il a « appris» l'emplacement de la frontière grâce aux données d'apprentissage et il est maintenant capable de prédire à quelle catégorie appartient une entrée qu'il n'avait jamais vue avant, et sans intervention humaine [18][19].

Chapitre 2 : Apprentissage automatique 24

2.2.2. Réseaux de neurones artificiels (ANN)

Un réseau de neurones artificiels (en anglais : Artificial Neural Network (ANN)) est un modèle de calcul pour effectuer des tâches telles que la prédiction, la classification, la prise de décision, etc [20]. Comme l'indique la partie «neurale» de son nom, c'est un système inspiré du cerveau conçus pour imiter la façon dont nous, les humains, apprenons.

Les réseaux de neurones artificiels ont une fonction d'auto-apprentissage, et lorsque plus de données sont obtenues, ils peuvent produire de meilleurs résultats. Un réseau de neurones artificiels est un ensemble de plusieurs perceptrons / neurones sur chaque couche. Le classifieur ANN est également appelé réseau de neurones à action directe, car l'entrée n'est traitée que dans un sens direct [20].

Un réseau neuronal se compose de trois couches. La première couche est la couche d'entrée. Elle contient des neurones d'entrée qui envoient des informations à la couche cachée. Cette dernière effectue les calculs sur les données d'entrée et transfère la sortie vers la couche de sortie. Elle comprend le poids, la fonction d'activation et la fonction de coût [21]. L'architecture des réseaux de neurones artificiels est présentée dans la Figure ci-dessous :

Figure 2.3. Réseaux de neurones artificiels.[21] 2.2.3. Les forêts d'arbres décisionnels

Les forêts d'arbres décisionnels (en anglais : Random forest (RF)) est un algorithme d'ensemble ayant un ensemble différent d'hyperparamètres et entraînés sur différents

Chapitre 2 : Apprentissage automatique 25

sous-ensembles de données, largement utilisé dans la régression, la classification et d'autres tâches. L'algorithme crée un certain nombre d'arbres de décision et les combine en un seul modèle. Pour les problèmes de classification, la prédiction finale faite par l'algorithme est basée sur un vote majoritaire de tous les arbres où chaque arbre fait une prédiction de classe [23].

Une sélection aléatoire de caractéristiques est utilisée lors de la croissance des arbres et de la division de chaque noeud. Dans l'algorithme standard, l'ensemble de caractéristiques est vérifié à chaque noeud pour trouver la caractéristique la plus importante à diviser. En revanche, pour diviser chaque noeud dans la forêt, un sous-ensemble aléatoire de m <M caractéristiques est considéré, où M est le nombre total d'entités [22]. La meilleure façon de déterminer combien d'arbres sont nécessaires est de comparer les prédictions faites par une forêt aux prédictions faites par un sous-ensemble d'une forêt. Lorsque les sous-ensembles fonctionnent ainsi que la forêt complète, cela indique qu'il y a suffisamment d'arbres [23].

La figure 2.4 montre comment un exemple est classé en utilisant n arbres où la prédiction finale est faite en prenant un vote de tous les n arbres.

Figure 2.4. Les Forêts d'Arbres Décisionnels [23]

3. Apprentissage non supervisé

3.1. Définition

L'apprentissage non supervisé est une classe technique d'apprentissage automatique où les exemples d'apprentissage fournis par le système ne sont pas étiquetés avec la classe

Chapitre 2 : Apprentissage automatique 26

d'appartenance. Il s'agit d'extraire des classes ou groupes d'individus présentant des caractéristiques communes. L'apprentissage non supervisé est un problème plus difficile que l'apprentissage supervisé en raison de l'absence d'un objectif bien défini indépendant de l'utilisateur. [17]

Étant donné un vecteur de caractéristique ?? = {????}?? =??=1

?? , et une mesure de similarité entre des paires de vecteur k : ?? × ?? ? R. Le but de l'apprentissage non supervisé est de partitionner l'ensemble de telle sorte que les objets au sein de chaque groupe soient plus semblables les uns aux autres que les objets entre les groupes [17]. La figure 2.5 représente le déroulement du processus d'apprentissage non supervisé.

Figure 2.5. Apprentissage non supervisé [17].

3.2. Les techniques d'apprentissage non supervisé 3.2.1. L'algorithme K-moyennes

L'algorithme K-moyennes (en anglais : K-means) est un algorithme de clustering qui tente de regrouper les observations en différents clusters. Plus précisément, le but de cet algorithme est de minimiser les différences au sein des clusters et de maximiser les différences entre les clusters [24].

L'entrée de cet algorithme est composée du nombre de clusters et l'ensemble de données non étiqueté. C'est un outil de partitionnement des données non-hiérarchique qui permet de répartir les données en clusters homogènes [24]. Pour cela, il cherche à minimiser la variance interclasse :

Chapitre 2 : Apprentissage automatique 27

1 ??

? ???? -????????

??=

?

???? ??=1 ???????

2 (4)

Pour effectuer un regroupement, la première étape consiste à spécifier le nombre de clusters (K). Ensuite, l'algorithme K-moyennes attribuera chaque observation à exactement l'un des K-clusters. C'est un problème mathématique assez simple et intuitif

[25].

3.2.2. Classification hiérarchique

C'est une méthode de classification itérative automatique utilisée en analyse des données. L'objectif est de créer une décomposition ou un regroupement hiérarchique des objets ou des clusters les plus proches en fonction de certaines conditions. Cette méthode est basée sur le calcul de la distance et est organisée sous la forme d'une structure arborescente[26]. Il existe deux niveaux de méthodes :

- Le clustering hiérarchique ascendant (agglomératif) : est une méthode de classification automatique utilisée pour analyser les données d'un groupe de n individus, afin d'assigner ces individus à un certain nombre de catégories, nous pouvons utiliser la distance pour mesurer la différence. [26]

- Le clustering hiérarchique descendant (divisif) : Les méthodes de cette catégorie commencent avec un seul cluster qui contient toutes les données, puis les divisent selon des critères à chaque étape jusqu'à ce qu'un ensemble de clusters différents soit obtenu

[26].

3.2.3. Algorithme d'espérance-maximisation

L'algorithme d'espérance-maximisation (en anglais : Expectation Maximization (EM)) est une classe d'algorithmes qui permettent principalement de trouver le maximum de vraisemblance des paramètres de modèles probabilistes lorsque le modèle dépend de variables latentes non observables dans le cadre des problèmes liés aux données incomplètes (consiste à associer à un problème aux données incomplètes) [28]. L'algorithme EM se déroule en deux étapes :

- Étape d'Expectation : Dans cette phase l'algorithme peut estimer des données inconnues en considérant et en comprenant les données observées et les valeurs des paramètres déterminées lors de l'itération précédente [27].

Chapitre 2 : Apprentissage automatique 28

Étape de Maximisation : Dans cette phase l'algorithme maximise la vraisemblance en utilisant l'estimation des données inconnues de l'étape précédente et met à jour les valeurs des paramètres pour l'itération suivante [27].

4. Apprentissage profond

4.1. Définition

L'apprentissage profond est une branche récente de l'apprentissage automatique, dans laquelle les machines peuvent apprendre par elles-mêmes. L'apprentissage profond utilise l'apprentissage supervisé une technique qui consiste à fournir à un programme des milliers de données étiquetées, qu'il devra apprendre à reconnaître (voir section 2.2). L'apprentissage en profondeur est basé sur des déclarations similaires qui imitent les méthodes d'apprentissage que les humains utilisent pour acquérir certains types de connaissances, tandis que les modèles d'apprentissage en profondeur sont basés sur des réseaux de neurones artificiels (voir section 2.2).[29]

L'apprentissage profond a été appliqué dans plusieurs domaines et a prouvé son efficacité notamment dans : domaine médical où certains programmes qui utilisent l'apprentissage profond sont parfois plus fiable que l'analyse humaine [31], domaine scientifique [32], domaine de l'automobile [33], de l'industrie [34], le domaine militaire (45) ...etc. [30]

La différence entre les techniques traditionnelles de l'apprentissage automatique et l'apprentissage profond est que dans les techniques traditionnelles l'extraction des caractéristiques pertinentes se fait manuellement (en utilisant des techniques d'extraction des caractéristiques), contrairement à l'apprentissage profond, les données brutes font l'entrée du réseau et l'extraction des caractéristiques se fait d'une manière automatique à l'intérieur du réseau.

4.2. Les réseaux de neurones convolutifs

L'idée de base des réseaux de neurones convolutifs appelé aussi ConvNets (en anglais : Convolutional Neural Network (CNN)) s'inspire d'un concept de biologie appelé champ réceptif. Les champs réceptifs sont une caractéristique du cortex visuel animal. Ils agissent en tant que détecteurs sensibles à certains types de stimulus, par exemple, les bords. Les neurones de cette zone du cerveau sont arrangés de manière à ce qu'ils

Chapitre 2 : Apprentissage automatique 29

correspondent à des zones qui se chevauchent lors du pavage du champ. Cette fonction biologique peut être approchée par ordinateur en utilisant l'opération convolutif [35].

4.2.1. Présentation

Un réseau de neurone convolutif est une forme spéciale de réseaux de neurones convolutif conçue pour traiter des données avec plusieurs tableaux et topologies en forme de grille. Ce classifieur Convolutif a connu un énorme succès et il a de large applications pratiques, y compris la reconnaissance vocale [37], la classification d'images [38] le traitement du langage naturel [39] et autres domaines. Désignés par l'acronyme CNN, il comporte deux parties bien distinctes : (i) une partie convolutive du modèle, (ii) une partie classification du modèle qui correspond à un modèle MLP (Multi Layers Perceptron). Récemment, il a été découvert que le classifieur CNN possède également d'excellentes capacités d'analyse de séquences de données [36]. En général, CNN se compose de couches convolutives et de regroupements (sous-échantillonnage) et suivies d'une ou plusieurs couches entièrement connectées, ces couches empilées les unes sur les autres pour former un modèle profond. Les couches convolutives apprennent les représentations des entités de leur entrée et les neurones sont organisés en une carte de caractéristiques (feature map) [40].

CNN a montré le potentiel pour résoudre les problèmes dans plusieurs domaines notamment dans le domaine du génie logiciel [41]. Un réseau CNN présente deux caractéristiques clés qui sont une connectivité clairsemée et des poids partagés et ses paramètres sont appris à l'aide de la rétro-propagation. Le réseau se distingue de l'architecture traditionnelle avec deux aspects : la connectivité locale et le partage des paramètres. Les cellules de la couche cachée du CNN ne sont connectées qu'à un petit nombre de cellules, correspondant à la zone locale de l'espace. Ce processus réduit le nombre de paramètres dans le réseau, la charge mémoire et le risque de sur-apprentissage. De plus, CNN réduit également le nombre de paramètres d'apprentissage en partageant la même fonction de base (c'est-à-dire le filtre de convolution) à différentes positions de l'image [36].

Un réseau CNN typique a une couche d'entrée et une couche de sortie, ainsi que plusieurs couches cachées. Les couches cachées d'un CNN se composent généralement d'une série de couches convolutives. ReLU est une fonction d'activation typique, qui est

Chapitre 2 : Apprentissage automatique 30

normalement suivie par des opérations supplémentaires telles que la mise en commun des couches, des couches entièrement connectées et des couches de normalisation. La rétro-propagation est utilisée pour la distribution des erreurs et l'ajustement du poids. La figure 2.6 illustre la structure de CNN. [42]

Figure 2.6. Architecture de réseau de neurones convolutifs [43]

4.2.2. Blocs de construction

L'architecture du CNN se compose d'un ensemble de couches de traitement indépendantes, Chaque couche reçoit des données d'entrées et produit des nouvelles données en sortie. Ici, nous discuterons en détail le fonctionnement des différentes couches du CNN.

4.2.2.1. Couche de convolution

La couche de convolution est le bloc de construction de base d'un CNN. Son but est de repérer la présence d'un ensemble de caractéristiques (éléments ou patterns) dans les images reçues en entrée. La convolution est une opération mathématique pour fusionner deux ensembles d'informations, appliquée sur les données d'entrée à l'aide d'un filtre de convolution pour produire une carte de caractéristiques. Le principe est de faire "glisser" une fenêtre représentant les caractéristiques sur l'image, et de calculer le produit de convolution entre la caractéristique et chaque portion de l'image balayée. Une caractéristique est alors vue comme un filtre : les deux termes sont équivalents dans ce contexte[44][45].

On distingue trois hyper-paramètres utilisés pour déterminer le volume de la couche de convolution :

Chapitre 2 : Apprentissage automatique 31

- la profondeur de la couche c'est le nombre des noyaux de convolution (ou

nombre de neurones associés à un même champ récepteur)[5]

- le pas qui contrôle le chevauchement des champs récepteurs. Plus le pas est petit,
plus les champs récepteurs se chevauchent et plus le volume de sortie sera grand[5] .

- la marge, parfois, il est commode de mettre des zéros à la frontière du volume
d'entrée. La taille de ce zero-padding est le troisième hyper-paramètre. Cette marge permet de contrôler la dimension spatiale du volume de sortie. En particulier, il est parfois souhaitable de conserver la même surface que celle du volume d'entrée [5].

Figure 2.7. Couche de convolution [35].

Dans une couche de convolution un produit de convolution est appliqué qui consiste à multiplier chaque pixel du filtre par la valeur du pixel correspondant dans l'image. Ensuite, les résultats sont additionnés et divisés par le nombre total des pixels du filtre. Ce produit de convolution sert à extraire des caractères spécifiques dans l'image traitée [35]. L'opération de convolution est illustrée dans la figure ci-dessous :

Figure 2.8. L'opération de convolution [35]

Chapitre 2 : Apprentissage automatique 32

Contrairement aux méthodes traditionnelles, les caractéristiques ne sont pas prédéfinies selon une forme spécifique, mais sont apprises par le réseau lors de la phase d'apprentissage. Le noyau du filtre fait référence au poids de la couche convolutive. Ils sont initialisés puis mis à jour par rétropropagation du gradient. C'est là que réside l'avantage des réseaux de neurones convolutifs : ils peuvent déterminer les éléments discriminants de l'entrée en s'adaptant à la question posée. Par exemple, si le problème est de faire la distinction entre les chats et les chiens, des caractéristiques définies automatiquement peuvent décrire la forme des oreilles ou des pattes [45].

4.2.2.2. Couche de pooling

Après l'opération de convolution, un regroupement est effectué généralement pour réduire la dimensionnalité (pooling). Cette couche située entre deux couches convolutives, elle reçoit en entrée plusieurs feature maps, et applique une opération de maximum locale (Max Pooling) à chacune d'entre elles l'opération de pooling. Pour cela, elle divise une carte de caractéristiques en petites fenêtres de même taille qui peuvent se recouvrir. En fait, seule la valeur maximale est conservée dans chaque fenêtre. Par conséquent, la couche de pooling produit donc en sortie une carte de caractéristiques plus petite, ce qui permet de réduire le nombre des paramètres et de calculs dans le réseau et de contrôler également le sur-apprentissage (overfitting) [45]. On distingue principalement trois types de pooling :

- Le max pooling : C'est le type le plus utilisé car il est rapide à calculer et permet

de simplifier efficacement l'image, qui revient à prendre la valeur maximale de la sélection. [46].

- Le mean pooling (ou average pooling), Soit la moyenne des pixels sélectionnés
: on calcule la somme de toutes les valeurs puis on divise par le nombre de valeurs. Nous avons donc obtenu une valeur intermédiaire pour représenter ce lot de pixels. La mise en commun moyenne utilise uniquement la réduction de dimensionnalité comme mécanisme de suppression du bruit [46].

- Le sum pooling est la moyenne sans avoir divisé par le nombre de valeurs (on ne
calcule que leur somme) [46].

Chapitre 2 : Apprentissage automatique 33

Figure 2.9. Type de pooling [46].

D'un autre côté, la différence entre le pooling max et le pooling moyen est plus évidente (et importante) : en termes de nature, le pooling max aura tendance à retenir les caractéristiques les plus importantes et les plus simples dans la sélection des pixels. Au contraire, le pool moyen est une valeur moyenne, et seules les caractéristiques moins significatives apparaîtront [45].

4.2.2.3. Couche de correction (ReLU)

ReLU (abréviation de Unité Linéaire Rectifiée) désigne la fonction réelle non-linéaire. ReLU remplace toutes les valeurs négatives sur la carte des caractéristiques par des zéros comme le montre la figure (2.10) ci-dessous. Donc l'objectif de ReLU est d'introduire la non-linéarité dans notre ConvNet, la plupart des données du monde réel apprises par ConvNet sont non linéaires (la convolution est une opération linéaire), la matrice est multipliée et ajoutée élément par élément, et les fonctions non linéaires (telles que ReLU) sont introduites pour résoudre des problèmes non linéaires[47][49].

La fonction d'activation ReLU est une fonction dite « rectifier » très utilisée en Deep Learning [46]. Définie par??(??) = max (0, ??). Dans les réseaux de neurones convolutifs, il est souvent appliqué à la sortie d'une couche de convolution pour les raisons suivantes :

· Comme mentionné ci-dessus, une convolution va réaliser des opérations d'additions/multiplications, les valeurs en sorties sont donc linéaires par rapport à celles en entrées.

· ReLU, selon sa définition, est une fonction qui vient briser (une partie de) la linéarité en supprimant une partie des valeurs (toutes celles négatives) [46].

Chapitre 2 : Apprentissage automatique 34

· ReLU permet également d'accélérer les calculs, en supprimant une partie des données.

· On ne modifie pas les données positives, ReLU n'affectera pas les caractéristiques mises en évidence par la convolution, au contraire : il les mettra davantage en évidence en élargissant l'écart "entre" (valeur négative) entre les deux caractéristiques[46].

Figure 2.10. La fonction d'activation ReLU [48]

La correction Relu [5] est préférable, mais il existe d'autres fonctions sont également utilisées pour augmenter la non-linéarité comme :

· La correction par tangente hyperbolique :

tan

e?? - e-??

(5)

 
 
 

· La correction par la fonction sigmoïde :

??(??) = (1 + ??-??)-1 (6)

4.2.2.4. Le flattening

Dernière étape de la partie «extraction des informations», flatening consiste à convertir les données en un tableau à une dimension pour les saisir dans la couche suivante. Nous aplatissons la sortie des couches convolutives pour créer un seul vecteur de caractéristiques long [49].

Chapitre 2 : Apprentissage automatique 35

Figure 2.11. Mise à plat des images finales [46]

4.2.2.5. Couche entièrement connectée

La couche entièrement connectée (en anglais : Fully connected (FC)) reçoit donc un vecteur de nombres en entrée et modifie ces valeurs pour produire un nouveau vecteur et renvoie des probabilités pour chaque classe de prédiction. Les couches FC sont typiquement présentes à la fin des architectures des CNN et chaque noeud de la couche est connecté avec tous les neurones de la couche précédente [45].

- Comment connait-on la valeur de ces poids ?

Le réseau de neurones convolutif apprend les valeurs des poids de la même manière qu'il apprend les filtres de la couche de convolution : lors de phase d'apprentissage, par rétro-propagation du gradient.

La couche FC détermine la relation entre la position de l'entité dans l'image et la classe. En fait, la table d'entrée est le résultat de la couche précédente, qui correspond à la carte d'activation d'une caractéristique donnée : des valeurs élevées indiquent l'emplacement de la caractéristique dans l'image (plus ou moins selon le regroupement). [45]

4.2.2.6. Couche de perte

La couche de perte (LOSS) est la dernière couche dans le réseau. Elle spécifie comment l'apprentissage du réseau pénalise l'écart entre le signal prévu et le signal réel. La sortie du neurone de la couche entièrement connectée est convertie en probabilité par la fonction d'activation "softmax". La perte softmax permettra de générer un score de probabilité normalisé, la somme des probabilités sera égale à 100%, soit 1. [50]

Chapitre 2 : Apprentissage automatique 36

4.2.3. Choix des hyperparamètres

Les réseaux de neurones convolutifs utilisent plus d'hyperparamètres.

Essentiellement, tout paramètre que vous pouvez initialiser (avant d'entraîner le modèle de réseau neuronal) peut être considéré comme un hyperparamètre

Au cours de chaque cas de test, différents hyperparamètres seront modifiés pour vérifier leur effet sur la précision et l'ajustement des hyperparamètres dépend généralement de l'expérience que des connaissances théoriques. Il n'y a pas de règles stables pour choisir les bons paramètres, et le choix dépend de la taille de l'ensemble de données d'entraînement et du type. Donc, Le réglage des hyperparamètres est important pour choisir les paramètres corrects afin d'obtenir les résultats souhaités. Le choix des paramètres corrects est essentiel, mais considéré comme une partie complexe de la formation en réseau. [35]

4.2.3.1. Nombre de Filtres

Dans les réseaux de neurones, il existe des couches pour effectuer des calculs. Chaque couche est constituée d'un nombre spécifique de neurones. Ainsi, le nombre de filtres dans CNN est le nombre de neurones présents dans un réseau neuronal. Chaque neurone effectue une convolution différente Le nombre de filtres est le nombre de neurones. Afin de rendre les calculs de chaque couche égaux, le produit de la quantité de caractéristiques et du nombre de pixels traités est généralement sélectionné pour être approximativement constant entre les couches. [35]

4.2.3.2. Forme du filtre

La forme du filtre est très variable dans la littérature. Ils sont généralement sélectionnés en fonction de l'ensemble de données. Les meilleurs résultats pour les images (28x28) se situent généralement à moins de 5x5 du première couche, tandis que les ensembles de données d'images naturelles (généralement des centaines de pixels dans chaque dimension) peuvent utiliser un filtre de première couche plus grand de 12 x 12 ou même 15 x 15. Par conséquent, le défi est de trouver le bon niveau de granularité pour créer des abstractions à la bonne échelle et s'adapter à chaque situation. [35]

4.2.3.3. Forme du Max Pooling

La valeur typique est 2 × 2. Un volume d'entrée très important peut justifier l'utilisation d'un pooling 4×4 dans la première couche. Cependant, le choix d'une forme plus grande

Chapitre 2 : Apprentissage automatique 37

réduira considérablement la taille du signal et peut entraîner la perte d'une trop grande quantité d'informations. [35]

5. Conclusion

L'apprentissage automatique est devenu l'outil de choix pour de nombreuses applications, regroupe les techniques permettant à une machine d'adapter et d'améliorer ses performances par l'expérience. Ces dernières années, le domaine d'intelligence artificiel a connu un grand renouveau avec les techniques de l'apprentissage profond, inspirées des réseaux de neurones du cerveau qui a particulièrement fait parler de lui.

L'apprentissage profond et plus précisément les réseaux de neurones convolutifs ont obtenus des performances remarquables dans divers domaines. C'est pour ce succès que nous avons choisis cet algorithme afin de l'appliqué dans la prédiction des défauts logiciels.

Chapitre 03 : SFP-NN :

Apprentissage profond pour

la détection des défauts

logiciels

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 38

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 39

1. Introduction

La prédiction des défauts logiciels donnera à l'équipe de développement plus de possibilités d'exécuter des tests plus d'une fois sur des modules ou les fichiers les plus susceptibles d'échouer. Cela conduira à une plus grande attention aux modules défectueux. En conséquence, la correction des défauts permet de fournir aux utilisateurs finaux des logiciels plus qualifiés. Cette approche réduit également les travaux de maintenance et de support du projet. Bien évidemment, une mauvaise qualité logicielle peut être causée par des défauts logiciels, ces défauts nécessitent beaucoup d'efforts pour les corriger et réduire leur impact. La prédiction des défauts logiciels réduit également les coûts, le temps et les efforts à consacrer aux produits logiciels.

L'apprentissage automatique est largement utilisé dans ce domaine. L'utilisation des algorithmes d'apprentissage automatique a permis d'améliorer la précision des prédictions. Cependant, ces algorithmes présentent des limites en raison de : (i) des connaissances d'experts sont nécessaires pour traiter les données, (ii) Un niveau, comparativement élevé, d'interaction humaine avec des experts est requis et (iii) une quantité massive de données d'apprentissage est nécessaire pour le bon fonctionnement du système, ce qui peut devenir difficile dans un environnement dynamique. Pour répondre aux restrictions ci-dessus, un sous-ensemble plus prometteur de l'apprentissage automatique, l'apprentissage en profondeur, a été adopté pour améliorer la prédiction et a permet d'obtenir des performances remarquables.

Pour explorer la puissance de l'apprentissage profond pour la prédiction des défauts et améliorer encore la précision de la prédiction, dans ce travail, nous proposons une nouvelle approche de prédiction des défauts, la prédiction des défauts basée sur le réseau de neurones (SFP-NN).

Dans ce chapitre nous allons décrire notre approche proposée. Par la suite, nous allons détailler chaque étape du processus de prédiction ainsi que les bases données que nous avons utilisés pendant notre étude expérimentale.

2. Approche proposée

Les trois éléments importants du processus de prédiction des défauts logiciels sont : jeu de données sur les défauts logiciels, techniques de prédiction des défauts logiciels et mesures d'évaluation des performances.

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 40

Dans notre étude, nous proposons une approche basée sur une technique avancée de l'apprentissage automatique qui est le deep learning. Nous avons opté pour l'algorithme d'apprentissage profond qui est le réseau de neurones convolutifs (CNN) qui a prouvé son efficacité dans plusieurs domaines. La figure 3.1 ci-dessous montre le déroulement du SFP-NN proposé, nous avons commencé avec une collection de bases de données sélectionnés avec divers pourcentages de pannes. Une étape de prétraitement est achevée afin de normaliser les données ainsi que les préparer pour l'étape suivante. Par la suite, la collection des bases de données est partitionnée en un ensemble d'apprentissage et un ensemble de test. Le classifieur CNN commence la phase d'apprentissage en initialisant les paramètres (couches, fonctions d'activation...etc.) afin de créer un bon modèle de classification. Enfin, une phase de test est appliquée afin de mesurer les performances du modèle créé

Figure 3.1. Schéma du SFP-NN proposé

2.1. Présentation des bases de données NASA et SOFTLAB

Dans cette étude, nous utilisons plusieurs ensembles de données de défauts logiciels de différentes entreprises comme données sources. Les ensembles de données SOFTLAB et

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 41

NASA ont été collectés respectivement auprès d'une société de logiciels turque et de nombreux sous-traitants du référentiel MDP (en anglais : Metrics Data Program) de la NASA [60], c'est une base de données qui stocke les données relatives aux problèmes, aux produits et aux mesures. Pour l'ensemble de données SOFTLAB, nous utilisons cinq projets AR1, AR3, AR4 , AR5 et AR6 qui sont des logiciels de contrôleur intégrés dans le référentiel PROMISE. Nous utilisons sept projets de la NASA : KC1, K, MC1, M, CM1, PC1, P, PC3 et PC4, qui ont les mêmes métriques dans le référentiel PROMISE [51]. Les auteurs dans ont constaté que l'ensemble de données de la NASA sont incohérents et contient des cas de conflit. Par conséquent, nous utilisons une phase de prétraitement des ensembles de données de la NASA pour la préparer aux étapes suivantes. [52]

Il existe 28 métriques communes entre la NASA et SOFTLAB. Ces métriques sont les métriques cyclomatiques de Halstead et McCabe, mais la NASA a des métriques de complexité supplémentaires telles que le nombre de paramètres et le pourcentage de commentaires.

Les mesures de complexité et de taille comprennent des mesures bien connues, telles que Halstead, McCabe, le nombre de lignes, le nombre d'opérateurs / opérandes et les mesures de nombre de succursales. Les métriques Halstead sont sensibles à la taille du programme et aident à calculer l'effort de programmation en mois. Les métriques McCabe mesure la complexité du code (flux de contrôle) et aident à identifier le code vulnérable. Les différentes métriques de McCabe comprennent la complexité cyclométrique, la complexité essentielle, la complexité de la conception et les lignes de code [2]

Les métriques cibles (variables dépendantes) sont le «nombre d'erreurs» et les «défauts». «Nombre d'erreurs» fait référence au nombre d'erreurs de module associées à l'ensemble correspondant de métriques du logiciel prédicteur, tandis que la métrique «Défaut» indique si le module est sujet aux pannes ou sans défauts. [2]

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 42

TABLE 3.1. PRESENTATION DE L'ENSEMBLE DE DONNEES UTILISES

Base de données

Attributs

Instances

Langage

Défectueux%

KC1

21

2107

C++

15.45%

K

40

458

C++

20.50%

MC1

39

9466

C &C++

0.7%

M

39

161

C++

32%

CM1

40

505

C

9.83%

PC1

40

1107

C

6.94%

P

40

5589

C

0.4%

PC3

40

1563

C

10%

PC4

40

1458

C

12%

AR1

31

121

C

7.44%

AR3

31

63

C

12.7%

AR4

31

107

C

18.69%

AR5

31

36

C

22.22%

AR6

31

101

C

14.85%

TABLE 3.2. DESCRIPTION DES METRIQUES UTILISEES

Base de Langage Description

données

Kc1

C++

Gestion du stockage pour la réception et le traitement des données au sol

Kc2

C++

Traitement des données scientifiques

mc1

C++

__

mc2

C++

Système de guidage vidéo

cm1

C

Un instrument de vaisseau spatial de la

NASA

pc1

C

Un système de satellites en orbite terrestre.

pc2

C

Simulateur dynamique pour systèmes de contrôle d'altitude

pc3

C

Logiciel de vol pour satellite en orbite terrestre

pc4

C

Logiciel de vol pour satellite en orbite terrestre

Ar1

C

Contrôleur embarqué

Ar3

C

Contrôleur embarqué

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 43

Ar4

C

Contrôleur embarqué

Ar5

C

Contrôleur embarqué

Ar6

C

Contrôleur embarqué

2.1.1. Les métriques de la NASA MDP

Les métriques logicielles fournissent des informations pour la prédiction des défauts. À l'heure actuelle, il existe de nombreuses mesures pour évaluer risques logiciels. Et parmi elles, trois catégories contiennent les métriques les plus utilisées. Ils sont McCabe, Métriques Halstead et lignes de code (LOC) métriques.

Chaque numéro de ligne du fichier CSV représente chacun de ces attributs, Y indique qu'il a détecté des pannes sujettes à des lignes de code, le tableau suivant montre les différents types de métriques et ces rôles :

Les Métriques de McCabe

CYCLOMATIC_COMPLEXITY - nombre cyclomatique (quantité de logique de décision) (V(g)).

DESIGN_COMPLEXITY - quantité de logique impliquée dans les appels de sous-programmes (IV(G)).

ESSENTIAL_COMPLEXITY - mesurer la quantité de logique mal structurée (ev(G)).

 

LOC_BLANK - Compte de McCabe des lignes vides dans le module.

 

LOC_CODE_AND_COMMENT - nombre de lignes contenant à la

LOC

fois du code et des commentaires dans le module.

Métriques

LOC_COMMENTS - nombre de lignes de code de commentaires dans le module.

 

LOC_EXECUTABLE - le nombre de lignes de code exécutable pour un module (pas de blanc ni de commentaire).

 

LOC_TOTAL - Le nombre total de lignes pour un module donné.

 

NUM_OPERANDS - nombre total d'opérandes.

 

NUM_OPERATORS - nombre total d'opérateurs.

 

NUM_UNIQUE_OPERANDS - le nombre d'opérandes distincts.

Métriques des

NUM_UNIQUE_OPERATORS - le nombre d'opérations distinctes.

opérateurs

- Operators : traditionnel (+, ++,>), mots-clés (return, if, continue)

 

- Operands: identifiants, constants

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 44

 

HALSTEAD_CONTENT - Le contenu en demi-longueur d'un module u = u1 + u2

Les métriques

HALSTEAD_DIFFICULTY : (taux d'erreur) proportionnel au nombre

de Halsted

d'opérateurs uniques.

 

HALSTEAD_EFFORT (E) - La métrique d'effort à mi-course d'un module E = V L

 

HALSTEAD_ERROR_EST- La métrique d'estimation d'erreur de

 

Halstead d'un module B = E2 / 3 1000

 

HALSTEAD_LENGTH (N) - le total de toute la longueur dans les méthodes de (opérande / opérateurs).

 

HALSTEAD_LEVEL (L) - l'inverse de la tendance à l'erreur du programme.

 

HALSTEAD_PROG_TIME (T)- La métrique de temps de programmation à mi-course d'un module T = E 18.

 

HALSTEAD_VOLUME (V) - est le contenu informationnel du programme (bit) il décrit la taille d'implémentation d'un algorithme.

 

label {Y,N} - module a / n'a pas un ou plusieurs défauts signalés (oui ou

Autres

non).

 

BRANCH_COUNT - du graphique de flux.

Les variables d'un ensemble de données peuvent être liées pour de nombreuses raisons. Il peut être utile dans l'analyse des données et la modélisation pour mieux comprendre les relations entre les variables. La relation statistique entre deux variables est appelée leur corrélation.

Une corrélation peut être positive, ce qui signifie que les deux variables évoluent dans la même direction, ou négative, ce qui signifie que lorsque la valeur d'une variable augmente, les valeurs des autres variables diminuent. La corrélation peut également être neuronale ou nulle, ce qui signifie que les variables ne sont pas liées. Nous avons utilisé la carte thermique (en anglais : Correlation Heat Map) [53] pour présenter la corrélation entre les attributs de quelque ensemble de données.

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 45

KC1 K

CM1 PC1

AR1 AR3

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 46

AR4 AR6

Figure 3.2. La carte de corrélation de quelques bases de données de la NASA

2.2. Normalisation

La normalisation des données est une technique couramment utilisée qui transforme de grandes plages de valeurs de données en petites valeurs de plage (ou valeurs binaires). Notamment, nous effectuons une normalisation min-max car il s'agit d'une approche de normalisation couramment utilisée en raison de sa grande précision et de sa vitesse d'apprentissage élevée. De plus, la normalisation min-max ne modifie pas la distribution de l'ensemble de données [54].

Nous effectuons la normalisation des données pour les raisons suivantes. Premièrement, la gamme de mesures logicielles extraites varie considérablement. Deuxièmement, il est obligatoire lors de l'utilisation d'algorithmes d'apprentissage en profondeur. Enfin, cela peut réduire les erreurs d'estimation et le temps de calcul (requis dans le processus d'apprentissage). La normalisation min-max peut être définie dans la formule (1) comme suit:

smL' - min (sm') (1)

Normalisation = (smL') =

max(sm') - min (sm')

où min (sm') et max (sm') représentent les valeurs minimales et maximales d'une métrique logicielle sm', respectivement, sm' représente une valeur de transformation logarithmique de

Figure 3.3. Architecture de réseau CNN

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 47

la métrique, et la normalisation (?????? ') représente la valeur normalisée de ?????? '. Après la normalisation des données, le module m peut être défini comme suit:

?? = < ????1 '' , ????2 '' , ... , ??????'' > (2)

Où ?? est un ensemble de métriques logicielles transformées en log et normalisées. [54] 2.3. Prédictions utilisant le CNN

Les avantages de l'utilisation de la capacité du CNN pour les taches de classification sont formés pendant le processus de rétro-propagation et l'introduction de couches de max pooling, cela s'est avéré utile dans beaucoup d'applications.

Les réseaux convolutifs se sont avérés efficaces pour diverses tâches telles que la classification des numéros d'écriture manuscrite, la classification des images médicales et la détection des visages. La performance promise nous incite à l'utiliser dans la prédiction de défauts logiciels.[55]

Dans le processus d'apprentissage du CNN, j'ai été guidé en obtenant la plus grande précision et en déterminant l'effet de la modification de l'architecture du modèle. Lorsqu'un paramètre (tel que le numéro d'époque) était modifié, il y avait une amélioration de la précision. Le paramètre a été modifié régulièrement et les meilleurs résultats obtenus ont été utilisés lors de ré-expérimentations afin d'obtenir le résultat satisfaisant.

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 48

Les paramètres qui doivent être définis pour le réseau incluent les paramètres de la fonction d'activation, le nombre de couches cachées et d'autres hyperparamètres. Dans cette section nous allons présenter les paramètres de notre classifieur CNN.

2.4. Choix des hyperparamètres

Différents hyperparamètres ont été modifiés au cours de chaque cas de test, pour examiner l'impact de celui-ci sur la précision. Le réglage de l'hyperparamètre est important pour choisir les bons paramètres afin d'obtenir les résultats souhaités. Il n'y a pas de règles précises pour choisir exactement les bons paramètres, en général, le choix dépend du type et de la taille de l'ensemble de données d'apprentissage. Le choix des paramètres corrects est essentiel mais considéré comme une partie complexe de la formation du CNN. Cependant, le réglage de l'hyperparamètre dépend souvent de l'expérience plutôt que des connaissances théoriques. Les compromis sont intrinsèques à la sélection des paramètres en raison de restrictions telles que la limitation de la mémoire [56]

Pendant la phase expérimentale, et lorsque nous atteignons le meilleur nombre pour l'un de ces hyperparamètres, on commence alors à manipuler d'autres hyperparamètres pour obtenir le meilleur résultat. Après cela, nous comparons les valeurs qui améliorent les performances du CNN. Les valeurs qui n'ont pas eu d'effet positif sur les résultats de l'algorithme sont supprimés.

- Nombre d'époques : Une époque est le nombre de passages dans l'ensemble de données [56] Dans notre expérience, nous avons testé plusieurs nombre d'époques (jusqu'à 70 époques), pour déterminer le meilleur nombre d'époques pour que le réseau converge correctement.

- Taille du lot (Batchsize) : est le nombre d'échantillons d'apprentissage. Batchsize est utilisé pour contrôler de nombreuses prédictions qui doivent être faites à la fois et s'adapter au modèle. En général, la plus grande taille de lot nécessitait plus d'espace mémoire [56]. D'autre part, les tailles de petits lots sont préférables car elles tendent à produire une convergence dans un petit nombre d'époques.

- Nombre de couches cachées : De nombreux facteurs peuvent influencer grandement les performances des réseaux, tels qu'un certain nombre de couches cachées, des neurones dans la couche cachée. Le nombre de couches devient le critère le plus important dans l'architecture des réseaux [56]. Dans notre travail, et après plusieurs tests

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 49

empiriques, nous avons opté pour quatre (04) couches de convolution, une couche Flatten et une couche FC pour générer le résultat de prédiction.

- Fonctions d'activation : La fonction d'activation d'un neurone artificiel définit la sortie de ce neurone en fonction de l'entrée ou de l'ensemble d'entrées. Chaque fonction d'activation prend une entrée x et exécute un calcul mathématique spécifique dessus. Les fonctions d'activation courantes utilisées dans le réseau de neurones profonds sont la fonction Sigmoid, Unité Linéaire Rectifiée (ReLU) et tangente hyperbolique.

La fonction Sigmoïde : fréquemment utilisé en rétro-propagation du gradient. C'est une extension appropriée de la non-linéarité qui limite les utilisations précédentes dans les réseaux de neurones. Elle présente également un degré de lissage adéquat [56] .

Unités linéaires rectifiées (ReLU): utilisé comme fonction d'activation pour les couches cachées dans notre réseau de neurones profonds. Elle est largement utilisée pour former un réseau beaucoup plus profond que les fonctions d'activation Sigmoïde ou Tanh. ReLU fournit un apprentissage plus rapide et plus efficace pour le réseau de neurones profonds sur des données complexes et de grande dimension. L'avantage le plus important de ReLU est qu'il ne nécessite pas de calcul coûteux, juste une comparaison et une multiplication. ReLU a une rétro propagation efficace sans problème d'explosion/ disparition du gradient, ce qui en fait un choix particulièrement approprié pour le réseau de neurones profond. [56]

Les fonctions ReLU et Sigmoïde ont été utilisé comme des fonctions d'activation dans notre réseau de neurones convolutifs. Afin de résumer les paramètres de notre réseau de neurones convolutifs, ces paramètres nous a permis d'obtenir des résultats prometteurs, la table 3.3 présente chaque hyperparamètre avec les valeurs appropriées

Chapitre 03 : SFP-NN : Apprentissage profond pour la prédiction des défauts logiciels | 50

TABLE 3.3. LES PARAMETRES DU CLASSIFIEUR CNN UTILISE

Les couches de
convolutions

Parameters

Conv1

Conv2D(128, kernel_size=1, activation='relu')

Conv2

Conv2D(64, kernel_size=1, activation='relu')

Conv3

Conv2D(32, kernel_size=1, activation='relu')

Conv4

Conv2D(16, kernel_size=1, activation='relu')

Flattening

Flatten()

Fully Connected

Sigmoïde

3. Conclusion

Les objectifs de cette thèse sont d'étudier les capacités et le potentiel des algorithmes d'apprentissage profond, d'améliorer les performances de SFP et de déterminer les meilleurs algorithmes qui pourraient être utilisés à cette fin.

Nous avons mené des expériences suivies d'analyses et de comparaisons pour vérifier l'efficacité des algorithmes d'apprentissage profond (CNN). Les expériences ont été appliquées sur 14 ensembles de données. Les résultats des expériences ont été évalués en utilisant l'exactitude, la perte. Enfin, l'analyse et les comparaisons ont été effectuées pour démontrer les objectifs de notre étude.

Chapitre 4 : Implémentation 51

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous devons apprendre à vivre ensemble comme des frères sinon nous allons mourir tous ensemble comme des idiots"   Martin Luther King