Perceptron multicamada vs rede neural profunda

16

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?

enumaris
fonte
11
Rede neural profunda = rede neural com> 1 camada oculta, o MLP se enquadra nessa categoria.
Tim
é apenas rebranding. Os MLPs foram sensacionalistas nos anos 90 e substituídos pelos SVMs; portanto, é necessário chamar isso de algo diferente nos anos 2000. a sugestão é que o dnn tenha mais camadas, mas não uma diferença tão grande, por exemplo, Le Net [MLP / CNN] (1998) 2 convolucional 2 totalmente conectado. alexnet = DNN (2012) 5 convolucional e 3 totalmente conectados.
Seanv507
Os SVMs são baseados na ascensão do gradiente, e as RNAs são baseadas na descida do gradiente; portanto, eles realmente não substituem as RNAs. Os SVMs foram vendidos em excesso e usados ​​em excesso porque os estudantes de pós-graduação não sabiam nada sobre RNAs. Para executar SVMs, os alunos simplesmente pegaram os pacotes R e terminaram. Mas para as RNAs, você precisa de um semestre inteiro para entendê-las da perspectiva de métodos numéricos - não da perspectiva da linguagem interpretativa (por exemplo, digitando códigos juntos).
Jolet

Respostas:

21

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,

a questão é. Um "perceptron de múltiplas camadas" é a mesma coisa que uma "rede neural profunda"?

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

por que essa terminologia é usada?

Muitas das terminologias usadas na literatura científica têm a ver com as tendências da época e pegaram.

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?

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

m1cro1ce
fonte
11
só por curiosidade: eu pensei que a regressão logística é uma técnica de regressão porque você estima a probabilidade de ser membro da classe 1, em vez de ser membro da classe. Como tal, não me parece uma técnica de classificação (o pesquisador / analista precisa decidir sobre um corte de probabilidade para classificar com base na regressão logística).
IWS 24/11
@IWS, você está certo. Vários usuários neste site insistiram repetidamente que a regressão logística é um modelo para estimativa de probabilidade (condicional), não um classificador. Veja por exemplo aqui .
DeltaIV 24/11
11
Editada a resposta para correção Por exemplo, "regressão logística" é uma técnica de classificação e não deve ser denominada como "regressão", por assim dizer . O link compartilhado por @DeltaIV deixa muito claro por que é uma regressão e não um classificador.
M1cro1ce
8

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

  • não especificamos a arquitetura da rede; portanto, isso pode ser feed-forward, recorrente etc.
  • não especificamos a natureza das conexões, para que pudéssemos ter camadas totalmente conectadas, camadas convolucionais, recorrência etc.
  • "muitas" camadas reconhecidamente não é uma definição rigorosa.

32.×32.+32.×10=134411584pesos. Este é um NN minúsculo para os padrões atuais. No entanto, quando você o treina em um conjunto de dados adequadamente grande, descobre que a taxa de convergência diminuiu tremendamente. Isso não se deve apenas ao maior número de pesos, mas ao problema do gradiente de fuga - a propagação de retorno calcula o gradiente da função de perda multiplicando erros em cada camada, e esses pequenos números se tornam exponencialmente menores quanto mais camadas você adicionar. Portanto, os erros não se propagam (ou se propagam muito lentamente) na sua rede e parece que o erro no conjunto de treinamento para de diminuir com as épocas do treinamento.

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.

DeltaIV
fonte
A resposta anterior de m1cro1ce diz que um conv-net (como o início) também pode ser classificado como um MLP, enquanto você especifica que um MLP não pode ter camadas convolucionais (e parece que você está implicando que a escolha das funções de ativação também afeta o que pode ser chamado de MLP ou não?). Existe concordância na literatura (ou na comunidade da ML) sobre o que exatamente MLP significa e o que não significa? Se alguém me dissesse "Quero que você crie um MLP para a tarefa X", o que estou restrito a fazer?
enumaris
@enumaris, você não está restrito por lei a fazer nada. Na última vez que verifiquei, ainda era legal construir uma CNN e chamá-la de MLP. É claro que eu rejeitaria esse trabalho / pôster / o que quer que seja, mas sou eu e não posso falar por toda a comunidade de DL que não é exatamente famosa por seu uso estrito da terminologia. Enfim, minha definição: rede neural feed-forward com camada totalmente conectada e pelo menos alguma função de ativação não linear (caso contrário, não importa quantas camadas, é sempre equivalente a uma rede linear de camada única) é a mesma que você pode encontrar em .. .
DeltaIV
... Wikipedia . Observe a linha na seção de camadas "Como os MLPs estão totalmente conectados [..]". Isso exclui CNNs. Você pode encontrar a mesma definição (feed-forward, totalmente conectado, pelo menos as camadas ocultas têm funções de ativação não lineares) neste livro . Em relação às funções de ativação, definitivamente não pareço implicar nada. Acabei de dizer que os MLPs geralmente têm funções de ativação tanh ou sigmóide, mas isso não é obrigatório.
DeltaIV 25/11
Eu gostaria de marcar uma dessas 2 respostas como a resposta aceita, mas como elas dão respostas conflitantes, eu gostaria de saber qual resposta é a mais encontrada na literatura ou na comunidade de ML.
enumaris
@enumaris, o título da sua pergunta é "perceptron em várias camadas versus rede neural profunda" e você pergunta se 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 .
DeltaIV 28/11
0

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:

  • Conjuntos de dados tabulares (contêm dados em formato colunar como em uma tabela de banco de dados).
  • Classificação / regressão, previsão pbs.

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:

  • Dados de imagem,
  • classificação / previsão de regressão pbs,

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.

DINA TAKLIT
fonte