Dizem na Wikipedia e no deeplearning4j que NN de aprendizado profundo (DLNN) são NN que têm> 1 camada oculta.
Esse tipo de NN era padrão na universidade para mim, enquanto o DLNN é muito popular no momento. Estive lá, fiz isso - qual é o grande problema?
Ouvi também que NN empilhados são considerados aprendizado profundo. Como o aprendizado profundo é realmente definido?
Minha formação na NN é principalmente de universidade, não de empregos:
- estudou aplicações de NN na indústria
- teve cerca de 5 cursos no artif. intel. & mach. aprender. - embora talvez 2 deles na NN
- NN usado para projeto pequeno e simples de reconhecimento de imagem - NN feed-feed de 3 camadas usado
- não fizeram pesquisas reais (como na tese de doutorado) sobre eles
neural-network
deep-learning
Make42
fonte
fonte
Respostas:
Você está certo de que o conceito básico de NN profundo não mudou desde 2012. Mas houve várias melhorias nas maneiras pelas quais os NNs profundos são treinados que os tornaram qualitativamente mais poderosos. Também há uma variedade maior de arquiteturas disponíveis hoje. Listei alguns desenvolvimentos desde 2012, agrupados por aprimoramentos de treinamento e arquitetura:
Melhorias no treinamento de NNs profundos
Hardware : A mudança mais óbvia é apenas a progressão inexorável da lei de Moore. Hoje há mais poder de computação disponível. A computação em nuvem também facilita o treinamento de NNs grandes sem a necessidade de comprar uma plataforma enorme.
Software : o software de código aberto para aprendizado profundo foi realmente bastante aprimorado a partir de 2012. Em 2012, havia o Theano, talvez o Caffe também. Tenho certeza de que existem outros também. Hoje, porém, também temos o TensorFlow, Torch, Paddle e CNTK, todos suportados por grandes empresas de tecnologia. Isso está intimamente relacionado ao objetivo principal do hardware, pois muitas dessas plataformas facilitam o treinamento em GPUs, o que acelera drasticamente o tempo de treinamento.
Funções de ativação : o uso das funções de ativação do ReLU é provavelmente mais difundido atualmente, o que facilita o treinamento de redes muito profundas. No lado da pesquisa, há uma variedade maior de funções de ativação sendo estudadas, incluindo ReLU com vazamento , ReLU paramétrico e unidades de maxout .
Algoritmos de otimização : existem mais algoritmos de otimização hoje em dia. Adagrad e Adadelta foram lançados em 2011 e 2012, respectivamente. Mas agora também temos o otimizador Adam e ele se tornou uma escolha muito popular.
Abandono : Nos últimos anos, o abandono tornou-se uma ferramenta padrão para a regularização no treinamento de redes neurais. O abandono é uma forma computacionalmente barata de agrupar para NNs. Em geral, um conjunto de modelos treinados em amostras aleatórias do conjunto de dados superará um único modelo treinado em todo o conjunto de dados. É difícil fazer isso explicitamente para as NNs, porque elas são muito caras para treinar. Mas um efeito semelhante pode ser aproximado apenas "desligando" aleatoriamente os neurônios em cada etapa. Diferentes subgráficos no NN acabam sendo treinados em diferentes conjuntos de dados e, assim, aprendem coisas diferentes. Como no conjunto, isso tende a tornar o NN geral mais robusto ao sobreajuste. O abandono é uma técnica simples que parece melhorar o desempenho em quase todos os casos, por isso '
Normalização de lotes : já se sabe há algum tempo que os NNs treinam melhor em dados normalizados - ou seja, há média e variação unitária zero. Em uma rede muito profunda, à medida que os dados passam por cada camada, as entradas serão transformadas e geralmente serão direcionadas para uma distribuição que carece dessa propriedade legal e normalizada. Isso dificulta o aprendizado nessas camadas mais profundas, porque, de sua perspectiva, suas entradas não têm média zero e variação unitária. A média pode ser muito grande e a variação pode ser muito pequena. A normalização de lote soluciona isso transformando as entradas em uma camada para ter média zero e variação de unidade. Isso parece ser extremamente eficaz no treinamento de NNs muito profundos.
Teoria : Até muito recentemente, pensava-se que a razão pela qual as NNs profundas são difíceis de treinar é que os algoritmos de otimização ficam presos nos mínimos locais e têm problemas para sair e encontrar mínimos globais. Nos últimos quatro anos, houve vários estudos que parecem indicar que essa intuição estava errada (por exemplo, Goodfellow et al. 2014) No espaço paramétrico muito alto de um NN profundo, os mínimos locais tendem a não ser muito piores que os mínimos globais. O problema é que, ao treinar, o NN pode se encontrar em um longo e amplo platô. Além disso, esses platôs podem terminar abruptamente em um penhasco íngreme. Se o NN der pequenos passos, leva muito tempo para aprender. Mas se os degraus forem muito grandes, eles encontrarão um gradiente enorme quando entrarem no penhasco, o que desfaz todo o trabalho anterior. (Isso pode ser evitado com o recorte de gradiente, outra inovação pós-2012.)
Novas arquiteturas
Redes residuais : os pesquisadores conseguiram treinar redes incrivelmente profundas (mais de 1000 camadas!) Usando redes residuais . A idéia aqui é que cada camada receba não apenas a saída da camada anterior, mas também a entrada original. Se treinado adequadamente, isso incentiva cada camada a aprender algo diferente das camadas anteriores, para que cada camada adicional adicione informações.
Redes amplas e profundas : Redes amplas e rasas tendem a simplesmente memorizar o mapeamento entre suas entradas e saídas. Redes profundas generalizam muito melhor. Geralmente, você deseja uma boa generalização, mas há algumas situações, como sistemas de recomendação, nas quais a simples memorização sem generalização também é importante. Nesses casos, você deseja fornecer boas soluções substantivas quando um usuário faz uma consulta geral, mas soluções muito precisas quando o usuário faz uma consulta muito específica. Redes amplas e profundas são capazes de cumprir essa tarefa perfeitamente.
Máquina de turbulência neural : uma deficiência de NNs recorrentes tradicionais (sejam eles o RNN padrão ou algo mais sofisticado como um LSTM) é que sua memória é um pouco "intuitiva". Eles conseguem lembrar as entradas passadas, salvando as ativações da camada oculta que produzem no futuro. No entanto, às vezes faz mais sentido armazenar explicitamente alguns dados. (Essa pode ser a diferença entre escrever um número de telefone em um pedaço de papel e lembrar que o número tinha cerca de 7 dígitos e havia alguns 3s ali e talvez um traço em algum lugar no meio.) A máquina neural de Turingé uma maneira de tentar resolver esse problema. A idéia é que a rede possa aprender a comprometer explicitamente certos fatos para um banco de memória. Isso não é fácil, porque os algoritmos de backprop requerem funções diferenciáveis, mas o comprometimento de um dado em um endereço de memória é uma operação inerentemente discreta. Consequentemente, as máquinas neurais de Turing resolvem isso comprometendo um pouco de dados em uma distribuição de endereços de memória diferentes. Essas arquiteturas parecem não funcionar muito bem ainda, mas a ideia é muito importante. Algumas variantes provavelmente se espalharão no futuro.
Redes contraditórias generativas : os GANs são uma idéia muito interessante que já parece ter muito uso prático. A idéia aqui é treinar dois NNs simultaneamente: um que tente gerar amostras da distribuição de probabilidade subjacente (um gerador) e outro que tente distinguir entre pontos de dados reais e pontos de dados falsos gerados pelo gerador (um discriminador). Por exemplo, se seu conjunto de dados for uma coleção de fotos de quartos, o gerador tentará criar suas próprias imagens de quartos e o discriminador tentará descobrir se está vendo imagens reais de quartos ou imagens falsas de quartos. No final, você tem dois NNs muito úteis: um que é realmente bom em classificar imagens como sendo quartos ou não quartos, e um que é realmente bom em gerar imagens realistas de quartos.
fonte
O aprendizado profundo (e, em particular, as redes neurais profundas e complicadas) é muito popular no momento devido a recentes melhorias substanciais em vários desafios de visão de máquina / detecção de objetos. Conventos profundos, em particular, foram usados para reduzir os erros de classificação do ImageNet de 28% em 2010 para 7% em 2014. O aprendizado profundo é certamente exagerado, mas isso não deve prejudicar o fato de que houve melhorias significativas no campo da visão de máquina.
fonte
Uma pergunta semelhante foi feita no CV: diferença entre rede neural e aprendizagem profunda :
FYI: Quão verdadeiro é esse deslize no aprendizado profundo, alegando que todas as melhorias dos anos 80 se devem apenas a muito mais dados e computadores muito mais rápidos?
fonte