Perceptron multicouche vs réseau de neurones profonds

16

C'est une question de terminologie. Parfois, je vois des gens se référer aux réseaux de neurones profonds comme des "perceptrons multicouches", pourquoi cela? Un perceptron, m'a-t-on appris, est un classificateur à couche unique (ou régresseur) avec une sortie de seuil binaire utilisant une manière spécifique d'entraîner les poids (et non pas un support arrière). Si la sortie du perceptron ne correspond pas à la sortie cible, nous ajoutons ou soustrayons le vecteur d'entrée aux poids (selon que le perceptron a donné un faux positif ou un faux négatif). C'est un algorithme d'apprentissage automatique assez primitif. La procédure de formation ne semble pas se généraliser à un cas multicouche (du moins non sans modification). Un réseau neuronal profond est formé via backprop qui utilise la règle de chaîne pour propager des gradients de la fonction de coût à travers tous les poids du réseau.

Donc, la question est. Un "perceptron multicouche" est-il la même chose qu'un "réseau neuronal profond"? Si oui, pourquoi cette terminologie est-elle utilisée? Cela semble être inutilement déroutant. De plus, en supposant que la terminologie est quelque peu interchangeable, je n'ai vu la terminologie "perceptron multicouche" que lorsque je me réfère à un réseau à action directe composé de couches entièrement connectées (pas de couches convolutives ou de connexions récurrentes). Quelle est la portée de cette terminologie? Pourrait-on utiliser le terme «perceptron multicouche» pour désigner, par exemple, Inception net? Que diriez-vous d'un réseau récurrent utilisant des modules LSTM utilisés en NLP?

enumaris
la source
1
Réseau de neurones profond = réseau de neurones avec> 1 couche cachée, MLP tombe dans cette catégorie.
Tim
son juste rebranding. Les MLP ont été excités dans les années 90 et supplantés par les SVM, il faut donc l'appeler quelque chose de différent dans les années 2000. la suggestion est que dnn a plus de couches, mais pas une si grande différence, par exemple Le Net [MLP / CNN] (1998) 2 convolutional 2 entièrement connecté. alexnet = DNN (2012) 5 convolutifs et 3 entièrement connectés.
seanv507
Les SVM sont basés sur une montée en gradient, les ANN sont basés sur une descente en gradient, donc ils n'ont vraiment pas supplanté les ANN. Les SVM étaient survendus et surutilisés parce que les étudiants diplômés ne savaient rien des RNA. Pour exécuter les SVM, les étudiants ont simplement saisi les packages R et ont terminé. Mais pour les RNA, vous avez besoin d'un semestre entier pour les comprendre du point de vue des méthodes numériques - et non du point de vue du langage interprétatif (c.-à-d., Gifler du code ensemble).
JoleT

Réponses:

21

On peut considérer le perceptron multicouche (MLP) comme un sous-ensemble de réseaux de neurones profonds (DNN), mais ils sont souvent utilisés de manière interchangeable dans la littérature.

L'hypothèse selon laquelle les perceptrons sont nommés en fonction de leur règle d'apprentissage est incorrecte. La "règle de mise à jour du perceptron" classique est l'un des moyens qui peuvent être utilisés pour l'entraîner. Le rejet précoce des réseaux de neurones était dû à cette raison, car la règle de mise à jour du perceptron était sujette à disparaître et à exploser les gradients, rendant impossible la formation de réseaux avec plus d'une couche.

L'utilisation de la rétropropagation dans les réseaux d'entraînement a conduit à utiliser d'autres fonctions d'activation de l'écrasement telles que tanh et sigmoid .

Donc, pour répondre aux questions,

La question est. Un "perceptron multicouche" est-il la même chose qu'un "réseau neuronal profond"?

MLP est un sous-ensemble de DNN. Alors que DNN peut avoir des boucles et MLP sont toujours à action directe, c.-à-d.

Un perceptrons multicouches (MLP) est un graphe acyclique fini

pourquoi cette terminologie est-elle utilisée?

Beaucoup de terminologies utilisées dans la littérature scientifique ont à voir avec les tendances de l'époque et ont fait leur chemin.

Quelle est la portée de cette terminologie? Pourrait-on utiliser le terme «perceptron multicouche» pour désigner, par exemple, Inception net? Que diriez-vous d'un réseau récurrent utilisant des modules LSTM utilisés en NLP?

Donc, oui création, réseau convolutionnel, resnet etc. sont tous MLP car il n'y a pas de cycle entre les connexions. Même s'il y a un raccourci de connexions qui sautent des couches, tant qu'il est dans la direction avant, il peut être appelé un perceptron multicouche. Mais, les LSTM ou les RNN Vanilla, etc. ont des connexions cycliques, ne peuvent donc pas être appelés MLP mais sont un sous-ensemble de DNN.

