Comment fonctionne un réseau de neurones ? - Les données #4

in #fr6 years ago

artificial-intelligence-3382514_1920(1).jpg
https://pixabay.com/en/artificial-intelligence-brain-think-3382514/

Lors de ces derniers articles, nous nous sommes largement intéressés au fonctionnement des réseaux de neurones. Cependant, nous n'avons en aucun cas abordé la partie liée aux données que nous allons utiliser. En effet, sans données, nous ne pouvons pas apprendre à notre système. Ainsi, dans cet article, nous allons nous intéresser à la sélection des données.

Cet article et dans la continuité des autres articles. Cependant, vous pouvez suivre cet article sans avoir suivi les autres. Je vous laisse tout de même les liens des articles précédents :

L'utilisation des données

Lorsque nous apprenons à la machine, nous allons lui donner des données sur lesquelles elle va pouvoir apprendre. Les données jouent un rôle majeur. Elles nous permettent d'établir les bases de l'ensemble de notre système. Si nous avons de mauvaises données, notre système aura des difficultés à apprendre. Afin de choisir, de bonnes données, nous allons devoir les récoltés. Cela peut-être, par exemple, des images d'animaux, si nous souhaitons réaliser un système de classification d'animaux à l'aide à partir d'image. Bien entendu, avant de sélectionner nos données, il nous faut établir ce que notre système va réaliser. Si c'est une classification, par exemple, à l'aide d'images ou de sons ainsi que sa thématique (classification d'animaux, de plantes ...).

Sélection des données

Une fois que nous avons établi le type de données ainsi que la thématique, nous allons pouvoir commencer à sélectionner des données. Durant cette phase, deux écoles s'affrontent. Tout d'abord, la première qui souhaite donner au système des données brutes, c'est-à-dire sans modification. Ainsi, c'est au système de déterminer les modifications à effectuer afin de déterminer au mieux, par exemple, les caractéristiques d'un objet. La seconde école pense que réaliser un traitement au préalable sur nos données afin d'aider le système lors de son traitement est une bonne chose. En effet, elle permet parfois une optimisation très importante en terme de temps de traitement. En effet, on peut parfois avoir des résultats équivalents à une machine qui a du s'entraîner pendant une semaine avec des données brutes alors qu'avec cette méthode, il nous aura fallu seulement 6 heures d'entraînement. En revanche, cela peut-être parfois problématique. En effet, en fonction de votre cas d'application, il est parfois nécessaire d'avoir des données brutes. Il se peut que lors de notre analyse, nous en oublions certains détails qui une fois transformer nous donne une donnée incohérente. Bien entendu, je ne suis ici que pour vous montrer que ces deux écoles existent. Je ne suis pas là pour vous dire laquelle choisir, cela dépendra de votre cas d'application.

Qu'est-ce qu'une bonne donnée ?

Tout d'abord, il vous faut définir ce qu'est votre cas d'application. En effet, si vous souhaitez avoir un système qui vous permet de classifier des animaux à partir d'image, vous n'aller pas avoir des images de bateaux par exemple. Dans le cas d'une image, il nous faut des images qui représente réellement le contexte. En effet, si vous souhaitez classifier des animaux, il nous faut définir à partir de quoi, on souhaite réaliser la classification. Si nous souhaitons réaliser une classification à partir de l'ensemble du corps de l'animal ou bien à partir de ces pattes. On pourrait réaliser un système qui puisse réaliser ce genre de classification à partir du corps ou des pattes mais, il sera nettement moins performant que si on concentre notre étude sur une seule partie.



Une autre condition qui doit être respectée est le fait que les données présentes dans une catégorie doit être respecté. En effet, dans nos données présentes dans la catégorie *chiens*, nous devons trouver uniquement des images qui représentent des chiens. Cela peut paraître évident, mais parfois, il arrive qu'il y ait des erreurs. Ces erreurs se réalisent généralement lors de l'annotation, l'erreur est humaine.

Enfin, les données doivent être assez hétérogènes. En effet, à l'heure actuelle, un réseau de neurones à convolution ne peut pas apprendre à partir d'une seule image, sinon nous avons un problème de sur-apprentissage, mais nous y reviendrons plus tard. Ce qu'il faut savoir, c'est que si vous montrer uniquement des images de chiens avec un poil uni, et bien si nous présentons une image d'un chien qui à des tâches sur son poil, notre système n'arrivera pas a classifier cette image. Il est à noter qu'il y aura sûrement une probabilité d'appartenance qui sera importante, mais pas suffisamment pour que le système soit sûr de lui.

Combien en faut-il ?

Après la qualité, le second problème auquel on fait face est la quantité. Comme nous l'avons évoqué précédemment, il nous faut des données hétérogènes et un nombre assez conséquent afin de déterminer tous les cas particulier. Le second point à prendre en compte est que nous devons avoir des catégories égales en nombre d'images. En effet, si nous avons des catégories plus importantes que d'autres nous avons un risque que notre système délaisse les catégories où nous avons peu de données. À l'heure actuelle, nous ne pouvons pas dire qu'il y a un nombre précis qu'il faut respecter. Afin de pouvoir déterminer la quantité nécessaire, c'est à vous de faire plusieurs essaie est de visualiser la phase d'entraînement et ainsi, voir si votre système arrive à déterminer correctement la catégorie d'appartenance.


