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?
la source
Réponses:
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,
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
Beaucoup de terminologies utilisées dans la littérature scientifique ont à voir avec les tendances de l'époque et ont fait leur chemin.
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
la source
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
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.
la source
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 .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:
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:
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.
la source