Esta é uma questão de terminologia. Às vezes, vejo as pessoas se referirem às redes neurais profundas como "perceptrons de várias camadas", por que isso? Um perceptron, fui ensinado, é um classificador de camada única (ou regressor) com uma saída de limiar binário usando uma maneira específica de treinar os pesos (e não o suporte traseiro). Se a saída do perceptron não corresponder à saída alvo, adicionamos ou subtraímos o vetor de entrada aos pesos (dependendo se o perceptron deu um falso positivo ou um falso negativo). É um algoritmo de aprendizado de máquina bastante primitivo. O procedimento de treinamento não parece generalizar para um caso de várias camadas (pelo menos não sem modificação). Uma rede neural profunda é treinada via backprop, que usa a regra da cadeia para propagar gradientes da função de custo de volta a todos os pesos da rede.
Então, a questão é. Um "perceptron de múltiplas camadas" é a mesma coisa que uma "rede neural profunda"? Se sim, por que essa terminologia é usada? Parece ser desnecessariamente confuso. Além disso, supondo que a terminologia seja um tanto intercambiável, só vi a terminologia "perceptron de várias camadas" ao me referir a uma rede de feed-forward composta de camadas totalmente conectadas (sem camadas convolucionais ou conexões recorrentes). Quão ampla é essa terminologia? Alguém usaria o termo "perceptron de várias camadas" ao se referir, por exemplo, à rede de criação? Que tal para uma rede recorrente usando módulos LSTM usados na PNL?
fonte
Respostas:
Pode-se considerar o perceptron de múltiplas camadas (MLP) como um subconjunto de redes neurais profundas (DNN), mas é frequentemente usado de forma intercambiável na literatura.
A suposição de que perceptrons são nomeados com base em sua regra de aprendizado está incorreta. A clássica "regra de atualização do perceptron" é uma das maneiras que podem ser usadas para treiná-lo. A rejeição precoce das redes neurais ocorreu por esse motivo, pois a regra de atualização do perceptron estava propensa a desaparecer e explodir gradientes, tornando impossível o treinamento de redes com mais de uma camada.
O uso da retropropagação em redes de treinamento levou ao uso de funções alternativas de ativação do squash, como tanh e sigmoid .
Então, para responder às perguntas,
MLP é um subconjunto de DNN. Enquanto o DNN pode ter loops e o MLP são sempre feed-forward, ou seja,
Um perceptrons de múltiplas camadas (MLP) é um gráfico acíclico finito
Muitas das terminologias usadas na literatura científica têm a ver com as tendências da época e pegaram.
Portanto, sim, o início, a rede convolucional, a re-rede etc. são todos MLP porque não há ciclo entre as conexões. Mesmo se houver conexões de atalho pulando camadas, desde que esteja na direção direta, ele pode ser chamado de perceptron de várias camadas. Mas, LSTMs ou RNNs de baunilha, etc. têm conexões cíclicas, portanto, não podem ser chamados de MLPs, mas são um subconjunto de DNN.
Esta é a minha compreensão das coisas. Por favor corrija-me se eu estiver errado.
Links de referência:
/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
fonte
Boa pergunta: observe que no campo da Aprendizagem Profunda as coisas nem sempre são tão bem definidas e claramente definidas como na Aprendizagem Estatística (também porque há muito hype), portanto, não espere encontrar definições tão rigorosas quanto na Matemática. De qualquer forma, o perceptron de multicamadas é uma arquitetura de rede neural de feed-forward específica, onde você empilha várias camadas totalmente conectadas (portanto, nenhuma camada de convolução), onde as funções de ativação das unidades ocultas geralmente são sigmóides ou tanh. Os nós da camada de saída geralmente têm funções de ativação softmax (para classificação) ou funções de ativação linear (para regressão). As arquiteturas típicas do MLP não são "profundas", ou seja, não temos muitas camadas ocultas. Você costuma ter, digamos, 1 a 5 camadas ocultas. Essas redes neurais eram comuns nos anos 80,
Agora, com Deep Neural Network, queremos dizer uma rede que tem muitas camadas (19, 22, 152, ... até 1200 , embora isso seja reconhecidamente muito extremo). Observe que
E essa era uma rede pequena - as Redes Neurais Convolucionais profundas chamadas AlexNet tinham 5 camadas, mas 60 milhões de pesos, e são consideradas pequenas pelos padrões de hoje! Quando você tem tantos pesos, qualquer conjunto de dados é "pequeno" - até o ImageNet, um conjunto de dados usado para classificação, possui "apenas" cerca de 1 milhão de imagens, portanto, o risco de sobreajuste é muito maior do que para redes rasas.
O Deep Learning pode, portanto, ser entendido como o conjunto de ferramentas usadas na prática para treinar redes neurais com um grande número de camadas e pesos, obtendo baixo erro de generalização. Essa tarefa apresenta mais desafios do que para redes menores. Você pode definitivamente criar um Deep Multi-Layer Perceptron e treiná-lo - mas (além do fato de não ser a arquitetura ideal para muitas tarefas em que o Deep Learning é usado hoje em dia), você provavelmente usará ferramentas diferentes daquelas usadas quando as redes costumavam ser "raso". Por exemplo, você pode preferir as unidades de ativação ReLU a sigmoid ou tanh, porque suavizam o problema de gradiente de fuga.
fonte
a "multi-layer perceptron" the same thing as a "deep neural network"
: esta pergunta foi respondida em detalhes, tanto na minha como na resposta do m1cro1ce. Agora você está fazendo a pergunta "as CNNs são um subconjunto do MLP?" - os sites do Stack Exchange têm uma política de uma pergunta para postagem .Quero acrescentar que, de acordo com o que li em muitos posts:
Existem muitas arquiteturas diferentes através do DNN, como: MLPs (Multi-Layer Perceptron) e CNNs (Convolutional Neural Networks) .Então, tipos diferentes de DNN projetados para resolver diferentes tipos de problemas.
MLPs é o tipo clássico de NN usado para:
Os MLPs são muito e podem ser usados geralmente para mapear de maneira enxuta o que é colocado no resultado.
Mas você pode tentar outro formato, como dados de imagem, como ponto de comparação da linha de base para confirmar que outros modelos são mais adequados.
CNNs projetadas para mapear dados de imagem para uma variável de saída. é usado para:
Funciona bem com dados que têm relações espaciais .
É tradicionalmente usado para dados 2D, mas pode ser usado para dados 1D, as CNNs alcançam o estado da arte em algumas 1D pbs.
Você precisa primeiro "definir claramente" o que pretende resolver como problema (que tipo de dados trabalhar, problema de classificação / regressão ... etc) para saber que tipo de arquitetura usar.
Você pode consultar os links que me foram úteis para entender mais sobre esses conceitos :).
Espero que este complemento seja útil: p.
fonte