Comment fonctionne un réseau de neurones ? - Réseau Résiduel #6

in #fr7 years ago (edited)


artificial-intelligence-3382514_1920(1).jpg

https://pixabay.com/en/artificial-intelligence-brain-think-3382514/

Dans l'article précédent, nous avons vu le fonctionnement des réseaux Inception. Ces modules ont permis la création de réseaux de plus en plus profond. Cependant, plus les réseaux de neurones sont profonds et plus nous atteignons une limite. Nous allons dans cet article, essayé de comprendre cette limite et comment nous pouvons la franchir.

Pour des raisons de compréhension, je vous recommande d'avoir lu l'article sur le fonctionnement des réseaux à convolution, pour pouvoir comprendre toutes les subtilités.

Les réseaux résiduels

Afin d'améliorer un réseau, l'une des solutions les plus simples et de rajouter plusieurs couches. Cependant, nous arrivons à une limite. En effet, notre réseau sature. Lorsque nous rajoutons des couches, nous avons constaté que si notre réseau en à trop, nous observons des performances similaires, voir même moins performante qu'un réseau ayant moins de couches.
Ce constat nous laisse pensé que l'information qui se propage à l'intérieur de notre réseau se dégrade.

Qu'elle est cette dégradation ?

Cette dégradation se déroule lors de la rétro-popagation. On peut décrite ce phénomène par le fait qu'à chaque fois que l'on ajoute des paramètres notre système va être de plus en plus précis. En effet, les paramètres vont converger vers une valeur de plus en plus petite et précises.
Le problème que nous pouvons relever ici, c'est que les poids présents dans la couche finale de notre réseau sont devenu presque insignifiant. Ils ont un impacte moins important que les premiers. De plus, lorsque nous obtenons une donnée particulière, notre système va obtenir une erreur plutôt importante. Par la même occasion, le changement des poids va aussi être important. Ainsi, notre réseau va être extrêmement perturbé et devenir moins précis. On parle alors du problème du Vanishing gradient (Gradient de disparition).


Pour imager, nous allons prendre le cas d'un classificateur d'image (réseau de neurones à convolution) très profond. Ce qui va se passer, c'est que notre réseau va extraire les informations présentes sur notre image. Cependant, à force d'extraire les informations présentes sur notre image et de les résumés, notre réseau va perdre de l'information. Ainsi, on peut supposer que notre réseau va rester sur une information très détaillée. Par exemple, dans le cas d'une voiture, nous pouvons supposer qu'au lieu d'obtenir l'information roues, il va obtenir l'information vis. Notre système va donc chercher à être extrêmement précis sur sa description. Cela est problématique. En effet, si nous sommes trop précis, nous allons avoir un problème lorsque nous aurons une voiture qui n'a pas, par exemple, de vis sur les roues. (Désolé pour les spécialistes de voitures, je ne sais pas trop comment fonctionne les roues des voitures, mais c'est pour imager) On peut aussi voir ce problème si nous avons une image prise de loin et que nous ne pouvons pas voir les détailles de l'objet. Notre système n'arrivera pas à détecter l'objet en question. De ce fait, il faut que notre réseau puisse s'adapter en fonction de notre donnée et rester assez large dans son analyse.

Corriger cette dégradation

Afin de corriger cette dégradation, nous voulons que notre réseau se concentre sur les détails de notre image, tout en reste assez large dans son analyse. Pour ce faire, l'idée des réseaux résiduels est de transmettre l'image à travers notre réseau. Ainsi, si nous avons en entrée une matrice x, nous allons dans un premier temps réaliser un traitement que nous nommerons par une fonction qui prend en entrée notre valeur x. Donc, nous avons F(x) qui réalise un traitement spécifique, comme une convolution ou un pooling. Puis, nous allons, à partir de ce résultat, ajouter x à notre valeur. Nous allons ainsi avoir :

y = F(x) + x


res.jpg
Source : Rerere
Illustration du fonctionnement d'un réseau résiduel.

Ainsi, nous allons pouvoir, à l'aide de ce type de fonctionnement, pouvoir conserver l'information à travers le réseau sans avoir de perturbation sur celle-ci. Ainsi, nous allons pouvoir rester sur une information plus général tout en analysant en détail notre image. Enfin, tous les poids présents dans notre système seront désormais utiles.

Pour résumé

Dans la recherche de réseau de plus en plus performant, nous avons décidé de réaliser des réseaux de neurones de plus en plus profond. Cependant, avec des réseaux de plus en plus profond, nous constatons des perturbations au sein du réseau qui perd l'information d'origine. Ainsi, les réseaux résiduels ont pour objectif de faire transmettre, à travers le réseau, notre image d'entrée. Dès lors, nous éliminons les perturbations de notre réseau et nous pouvons avoir un réseau de plus en plus profonds.

Merci pour votre lecture, ainsi que pour votre soutien. Vous êtes de plus en plus nombreux et ça me fait plaisir de voir que de plus en plus de monde suit mon travail. Si vous avez des questions, des suggestions ou des corrections, n'hésitez pas. Si vous souhaitez que je parle d'un sujet en particulier, n'hésitez pas à me le faire savoir =)

Aller plus loin :

Sort:  

Hey @rerere ! Es-tu sur Discord ? J'aimerais discuter avec toi à propos d'un sujet, tu as l'air de t'y connaitre plutôt bien :P

Hey ! Non, je ne suis pas sur Discord.
J'ai des bases, mais je suis loin d'être un professionnel ^^

D'acc, bon bah, à toi de voir si tu veux te créer un compte discord, sinon tu peux aller sur https://beta-steem-messenger.herokuapp.com/, c'est un ancien prototype de Steem messenger (dont je suis le dev), tu as juste besoin de te connecter avec ta private memo key, fais moi signe quand t'es dessus et on pourra chatter en direct.

Sinon si tu optes pour la solution discord, mon pseudo dessus c'est @Kingswisdom#7650

Je me suis créé un compte discord où je t'ai envoyé une invitation : Rere#0314

Cet article a été nominé pour figurer dans la sélection des @francosteemvotes ! Félicitations !

Merci beaucoup pour le soutien !



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!

Thank you !

Hi @rerere!

Your post was upvoted by utopian.io in cooperation with steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

Contribute to Open Source with utopian.io

Learn how to contribute on our website and join the new open source economy.

Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV

Thank you !