Qual é a diferença entre uma rede neural e uma rede neural profunda e por que as mais profundas funcionam melhor?

114

Não vi a pergunta declarada precisamente nesses termos, e é por isso que faço uma nova pergunta.

O que estou interessado em conhecer não é a definição de uma rede neural, mas entender a diferença real com uma rede neural profunda.

Para mais contexto: eu sei o que é uma rede neural e como a retropropagação funciona. Eu sei que um DNN deve ter várias camadas ocultas. No entanto, 10 anos atrás, na aula, aprendi que ter várias camadas ou uma camada (sem contar as camadas de entrada e saída) era equivalente em termos das funções que uma rede neural é capaz de representar (consulte o teorema da aproximação universal de Cybenko ) e que ter mais camadas tornaram a análise mais complexa sem ganho de desempenho. Obviamente, esse não é mais o caso.

Suponho, talvez erroneamente, que as diferenças sejam em termos de algoritmo e propriedades de treinamento, e não de estrutura, e, portanto, eu realmente apreciaria se a resposta pudesse sublinhar os motivos que tornaram possível a mudança para o DNN (por exemplo, prova matemática ou reprodução aleatória de redes) ?) e desejável (por exemplo, velocidade de convergência?)

Nicolas
fonte
Se a função que você deseja aproximar for uma função composicional (comum no processamento de imagens e em muitos domínios naturais devido à lei da física). Pode-se provar que redes profundas podem explorar essa composicionalidade e alcançar o mesmo nível de erro de aproximação com número exponencialmente menor de neurônios (em comparação com uma rede de camada oculta única). Ref: Poggio, Tomaso, et al. "Por que e quando as redes profundas, mas não rasas, evitam a maldição da dimensionalidade: uma revisão." International Journal of Automation and Computing (2017)
DataHungry
Você pode querer dar uma olhada neste artigo
agcala 14/04

Respostas:

152

Vamos começar com uma privilégio: a rede neural profunda é simplesmente uma rede de feedforward com muitas camadas ocultas.

Isso é mais ou menos tudo o que há a dizer sobre a definição. As redes neurais podem ser recorrentes ou antecipadas; os feedforward não possuem loops no gráfico e podem ser organizados em camadas. Se houver "muitas" camadas, dizemos que a rede é profunda .

Como muitas camadas que uma rede tem que ter, a fim de qualificar-se como profundo? Não há uma resposta definitiva para isso (é como perguntar quantos grãos formam uma pilha ), mas geralmente ter duas ou mais camadas ocultas conta como profundidade. Por outro lado, uma rede com apenas uma única camada oculta é convencionalmente chamada de "superficial". Eu suspeito que haverá alguma inflação acontecendo aqui, e em dez anos as pessoas podem pensar que qualquer coisa com menos de, digamos, dez camadas, é rasa e adequada apenas para exercícios de jardim de infância. Informalmente, "profundo" sugere que a rede é difícil de lidar.

Aqui está uma ilustração, adaptada daqui :

Rede neural profunda vs não profunda

Mas a verdadeira pergunta que você está fazendo é, obviamente, por que ter muitas camadas seria benéfico?

Eu acho que a resposta um tanto surpreendente é que ninguém realmente sabe. Existem algumas explicações comuns que analisarei brevemente abaixo, mas nenhuma delas foi convincentemente demonstrada verdadeira, e nem se pode ter certeza de que ter muitas camadas é realmente benéfico.

Eu digo que isso é surpreendente, porque o aprendizado profundo é muito popular, está quebrando todos os recordes (desde reconhecimento de imagem, reprodução de Go, tradução automática etc.) todos os anos, está sendo usado pela indústria etc. etc. E ainda não estamos muito certo porque ele funciona tão bem.

Baseei minha discussão no livro Deep Learning de Goodfellow, Bengio e Courville, lançado em 2017 e amplamente considerado o livro sobre aprendizado profundo. (Está disponível gratuitamente on-line.) A seção relevante é 6.4.1 Propriedades e profundidade da aproximação universal .

Você escreveu isso

Há 10 anos, na aula, aprendi que ter várias camadas ou uma camada (sem contar as camadas de entrada e saída) era equivalente em termos das funções que uma rede neural é capaz de representar [...]

Você deve estar se referindo ao chamado teorema da aproximação universal , provado por Cybenko em 1989 e generalizado por várias pessoas na década de 1990. Diz basicamente que uma rede neural superficial (com 1 camada oculta) pode aproximar-se de qualquer função, ou seja, pode, em princípio, aprender qualquer coisa . Isso é verdade para várias funções de ativação não lineares, incluindo unidades lineares retificadas que a maioria das redes neurais está usando atualmente (o livro de referência faz referência a Leshno et al. 1993 para esse resultado).

