CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Explication du DeepLearning ?

DébutPage précedente
1
Page suivantePage suivante
SangoBecter SangoBecter
MP
Niveau 10
18 février 2017 à 23:43:22

Bonjour,

Je lis de plus en plus d'article concernant le DeepLearning et son application dans des domaines tous plus variés les uns que les autres, en informatique.

C'est un domaine qui est réellement intéressant, mais je ne comprends toujours pas réellement comment fonctionne ce système ?

On donne des données, des informations et des schémas, qui sont ingurgitées. Mais comment les machines arrivent à "apprendre" de ces données et modifier leur propre algorithme ? :doute:

godrik godrik
MP
Niveau 22
19 février 2017 à 03:39:42

Tu as vu les regressions en math?

quadroctet quadroctet
MP
Niveau 8
19 février 2017 à 20:24:12

Science étonnante #27
https://www.youtube.com/watch?v=trWrEWfhTVg

Le concept général est très bien expliqué et pour mettre un pied dans les réseaux de neurones, tu peux commencer par ceci sous processing avec un neurone qui classifie des points : http://natureofcode.com/book/chapter-10-neural-networks/

Message édité le 19 février 2017 à 20:24:38 par quadroctet
SangoTaffer SangoTaffer
MP
Niveau 10
20 février 2017 à 10:48:38

Le 19 février 2017 à 03:39:42 Godrik a écrit :
Tu as vu les regressions en math?

Non du tout. Je ne suis qu'un humble développeur lambda mais ce sujet a l'air intéressant. Je me doute qu'il faut de solide bases en maths je pense pour ne serait-ce que comprendre comment ça fonctionne, mais j'aimerai bien une explication simplifiée si possible. :p)

Quadroctet :d) Merci beaucoup, je vais regarder tout ça. [[sticker:p/1kkr]]

Message édité le 20 février 2017 à 10:49:12 par SangoTaffer
godrik godrik
MP
Niveau 22
20 février 2017 à 16:26:07

Tu as vu les regressions en math?

Non du tout. Je ne suis qu'un humble développeur lambda mais ce sujet a l'air intéressant. Je me doute qu'il faut de solide bases en maths je pense pour ne serait-ce que comprendre comment ça fonctionne, mais j'aimerai bien une explication simplifiée si possible. :p)

(De mon temps, on voyait les regression lineaire en terminal. Mais ca a peut etre change.)
Basiquement, une regression consiste a trouver les parametres d'une fonction pour que ca colle le plus a un ensemble de point que tu as deja. Ici [1] tu peux voir le resultat d'une regression lineaire. Mais tu pourrais faire une regression de n'importe quel fonction si tu voulais (par exemple f(x,y,z)=alpha x^2 + beta log (y) + gamma z*y).

Deep learning c'est un terme generique pour un systeme qui chaine des fonctions relativement simple et trouve les parametres a base de regression.

En pratique les algo sont different d'une simple regression (ca utilise des methodes iterativesde gradient), mais le principe est similaire.

[1] https://en.wikipedia.org/wiki/File:Linear_regression.svg

foundernoob foundernoob
MP
Niveau 10
20 février 2017 à 19:41:01