Le fait d'avoir trop de données n'est pas réellement un problème en soit si elles sont variées, sinon nous avons des problèmes de sur-apprentissage. Au contraire, plus nous avons de données et plus notre système pourra apprendre.

Qu'est-ce que le sur-apprentissage ?

Pour définir simplement, le sur-apprentissage est le fait d'apprendre des données par cœur. Pour imager, c'est comme si nous avons pris un seul chien pour définir ce que représente un chien. Si ce chien en question a, par exemple, le poil blanc, notre système apprendra que pour un chien, il faut qu'il ait le poil blanc. On retrouve aussi le phénomène de sur-apprentissage lorsque nous entraînons énormément de fois notre système sur les mêmes données. En effet, a force de les revoir, il va automatiquement les apprendre. Le problème lié au sur-apprentissage est que notre système n'est plus performant, car il ne pourra classifier uniquement des images qu'il a déjà vu. Ce que nous voulons, c'est laisser un peu de flou à notre système lui laissant une certaine liberté dans son choix. Ainsi, il pourra déterminer au mieux la catégorie d'appartenance.

Vérifier l'apprentissage

Afin de vérifier le bon fonctionnement de notre système, nous allons introduire la notion de vérification. Ce que nous allons faire, c'est créer une base dit d'entraînement et une base dit de validation. La base d'entraînement va nous servir à entraîner notre modèle. C'est sur cette base que notre système va apprendre. La base dite de validation va nous permettre de vérifier si notre système a bel et bien appris. Cette base n'est jamais montrée à notre système. Ainsi, nous avons avec cette base un réel aperçu des performances de notre système.

Mise en place


Pour ce faire, nous allons sélectionner 4/5 de nos données que nous allons sélectionner pour la phase d'entraînement et 1/5 que nous allons définir comme étant notre base de validation. Un système de validation croisée existe, mais nous n'allons pas le décrire dans cet article (sûrement dans un prochain). Une fois nos données en place, il ne nous reste plus qu'à apprendre à notre système.

Vérification de l'apprentissage


Afin de vérifier le réel apprentissage de notre système, nous allons classifier toutes les images de notre base de validation. Nous allons, pour chacune de ces classifications, sauvegarder le résultat de la prédiction de notre système et la comparer à la vérité terrain. Afin de pouvoir avoir un meilleur aperçu, nous allons réaliser une matrice de confusion. Cette matrice va nous permettre d'avoir un tableau qui regroupe les prédictions de notre système par rapport à la vérité terrain.


Screenshot from 2018-07-21 12-37-09.png
Illustration d'une matrice de confusion.
Source : Rerere

Si nous lisons cette matrice de confusion, nous pouvons voir que sur les 100 images de chien, 98 ont été prédites par notre système étant un chien et 2 en tant que chat. Sur les 100 images de chat, 5 ont été prédites en tant que chien et 95 en tant que chat.
Ici, nous avons une matrice de confusion non normalisée. En la normalisant, nous obtenons des pourcentages, ce qui, pour une étude, peut être plus intéressant.


Résumé

Dans cet article, nous avons abordé l'importance des données. En effet, c'est sur celle-ci que notre système va apprendre. Afin d'avoir un système performant, il nous faut des données qui représentent bien le contexte, différentes et en grand nombre. Le choix des données est crucial, car si nous en avons des mauvaises, nous pouvons rencontrer des problèmes lors de l'apprentissage. Le second problème auquel on peut faire face est le sur-apprentissage, le fait que notre système apprennes par cœur sur nos données d'entraînement. Enfin, afin de vérifier le bon apprentissage de notre système, nous devons réaliser deux bases, une d'entraînement et une de validation. Ainsi, nous allons pouvoir réaliser une classification sur l'ensemble de notre base de validation et comparer la vérité terrain ainsi que la prédiction de notre système. Pour un meilleur aperçu, nous pouvons utiliser une matrice de confusion.


Merci à vous pour votre temps de lecture, vous êtes de plus en plus nombre à me suivre et à upvoter mes articles sur cette série ce qui me motive encore plus :)
N'hésitez pas à me dire en commentaires des améliorations, des critiques ou même à poser vos questions si vous avez des interrogations (il n'y a pas de questions bêtes).

Aller plus loin :

Sort:  

Congratulations @rerere! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - The results, the winners and the prizes

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

Une quatrième partie toute aussi bonne et exhaustive que la précédente ! Upvoté à 100% !

Merci beaucoup :)

@fr-stars supporte tous les projets de curation francophones. Nous avons soutenu ce post via notre partenariat avec @francosteemvotes.
Rendez-vous sur notre serveur Discord pour plus d'informations.

Merci, ça fait plaisir !

Excellent article, très bien écrit et tout à fait compréhensible... même pour moi! En somme, c'est le même fonctionnement que pour le cerveau humain... intéressant.

Petite suggestion pour afficher tes liens. Tu peux les inscrire comme ceci: [Source](lien du site de l'image ou du site internet).

Continue ton bon travail!

Merci, oui, les chercheurs s'inspirent du fonctionnement du cerveau et essaye de mettre en place des solutions qui y ressemblent plus ou moins (Biomimétisme).



This post has been voted on by the steemstem curation team and voting trail.

There is more to SteemSTEM than just writing posts, check here for some more tips on being a community member. You can also join our discord here to get to know the rest of the community!

Merci beaucoup =)

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63550.59
ETH 2644.53
USDT 1.00
SBD 2.81