Se sim, então por que todo mundo está usando redes profundas?

Bem, uma resposta ingênua é essa porque eles funcionam melhor. Aqui está uma figura do livro Deep Learning mostrando que ajuda a ter mais camadas em uma tarefa específica, mas o mesmo fenômeno é frequentemente observado em várias tarefas e domínios:

Mais camadas é bom

Sabemos que uma rede rasa pode ter um desempenho tão bom quanto as mais profundas. Mas isso não acontece; e eles geralmente não. A questão é --- por quê? Possíveis respostas:

  1. Talvez uma rede rasa precise de mais neurônios do que a profunda?
  2. Talvez uma rede rasa seja mais difícil de treinar com nossos algoritmos atuais (por exemplo, possui mínimos locais mais desagradáveis, ou a taxa de convergência é mais lenta, ou o que for)?
  3. Talvez uma arquitetura superficial não se encaixe no tipo de problemas que geralmente estamos tentando resolver (por exemplo, o reconhecimento de objetos é um processo hierárquico "profundo" e por excelência)?
  4. Algo mais?

O livro Deep Learning defende os pontos 1 e 3 do marcador. Primeiro, argumenta que o número de unidades em uma rede rasa cresce exponencialmente com a complexidade da tarefa. Portanto, para ser útil, uma rede rasa pode precisar ser muito grande; possivelmente muito maior que uma rede profunda. Isso se baseia em vários artigos que provam que redes rasas, em alguns casos, precisariam exponencialmente de muitos neurônios; mas se, por exemplo, a classificação MNIST ou o Go play são esses casos, não está realmente claro. Segundo, o livro diz o seguinte:

A escolha de um modelo profundo codifica uma crença muito geral de que a função que queremos aprender deve envolver a composição de várias funções mais simples. Isso pode ser interpretado do ponto de vista da aprendizagem de representação como dizendo que acreditamos que o problema de aprendizagem consiste em descobrir um conjunto de fatores de variação subjacentes que, por sua vez, podem ser descritos em termos de outros fatores de variação subjacentes mais simples.

Eu acho que o "consenso" atual é que é uma combinação dos pontos 1 e 3: para tarefas do mundo real, a arquitetura profunda geralmente é benéfica e a arquitetura superficial seria ineficiente e exigiria muito mais neurônios para o mesmo desempenho.

Mas está longe de ser comprovado. Considere, por exemplo, Zagoruyko e Komodakis, 2016, Wide Residual Networks . Redes residuais com mais de 150 camadas apareceram em 2015 e venceram vários concursos de reconhecimento de imagem. Este foi um grande sucesso e parecia um argumento convincente a favor da profundidade; Aqui está uma figura de uma apresentação do primeiro autor no artigo de rede residual (observe que o tempo confusa é para a esquerda aqui):

redes residuais profundas

Mas o artigo acima mostra que uma rede residual "ampla" com "apenas" 16 camadas pode superar as "profundas" com mais de 150 camadas. Se isso for verdade, todo o ponto da figura acima será quebrado.

Ou considere Ba e Caruana, 2014, as redes profundas realmente precisam ser profundas? :

Neste artigo, fornecemos evidências empíricas de que as redes rasas são capazes de aprender a mesma função que as redes profundas e, em alguns casos, com o mesmo número de parâmetros que as redes profundas. Fazemos isso treinando primeiro um modelo profundo de última geração e depois treinando um modelo raso para imitar o modelo profundo. O modelo de simulação é treinado usando o esquema de compactação de modelo descrito na próxima seção. Notavelmente, com a compressão do modelo, podemos treinar redes rasas para serem tão precisas quanto alguns modelos profundos, mesmo que não possamos treinar essas redes rasas para serem tão precisas quanto as redes profundas quando as redes rasas são treinadas diretamente sobre o original dados de treinamento rotulados. Se uma rede rasa com o mesmo número de parâmetros que uma rede profunda pode aprender a imitar uma rede profunda com alta fidelidade,

Se for verdade, isso significaria que a explicação correta é o meu ponto 2, e não o número 1 ou o número 3.

Como eu disse --- ninguém realmente sabe ao certo ainda.


Observações finais

