Comment fonctionne un réseau de neurones ? - Propagation #1

in fr •  6 years ago 

artificial-intelligence-3382514_1920.jpg

    Dans un monde où la technologie évolue très rapidement, nous essayons de rendre les tâches longues et fastidieuses réalisables par des machines. La découverte des réseaux de neurones a permis de réaliser une nouvelle approche dans la résolution de ces tâches. À partir de données collectées, nous avons réussi à faire apprendre à la machine ds notions parfois complexes.

    Dans cette suite d’articles, nous allons essayer de comprendre et de détailler le fonctionnement d’un réseau de neurones profonds. Dans cet article, nous allons nous intéresser à l’architecture de base d’un réseau de neurones ainsi que son fonctionnement. Nous aborderons dans un autre article la phase liée à l’apprentissage.

Fonctionnement d’un réseau de neurones

    Inspirés du fonctionnement des neurones biologiques, les réseaux de neurones se modifient eux-mêmes en fonction des actions et des résultats qu’ils obtiennent permettant de réaliser un apprentissage par eux-mêmes. Cet apprentissage lui permet notamment de résoudre des problèmes complexes tels que la reconnaissance de forme ou bien le traitement du langage. Afin de mieux comprendre le fonctionnement d’un réseau de neurones, nous allons nous appuyer sur le cas d’un système de classification.

Architecture

    À l’aide d’un réseau de neurones, nous allons chercher à classifier des objets. Pour ce faire, nous allons donner en entrée de notre système différente caractéristiques. À partir de cela, nous aimerions que notre système nous dise à quelle catégorie appartient notre objet. Par exemple, on pourrait imaginer que l’on va réaliser un système de classification pour des animaux. Ainsi, nous donnerons, en entrée de notre système, différentes caractéristiques comme la taille, le poids… Ainsi, notre système va, à partir de ces données, chercher la catégorie de l’animal qui correspond le mieux.

    Les réseaux de neurones sont composés de plusieurs couches. Chacune d’entre elles est composée de neurones qui sont chacun connecté à tous les autres de la couche précédente. Nous pouvons visualiser cela à l’aide du schéma ci-dessous.

Document sans titre.jpg
Illustration d'un réseau de neurones.

    Ici, nous allons avoir en entrée, sur la couche bleue, différentes valeurs correspondant aux caractéristiques de notre objet que nous souhaitons classifier. En sortie, sur la couche verte, nous souhaitons obtenir un score pour chacune des catégories qui représente un animal que notre système aura appris. Ce score que nous allons transformer en probabilité, va nous indiquer la correspondance entre la catégorie et les données que nous avons donner en entrée de notre système. Ainsi, ces probabilités vont nous indiquer l’appartenance ou non de chaque catégorie par rapport à notre objet. Ainsi, il nous suffira de prendre la plus grande probabilité afin de déterminer, avec le plus de chance, la catégorie d’appartenance de notre objet.

    Au tout début, nous avons, en entrée de notre réseau, différentes valeurs. Notre objectif, avec ce réseau, est d’obtenir des probabilités pour chaque catégorie possible. Pour ce faire, nous allons propager nos valeurs d’entrée sur toutes les autres couches de notre réseau.

Fonctionnement d’un neurone

    Un neurone va prendre, en entrée, plusieurs valeurs. Nous allons, dans un premier temps, pour chacune de ces valeurs, les multiplier par un poids correspondant qui se situe sur les arêtes des connexions des neurones. Ces poids sont définis aléatoirement lorsque nous initialisons notre réseau pour la première fois. Puis, nous allons réaliser la somme de ces valeurs que nous allons passer dans une fonction d’activation. La plus connue et la plus utilisée est la fonction ReLU (*Rectified Linear Unit*), c’est celle-ci que nous allons utiliser. Cette fonction d’activation va nous renvoyer une nouvelle valeur que nous allons propager à la couche suivante. Vous pouvez visualiser cela à l’aide du schéma ci-dessous.

Document sans titre(2).jpg
Fonctionnement d'un neurone.

Ainsi, si nous écrivons cela d’un point de vue mathématique, nous avons :

Screenshot from 2018-07-12 16-23-47.png

Pour un neurone j présent sur la couche n, nous appliquons une fonction d’activation g présent sur la couche n. Cette fonction d’activation prend en paramètre la somme du produit des poids notée w pour le poids présent sur la couche k et le neurone j, par rapport à la valeur correspondante, notée x, de la couche précédente.

    Nous appliquons ce fonctionnement sur tous les neurones de notre réseau. Ainsi, nous avons propagé nos valeurs que nous avons eues en entrée jusqu’à la fin de notre réseau, ou nous allons obtenir un score pour chaque catégorie de fin que nous avons.

