Por que as redes neurais convolucionais funcionam?

22

Eu sempre ouvi pessoas dizendo que por que as redes neurais convolucionais ainda são pouco compreendidas. Sabe-se por que as redes neurais convolucionais sempre acabam aprendendo recursos cada vez mais sofisticados à medida que avançamos nas camadas? O que os levou a criar uma pilha de recursos e isso também se aplica a outros tipos de redes neurais profundas?

Louve o Senhor
fonte
Ótima explicação de Jeremy Howard na segunda metade deste vídeo: youtube.com/watch?v=ACU-T9L4_lI
Dan
2
Eu acho que você está entendendo mal. Entendemos absolutamente bem porque os convnets funcionam como uma classe de algoritmos. Por outro lado, muitas vezes é muito difícil entender por que um modelo específico fez uma previsão específica. É por isso que nós os chamamos de "modelos caixa preta: seu processo de inferência é opaco para nós Isso não significa que estamos confusos sobre por que eles são eficazes..
David Marx

Respostas:

19

Na verdade, acho que a pergunta é um pouco ampla! De qualquer forma.

Noções básicas sobre redes de convolução

O que é aprendido nas ConvNetstentativas de minimizar a função de custo para categorizar as entradas corretamente nas tarefas de classificação. Todos os parâmetros alterados e filtros aprendidos são para atingir o objetivo mencionado.

Recursos aprendidos em diferentes camadas

Eles tentam reduzir o custo aprendendo recursos de baixo nível, às vezes sem sentido, como linhas horizontais e verticais em suas primeiras camadas e, em seguida, empilhando-os para criar formas abstratas, que geralmente têm significado, nas últimas camadas. Para ilustrar esta fig. 1, que foi usado a partir daqui , pode ser considerado. A entrada é o barramento e o gird mostra as ativações após passar a entrada por diferentes filtros na primeira camada. Como pode ser visto, a moldura vermelha que é a ativação de um filtro, cujos parâmetros foram aprendidos, foi ativada para arestas relativamente horizontais. A moldura azul foi ativada para arestas relativamente verticais. É possível queConvNetsaprenda filtros desconhecidos que são úteis e nós, como, por exemplo, profissionais de visão computacional, não descobrimos que eles podem ser úteis. A melhor parte dessas redes é que elas tentam encontrar filtros apropriados por conta própria e não usam nossos filtros limitados descobertos. Eles aprendem filtros para reduzir a quantidade de função de custo. Como mencionado, esses filtros não são necessariamente conhecidos.

** Figura 1. ** * Ativações de baixo nível *

Em camadas mais profundas, os recursos aprendidos nas camadas anteriores se reúnem e criam formas que geralmente têm significado. No presente trabalho foi discutido que essas camadas podem ter ativações que são significativos para nós ou os conceitos que têm significado para nós, como seres humanos, pode ser distribuído entre outras ativações. Na fig. 2 a moldura verde mostra as atividades de um filtro na quinta camada de umConvNet. Esse filtro se preocupa com os rostos. Suponha que o vermelho se importe com o cabelo. Estes têm significado. Como pode ser visto, existem outras ativações que foram ativadas na posição de faces típicas na entrada, a moldura verde é uma delas; A moldura azul é outro exemplo disso. Por conseguinte, a abstração de formas pode ser aprendida por um filtro ou por vários filtros. Em outras palavras, cada conceito, como face e seus componentes, pode ser distribuído entre os filtros. Nos casos em que os conceitos são distribuídos entre diferentes camadas, se alguém olhar para cada uma delas, elas podem ser sofisticadas. As informações são distribuídas entre eles e para entender que as informações de todos esses filtros e ativações devem ser consideradas, embora possam parecer muito complicadas.

** Figura 2. ** * Ativações de alto nível *

CNNsnão devem ser consideradas caixas pretas. Zeiler et all em este papel incrível ter discutido o desenvolvimento de melhores modelos é reduzida a tentativa e erro , se você não tem a compreensão do que é feito dentro dessas redes. Este artigo tenta visualizar os mapas de recursos no ConvNets.

Capacidade de lidar com diferentes transformações para generalizar

ConvNetsuse poolingcamadas não apenas para reduzir o número de parâmetros, mas também para ser insensível à posição exata de cada recurso. Além disso, o uso deles permite que as camadas aprendam características diferentes, o que significa que as primeiras camadas aprendem características simples de baixo nível, como arestas ou arcos, e as camadas mais profundas aprendem características mais complicadas, como olhos ou sobrancelhas. Max Poolingpor exemplo, tenta investigar se um recurso especial existe ou não em uma região especial. A idéia de poolingcamadas é muito útil, mas é capaz de lidar com a transição entre outras transformações. Embora os filtros em diferentes camadas tentem encontrar padrões diferentes, por exemplo, uma face girada é aprendida usando camadas diferentes das de uma face comum,CNNspor lá próprio não tem nenhuma camada para lidar com outras transformações. Para ilustrar isso, suponha que você queira aprender faces simples sem nenhuma rotação com uma rede mínima. Nesse caso, seu modelo pode fazer isso perfeitamente. suponha que você seja solicitado a aprender todos os tipos de faces com rotação arbitrária de faces. Nesse caso, seu modelo precisa ser muito maior do que a rede aprendida anteriormente. A razão é que deve haver filtros para aprender essas rotações na entrada. Infelizmente, essas nem todas são transformações. Sua entrada também pode estar distorcida. Esses casos deixaram Max Jaderberg e todos irritados. Eles compuseram este artigo para lidar com esses problemas, a fim de acalmar nossa raiva como deles.

