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

 > 

Conception de filtre d'un réseau d'objets connectés par apprentissage profond


par Sandra Rochelle NYABENG MINEME
SUP'PTIC - Ingénieur de sécurité des réseaux et des systemes 2015
  

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

2. Tests des modèles et évaluation

2.1. Détection de trafic IoT malveillant

Nous avons entraîné et testé deux algorithmes différents pour pouvoir choisir le plus efficace.

En ce qui concerne le modèle LSTM, ses performances étaient faibles au début mais ont donné de bons résultats par la suite en ajustant le réseau. Le modèle avait du mal à se généraliser mais après avoir réduit le nombre de neurones et le nombre de couches, il a fini par donner de meilleurs résultats. La perte était élevée lors des premiers tests de l'entraînement toutefois elles ont aussi diminué. Une autre difficulté est le modèle qui prenait aussi trop de temps à s'entraîner, au moins 40 minutes pour un epoch et autour des 400 ms/étape et ça pouvait largement dépasser ces chiffres. Les résultats du jeu de validation nous ont permis de nous rendre compte que l'entraînement au début n'était pas concluant et qu'il fallait changer les paramètres du réseau de neurone.

Figure 27 : Evolution de la précision de l'algorithme LSTM lors de l'entraînement avec le jeu de validation et d'entraînement lors du premier entrainement avec 04 couches de 128 neurones chacun

Cette courbe présente l'évolution de la précision du modèle après chaque epoch pendant l'un des premiers entraînements. Nous obtenions presque toujours les mêmes schémas. Elle était très élevée au début autour de 90% ou 80% et descendait drastiquement jusqu'à 40% ou moins avant de remonter et se maintenir autour de 55% quelque soit le nombre d'epoch et le temps d'entraînement.

Figure 28 : Evolution de la perte de l'algorithme LSTM lors de l'entraînement avec le jeu de validation et celui d'entraînement lors du premier entraînement avec 04 couches de 128 neurones chacun

Cette figure nous permet de visualiser l'évolution des pertes après chaque epoch lors des premiers entraînements. Celle-ci était faible durant les premiers epoch, environ 0.1% mais ensuite augmentait tout aussi vite que descendait la précisions et se maintenait autour des 14% ou 15% quelque soit le nombre d'epoch.

Figure 29 : Evolution de la précision de l'algorithme LSTM lors de l'entraînement avec le jeu de validation et d'entraînement lors du dernier entraînement avec 02 couches de 100 neurones chacun

Ensuite nous avons changé les paramètres du réseau, réduit le nombre de couches et le nombre de neurones. Nous avons aussi changé le nombre de classes à prédire pour mélanger certaines classes que nous avons jugé non pertinentes de séparer. La figure ci-dessus nous démontre que cela a eu des effets positifs sur le modèle. Elle a rapidement atteint les 99% de précision et le temps d'entraînement de chaque epoch a diminué de quelques minutes.

Figure 30 : Evolution de la perte de l'algorithme LSTM lors de l'entraînement avec le jeu de validation et d'entraînement lors du dernier entraînement avec 02 couches de 10101 neurones chacun

La perte quant à elle a énormément diminué et même si celle du jeu de validation nous a prouvé qu'on pouvait encore plus entraîner le modèle, le temps d'entraînement global du modèle qui pouvait prendre un jour ou deux nous a amenés à nous arrêter à ces résultats.

A contrario, le modèle MLP était beaucoup plus performant et donnait des résultats encourageants dès les premiers entraînements. La précision dépassait souvent les 98% et la perte très faible était inférieure à 1% pendant tous les entraînements même lorsqu'on changeait les paramètres du réseau ou les fonctions de pertes et d'optimisation. Le sur-ajustement n'est pas énorme. Le temps d'entraînement ici était 10 fois plus rapide. Tout au plus 15 minutes par epoch.

Figure 31 : Evolution de la perte de l'algorithme lors de l'entraînement avec le jeu d'entrainement et celui de validation

On observe sur la figure 31 que la courbe de la perte du jeu de validation est légèrement au-dessus à celle du jeu d'entraînement. La perte du jeu d'entraînement diminuait à chaque epoch pour essayer de rattraper la perte du jeu de validation qui était toujours plus faible.

Figure 32 : Evolution de la précision de l'algorithme lors de l'entraînement avec le jeu d'entraînement et le jeu de validation

Les modèles ont été entraînés plusieurs fois avec des paramètres différents (nombre de couches, nombres de neurones dans chaque couche, fonction de perte, optimiseur, etc.) pour pouvoir obtenir des résultats satisfaisants. Nous ne déduisons que le choix de l'algorithme impacte énormément sur les résultats mais aussi le choix des attributs en entrées, leur nombre et celui des classes à prédire en sortie. Lors de l'entraînement, le LSTM a été celui qui nous a donné le plus de difficulté surtout qu'un entraînement de seulement 05 epoch pouvait prendre une journée et parallèlement il était plus facile d'essayer plusieurs changements sur le MLP au niveau des paramètres car plus rapide.

Il faut savoir que nous avons entraîné le LSTM avec moins de 9000 échantillons par epoch alors que pour le MLP, c'était environ 25800 échantillons par epoch. Cela démontre bien à quel point le LSTM était lent même avec un nombre d'échantillons inférieur.

Une fois que les résultats de l'entraînement nous satisfaisaient, nous enregistrions le modèle, faisions des prédictions et évaluions les résultats afin de comparer ce que le modèle prédit et les valeurs réelles.

Tableau 7 : Comparaison entre les résultats des modèles sur le jeu de test

 

Précision

Perte

Temps

MLP

98.75%

0.37 %

9s

LSTM

99.40%

0.19%

743s

Avec les chiffres obtenus pour chacun le même nombre d'échantillons, il apparaissait donc clairement que le LSTM était le meilleur choix pour la prédiction par rapport aux performances de la machine sur laquelle on travaillait. Cependant nous avons aussi pris en compte le temps de prédiction de chaque modèle et même si le LSTM donne de bons résultats, nous avons opté pour le MLP pour prédire car plus rapide.

Toutefois, si on décide d'effectuer le travail de prédiction dans le cloud avec des serveurs beaucoup plus performants avant de renvoyer les résultats à la passerelle, on pourrait utiliser le LSTM.

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








"Entre deux mots il faut choisir le moindre"   Paul Valery