A quantidade de progresso alcançado no aprendizado profundo nos últimos 10 anos é realmente incrível, mas a maior parte desse progresso foi alcançada por tentativa e erro, e ainda nos falta uma compreensão muito básica sobre o que exatamente faz as redes profundas funcionarem tão bem. Até a lista de coisas que as pessoas consideram cruciais para a criação de uma rede profunda eficaz parece mudar a cada dois anos.

O renascimento do aprendizado profundo começou em 2006, quando Geoffrey Hinton (que trabalhava em redes neurais há mais de 20 anos sem muito interesse de ninguém) publicou alguns artigos inovadores, oferecendo uma maneira eficaz de treinar redes profundas ( artigo científico , artigo sobre computação neural ) . O truque era usar o pré-treinamento não supervisionado antes de iniciar a descida do gradiente. Esses documentos revolucionaram o campo e, por alguns anos, as pessoas pensaram que o pré-treinamento não supervisionado era a chave.

Então, em 2010, Martens mostrou que redes neurais profundas podem ser treinadas com métodos de segunda ordem (os chamados métodos livres de Hessian) e podem superar as redes treinadas com pré-treinamento: Deep learning via otimização sem Hessian . Então, em 2013, Sutskever et al. mostraram que a descida do gradiente estocástico com alguns truques muito inteligentes pode superar os métodos livres de Hessian: Sobre a importância da inicialização e do momento no aprendizado profundo . Além disso, por volta de 2010, as pessoas perceberam que o uso de unidades lineares retificadas em vez de unidades sigmóides faz uma enorme diferença para a descida do gradiente. O abandono ocorreu em 2014. As redes residuais apareceram em 2015. As pessoas continuam criando maneiras cada vez mais eficazes de treinar redes profundas eo que parecia ser um insight importante há dez anos é considerado atualmente um incômodo hoje. Tudo isso é amplamente motivado por tentativa e erro e há pouco entendimento do que faz algumas coisas funcionarem tão bem e outras não. Treinar redes profundas é como um grande saco de truques. Os truques de sucesso geralmente são racionalizados após o fato.

Nem sabemos por que redes profundas atingem um platô de desempenho; apenas 10 anos as pessoas costumavam culpar os mínimos locais, mas o pensamento atual é que esse não é o ponto (quando os platôs de desempenho, os gradientes tendem a permanecer grandes). Essa é uma pergunta tão básica sobre redes profundas, e nem sabemos disso .

Atualização: esse é mais ou menos o assunto da palestra do NIPS 2017 de Ali Rahimi sobre aprendizado de máquina como alquimia: https://www.youtube.com/watch?v=Qi1Yry33TQE .


[Esta resposta foi totalmente reescrita em abril de 2017, portanto, alguns dos comentários abaixo não se aplicam mais.]

ameba
fonte
2
Boa resposta! 1) Como também mencionado por @Nicolas, verifica-se que existe um teorema ( en.wikipedia.org/wiki/Universal_approximation_theorem ) que afirma que uma rede neural de feed-forward com uma única camada oculta e um número finito de neurônios pode se aproximar. qualquer função contínua (incluindo um DNN) no hipercubo da unidade. Este resultado é considerado independente da escolha da função de ativação. 2) Não tenho certeza se sua última observação (ou seja, que Hinton se juntou ao Google) é relevante para o recente sucesso das DNNs; Hinton se juntou ao Google muito depois que os DNNs se tornaram epidêmicos!
Sobi 03/12
4
n1n
2
A questão da linearidade parece ser uma combinação de duas questões. Perceptrons só podem calcular limites de decisão lineares - só podem desenhar linhas retas para dividir duas classes. Redes multicamadas podem "traçar" limites mais complicados. Mas nem perceptrons nem redes multicamadas usam funções de ativação linear, exceto na camada de saída de uma rede multicamada. A função de ativação do perceptron é um heaviside (1 se x> 0, 0 caso contrário); redes multicamadas costumam usar sigmóides, mas as restrições para aprox. são bastante leves: não constantes, limitadas e monotonicamente crescentes.
Matt Krause
2
@amoeba ótima resposta, a foto no começo meio que me levou a ler o resto, mas foi para o melhor. O perceptron é a contrapartida da regressão linear para classificação, e é por isso que quando as pessoas usam a solução de formulário fechado (pseudoinverso) para resolver o problema em vez dos métodos online (sgd), isso se chama Regressão Logística, devido à logística (função sigmóide). = perceptron. Uma regressão perceptron / logística pode apenas 'desenhar' limites de decisão lineares e é por isso que é chamada linear.
shuriken x blue
2
No entanto, o perceptron de várias camadas (o que você desenhou em sua primeira foto à esquerda) pode combinar vários limites lineares de decisão e, assim, dividir o espaço para resolver o problema XOR (não linear), como o @Matt mencionado. Portanto, muitos limites de decisão lineares combinados podem formar um círculo, por exemplo, se você olhar de soslaio. Depende de como você pensa sobre isso - a decisão ainda é linear em um espaço mais alto; se você estiver familiarizado com os kernels, é a mesma coisa.
shuriken x blue
8