Redes neurais convolucionais funcionam

Finalmente, depois de se referir a esses pontos, eles funcionam porque tentam encontrar padrões nos dados de entrada. Eles os empilham para criar conceitos abstratos pelas camadas de convolução. Eles tentam descobrir se os dados de entrada têm cada um desses conceitos ou não em camadas densas para descobrir a qual classe os dados de entrada pertencem.

Eu adiciono alguns links que são úteis:

meios de comunicação
fonte
12

ConvNets funcionam porque exploram a localidade do recurso. Eles fazem isso em diferentes granularidades, podendo, portanto, modelar recursos de nível hierárquico mais alto. Eles são invariantes à tradução graças às unidades de pool. Eles não são invariantes à rotação propriamente ditos , mas geralmente convergem para filtros que são versões rotacionadas dos mesmos filtros , portanto, suportam entradas rotadas.

Não conheço outra arquitetura neural que lucre com a localização de recursos no mesmo sentido que os ConvNets.

ncasas
fonte
1
Eu diria que as RNNs se beneficiam de maneira semelhante às CNNs, reutilizando pesos ao longo de séries temporais. CNNs também pode ser pensado como não necessariamente invariante tradução, mas "invariante dimensão" (embora eu não tenho certeza que é um termo correto ou reconhecidos)
Neil Slater
Obrigado pela sua resposta. Corrija-me se eu estiver errado nas seguintes conclusões - 1. Parece que projetamos implicitamente ConvNets para aprender recursos de nível hierárquico mais alto através do pool. Não é por acaso que os recursos ficam sofisticados nas camadas. 2. Incluir as informações de domínio no design de uma rede neural pode fazer uma enorme diferença na eficiência da aprendizagem. ConvNets e RNNs estão tentando fazer exatamente isso.
Elogie o senhor
Suas declarações 1 e 2 parecem corretas para mim.
ncasas
1
Acho redes cápsula é suposto recurso alavancagem localidade de forma semelhante
David Marx
3

Nunca se deve esquecer os outros componentes em um ConvNet típico. Os filtros de convolução selecionam os recursos invariantes espaciais, como arestas e círculos. Esses recursos são quantificados em uma camada de pool que segue a camada C. Finalmente, eles são alimentados em (geralmente) várias camadas totalmente conectadas (fc). Deve-se dar crédito a essas camadas totalmente conectadas que nada mais são do que as encontradas em qualquer MLP comum.

horaceT
fonte
3

As redes neurais convolucionais funcionam porque é uma boa extensão do algoritmo padrão de aprendizado profundo.

Dados recursos e dinheiro ilimitados, não há necessidade de convolucional porque o algoritmo padrão também funcionará. No entanto, convolutional é mais eficiente porque reduz o número de parâmetros . A redução é possível porque tira proveito da localidade do recurso, exatamente o que o @ncasas escreve.

SmallChess
fonte
Esta deve ser a melhor resposta
Jie.Zhou 06/01
1

Sabe-se por que as redes neurais convolucionais sempre acabam aprendendo recursos cada vez mais sofisticados à medida que avançamos nas camadas?

Isso é pura matemática. Uma rede neural, no final das contas, é uma grande função matemática. E quanto mais profunda a rede, maior a função que ela representa. E por maior, obviamente, quero dizer alta dimensão. Os recursos aprendidos são mais sofisticados porque são resultados de funções mais sofisticadas.

O que os levou a criar uma pilha de recursos

Curiosamente, as redes neurais convencionais foram inspiradas por nossa própria biologia, na verdade de gatos. Hubel e Wiesel realizaram experimentos no córtex visual de gatos e perceberam que a luz era percebida por pilhas de campos ópticos. Foi isso que inspirou a camada convolucional e uma arquitetura mais profunda.

Valentin Calomme
fonte
0

Com base nas respostas ncasas e horaceT , as ConvNets são muito eficientes porque:

  1. Eles são invariantes a transformações geométricas e aprendem recursos cada vez mais complicados e detalhados, sendo, portanto, poderosos extratores hierárquicos de recursos, graças às camadas convolucionais.
  2. Eles combinam os recursos extraídos e os agregam de maneira não linear para prever a saída e, portanto, são classificadores robustos, graças às camadas totalmente conectadas.

Se você quiser saber mais sobre os convnets e os diferentes blocos que os constroem, bem como as intuições subjacentes, aqui está um post que escrevi recentemente em meu blog pessoal, que detalha os detalhes.

Ahmed Besbes
fonte
3
Observe que se você deseja promover seu próprio produto / blog, deve divulgar sua afiliação na resposta , caso contrário, sua resposta poderá ser sinalizada como spam. Se você não é afiliado ao site, recomendo que você o diga para evitar isso. Por favor, leia Como não ser um spammer
AJ