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?)
fonte
Respostas:
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 :
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
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:
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:
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:
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):
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? :
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.]
fonte
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.
fonte
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 :
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 .
fonte
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'.
fonte
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.
fonte
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.
fonte
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.
fonte
NN:
DNN:
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 é:
fonte
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).
fonte
Fonte: Arno Candel
fonte