Boa resposta até agora, embora existam algumas coisas que ninguém mencionou por aqui, aqui está o meu 0,02 $

Vou apenas responder na forma de uma história, deve tornar as coisas mais divertidas e claras. Não há aqui. No processo, você deve entender qual é a diferença.

Existem várias razões pelas quais os DNNs surgiram quando o fizeram (as estrelas tiveram que se alinhar, como todas as coisas semelhantes, é apenas a questão do lugar certo, da hora certa etc.).

Uma razão é a disponibilidade de dados, muitos dados (dados rotulados). Se você deseja generalizar e aprender algo como 'antecedentes genéricos' ou 'antecedentes universais' (também conhecidos como os blocos de construção básicos que podem ser reutilizados entre tarefas / aplicativos), você precisa de muitos dados. E dados selvagens, devo acrescentar, não conjuntos de dados estéreis cuidadosamente registrados no laboratório com iluminação controlada e tudo. O Mechanical Turk tornou isso possível (rotulagem).

Segundo, a possibilidade de treinar redes maiores mais rapidamente usando GPUs tornou a experimentação mais rápida. As unidades ReLU tornaram as coisas mais rápidas em termos de computação e forneceram sua regularização, pois você precisava usar mais unidades em uma camada para poder compactar as mesmas informações, já que as camadas agora eram mais esparsas, por isso também foi bom com o abandono. Além disso, eles ajudaram com um problema importante que acontece quando você empilha várias camadas. Mais sobre isso mais tarde. Vários truques múltiplos que melhoraram o desempenho. Como usar mini-lotes (o que é de fato prejudicial para o erro final) ou convoluções (que na verdade não capturam tanta variação quanto os campos receptivos locais), mas são computacionalmente mais rápidos.

Enquanto isso, as pessoas discutiam se gostavam de mais magras ou gordinhas, menores ou mais altas, com ou sem sardas, etc. A otimização era como fracassa ou bate, então a pesquisa estava se movendo em direção a métodos mais complexos de treinamento, como o gradiente conjugado e método newtons, finalmente todos perceberam que não havia almoço grátis. As redes estavam arrotando.

O que atrasou as coisas foi o problema do gradiente que desaparecia . As pessoas falaram: uau, isso está longe, cara! Em poucas palavras, significa que foi difícil ajustar o erro nas camadas mais próximas das entradas. À medida que você adiciona mais camadas ao bolo, fica muito instável. Você não pode propagar novamente um erro significativo de volta para as primeiras camadas. Quanto mais camadas, pior. Vadio.

Algumas pessoas descobriram que usar a entropia cruzada como uma função de perda (bem, novamente, classificação e reconhecimento de imagem) fornece algum tipo de regularização e ajuda a saturar a rede e, por sua vez, o gradiente não foi capaz de esconder isso muito bem.

O que também tornou as coisas possíveis foi o pré-treinamento por camada, usando métodos não supervisionados. Basicamente, você pega vários codificadores automáticos e aprende cada vez menos representações abstratas à medida que aumenta a taxa de compactação. Os pesos dessas redes foram usados ​​para inicializar a versão supervisionada. Isso resolveu o problema do gradiente de fuga de outra maneira: você já está começando o treinamento supervisionado a partir de uma posição inicial muito melhor. Então, todas as outras redes se levantaram e começaram a se revoltar. Mas as redes precisavam de supervisão de qualquer maneira, caso contrário, era impossível manter o big data parado.

Agora, a última parte que finalmente leva à sua resposta, que é muito complexa para resumir: por que mais camadas e não apenas uma. Porque nós podemos! e porque o contexto e os descritores de recursos invariantes. e piscinas.

Aqui está um exemplo: você tem um conjunto de dados de imagens, como vai treinar um NN plano usando esses dados? Bem, ingênua, digamos cada linha e concatenamos em um vetor longo e essa é a sua entrada. O que voce aprende? Bem, algumas funções imprecisas e sem sentido que podem não parecer nada, por causa dos muitos tipos de variações que os objetos na imagem contêm e você não é capaz de distinguir entre coisas relevantes e irrelevantes. E, em algum momento, a rede precisa esquecer de poder aprender novamente coisas novas. Portanto, há o problema de capacidade. Essa é uma dinâmica mais não linear, mas a intuição é que você precisa aumentar o número de neurônios para poder incluir mais informações em sua rede.