Si on pouvait simplifier au max (tu me corrigeras Godrik si je dit une connerie...^^), l'apprentissage profond ressemble à l'apprentissage humain. (c'est de lui qu'il s'inspire en même temps...)

Comme un enfant qui veut marcher, il se lève, commence à marcher puis perd l'équilibre et tombe.
Alors il recommence en changeant quelques paramètres et il compare avec les fois d'avant pour ne prendre à chaque fois que le meilleur.

Plus il recommencera, plus il intégrera les bons mouvements, jusqu'à atteindre le but.

Message édité le 20 février 2017 à 19:41:36 par foundernoob
PaulAimik PaulAimik
MP
Niveau 10
20 février 2017 à 23:30:46

Ta question de l'apprentissage ne concerne pas spécifiquement le deep learning.
(ni même aux réseaux de neurone artificiels d'ailleurs, mais je vais considérer que c'était implicite).

Le même principe s'applique aux réseaux plus basiques.

Par exemple pour reconnaître un chiffre inscrit sur une image (noir sur fond blanc, avec une taille et orientation constante, etc. Bref une reconnaissance de caractères très simple), on peut utiliser 10 perceptrons (neurones artificiels inspiré du fonctionnement du cortex visuel), soit un par caractères qu'on veut pouvoir reconnaître.

Chaque neurone aura un nombre d'entrées égal au nombre de pixels de l'image (il existe des optimisations qui permettent de réduire le nombre d'entrées ceci dit), dont le signal dépend par exemple de la luminosité du pixel, et une sortie qui permet de savoir si le neurone "pense" que l'image représente ou non le chiffre qui correspond à ce neurone.

Durant l'apprentissage, chaque neurone devra assigner un poids à chacune de ses entrée ; pour se faire on va faire passer une suite d'exercices dont le résultat attendu est connu.

Par exemple pour le neurone correspondant au "3" on va lui montrer l'image d'un 3, et puisqu'on sait qu'il s'agit bien d'un 3, et attend de lui qu'il nous sorte une forte valeur en sortie.
Si la sortie est trop faible, alors le neurone augmentera le poids des entrées correspondantes aux pixels (noirs) de l'image.
Du coup si on lui fait repasser cet exercice encore et encore, la valeur de sortie sera de plus en plus élevée.

Autre exemple toujours pour le neurone du 3 : cette fois - après lui avoir fait répéter l'exercice précédent - on va lui montrer l'image d'un "8", et la valeur de sortie sera probablement trop forte ; car un 8 contient tous les pixels d'un 3.
Dans ce cas le neurone va réduire le poids des entrées correspondantes aux pixels foncés qui composent ce 8.
Du coup, ca va également réduire le signal de sortie quand il devra reconnaître un 3 ; mais peu importe.

Après avoir répété suffisamment ces exercices dans un ordre plus approprié pour tous les chiffres (en évitant de répéter toujours le même exercice avant de passer à un autre...), le neurone finira grosso-modo par assigner un poids très élevé aux pixels qui composent un 3 "typique", un poids moyen pour le reste (qui diminue à mesure qu'on s'éloigne des pixels d'un 3 "typique"), en un poids négatif aux quelques pixels qui correspondent à la différence entre un 3 et un 8.
Autrement dit, il aura apprit à reconnaître un 3, et à ne pas confondre un 3 avec d'autres chiffres (en particulier le 8).

Une fois qu'on a entraîné tous les neurones, il suffit de comparer leur sortie pour déterminer quel chiffre est inscrit sur l'image.

Dans cet exemple il y a qu'une seule couche de neurones ; alors que pour le deep learning on en aura plusieurs : la sortie des neurones des couches inférieures pourra servir d'entrées à ceux des couches supérieures, et ainsi de suite.
Mais le principe de base de l'apprentissage reste plus ou moins le même, il s'agit toujours de régler le poids des connexions ; sauf que c'est plus compliqué vu qu'il faut pouvoir modifier les poids de connexions des couches en amont (rétro-propagation de l'erreur).

Prauron Prauron
MP
Niveau 13
21 février 2017 à 21:49:55

Mes VDD ont déjà donné de bonnes explications, je détaille juste un peu l'exemple de la régression linéaire.

Dans une régression linéaire t'as une variable de "sortie" Y et des variables "d'entrée", disons X1 et X2 (on peut en avoir autant qu'on veut, j'en prends 2 juste pour donner un exemple). Et on suppose qu'il y a une relation "à peu près" linéaire entre la sortie et l'entrée, autrement dit :
Y = a + bX + cZ + E, où E est un terme d'erreur, qu'on peut supposer nul en moyenne.
Le problème c'est qu'on ne connaît pas les coefficients a, b et c. Si on les connaissait, ça serait assez pratique parce que si on observait X = x et Z = z, on pourrait prédire la valeur de Y en calculant simplement a + b*x + c*z. Comme on ne les connaît pas, on va les "apprendre". Et pour ça on va se servir d'exemples.
Imaginons qu'on ait plein d'observations de (X,Z,Y) :
(y1,x1,z1), (y2,x2,z2), ..., (yn,xn,zn).
Ce qu'on veut c'est les a, b et c pour que Y soit le plus proche possible de a + bX + cZ. On va donc sommer les carrés des erreurs :
(y1 - a - b*x1 - c*z1)² + (y2 - a - b*x2 - c*z2)² + ... + (yn - a - b*xn - c*zn)². Cette quantité est une fonction des paramètres a, b et c et représente en un certain sens l'erreur commise en remplaçant Y par a + bX + cZ. On va tout simplement "régler" a, b et c de façon à ce que cette erreur soit la plus petit possible. Dans ce cas précis ça se fait très facilement avec un petit calcul matriciel (enfin quand t'as genre 10 000 variables d'entrée c'est pas si facile que ça, mais passons). Tu vois donc qu'on a "appris" les paramètres de notre modèle linéaire en se basant sur des exemples.

Dans les réseaux de neurones, le principe est finalement le même. Tu as des variables d'entrée, des variables de sorties, des relations entre les variables (qui sont souvent un peu plus compliquées que de simples relations linéaires, tu peux avoir un truc du style Y = f(aX + bZ) par exemple, où f est une fonction connue), et tu utilises des exemples de façon à choisir les paramètres pour que tes relations soient le plus possible vérifiées.

Le deep learning, c'est empiler plein de petits modules dans ce genre-là, les sorties d'un module étant les entrées d'un autre. Au final, on peut obtenir d'excellentes capacités prédictives (pour le pouvoir explicatif en revanche, c'est une autre histoire).

Aldebran Aldebran
MP
Niveau 10
26 février 2017 à 13:36:59

Le deep learning ça désigne une classe de réseaux de neurones (RN) artificiels où les couches sont nombreuses. On en entend beaucoup parler en ce moment (depuis 2010 environ) grâce au développement du calcul sur carte graphique qui a permis de faire tourner des réseaux avec beaucoup de neurones (et donc des réseaux relevant du deep learning).

L'avantage du deep learning par rapport à une simple régression dont le principe a été expliqué plus haut, c'est que la fonction qui va servir à modéliser la relation entre une entrée et une sortie n'est pas connue. Quand on fait une régression linéaire, ça veut dire qu'on s'attend à modéliser la relation entre une variable Y et une variable X sous la forme Y = AX, et la régression cherche à définir la valeur de A. Avec le deep learning on n'a même pas besoin de connaître la forme de la fonction qu'on cherche à définir, c'est ça qui est puissant.

Par exemple, il existe une fonction qui à partir d'une image est capable de dire si cette image contient un visage ou non. Cette fonction est complexe à définir : on sait juste que l'entrée c'est l'image, et que la sortie c'est "vrai" ou "faux" selon que l'image contient un visage. Par contre définir le lien entre l'un et l'autre c'est pas évident. C'est là qu'on utilise des RN : au début, on donne au réseau des images et on lui dit à quoi elles correspondent (visage ou non), c'est la phase d'entraînement. Avec suffisamment d'exemples le réseau trouve tout seul la fonction qu'on veut lui faire trouver. Ensuite on donne au réseau une image quelconque, et il est capable de déterminer tout seul s'il y a un visage ou non.

Les réseaux de neurones récurrents (une classe particulière de RN) ont même été démontrés comme étant turing-complet, c'est à dire que n'importe quelle fonction calculable par un ordinateur, peut être reproduite par le réseau de neurone.

Pour finir, un petit lien sympa quoiqu'un peu technique qui permet d'utiliser des RN soi-même pour voir comment ça marche : http://playground.tensorflow.org/

godrik godrik
MP
Niveau 22
26 février 2017 à 17:29:17

Aldebran, fais attention tu dis des conneries

L'avantage du deep learning par rapport à une simple régression dont le principe a été expliqué plus haut, c'est que la fonction qui va servir à modéliser la relation entre une entrée et une sortie n'est pas connue.

Ca ce n'est pas vrai. Quand tu fais du deep learning, tu sais exactement la tete de la fonction que tu vas utiliser pour modeler les donnees. Regardes la tete d'alexnet par exemple [1], Alexnet modele une image comme etant une serie de convolution et de normalisation suivi par trois etapes de lineaires. Quand tu entraine un reseau, tu peux mettre n'importe quelle fonction dans ton modele, mais tu dois choisir le modele. Donc ce n'est pas vrai que la fonction n'est pas connue. La fonction est connu, les parametres ne sont pas connus, mais la fonction elle est connue.

Prauron a presente la regression lineaire parcequ'elle est simple a ecrire, mais tu peux faire de la regession sur n'importe quelle type fonction. Et les algos de deep learning calcule basiquement une regression (non lineaire et super tordu).

On en entend beaucoup parler en ce moment (depuis 2010 environ) grâce au développement du calcul sur carte graphique qui a permis de faire tourner des réseaux avec beaucoup de neurones (et donc des réseaux relevant du deep learning).

Ca ce n'est pas completement vrai non plus. Ca ignore les avances sur les algos de learning en eux meme. On sait faire converger les reseaux en moins de cycles d'apprentissage qu'avant, on a de nouvelles techniques pour reduire l'overfitting. Apres les GPU ont aide, mais c'est reducteur de dire que les GPUs sont la raison qui ont rendu le deep learning possible. C'est l'augmentation des puissances de calculs en general qui ont rendu deep learning raisonnable, mais les GPUs ne sont pas aussi puissant que les gens le pensent. (Je dis ca parcequ'on entends tout le temps "les gpus ont change la face du monde", et oui ils sont cool, mais pas forcement autant qu'ils ont decrit)

[1] http://s1.sinaimg.cn/orignal/004j58Jbzy6NvjDo5UI60

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Sous-forums
Infos 0 connecté(s)

Gestion du forum

Modérateurs : foundernoob
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

  • Aucun sujet à ne pas manquer
La vidéo du moment