Fonction d’activation - ReLU (Rectified Linear Units)

    Lorsque nous avons abordé les différentes étapes du fonctionnement de notre réseau, nous avons parlé de la fonction ReLU. Cette fonction retourne x si x est positive, sinon 0 :

g(x) = max (0, x)

gKA4kA9.jpg
Fonction d'activation - ReLU (Rectified Linear Unit).

Transformer notre score en probabilité – Fonction Softmax

    Afin de pouvoir interprété le score que nous obtenons en sortie, nous allons transformer ce score en probabilité. Pour ce faire, nous allons utiliser la fonction softmax. Cette fonction prend en entrée un vecteur et va nous renvoyer en sortie un autre vecteur dont les éléments sont des nombres strictement positifs et dont la somme et égale à 1.

Screenshot from 2018-07-12 16-36-07.png

Petit exemple

    Avant de nous quitter, j’aimerais vous montrer un exemple simple du fonctionnement d’un réseau de neurones. Dans cet exemple, nous sommes dans le cas d’un classificateur de chien et de chat. Nous allons ici, avoir en entrée deux paramètre la taille et le poids de l’animal. Ainsi, à partir de ces deux arguments, nous allons essayer de classifier l’animal ayant ces caractéristiques. Nous n’allons pas chercher à obtenir la bonne catégorie, mais nous allons nous intéresser aux éléments que nous avons abordé durant cet article.

Document sans titre(3).jpg
Illustration de la propagation d'un réseau de neurones.

    Comme vous pouvez le voir sur notre schéma, nous avons créé un réseau de neurones composé de deux couches. De plus, nous avons généré les valeurs des poids aléatoirement. Nous avons ici, en entrée, les caractéristiques de notre animal et, en sortie, les catégories que notre système connaît. Nous avons donc propagé nos valeurs d’entrée dans notre réseau. Pour ce faire, nous avons pour chaque neurone, multiplier la valeur d’entrée par un poids correspondant. Puis, nous avons fait la somme de nos valeurs que nous avons passée dans notre fonction d’activation. Une fois cette action répété sur l’ensemble de notre réseau, nous avons obtenu un score pour chaque catégories. À partir de ce score, nous pouvons le transformer en probabilité. Ainsi, il ne nous reste plus qu'à selectionner la probabilité la plus importante afin de déterminer la catégorie d'appartenance de l'animal.

    Dans ce réseau, nous avons simplement vu le fonctionnement de la propagation. Dans le prochain article, nous allons aborder la partie liée à l’apprentissage, la rétro-propagation. Nous allons voir comment notre réseau va réussir à apprendre.

    Merci pour votre temps de lecture. N’hésitez pas à me dire si cela a été clair pour vous. Ici, j’ai juste réalisé une introduction, il y a énormément à dire sur le fonctionnement des réseaux de neurones. N’hésitez pas à me dire si j’ai omis certains points ou si vous avez des conseils pour m’améliorer.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Félicitation pour ce bel article ! Super bien écrit même si par moment il était peut être un peu complexe pour ceux qui n'y connaissent pas grand chose comme moi :)

Merci pour ton retour, ça me fait plaisir. N'hésite pas à poser des questions si tu as une interrogation sur une partie de l'article, j'y répondrais. Oui, je sais que ça peut-être un peu compliqué. Si ça peut te rassurer, au tout début je n'y connaissait rien non plus :)

C'est la partie sur les fonctions mathématiques qui m'a un peu perdu puisque ça à l'air d'être des fonctions assez complexe . Oui mais c'est vraiment super intéressant j'attends la suite sur l'apprentissage ! :D Je n'aurais pas cru vu comment ton article est écrit encore bravo.

Félicitations ! Votre post a été sélectionné de part sa qualité et upvoté par le trail de curation de @aidefr !

La catégorie du jour était : #technologie


Si vous voulez aider le projet, vous pouvez rejoindre le trail de curation ici!

Bonne continuation !

Super intéressant ! J' adore justement tout ce qui est IA :D ! (A ce qu'il parait j' en serais une ^^)

Merci ! Comment ça tu en serais une ?

Ces toi une théorie selon laquelle je suis une intelligence artificielle et pas un humain car je suis partout sur Steemit lol (cf @planetenamek ^^)