Portanto, o ponto é que, se você apenas inserir a imagem como uma peça, adicionar camadas extras não será muito útil, pois você não poderá aprender abstrações , o que é muito importante. Fazer as coisas de maneira holística, portanto, não funciona tão bem, a menos que você esteja fazendo coisas mais simples com a rede, como se concentrar em um tipo específico de objeto, então você se limita a uma classe e escolhe algumas propriedades globais como objetivo de classificação.

Então, o que há para fazer? Observe a borda da tela e tente ler este texto. Problema? Por mais estúpido que pareça, você precisa ver o que está lendo. Caso contrário, é muito confuso / não há resolução / granularidade suficientes. Vamos chamar a área de foco de campo receptivo. As redes também precisam se concentrar. Basicamente, em vez de usar a imagem inteira como entrada, você move uma janela deslizante ao longo da imagem e a usa como entrada para a rede (um pouco menos estocástica do que o que os humanos fazem). Agora você também tem a chance de capturar correlações entre pixels e, portanto, objetos, além de distinguir entre um gato sonolento sentado em um sofá e um bungee jumping de cabeça para baixo. Pura, fé na humanidade restaurada. A rede pode aprender abstrações locais em uma imagem em vários níveis. A rede aprende filtros,

Então, para resumir: campos / convoluções receptivas, inicialização não supervisionada, unidades lineares retificadas, desistência ou outros métodos de regularização. Se você é sério sobre isso, recomendo que você dê uma olhada no Deep Learning em redes neurais da Schmidhuber : uma visão geral, aqui está o URL da pré-impressão http://arxiv.org/abs/1404.7828

E lembre-se: grande aprendizado, dados profundos. Palavra.

shuriken x blue
fonte
Oi Florin, obrigado pela ótima resposta! Eu gosto do estilo de escrita. Quando você fala sobre janelas deslizantes, está se referindo a como as camadas convolucionais de NN convolucionais observam diferentes partes de uma imagem e projetam suas ativações em um espaço de menor dimensão?
Nicolas
praticamente sim, as convoluções não são necessárias, mas são mais rápidas em termos computacionais, pois os pesos são limitados. confira este artigo onde eles não usam convoluções e usam campos receptivos locais. as palavras-chave importantes são hierárquicos local /: arxiv.org/pdf/1112.6209.pdf
shuriken azul x
também acho que a resposta sistemática mais próxima é de sobi. Ele recebeu meu voto. Acabei de adicionar mais algumas coisas aqui e ali com um pouco de sal e pimenta.
shuriken x blue
6

Em termos leigos, a principal diferença com as redes neurais clássicas é que elas têm muito mais camadas ocultas.

A idéia é adicionar rótulos às camadas para criar várias camadas de abstração:

Por exemplo, uma rede neural profunda para reconhecimento de objetos :

  • Camada 1: pixels únicos
  • Camada 2: Arestas
  • Camada 3: Formulários (círculos, quadrados)
  • Camada n: objeto inteiro

Você pode encontrar uma boa explicação para essa pergunta no Quora .

E, se você estiver interessado neste assunto, recomendo que dê uma olhada neste livro .

David Gasquez
fonte
1
Obrigado David, mas realmente não vejo como adicionar rótulos para torná-lo diferente. Também lembro que era um problema difícil entender e decompor como uma função foi codificada pela rede neural. Deve haver algo mais do que apenas ter mais camadas. Quanto ao exemplo que você deu, acredito que você pode treinar redes neurais individualmente (da velha escola) para executar cada uma das tarefas.
Nicolas
A energia vem quando você a usa como um pipeline, de modo que as entradas e saídas da camada são empilhadas em todas as camadas.
David Gasquez
Estive lendo seu primeiro link, que é um bom recurso, e outras questões relacionadas ao quora e se; no entanto, o exemplo que você deu não parece exato com o que li. Vou tentar responder minha própria pergunta, resumindo essas leituras.
Nicolas
2
Apesar de o recurso apontado ser interessante, a resposta atualmente não responde à pergunta.
Nicolas
Você pode apontar para um exemplo em que as camadas são rotuladas (exceto de maneira puramente descritiva)? Certamente é verdade que as camadas ocultas parecem ter recursos sucessivamente mais complexos em cada camada oculta, mas "adicionar rótulos" parece implicar que eles estão sendo treinados especificamente para fazer isso.
Matt Krause
2

