O que a etapa de convolução em uma Rede Neural Convolucional faz?

16

Estou estudando redes neurais convolucionais (CNNs) devido a suas aplicações em visão computacional. Já conheço as redes neurais padrão de feed-forward, por isso espero que algumas pessoas aqui possam me ajudar a dar um passo extra na compreensão das CNNs. Aqui está o que penso sobre as CNNs:

  1. Nas NNs tradicionais de feed-forward, temos dados de treinamento em que cada elemento consiste em um vetor de característica que inserimos no NN na "camada de entrada", portanto, com o reconhecimento de imagem, poderíamos ter cada pixel como uma entrada. Esses são nossos vetores de recursos. Como alternativa, poderíamos criar manualmente outros vetores de recursos, provavelmente menores.
  2. A vantagem da CNN é que ela pode gerar vetores de características mais fortes e mais invariantes à distorção e posição da imagem. Como mostra a imagem a seguir ( deste tutorial ), as CNNs geram mapas de recursos que são alimentados em uma rede neural padrão (na verdade, é uma etapa gigante de pré-processamento).

insira a descrição da imagem aqui

  1. A maneira como obtemos esses recursos "melhores" é alternando convolução e subamostragem. Entendo como funciona a subamostragem. Para cada mapa de recursos, basta pegar um subconjunto de pixels, ou podemos calcular a média dos valores dos pixels.

Mas o que mais me deixa confuso é como a etapa de convolução funciona. Conheço as convoluções da teoria das probabilidades (densidade para a soma de duas variáveis ​​aleatórias), mas como elas funcionam nas CNNs e por que são eficazes?

Minha pergunta é semelhante a esta, mas em particular, não sei por que o primeiro passo da convolução funciona.

ComputerScientist
fonte

Respostas:

16

Primeiro tentarei compartilhar alguma intuição por trás da CNN e depois comentar os tópicos específicos que você listou.

As camadas de convolução e subamostragem em uma CNN não são diferentes das camadas ocultas em um MLP comum, ou seja, sua função é extrair recursos de suas entradas. Esses recursos são fornecidos à próxima camada oculta para extrair recursos ainda mais complexos ou diretamente a um classificador padrão para gerar a previsão final (geralmente um Softmax, mas também SVM ou qualquer outro pode ser usado). No contexto do reconhecimento de imagens, esses recursos são imagens tratadas, como padrões de traços nas camadas inferiores e partes de objetos nas camadas superiores.

Nas imagens naturais, esses recursos tendem a ser os mesmos em todos os locais. Reconhecer um determinado padrão de traçado no meio das imagens será tão útil quanto reconhecê-lo próximo às bordas. Então, por que não replicamos as camadas ocultas e conectamos várias cópias em todas as regiões da imagem de entrada, para que os mesmos recursos possam ser detectados em qualquer lugar? É exatamente o que a CNN faz, mas de maneira eficiente. Após a replicação (a etapa "convolução"), adicionamos uma etapa de subamostra, que pode ser implementada de várias maneiras, mas nada mais é do que uma subamostra. Em teoria, essa etapa pode até ser removida, mas, na prática, é essencial para permitir que o problema permaneça tratável.

Portanto:

  1. Corrigir.
  2. Como explicado acima, as camadas ocultas de uma CNN são extratores de recursos, como em um MLP comum. As etapas alternadas de convolução e subamostragem são realizadas durante o treinamento e a classificação, portanto, elas não são feitas "antes" do processamento real. Eu não os chamaria de "pré-processamento", da mesma maneira que as camadas ocultas de um MLP não são chamadas assim.
  3. Corrigir.

3×35×5

insira a descrição da imagem aqui

9

As etapas subsequentes de convolução e subamostragem são baseadas no mesmo princípio, mas calculadas sobre os recursos extraídos na camada anterior, em vez dos pixels brutos da imagem original.

Saul Berardo
fonte
Obrigado pelo esclarecimento. Vou verificar o tutorial que você mencionou.
ComputerScientist
Gráficos ilustrativos realmente agradáveis. Veja o trabalho referenec: M. Egmont-Petersen, D. de Ridder, H. Handels. Processamento de imagem com redes neurais - uma revisão, Pattern Recognition, vol. 35, No. 10, pp. 2279-2301, 2002
Match Maker EE
Quatro anos depois e agora trabalho com as CNNs quase todos os dias. Este post de @Saul Berardo realmente me ajudou a conseguir no caminho certo :)
ComputerScientist
1

Não faço ideia do que você quer dizer com "por que o primeiro passo da convolução funciona". Para que uma CNN seja bem-sucedida, ela precisa ter muitas camadas. Uma das idéias fundamentais por trás da CNN e muitas outras abordagens de aprendizado profundo é que sinais maiores podem ser identificados pela correlação espacial de suas partes menores, que podem ser escassamente representadas. Em outras palavras, as imagens podem parecer complexas, mas são criadas a partir de uma combinação de apenas algumas partes básicas. Para a visão computacional, a estrutura da linha de base nas imagens geralmente é composta de bordas e cantos. A CNN tenta explorar a escassez da estrutura em uma imagem procurando estruturas localizadas comuns. É isso que a primeira camada da CNN está tentando determinar. Pense em uma convolução como um filtro de correspondência que procura sinais que correspondam a um modelo específico. O quão bem ele funciona depende dos dados disponíveis. Felizmente, o mundo está cheio de repetições em pequena escala, de modo que a CNN funciona bem para tarefas de visão computacional.

SimpleLikeAnEgg
fonte
Sim, acho que essa é a ideia geral. Eu não estava claro na minha pergunta original, mas estava me perguntando por que a matemática funcionava, ou seja, por que a própria propriedade de convolução permite que a primeira camada encontre essas partes pequenas.
ComputerScientist
1
Leia mais sobre convolução e filtragem correspondente. Quando o kernel de convolução corresponde ao sinal, ele gera o maior retorno.
SimpleLikeAnEgg