Por que as redes neurais estão se tornando mais profundas, mas não mais amplas?

73

Nos últimos anos, as redes neurais convolucionais (ou talvez as redes neurais profundas em geral) tornaram-se cada vez mais profundas, com redes de ponta passando de 7 camadas ( AlexNet ) a 1000 camadas ( Redes Residuais) no espaço de 4 anos. A razão por trás do aumento no desempenho de uma rede mais profunda é que uma função não-linear mais complexa pode ser aprendida. Dados dados de treinamento suficientes, isso permite que as redes discriminem mais facilmente entre diferentes classes.

No entanto, a tendência parece não ter seguido o número de parâmetros em cada camada. Por exemplo, o número de mapas de recursos nas camadas convolucionais ou o número de nós nas camadas totalmente conectadas permaneceu praticamente o mesmo e ainda é relativamente pequeno em magnitude, apesar do grande aumento no número de camadas. Da minha intuição, porém, parece que aumentar o número de parâmetros por camada daria a cada camada uma fonte mais rica de dados para aprender sua função não linear; mas essa idéia parece ter sido negligenciada em favor da simples adição de mais camadas, cada uma com um pequeno número de parâmetros.

Portanto, embora as redes tenham se tornado "mais profundas", elas não se tornaram "mais amplas". Por que é isso?

Karnivaurus
fonte
11
+1, mas, para ser justo, não é que essas mais de 1000 redes em camadas sejam "avançadas" no sentido de superar as demais. O artigo arxiv que você vinculou relata uma rede residual com 152 camadas como a atual vencedora no ImageNet.
Ameba diz Reinstate Monica
3
Você leu redes residuais amplas arxiv.org/abs/1605.07146 .... talvez não haja razão .. otimizar uma função não convexa com descida gradiente não tem fundamento teórico ... há apenas tentativa e muitos erros :-)
seanv507
@ seanv507 Muito interessante, obrigado por este link. BTW, aqui está um tópico muito relacionado: stats.stackexchange.com/questions/214360 e existe um link para este tópico do reddit .
Ameba diz Reinstate Monica
Muito, muito relacionado: stats.stackexchange.com/questions/182734 .
Ameba diz Reinstate Monica

Respostas:

87

Como isenção de responsabilidade, trabalho com redes neurais em minha pesquisa, mas geralmente uso redes neurais rasas e relativamente pequenas, em vez de redes realmente profundas na vanguarda da pesquisa que você cita em sua pergunta. Eu não sou especialista em peculiaridades e peculiaridades de redes muito profundas e vou adiar para quem é.

Primeiro, em princípio, não há razão para você precisar de redes neurais profundas. Uma rede neural suficientemente ampla com apenas uma camada oculta pode aproximar-se de qualquer função (razoável), com dados de treinamento suficientes. No entanto, existem algumas dificuldades em usar uma rede extremamente ampla e rasa. A questão principal é que essas redes rasas e muito amplas são muito boas em memorização, mas não tão boas em generalização . Portanto, se você treinar a rede com todos os valores de entrada possíveis, uma rede super ampla poderá eventualmente memorizar o valor de saída correspondente desejado. Mas isso não é útil porque, para qualquer aplicação prática, você não terá todo o valor de entrada possível para treinar.

A vantagem de várias camadas é que elas podem aprender recursos em vários níveis de abstração . Por exemplo, se você treinar uma rede neural convolucional profunda para classificar imagens, verá que a primeira camada se treinará para reconhecer coisas muito básicas, como arestas, a próxima camada se treinará para reconhecer coleções de arestas, como formas, a próxima a camada treinará a si mesma para reconhecer coleções de formas como olhos ou narizes, e a próxima camada aprenderá recursos ainda mais avançados, como rostos. Múltiplas camadas são muito melhores em generalizar porque aprendem todos os recursos intermediários entre os dados brutos e a classificação de alto nível.

Isso explica por que você pode usar uma rede profunda em vez de uma rede muito ampla, mas superficial. Mas por que não uma rede muito profunda e muito ampla? Acho que a resposta é que você deseja que sua rede seja a menor possível para produzir bons resultados. À medida que você aumenta o tamanho da rede, na verdade você está apenas introduzindo mais parâmetros que sua rede precisa aprender e, portanto, aumentando as chances de sobreajuste. Se você construir uma rede muito ampla e muito profunda, terá a chance de cada camada apenas memorizar o que deseja que seja a saída e acabará com uma rede neural que não generaliza para novos dados.

Além do espectro do overfitting, quanto maior a sua rede, mais tempo será necessário para treinar . Redes profundas já podem ser muito caras em termos de computação para treinar; portanto, há um forte incentivo para torná-las suficientemente amplas para que funcionem bem, mas não mais.

J. O'Brien Antognini
fonte
+1. Algum comentário em arxiv.org/abs/1605.07146 ?
Ameba diz Reinstate Monica
2
Eu apenas passei os dedos, então não posso dizer nada autoritário, mas parece que os autores descobriram que pelo menos no caso de redes residuais uma rede larga (mas com 16 camadas de profundidade!) Supera uma estreita e extremamente profunda (1000 camadas ) internet. Eu não sei muito sobre redes residuais, mas de acordo com a introdução, parece que uma dificuldade em treiná-las é que pode haver uma tendência para as camadas não aprenderem nada e, assim, não contribuírem muito para o resultado. Parece que ter menos, mas mais poderoso, camadas evita isso. Se isso se aplica a outros tipos de NNs, não sei.
J. O'Brien Antognini
Resposta clara e concisa, bem feita. @J
ctwardy
21

Eu não acho que haja uma resposta definitiva para suas perguntas. Mas acho que a sabedoria convencional é a seguinte:

Basicamente, à medida que o espaço de hipóteses de um algoritmo de aprendizado aumenta, o algoritmo pode aprender estruturas cada vez mais ricas. Mas, ao mesmo tempo, o algoritmo se torna mais propenso a sobreajuste e seu erro de generalização provavelmente aumenta.

Portanto, para qualquer conjunto de dados, é aconselhável trabalhar com o modelo mínimo que tenha capacidade suficiente para aprender a estrutura real dos dados. Mas esse é um conselho bastante prático, já que geralmente a "estrutura real dos dados" é desconhecida e, muitas vezes, até as capacidades dos modelos candidatos são apenas vagamente entendidas.

Quando se trata de redes neurais, o tamanho do espaço da hipótese é controlado pelo número de parâmetros. E parece que, para um número fixo de parâmetros (ou uma ordem fixa de magnitude), aprofundar permite aos modelos capturar estruturas mais ricas (por exemplo, este artigo ).

Isso pode explicar parcialmente o sucesso de modelos mais profundos com menos parâmetros: o VGGNet (de 2014) possui 16 camadas com ~ 140M parâmetros, enquanto o ResNet (de 2015) o superou com 152 camadas, mas apenas ~ 2M

(por outro lado, modelos menores podem ser computacionalmente mais fáceis de treinar - mas eu não acho que isso seja um fator importante por si só - já que a profundidade realmente complica o treinamento)

Observe que essa tendência (mais profundidade, menos parâmetros) está presente principalmente em tarefas relacionadas à visão e redes convolucionais, e isso exige uma explicação específica do domínio. Então, aqui está outra perspectiva:

Cada "neurônio" em uma camada convolucional possui um "campo receptivo", que é o tamanho e a forma das entradas que afetam cada saída. Intuitivamente, cada kernel captura algum tipo de relação entre entradas próximas. E pequenos núcleos (comuns e preferíveis) têm um pequeno campo receptivo; portanto, eles podem fornecer informações apenas sobre as relações locais.

Mas à medida que você avança, o campo receptivo de cada neurônio em relação a uma camada anterior se torna maior. Portanto, camadas profundas podem fornecer recursos com significado semântico global e detalhes abstratos (relações de relações ... de relações de objetos), enquanto usam apenas pequenos núcleos (que regularizam as relações que a rede aprende e ajuda a convergir e generalizar).

Portanto, a utilidade de redes convolucionais profundas em visão computacional pode ser parcialmente explicada pela estrutura espacial de imagens e vídeos. É possível que o tempo diga que, para diferentes tipos de problemas, ou para arquiteturas não convolucionais, a profundidade realmente não funciona bem.

Borbei
fonte
A parte Restricted Boltzmann Machine de redes profundas é um grande multiplicador no tempo de convergência. (Afaict)
EngrStudent
4
RBMs não são inerentes à aprendizagem profunda. Muitas (atualmente, a maioria?) Redes profundas de sucesso não usam RBMs.
Borbei
3
Obrigado por vincular a esse artigo, eu não o tinha visto antes e parece muito relevante.
J. O'Brien Antognini
@Borbei - Como eles garantem a separação de recursos sem o RBM?
EngrStudent
11
+1. Algum comentário em arxiv.org/abs/1605.07146 ?
Ameba diz Reinstate Monica
10

Adicionar mais recursos ajuda, mas o benefício rapidamente se torna marginal depois que muitos recursos foram adicionados. Essa é uma razão pela qual ferramentas como o PCA funcionam: alguns componentes capturam a maior variação nos recursos. Portanto, adicionar mais recursos depois de algum ponto é quase inútil.

Por outro lado, encontrar a funcionalidade correta para ma do recurso é sempre uma boa idéia. No entanto, se você não tem uma boa teoria, é difícil obter uma função correta, é claro. Portanto, adicionar camadas é útil como forma de abordagem de força bruta.

fCρAv2/2
Aρv

fiβixi

No entanto, aprofundar a rede levaria você facilmente à equação acima com apenas duas camadas. Funções mais complicadas precisariam de mais camadas, é por isso que aprofundar o número de camadas pode ser um caminho a percorrer em muitos problemas.

Aksakal
fonte
5
Você assume funções de transferência linear. Mas existem muitas outras opções (comuns) e, de acordo com o teorema da aproximação universal das RNAs , mesmo uma única camada não linear oculta (se for larga o suficiente) pode aproximar qualquer função agradável. Portanto, a representabilidade não pode realmente explicar o sucesso de redes profundas.
Borbei
2
Meu exemplo foi linear, mas se aplica a um conjunto mais amplo de casos. Você assumiu a função "legal", mas muitos não são tão legais. Por exemplo, quando eu seleciono um carro para comprar, por que meu algoritmo de decisão seria uma boa função?
Aksakal
2

dwO(dw2)

Por que você pode estar tentando limitar o número de parâmetros? Um número de razões:

  • Você está tentando evitar o excesso de ajustes. (Embora limitar o número de parâmetros seja um instrumento muito franco para conseguir isso.)
  • Sua pesquisa é mais impressionante se você pode superar o modelo de outra pessoa usando o mesmo número de parâmetros.
  • Treinar seu modelo é muito mais fácil se o modelo (além de parâmetros de momento, se você estiver usando o Adam) puder caber na memória de uma única GPU.
  • Em aplicativos da vida real, a RAM costuma ser cara ao atender modelos. Isso é especialmente verdadeiro para a execução de modelos em, por exemplo, um telefone celular, mas às vezes pode ser aplicado até para servir modelos da nuvem.

O(dw2)w1,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
1/wO(dw)
Charles Staats
fonte