Também fiquei um pouco confuso no começo com a diferença entre redes neurais (NN) e redes neurais profundas (DNN), no entanto, a 'profundidade' refere-se apenas ao número de parâmetros e camadas, infelizmente. Você pode considerar isso como uma espécie de re-branding sob a chamada 'máfia canadense'.

Vários anos atrás, eu também tinha redes neurais como parte de uma classe e fizemos reconhecimento de dígitos, aproximação de ondas e aplicativos similares usando o NN, que tinha várias camadas e saídas ocultas e todo o jazz que os DNN têm. No entanto, o que não tínhamos na época era poder de computação.

A razão que tornou a mudança para DNN possível e desejável são os avanços no desenvolvimento de hardware. Simplificando, agora podemos calcular mais, mais rápido e mais paralelamente (DNN nas GPUs), enquanto antes, o tempo era o gargalo das NNs.

Conforme mencionado na página da Wikipedia para Deep Learning , a parte 'deep' refere-se principalmente a ter recursos que interagem de maneira não linear em várias camadas, realizando assim a extração e transformação de recursos. Isso também foi feito em NNs padrão, porém em menor escala.

Na mesma página, aqui você tem a definição 'Uma rede neural profunda (DNN) é uma rede neural artificial (RNA) com várias camadas ocultas de unidades entre as camadas de entrada e saída'.

mttk
fonte
Olá Mttk, obrigado pela sua resposta, pois lançou mais luz sobre esta questão. Em relação ao seu último ponto, sim, estruturalmente, é muito fácil explicar a diferença (1 vs várias camadas), mas a diferença na maneira como essas múltiplas camadas são usadas parece ser o que importa e é muito menos claro. É por isso que concentrei a questão não na estrutura ..
Nicolas
Honestamente, eu não concordo com a última definição que referenciei - já que a RNA / NN com uma camada oculta não é realmente eficiente e você precisava de várias para qualquer tipo de previsão mais complexa (estou dizendo isso porque acho que o DNN era um palavra-chave inútil adicionada a um termo já bom, NN). Eu acho que você pode usar NN e DNN de forma intercambiável (porque hoje em dia ninguém usa NNs de uma camada oculta), enquanto o uso das camadas difere entre os tipos de DNNs (CNN, RBM, RNN, LSTM, CW-RNN, ...) e não a ideia do próprio DNN.
Mckk
2

Até onde eu sei, o que é chamado de Rede Neural Profunda (DNN) hoje não tem nada de fundamental ou filosoficamente diferente do antigo Rede Neural (NN) padrão. Embora, em teoria, se possa aproximar um NN arbitrário usando um NN raso com apenas uma camada oculta, no entanto, isso não significa que as duas redes terão desempenho semelhante quando treinadas usando o mesmo algoritmo e dados de treinamento. De fato, há um interesse crescente em treinar redes rasas com desempenho semelhante às redes profundas. A maneira como isso é feito, no entanto, é treinando primeiro uma rede profunda e depois treinando a rede rasa para imitara saída final (ou seja, a saída da penúltima camada) da rede profunda. Veja, o que torna as arquiteturas profundas favoráveis ​​é que as técnicas de treinamento atuais (propagação traseira) funcionam melhor quando os neurônios são dispostos em uma estrutura hierárquica.

Outra pergunta que pode ser feita é: por que as redes neurais (DNNs em particular) se tornaram tão populares de repente. Para meu entendimento, os ingredientes mágicos que tornaram os DNNs tão populares recentemente são os seguintes:

A. Conjuntos de dados aprimorados e recursos de processamento de dados

1. Conjuntos de dados em larga escala com milhões de imagens diversas foram disponibilizados

2. A implementação rápida da GPU foi disponibilizada ao público

B. Algoritmos de treinamento e arquiteturas de rede aprimorados

1. Unidades lineares retificadas (ReLU) em vez de sigmóides ou tanh

2. Arquiteturas de rede profundas evoluíram ao longo dos anos


A-1) Até bem recentemente, pelo menos no Computer Vision, não podíamos treinar modelos em milhões de imagens rotuladas; simplesmente porque conjuntos de dados rotulados desse tamanho não existiam. Acontece que, além do número de imagens, a granularidade do conjunto de etiquetas também é um fator muito crucial no sucesso das DNNs (veja a Figura 8 neste artigo , de Azizpour et al.).