C'est ma compréhension des choses. S'il vous plait corrigez moi si je me trompe.

Liens de référence:

/cs/53521/what-is-difference-between-multilayer-perceptron-and-multilayer-neural-network

https://en.wikipedia.org/wiki/Multilayer_perceptron

https://en.wikipedia.org/wiki/Perceptron

http://ml.informatik.uni-freiburg.de/former/_media/teaching/ss10/05_mlps.printer.pdf

m1cro1ce
la source
1
juste par curiosité: je pensais que la régression logistique est une technique de régression parce que vous estimez la probabilité d'appartenance à la classe 1, au lieu de l'appartenance à la classe. En tant que tel, il ne me semble pas être une technique de classification (le chercheur / analyste doit décider d'un seuil de probabilité afin de classer en fonction de la régression logistique).
IWS
@IWS vous avez raison. Divers utilisateurs de ce site ont souligné à plusieurs reprises que la régression logistique est un modèle d'estimation de probabilité (conditionnelle), et non un classificateur. Voir par exemple ici .
DeltaIV
1
Modification de la réponse à corriger Par exemple, la «régression logistique» est une technique de classification et ne devrait pas être qualifiée de «régression» pour ainsi dire . Le lien partagé par @DeltaIV explique très clairement pourquoi il s'agit d'une régression et non d'un classificateur.
m1cro1ce
8

Bonne question: notez que dans le domaine de l'apprentissage profond, les choses ne sont pas toujours aussi bien coupées et clairement définies que dans l'apprentissage statistique (également parce qu'il y a beaucoup de battage médiatique), alors ne vous attendez pas à trouver des définitions aussi rigoureuses qu'en mathématiques. Quoi qu'il en soit, le perceptron multicouche est une architecture de réseau neuronal à action directe spécifique, où vous empilez plusieurs couches entièrement connectées (donc pas de couches de convolution du tout), où les fonctions d'activation des unités cachées sont souvent un sigmoïde ou un tanh. Les nœuds de la couche de sortie ont généralement des fonctions d'activation softmax (pour la classification) ou des fonctions d'activation linéaires (pour la régression). Les architectures MLP typiques ne sont pas "profondes", c'est-à-dire que nous n'avons pas beaucoup de couches cachées. Vous avez généralement, disons, 1 à 5 couches cachées. Ces réseaux de neurones étaient courants dans les années 80,

Maintenant, avec Deep Neural Network, nous entendons un réseau qui a de nombreuses couches (19, 22, 152, ... même > 1200 , bien que cela soit certes très extrême). Notez que

  • nous n'avons pas spécifié l'architecture du réseau, cela peut donc être rétroactif, récurrent, etc.
  • nous n'avons pas spécifié la nature des connexions, nous pourrions donc avoir des couches entièrement connectées, des couches convolutives, des récurrences, etc.
  • "plusieurs" couches n'est certes pas une définition rigoureuse.

32×32+32×dix=134411584poids. Il s'agit d'un minuscule NN selon les normes d'aujourd'hui. Cependant, lorsque vous continuez à le former sur un ensemble de données suffisamment volumineux, vous constatez que le taux de convergence a considérablement ralenti. Cela n'est pas seulement dû au plus grand nombre de poids, mais au problème de gradient qui disparaît - la rétropropagation calcule le gradient de la fonction de perte en multipliant les erreurs sur chaque couche, et ces petits nombres deviennent exponentiellement plus petits à mesure que vous ajoutez de couches. Ainsi, les erreurs ne se propagent pas (ou se propagent très lentement) sur votre réseau, et il semble que l'erreur sur l'ensemble d'apprentissage cesse de diminuer avec les époques d'apprentissage.

Et c'était un petit réseau - les réseaux neuronaux convolutionnels profonds appelés AlexNet avaient 5 couches mais 60 millions de poids, et il est considéré comme petit par rapport aux normes d'aujourd'hui! Lorsque vous avez autant de poids, alors tout ensemble de données est "petit" - même ImageNet, un ensemble d'images utilisé pour la classification, n'a "que" environ 1 million d'images, donc le risque de sur-ajustement est beaucoup plus grand que pour un réseau peu profond.

Le Deep Learning peut ainsi être compris comme l'ensemble d'outils qui sont utilisés dans la pratique pour former des réseaux de neurones avec un grand nombre de couches et de poids, réalisant ainsi une faible erreur de généralisation. Cette tâche pose plus de défis que pour les petits réseaux. Vous pouvez certainement construire un Perceptron multicouche profond et le former - mais (à part le fait que ce n'est pas l'architecture optimale pour de nombreuses tâches où le Deep Learning est utilisé aujourd'hui), vous utiliserez probablement des outils différents de ceux utilisés lorsque les réseaux étaient autrefois "peu profond". Par exemple, vous pouvez préférer les unités d'activation ReLU à sigmoïde ou tanh, car elles adoucissent le problème de gradient de fuite.

DeltaIV
la source
La réponse précédente de m1cro1ce dit qu'un conv-net (comme la création) peut également être classé comme MLP, alors que vous spécifiez qu'un MLP ne peut pas avoir de couches convolutionnelles (et il semble que vous sous-entendiez que le choix des fonctions d'activation aussi affecte ce qu'on peut appeler un MLP ou non?). Y a-t-il un accord dans la littérature (ou au sein de la communauté ML) sur ce que signifie exactement MLP et ce qu'il ne signifie pas? Si quelqu'un me dit "Je veux que vous construisiez un MLP pour la tâche X", que suis-je limité à faire?
enumaris
@enumaris vous n'êtes pas limité par la loi à faire quoi que ce soit. La dernière fois que j'ai vérifié, il était toujours légal de construire un CNN et de l'appeler un MLP. Je rejetterais bien sûr un tel papier / affiche / autre chose, mais c'est moi et je ne peux pas parler pour toute la communauté DL qui n'est pas exactement célèbre pour son utilisation stricte de la terminologie. Quoi qu'il en soit, ma définition: un réseau de neurones à action directe avec une couche entièrement connectée et au moins une fonction d'activation non linéaire (sinon, peu importe le nombre de couches, c'est toujours équivalent à un réseau linéaire à une seule couche) est le même que vous pouvez trouver dans .. .
DeltaIV
... Wikipedia . Notez la ligne dans la section des calques "Puisque les MLP sont entièrement connectés [..]". Cela exclut les CNN. Vous pouvez trouver la même définition (feed-forward, entièrement connecté, au moins les couches cachées ont des fonctions d'activation non linéaires) dans ce livre . En ce qui concerne les fonctions d'activation, je ne semble certainement pas impliquer quoi que ce soit. Je viens de dire que les MLP ont généralement des fonctions d'activation tanh ou sigmoïde, mais ce n'est pas obligatoire.
DeltaIV
Je voudrais marquer l'une de ces 2 réponses comme étant la réponse acceptée, mais comme elles donnent des réponses contradictoires, je voudrais savoir quelle réponse est la plus courante dans la littérature ou dans la communauté ML.
enumaris
@enumaris le titre de votre question est "Perceptron multicouche vs réseau de neurones profonds", et vous demandez si a "multi-layer perceptron" the same thing as a "deep neural network": cette question a été répondue en détail, à la fois dans la mienne et dans la réponse de m1cro1ce. Maintenant, vous posez la question "Les CNN sont-ils un sous-ensemble du MLP?" - les sites Stack Exchange ont une politique d' une question pour la publication .
DeltaIV
0

Je veux ajouter cela selon ce que j'ai lu dans de nombreux articles:

Il existe de nombreuses architectures différentes à travers DNN comme: MLP (Multi-Layer Perceptron) et CNN (Convolutional Neural Networks) .Tellement différents types de DNN conçus pour résoudre différents types de problèmes.

Le MLP est un type classique de NN utilisé pour:

  • Ensembles de données tabulaires (contiennent des données dans un format en colonnes comme dans une table de base de données).
  • Classification / régression, prédiction pbs.

Les MLP sont très et peuvent être utilisés généralement pour alléger le mappage des entrées aux sorties.

Mais vous pouvez essayer d'autres formats comme les données d'image comme point de comparaison de ligne de base pour confirmer que d'autres modèles conviennent mieux.

CNN conçus pour mapper les données d'image à une variable de sortie. il est utilisé pour:

  • Données d'image,
  • classification / prédiction de régression pbs,

Cela fonctionne bien avec des données qui ont des relations spatiales .

Il est traditionnellement utilisé pour les données 2D mais il peut être utilisé pour les données 1D, les CNN atteignent l'état de l'art sur certains pbs 1D.

Vous devez d'abord "définir clairement" ce que vous cherchez à résoudre comme problème (quel type de données travailler, problème de classification / régression ... etc) pour savoir quel type d'architecture utiliser.

Vous pouvez vous référer à ces liens qui m'ont été si utiles pour mieux comprendre ces concepts :).

J'espère que cet ajout vous sera utile: p.

DINA TAKLIT
la source