Qual é a diferença entre uma rede neural e uma rede neural profunda, e por que as profundas funcionam melhor?
On Dezembro 22, 2020 by adminNão vi a pergunta declarada precisamente nestes termos, e é por isso que fiz uma nova pergunta.
O que estou interessado em saber não é a definição de uma rede neural, mas em entender a diferença real com uma rede neural profunda.
Para mais contexto: eu sei o que é uma rede neural e como funciona a retropropagação. Eu sei que um DNN deve ter várias camadas ocultas. No entanto, há 10 anos na aula aprendi que ter várias camadas ou uma camada (não contar as camadas de entrada e saída) era equivalente em termos das funções que uma rede neural é capaz de representar (ver Cybenko “s Teorema de aproximação universal ), e que tendo mais camadas tornavam a análise mais complexa sem ganho de desempenho. Obviamente, esse não é mais o caso.
Suponho, talvez erroneamente, que as diferenças são em termos de algoritmo de treinamento e propriedades, 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 DNN (por exemplo, prova matemática ou jogar aleatoriamente com redes?) e desejável (por exemplo, velocidade de convergência?)
Comentários
- FYI: Quão verdadeiro é este slide sobre aprendizagem profunda?
- Se a função que você deseja aproximar é uma função de composição (comum em processamento de imagem e muitos domínios naturais devido à lei da física). Pode-se provar que redes profundas podem explorar essa composicionalidade e atingir o mesmo nível de erro de aproximação com um 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 superficiais, podem evitar a maldição da dimensionalidade: uma revisão. ” International Journal of Automation and Computing (2017)
- Você pode querer dar uma olhada neste artigo
- Ver 6.4 de arxiv.org/pdf/2004.06093.pdf
Resposta
Vamos começar com uma triviliaty: a rede neural profunda é simplesmente uma rede 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 feedforward; as feedforward não têm nenhum loop em seu gráfico e podem ser organizadas em camadas. Se houver “muitas” camadas , então dizemos que a rede é profunda .
Quantas camadas uma rede precisa ter para ser qualificada como profunda? Não há resposta definitiva para isso (é um um pouco como perguntar quantos grãos formam uma pilha ), mas geralmente ter duas ou mais camadas ocultas conta como profundidade. Em contraste, uma rede com apenas uma única camada oculta é convencionalmente chamada de “superficial”. 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, “deep” sugere que a rede é difícil de gerenciar.
Aqui está uma ilustração, adaptada daqui :
Mas a verdadeira questão que você está fazendo é, claro, por que ter muitas camadas seria benéfico?
Eu acho que o A resposta um tanto surpreendente é que ninguém realmente sabe. Existem algumas explicações comuns que revisarei brevemente abaixo, mas nenhuma delas foi convincentemente demonstrada como verdadeira, e não se pode nem mesmo ter certeza de que ter muitas camadas é realmente benéfico.
Eu digo que isso é surpreendente, porque o aprendizado profundo é massivamente popular, está quebrando todos os recordes (de reconhecimento de imagem, para jogar Go, para tradução automática, etc.) todo ano, está sendo usado pela indústria, etc. etc. . E ainda não temos certeza de por que funciona tão bem.
Baseio minha discussão no Profundo Learning livro de Goodfellow, Bengio e Courville, que foi lançado em 2017 e é amplamente considerado como o livro sobre aprendizagem profunda. (Está disponível gratuitamente online.) A seção relevante é 6.4.1 Propriedades e profundidade de aproximação universal .
Você escreveu que
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 de 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. Basicamente, ele diz que uma rede neural rasa (com 1 camada oculta) pode se aproximar 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 hoje (as referências do livro-texto Leshno et al. 1993 para este resultado).
Se sim, então por que todo mundo está usando redes profundas?
Bem, uma resposta ingênua é que porque elas funcionam melhor. Aqui está uma figura do livro Aprendizado profundo mostrando que ajuda 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 poderia têm um desempenho tão bom quanto os mais profundos. Mas isso não acontece; e geralmente não. A questão é — por quê? Possíveis respostas:
- Talvez uma rede rasa precise de mais neurônios que a profunda?
- Talvez uma rede rasa seja mais difícil de treinar com nossos algoritmos atuais (por exemplo, tem mais mínimos locais desagradáveis, ou a taxa de convergência é mais lenta, ou qualquer outra coisa)?
- Talvez uma arquitetura superficial não se encaixe no tipo de problemas que geralmente estamos tentando resolver (por exemplo, o reconhecimento de objeto é um “profundo” quintessencial “, processo hierárquico)?
- Algo mais?
O livro Aprendizado profundo defende os itens 1 e 3. Primeiro, ele argumenta que o número de unidades em uma rede rasa aumenta exponencialmente com a complexidade da tarefa. Portanto, para ser útil, uma rede rasa pode precisar ser muito grande; possivelmente muito maior do que uma rede profunda. Isso é baseado em uma série de artigos que provam que redes rasas em alguns casos precisariam de muitos neurônios exponencialmente; mas se, por exemplo A classificação MNIST ou o jogo Go são tais casos, mas não são realmente claras. Em segundo lugar, 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 de um ponto de vista da aprendizagem de representação, 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.
Acho que o “consenso” atual é que é “uma combinação dos pontos 1 e 3: para tarefas do mundo real, a arquitetura profunda costuma ser benéfica e a arquitetura superficial seria ineficiente e exigiria muito mais neurônios para o mesmo desempenho.
Mas está longe de ser provado. Considere, por exemplo Zagoruyko e Komodakis, 2016, Wide Residual Networks . Redes residuais com mais de 150 camadas surgiram em 2015 e ganharam vários concursos de reconhecimento de imagem. Este foi um grande sucesso e parecia um argumento convincente a favor da profundidade; aqui está um número de uma apresentação do primeiro autor no papel residual da rede (observe que o tempo vai confusamente para a esquerda aqui):
Mas o artigo relacionado acima mostra que uma “ampla “redes residuais com” apenas “16 camadas podem superar as” profundas “com mais de 150 camadas. Se isso for verdade, então todo o ponto da figura acima se quebra.
Ou considere Ba e Caruana, 2014, Do Deep Nets Really Need to be Profundo? :
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 primeiro treinando um modelo profundo de última geração e, em seguida, treinando um modelo raso para imitar o modelo profundo. O modelo mímico é treinado usando o esquema de compressão do modelo descrito na próxima seção. Notavelmente, com a compressão do modelo, somos capazes de treinar redes rasas para serem tão precisas quanto alguns modelos profundos, embora não possamos treinar essas redes rasas para serem tão precisas quanto as redes profundas quando as redes rasas são treinadas diretamente no 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, então é claro que a função aprendida por essa rede profunda não precisa ser realmente profunda.
Se verdadeiro, isso significaria que a explicação correta é antes o meu marcador # 2, e não # 1 ou # 3.
Como eu disse – – ninguém sabe ao certo ainda.
Observações finais
A quantidade de progresso alcançado no o aprendizado profundo nos últimos ~ 10 anos é realmente incrível, mas a maior parte desse progresso foi alcançado por tentativa e erro, e ainda não temos um entendimento básico sobre o que exatamente faz as redes profundas funcionarem tão bem. Até mesmo 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 estava trabalhando no sistema neural por mais de 20 anos sem muito interesse de ninguém) publicou alguns artigos inovadores que oferecem uma maneira eficaz de treinar redes profundas ( Artigo científico , Papel de computação neural ). O truque era usar o pré-treinamento não supervisionado antes de iniciar a descida gradiente. Esses jornais 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 redes treinadas com pré-treinamento: Aprendizado profundo por meio da otimização sem Hessian . Então, em 2013, Sutskever et al. mostraram que a descida gradiente estocástica com alguns truques muito inteligentes pode superar os métodos livres de Hessian: Sobre a importância da inicialização e do momentum 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 gradiente. O abandono apareceu em 2014. As redes residuais surgiram em 2015. As pessoas continuam surgindo com maneiras cada vez mais eficazes de treinar redes profundas e o que parecia um insight importante há 10 anos é frequentemente considerado um aborrecimento hoje. Tudo isso é em grande parte motivado por tentativa e erro e há pouco entendimento do que faz algumas coisas funcionarem tão bem e outras coisas não. Treinar redes profundas é como um grande saco de truques. Truques bem-sucedidos geralmente são racionalizados post factum.
Nós nem sabemos por que redes profundas atingem um patamar de desempenho; apenas 10 anos as pessoas costumavam culpar os mínimos locais, mas o pensamento atual é que esse não é o ponto (quando o desempenho se estabiliza, os gradientes tendem a permanecer grandes). Essa é uma questão tão básica sobre redes profundas, e nós nem sabemos isso .
Atualização: Este é mais ou menos o assunto da conversa 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, então alguns dos comentários abaixo não se aplicam mais.]
Comentários
- Boa resposta! 1) Como também mencionado por @Nicolas, isso Acontece que existe um teorema ( en.wikipedia.org/wiki/Universal_approximation_theorem ) que afirma que um n neural feed-forward Uma rede com uma única camada oculta e um número finito de neurônios pode aproximar qualquer função contínua (incluindo um DNN) no hipercubo unitário. 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 ingressou no Google) é relevante para o sucesso recente dos DNNs; Hinton ingressou no Google muito depois que os DNNs se tornaram epidêmicos!
- Talvez nós ‘ esteja usando a terminologia de maneira diferente. Perceptrons não ‘ têm uma camada oculta – sua entrada são os dados, sua saída é a classificação. Uma rede multicamadas consiste em um grupo de perceptrons conectados de forma que a saída da camada $ n-1 $ forme a entrada da camada $ n $. Uma rede com uma única camada oculta tem, portanto, três camadas (entrada, oculta, saída). Essa camada oculta é a chave para a aproximação universal: perceptrons, que não têm, podem ‘ t computar coisas como XOR, mas as redes multicamadas podem.
- A linearidade coisa parece uma combinação de dois problemas. Perceptrons só podem calcular limites de decisão linear – 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 multicamadas. A função de ativação do perceptron é um heaviside (1 se x > 0, 0 caso contrário); redes multicamadas geralmente usam sigmóides, mas as restrições para aprox. são bastante suaves: não constantes, limitados e monotonicamente crescentes.
- @amoeba ótima resposta, a imagem no início meio que me desencorajou a ler o resto, mas foi o melhor. O perceptron é a contraparte da regressão linear para classificação, e é por isso que quando as pessoas usam a solução de forma fechada (pseudoinverso) para resolver o problema em vez de métodos online (sgd), ele ‘ É chamado de 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 linear e que ‘ s por que ‘ é chamado de linear.
- No entanto, o perceptron de várias camadas (o que você desenhou em sua primeira imagem à esquerda) pode combinar várias dessas decisões lineares limites e pode, portanto, particionar o espaço para resolver o problema XOR (não linear) como @Matt mencionado. Portanto, muitos limites de decisão linear combinados podem formar um círculo, por exemplo, se você apertar os olhos. Depende de como você pensa sobre isso – a decisão ainda é linear em um espaço superior, se você estiver familiarizado com os kernels, ‘ é quase a mesma coisa.
Resposta
Boa resposta até agora, embora haja algumas coisas que ninguém por aqui mencionou, aqui “é meu 0,02 $
Vou apenas responder na forma de uma história, para tornar as coisas mais divertidas e claras. Não há tldr aqui. No processo, você deve ser capaz de 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 uma questão de certo lugar, hora certa etc.).
Um dos motivos é a disponibilidade de dados, muitos dados (dados rotulados). Se você quiser generalizar e aprender algo como “antecedentes genéricos” ou “antecedentes universais “(também conhecido como os blocos de construção básicos que podem ser reutilizados entre tarefas / aplicativos), então 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 Turk tornou isso (rotulagem) possível.
Em segundo lugar, a possibilidade de treinar redes maiores com mais rapidez usando GPUs tornou a experimentação mais rápida. As unidades ReLU também tornaram as coisas computacionalmente mais rápidas e forneceram sua regularização, já que era necessário usar mais unidades em uma camada para ser capaz de compactar as mesmas informações, já que as camadas agora eram mais esparsas e, então 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 minilotes (que na verdade são prejudiciais para o erro final) ou convoluções (que na verdade não capturam tanta variância quanto os campos receptivos locais), mas são computacionalmente mais rápidos.
Nesse ínterim, as pessoas estavam debatendo se eles gostavam de ser mais magros ou mais gordinhos, menores ou mais altos, com ou sem sardas, etc. Otimização era como faz borbulhar ou faz barulho, então a pesquisa estava se movendo para métodos mais complexos de treinamento como gradiente conjugado e método de newtons, finalmente eles todos perceberam que não há almoço grátis. As redes estavam arrotando.
O que atrasou as coisas foi o problema do gradiente de desaparecimento . As pessoas diziam: uau, isso é longe demais, cara! Em suma, significa que foi difícil ajustar o erro em camadas mais próximas das entradas. Conforme você adiciona mais camadas no bolo, fica muito instável. Você não poderia ” t propaga erros significativos de volta às primeiras camadas. Quanto mais camadas, pior ficava. Que chatice.
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 evitar que a rede fique saturada e, por sua vez, o gradiente não foi capaz de esconder isso 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 um monte de codificadores automáticos e aprende representações cada vez menos abstratas conforme você aumenta a taxa de compressão. Os pesos dessas redes foram usados para inicializar a versão supervisionada. Isso resolveu o problema do gradiente de desaparecimento de outra maneira: você já está começando o treinamento supervisionado 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, seria 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 descritores de recursos de contexto e invariáveis. e pools.
Aqui está um exemplo: você tem um conjunto de dados de imagens, como você vai treinar um plano NN usando esses dados? Bem, ingenuamente, você pega, digamos, cada linha e você o concatena em um vetor longo e essa é a sua entrada. O que você aprende?Bem, algumas funções sem sentido difusas que podem não se parecer com 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 ponto, a rede precisa se esquecer de ser capaz de reaprender 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.
Então, o que importa é que se você apenas inserir a imagem como uma peça, adicionar camadas extras não é muito para você, já que você não é capaz de aprender abstrações , o que é muito importante. Fazer as coisas holisticamente não funciona muito bem, a menos que você esteja fazendo coisas mais simples com a rede, como focar em um tipo específico de objeto, então você se limita a uma classe e escolhe algumas propriedades globais como uma meta de classificação.
Então, o que há para fazer? Olhe para a borda da tela e tente ler este texto. Problema? Por mais estúpido que pareça, você precisa olhar o que está lendo. Caso contrário, ficará muito confuso / não haverá resolução / granularidade suficiente. Vamos chamar a área de foco de campo receptivo. As redes também precisam ser capazes de se concentrar. Basicamente, em vez de usar a imagem inteira como entrada, você move uma janela deslizante ao longo da imagem e então 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 e também pode distinguir entre um gato sonolento sentado em um sofá e um gato que faz bungee jumping de cabeça para baixo. Legal, a fé na humanidade foi restaurada. A rede pode aprender abstrações locais em uma imagem em vários níveis. A rede aprende filtros, inicialmente simples e depois os desenvolve para aprender filtros mais complexos.
Então, para resumir: campos / convoluções receptivos, inicialização não supervisionada, unidades lineares retificadas, dropout ou outra regularização métodos. Se você levar isso muito a sério, recomendo que dê uma olhada em Schmidhuber “s Aprendizado profundo em redes neurais: uma visão geral aqui” s o url da pré-impressão http://arxiv.org/abs/1404.7828
E lembre-se: grande aprendizado, dados profundos. Word.
Comentários
- Olá Florin, obrigado pela boa resposta! Gosto do estilo de escrita. Quando você fala sobre janelas deslizantes, está se referindo a como camadas convolucionais de NN convolucionais observam diferentes partes de uma imagem e projeto suas ativações em um espaço de dimensão inferior?
- praticamente sim, convoluções não são necessárias, mas elas ‘ são computacionalmente mais rápidas, uma vez que os pesos são restritos. verifique este documento onde eles não ‘ usam convoluções e campos receptivos locais. as palavras-chave importantes são locais / hierárquicas: arxiv.org /pdf/1112.6209.pdf
- também acho o mais próximo a resposta sistemática é sobi ‘ s. ele ‘ recebeu meu voto positivo. acabei de adicionar mais algumas coisas aqui e ali com um pouco de sal e pimenta.
Resposta
Em Em termos leigos, a principal diferença com as Redes Neurais clássicas é que elas têm muito mais camadas ocultas.
A ideia é adicionar rótulos às camadas para fazer várias camadas de abstração:
Por exemplo, uma rede neural profunda para reconhecimento de objetos :
- Camada 1: pixels únicos
- Camada 2: Bordas
- Camada 3: Formas (círculos, quadrados)
- Camada n: Objeto inteiro
Você pode encontrar uma boa explicação para esta questão no Quora .
E, se você estiver interessado neste assunto, recomendo que você dê uma olhada neste livro .
Comentários
- Obrigado David, mas eu não ‘ t realmente vejo como apenas adicionar rótulos para torná-lo diferente. Também me lembro que era um problema difícil de entender e decompor como uma função era 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 (antigas) para fazer cada uma das tarefas.
- O poder vem quando você o usa como um pipeline, portanto, as entradas e saídas das pilhas de camadas em cada camada.
- Estive lendo seu primeiro link, que é um bom recurso, e outras questões relacionadas sobre quora e se, no entanto, o exemplo que você deu não parece preciso com o que eu leitura. Eu ‘ tentarei responder minha própria pergunta, resumindo essas leituras.
- Apesar do recurso apontado ser interessante, a resposta atualmente não responde à pergunta.
- Você pode apontar para um exemplo em que as camadas são rotuladas (diferente de uma forma puramente descritiva)?É certamente verdade que as camadas ocultas aparecem com recursos sucessivamente mais complexos em cada camada oculta, mas ” adicionar rótulos ” parece implicar que eles ‘ estamos sendo especificamente treinados para fazer isso.
Resposta
NN:
- uma camada oculta é o suficiente, mas pode ter várias camadas, no entanto, ordenação da esquerda para a direita (modelo: feed forward NN)
- treinada apenas de forma supervisionada (retropropagação )
- quando várias camadas são usadas, treinar todas as camadas ao mesmo tempo (mesmo algoritmo: retropropagação), mais camadas torna difícil o uso, pois os erros se tornam muito pequenos
- difícil de entenda o que é aprendido em cada camada
DNN:
- várias camadas são necessárias, bordas não direcionadas (modelo: máquina boltzman restrita)
- primeiro treinado de forma não supervisionada, onde as redes aprendem recursos relevantes, aprendendo a reproduzir sua entrada , então treinado de uma forma supervisionada que afina os recursos a fim de classificar
- treinar as camadas uma a uma da camada de entrada para a de saída (algoritmo: divergência contrastiva)
- cada camada claramente contém recursos de abstração crescente
A mudança para DNN se deve a três descobertas independentes que aconteceram em 2006.
Com relação aos teoremas sobre NN, aquele ao qual a questão alude é :
- teorema de aproximação universal ou teorema de Cybenko: uma rede neural feed-forward com uma única camada oculta pode aproximar qualquer função contínua. No entanto, na prática, pode exigir muito mais neurônios se uma única camada oculta for usada.
Comentários
- -1? Sério? Eu li tudo isso na literatura e fiz uma comparação ponto a ponto de ambas as abordagens! Por favor, diga pelo menos o que não está correto …
- Eu não fiz downvote (talvez um downvoter não tenha gostado que você respondesse sua própria pergunta? Mas isso está perfeitamente bem aqui), mas aqui está uma coisa que não é totalmente correta. O que você lista como propriedades do DNN: que as bordas não são direcionadas, que ‘ é primeiro treinado de uma forma não supervisionada, que as camadas são treinadas uma a uma – tudo isso apenas se refere às 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.
Resposta
Também fiquei um pouco confuso no início com a diferença entre redes neurais (NN) e redes neurais profundas (DNN), no entanto, a “profundidade” se refere apenas ao número de parâmetros & camadas, infelizmente. Você pode considerá-lo como uma espécie de ref -branding sob a chamada “máfia canadense”.
Vários anos atrás, eu também tive Redes Neurais como parte de uma classe e fizemos reconhecimento de dígitos, aproximação de onda e aplicações semelhantes usando NN, que tinha várias camadas e saídas ocultas e todo aquele jazz que os DNNs têm. No entanto, o que não tínhamos então era capacidade de computação.
O motivo que tornou a mudança para DNN possível e desejável foram os avanços no desenvolvimento de hardware. Simplificando, agora podemos computar mais, mais rápido e mais paralelizado (DNN em GPU “s), enquanto antes, o tempo era o gargalo para NN” s.
Conforme referido na página da Wikipedia para Profundo Aprendizagem , a parte “profunda” refere-se principalmente a ter os recursos interagindo de forma não linear em várias camadas, realizando, portanto, extração e transformação de recursos. Isso também foi feito em NN “s padrão, mas em uma escala menor.
Na mesma página, aqui você tem a definição “Uma rede neural profunda (DNN) é uma rede neural artificial (ANN) com várias camadas ocultas de unidades entre as camadas de entrada e saída.”
Comentários
- Olá Mttk, obrigado pela sua resposta, ela 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 múltiplas camadas), mas a diferença em como essas camadas múltiplas são usadas parece ser o que importa e muito menos claro. É por isso que concentrei a questão não na estrutura.
- Honestamente, eu não ‘ concordo com a última definição que mencionei – uma vez que ANN / NN com uma camada oculta não são realmente eficientes e você precisava de múltiplos para qualquer tipo de predição mais complexa (I ‘ m dizendo isso porque acho que DNN era uma palavra da moda inútil adicionada para um termo já bom, NN). Acho que você pode usar NN e DNN de forma intercambiável (porque hoje em dia ninguém usa NN ‘ s), enquanto o uso das camadas difere entre os tipos de DNN ‘ s (CNN, RBM, RNN, LSTM, CW-RNN, …) e não a ideia de DNN em si.
Resposta
Até onde eu sei, o que hoje é chamado de Rede Neural Profunda (DNN) não tem nada fundamentalmente ou filosoficamente diferente do antigo padrão de Rede Neural (NN). Embora, em teoria, seja possível 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 um desempenho semelhante quando treinadas usando o mesmo algoritmo e dados de treinamento. Na verdade, há um interesse crescente em treinar redes superficiais que tenham um desempenho semelhante a redes profundas. A maneira como isso é feito, no entanto, é treinando primeiro uma rede profunda e, em seguida, treinando a rede rasa para imitar a 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 de hoje (retropropagação) funcionam melhor quando os neurônios estão dispostos em uma estrutura hierárquica.
Outra pergunta que pode ser feita é: por que Neural Redes (DNNs em particular) tornaram-se tão populares repentinamente. No meu entender, os ingredientes mágicos que tornaram os DNNs tão populares recentemente são os seguintes:
A. Conjuntos de dados e recursos de processamento de dados aprimorados
1. Conjuntos de dados em grande escala com milhões de imagens diversas foram disponibilizados
2. A implementação rápida de GPU foi disponibilizada ao público
B. Algoritmos de treinamento e arquiteturas de rede aprimorados
1. Unidades lineares retificadas (ReLU) em vez de sigmóide ou tanh
2. As arquiteturas de rede profunda evoluíram ao longo dos anos
A-1) Até muito recentemente, pelo menos em Visão por Computador, não podíamos treinar modelos em milhões de imagens rotuladas; simplesmente porque não existiam conjuntos de dados rotulados desse tamanho. Acontece que, além do número de imagens, a granularidade do conjunto de rótulos também é um fator crucial no sucesso dos DNNs (consulte a Figura 8 neste artigo , por Azizpour et al.).
A-2) Muito esforço de engenharia passou a 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 GPU bem-sucedidas de DNNs é 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 artigo de Krizhevsky et al.) .
B-1) O uso de unidades lineares retificadas simples (ReLU) em vez de sigmóide e As funções tanh são provavelmente o maior bloco de construção para tornar possível o treinamento de DNNs. Observe que as funções sigmóide e tanh têm quase gradiente zero quase em todos os lugares, dependendo de quão rápido elas transitam do nível de ativação baixo para o alto; no caso extremo, quando a transição é repentina, obtemos uma função degrau com inclinação zero em todos os lugares , exceto em um ponto onde a transição acontece.
B-2) A história de como as arquiteturas de rede neural desenvolvidas ao longo dos anos me lembra de como a evolução muda a estrutura de um organismo na natureza. Compartilhamento de parâmetros ( por exemplo, em camadas convolucionais), regularização de abandono, inicialização, cronograma de taxa de aprendizagem, agrupamento espacial, subamostragem nas camadas mais profundas e muitos outros truques que agora são considerados padrão no treinamento. DNNs foram desenvolvidos, evoluídos, fim adaptado ao longo dos anos para tornar possível o treinamento das redes profundas do jeito que é hoje.
Comentários
- +1. A primeira resposta em este tópico que fornece uma resposta adequada às perguntas do OP ‘ s. Muitos pontos positivos aqui. Meu único comentário importante seria que, além de seu A e B, o Também há C: Aumento maciço no tamanho dos conjuntos de dados de treinamento disponíveis. Isso parece ser pelo menos tão importante quanto A e B.
- Não ‘ não acho que relu seja tão importante: o papel de Alex Krizhevsky afirmou que fez nn aprender a 6 vezes mais rápido. A maioria das outras mudanças na estrutura de rede que você mencionou está relacionada a nns convolucionais, que apenas copiam pipelines de processamento de imagem padrão (boa coisa, mas sem novos insights)
- @amoeba: o tamanho do conjunto de dados está abaixo de A. I atualizei o texto para destacá-lo.
- @ seanv507: de fato, eu tinha as redes convolucionais (ConvNets) em mente ao escrever a resposta. Se houver outros fatores importantes (não relacionados com ConvNets) que esqueci, agradeceria se você os mencionasse. Eu ficaria feliz em atualizar minha resposta de acordo.Em relação aos ReLUs, treinar nns com tanh e sigmóide é consideravelmente mais difícil do que com ReLUs devido ao problema de gradientes de desaparecimento: as unidades ficam saturadas facilmente e, uma vez que isso acontece, leva muito tempo para se tornarem insaturadas novamente (gradientes são muito pequenos quando a unidade está saturado)
Resposta
A diferença entre um NN “profundo” e um NN padrão é puramente qualitativa: não há definição do que significa “Profundo”. “Profundo” pode significar qualquer coisa, desde arquiteturas extremamente sofisticadas que são usadas pelo Google, Facebook e companhia, que têm 50-80 ou até mais camadas, até arquiteturas de 2 camadas ocultas (4 camadas no total). Eu não ficaria surpreso se você pudesse encontrar artigos que afirmam fazer aprendizado profundo com uma única camada oculta, porque “profundo” não “significa muito.
” Rede neural “também é uma palavra que não “t tem um significado muito preciso. Abrange um conjunto extremamente grande de modelos, de máquinas boltzman aleatórias (que são gráficos não direcionados) a arquiteturas feedforward com várias funções de ativação. A maioria dos NNs será treinada usando backprop, mas não é necessário seja o caso, então mesmo os algoritmos de treinamento não são muito homogêneos.
No geral, aprendizado profundo, NNs e NNs profundos se tornaram palavras abrangentes que capturam uma infinidade de abordagens.
Para boas referências introdutórias sobre “o que mudou”: Aprendizado profundo de representações: Olhando para o futuro , Bengio, 2013 é uma boa revisão + perspectiva para o futuro. Veja também As Redes Profundas realmente precisam ser profundas? Ba & Caruana, 2013, que ilustra isso ser profundo pode não ser útil para representação, mas para aprendizagem.
Comentários
- As referências que você fornece são muito úteis , mas o resto da resposta na forma atual (que se lê como ” NN não significa nada, DNN não significa nada, NN e DNN podem fazer muitas coisas “) não muito, você consideraria revisá-lo?
Resposta
Para expandir a resposta de David Gasquez, uma das principais diferenças entre as redes neurais profundas e as redes neurais tradicionais é que não usamos apenas retropropagação para redes neurais profundas.
Por quê? Como a retropropagação treina as camadas posteriores com mais eficiência do que as camadas anteriores – conforme você vai cada vez mais cedo na rede, os erros ficam menores e mais difusos. Portanto, uma rede de dez camadas terá basicamente sete camadas de pesos aleatórios seguidos 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 é tratar os problemas separados (as camadas rotuladas) como problemas separados – se primeiro tentar resolver o problema de construir uma primeira camada genericamente boa e, em seguida, tentar resolver o problema de construir uma segunda camada genericamente boa, eventualmente teremos um espaço profundo de recursos que podemos alimentar para nosso problema real.
Resposta
Eu não diria que existe uma grande diferença filosófica entre NN e DNN (na verdade, eu diria que DNN é apenas um marketing termo para distinguir de NN “com falha”). O que mudou é o tamanho dos conjuntos de dados. Essencialmente, as redes neurais são atualmente os melhores estimadores estatísticos $ O (n) $, funcionando bem para grandes conjuntos de dados dimensionais (por exemplo, imagenet).
Acho que você deve dar um passo atrás e ver que isso criou um ressurgimento em AI raso – por exemplo saco de palavras para análise de sentimento e outras aplicações de linguagem e saco visual de palavras estava levando a abordagem ao reconhecimento de imagem antes do DNN. Ninguém está dizendo que saco de palavras é um verdadeiro modelo de linguagem, mas é uma solução de engenharia eficaz. Então, eu diria que DNN é um “pacote visual de palavras” melhor – veja, por exemplo Szegedy et al. 2013 Propriedades intrigantes de redes neurais e Nguyen et al. Redes neurais profundas são facilmente enganadas: previsões de alta confiança para imagens irreconhecíveis em que é claro que não há estruturas de ordem superior etc. sendo aprendidas (ou o que quer que seja reivindicado para DNN).
Comentários
- @amoeba este outro artigo é quase um complemento do primeiro (novamente com muitas imagens!)
Resposta
Para responder à última pergunta, veja este artigo de Telgarsky que diz que para um determinado problema de classificação “todas as redes rasas com menos do que exponencialmente (em k) muitos nós exibem erro de pelo menos 1/6, enquanto uma rede profunda com 2 nós em cada uma das 2k camadas atinge erro zero.”
O problema de classificação em questão é o problema de n pontos alternados em que consideramos o intervalo $ [0,1-2 ^ {- k}] $ para que a entrada $ x_i $ sejam os $ 2 ^ k $ pontos uniformemente distribuídos em esse intervalo e o $ y_i $ correspondente são fornecidos por $ y_i = 1 $ se $ i $ é ímpar e $ y_i = 0 $ se $ i $ é uniforme. Perguntamos então, quão bem as redes rasas sem larguras exponenciais podem capturar essa relação em comparação com redes profundas com apenas dois nós em cada camada? Essencialmente, podemos aproximar os dados melhor (exatamente igual) com um ( em $ k $ ) número de camadas com apenas dois nós em cada camada, enquanto precisaríamos de muitos exponencialmente (em $ k $ ) nós para obter o mesmo resultado em uma rede rasa.
A prova da citação envolve perceber que a composição de ativações não lineares aplicadas a transformações afins (ou seja, com um maior número de camadas) consegue capturar mais variabilidade nos dados do que somar essas mesmas funções (como quando adicionamos nós às camadas).
Resposta
Aprendizado profundo é um conjunto de algoritmos de aprendizado de máquina que tentativa de modelar abstrações de alto nível em dados usando arquiteturas compostas de várias transformações não lineares .
Fonte: Arno Candel
Deixe uma resposta