A-2) Foi feito um grande esforço de engenharia para possibilitar o treinamento de DNNs que funcionam bem na prática, principalmente o advento das implementações de GPU. Uma das primeiras implementações de DNNs de GPU de sucesso, é executada em duas GPUs paralelas; no entanto, leva cerca de uma semana para treinar um DNN em 1,2 milhão de imagens de 1000 categorias usando GPUs de última geração (consulte este documento, por Krizhevsky et al.).

B-1) O uso de unidades lineares retificadas simples (ReLU), em vez de funções sigmóides e tanh, é provavelmente o maior componente para tornar possível o treinamento de DNNs. Observe que as funções sigmóide e tanh têm gradiente quase zero em quase todos os lugares, dependendo da velocidade com que passam do baixo nível de ativação para o alto; no caso extremo, quando a transição é repentina, obtemos uma função de etapa que tem inclinação zero em todos os lugares, exceto em um ponto em que a transição ocorre.

B-2) A história de como as arquiteturas de redes neurais se desenvolveram ao longo dos anos me lembra como a evolução muda a estrutura de um organismo na natureza. O compartilhamento de parâmetros (por exemplo, em camadas convolucionais), regularização de abandono, inicialização, cronograma de taxas de aprendizado, agrupamento espacial, subamostragem nas camadas mais profundas e muitos outros truques que agora são considerados padrão no treinamento em DNNs foram desenvolvidos, evoluídos e finalizados sob medida. anos para tornar possível o treinamento das redes profundas do jeito que é hoje.

Sobi
fonte
3
+1. A primeira resposta neste tópico que fornece uma resposta adequada às perguntas do OP. Muitos bons pontos aqui. Meu único comentário importante seria que, além dos seus A e B, há também C: Aumento maciço no tamanho dos conjuntos de dados de treinamento disponíveis. Este parece ser pelo menos tão importante como A e B.
ameba
1
Não acho que a relu seja tão importante: o artigo de Alex Krizhevsky afirmou que o nn aprendia até 6 vezes mais rápido. A maioria dos outros estrutura de rede muda você menciona relacionar com NNS convolucionais, que apenas copiar pipelines de processamento de imagem padrão (coisa boa, mas há novos insights)
seanv507
1
@amoeba: o tamanho do conjunto de dados está em A. Atualizei o texto para destacá-lo.
Sobi 04/12/2015
@ seanv507: na verdade, eu tinha redes convolucionais (ConvNets) em mente ao escrever a resposta. Se houver outros fatores importantes (não relacionados às ConvNets) que eu tenha perdido, eu apreciaria se você os mencionasse. Eu ficaria feliz em atualizar minha resposta de acordo. Em relação às ReLUs, o treinamento de nns com tanh e sigmoide é consideravelmente mais difícil do que com ReLUs devido à questão dos gradientes que desaparecem: as unidades ficam facilmente saturadas e, quando isso acontece, leva muito tempo para se tornarem insaturadas novamente (os gradientes são muito pequenos quando a unidade está saturado)
Sobi
2

A diferença entre um NN "profundo" e um NN padrão é puramente qualitativa: não há definição do que esse "profundo" significa. "Profundo" pode significar qualquer coisa, desde as arquiteturas extremamente sofisticadas usadas pelo Google, Facebook e empresas com 50 a 80 ou mais camadas até 2 arquiteturas ocultas (4 camadas no total). Eu não ficaria surpreso se você pudesse encontrar artigos que afirmam aprender profundamente com uma única camada oculta, porque "profundo" não significa muito.

"Rede neural" também é uma palavra que não tem um significado muito preciso. Ele abrange um conjunto extremamente grande de modelos, de máquinas boltzman aleatórias (que são gráficos não direcionados) a arquiteturas avançadas com várias funções de ativação. A maioria das NNs será treinada usando backprop, mas não precisa ser o caso, portanto, mesmo os algoritmos de treinamento não são muito homogêneos.

No geral, aprendizado profundo, NNs profundos e NNs se tornaram palavras genéricas que capturam uma infinidade de abordagens.

Para boas referências introdutórias sobre "o que mudou": Deep Learning of Representations: Looking Forward , Bengio, 2013 é uma boa revisão + perspectiva para o futuro. Consulte também As redes profundas realmente precisam ser profundas? Ba & Caruana, 2013, que ilustram que ser profundo pode não ser útil para representação, mas para aprendizado.

Guillaume Dehaene
fonte
As referências que você fornece são muito úteis, mas o restante da resposta no formulário atual (que diz "NN não significa nada, DNN não significa nada, NN e DNN podem fazer muitas coisas") não muito, faria você considera revisá-lo?
Nicolas
1

Para expandir a resposta de David Gasquez, uma das principais diferenças entre redes neurais profundas e redes neurais tradicionais é que não usamos apenas a retropropagação para redes neurais profundas.

Por quê? Como a retropropagação treina camadas posteriores com mais eficiência do que as camadas anteriores - à medida que você avança mais cedo e mais cedo na rede, os erros ficam menores e mais difusos. Portanto, uma rede de dez camadas será basicamente sete camadas de pesos aleatórios seguidas por três camadas de pesos ajustados, e funciona tão bem quanto uma rede de três camadas. Veja aqui para mais.

Portanto, a inovação conceitual está tratando os problemas separados (as camadas rotuladas) como problemas separados - se primeiro tentarmos resolver o problema de criar uma primeira camada genericamente boa e tentar resolver o problema de criar uma segunda camada genericamente boa, eventualmente, teremos um amplo espaço de recursos que podemos alimentar para o nosso problema real.

Matthew Graves
fonte
1

NN:

  • uma camada oculta é suficiente, mas pode ter várias camadas, no entanto, da esquerda para a direita (modelo: feed forward NN)
  • treinado apenas de forma supervisionada (retropropagação)
  • quando várias camadas são usadas, treina todas as camadas ao mesmo tempo (mesmo algoritmo: retropropagação), mais camadas dificultam o uso, pois os erros se tornam muito pequenos
  • difícil entender o que é aprendido em cada camada

DNN:

  • são necessárias várias camadas, bordas não direcionadas (modelo: máquina boltzman restrita)
  • primeiro treinado de maneira não supervisionada, em que as redes aprendem recursos relevantes aprendendo a reproduzir sua entrada e, em seguida, treinados de maneira supervisionada que ajusta os recursos para classificar
  • treine as camadas uma a uma da entrada à camada de saída (algoritmo: divergência contrastiva)
  • cada camada contém claramente características de abstração crescente

A mudança para o DNN se deve a três avanços independentes que ocorreram em 2006.

Em relação aos teoremas da NN, a questão a que se refere é:

  • teorema da aproximação universal ou teorema de Cybenko: uma rede neural de feed-forward com uma única camada oculta pode aproximar-se de qualquer função contínua. No entanto, na prática, pode exigir muito mais neurônios se uma única camada oculta for usada.
Nicolas
fonte
2
-1? Realmente? Eu li tudo isso na literatura e fiz uma comparação ponto a ponto de ambas as abordagens! Por favor, pelo menos, estado que não é correto ...
Nicolas
3
Não fiz voto negativo (talvez um voto negativo não goste de que você responda sua própria pergunta? Mas é claro que está perfeitamente bem aqui), mas aqui está uma coisa que não está totalmente correta. O que você lista como propriedades do DNN: que as arestas não são direcionadas, que são treinadas primeiro de maneira não supervisionada, que as camadas são treinadas uma a uma - tudo isso se refere apenas a redes de crenças profundas sugeridas por Hinton em 2006. Isso não é necessariamente verdadeiro para redes neurais profundas em geral e, de fato, agora existem muitas maneiras de treinar uma rede profunda sem tudo isso. Veja minha resposta.
Ameba
1

O(n) estimadores estatísticos de , funcionando bem para grandes conjuntos de dados de alta dimensão (por exemplo, imagenet).

Eu acho que você deveria dar um passo atrás e ver que isso criou um ressurgimento na IA superficial - por exemplo, um conjunto de palavras para análise de sentimentos e outras aplicações de linguagem e um conjunto visual de palavras foi a principal abordagem para o reconhecimento de imagens antes do DNN. Ninguém está dizendo que o pacote de palavras é um verdadeiro modelo de linguagem, mas é uma solução de engenharia eficaz. Então, eu diria que DNN é uma 'bolsa visual de palavras' melhor - veja, por exemplo, Szegedy et al. 2013 Propriedades intrigantes de redes neurais e Nguyen et al. As redes neurais profundas são facilmente enganadas: previsões de alta confiança para imagens irreconhecíveis, onde fica claro que não há estruturas de ordem superior etc. que estão sendo aprendidas (ou o que é reivindicado pelo DNN).

seanv507
fonte
@amoeba este outro papel é quase um papel de companheiro para o primeiro (mais uma vez com muitas imagens!)
seanv507
0

O Deep Learning é um conjunto de algoritmos no aprendizado de máquina que tentam modelar abstrações de alto nível nos dados usando arquiteturas compostas de várias transformações não lineares .

Fonte: Arno Candel

JimBoy
fonte