Sobre CNN, kernels e invariância de escala / rotação

17

Eu tenho algumas perguntas que estão me confundindo em relação à CNN.
1) Os recursos extraídos usando a CNN são invariáveis ​​em escala e rotação?
2) Os Kernels que usamos para convolução com nossos dados já estão definidos na literatura? que tipo desses núcleos são? é diferente para cada aplicação?

Aadnan Farooq A
fonte

Respostas:

17

1) Os recursos extraídos usando a CNN são invariáveis ​​em escala e rotação?

Um recurso em si mesmo em uma CNN não é invariável em escala ou rotação. Para mais detalhes, consulte: Deep Learning. Ian Goodfellow e Yoshua Bengio e Aaron Courville. 2016: http://egrcc.github.io/docs/dl/deeplearningbook-convnets.pdf ; http://www.deeplearningbook.org/contents/convnets.html :

A convolução não é naturalmente equivalente a algumas outras transformações, como alterações na escala ou rotação de uma imagem. Outros mecanismos são necessários para lidar com esses tipos de transformações.

É a camada máxima de pooling que introduz esses invariantes:

insira a descrição da imagem aqui

2) Os Kernels que usamos para convolução com nossos dados já estão definidos na literatura? que tipo desses núcleos são? é diferente para cada aplicação?

Os kernels são aprendidos durante a fase de treinamento da RNA.

Franck Dernoncourt
fonte
Não posso falar com os detalhes em termos do estado da arte atual, mas no tópico 1, achei isso interessante.
GeoMatt22
@Franck 1) Isso significa que não tomamos nenhuma medida especial para tornar a rotação do sistema invariável? e quanto à invariante da escala, é possível obter a invariante da escala no pool máximo?
Aadnan Farooq A
2) Os kernels são os recursos. Eu não entendi isso. [Aqui] ( wildml.com/2015/11/… ) Eles mencionaram que "Por exemplo, na Classificação de imagens, uma CNN pode aprender a detectar bordas de pixels brutos na primeira camada e, em seguida, use as bordas para detectar formas simples no segunda camada e, em seguida, use essas formas para impedir recursos de nível superior, como formas faciais em camadas superiores. A última camada é um classificador que usa esses recursos de nível superior ".
Aadnan Farooq A
2
Observe que o pool de que você está falando é referido como pool de canais cruzados e não é o tipo de pool que geralmente é referido quando se fala em "max pool de pool", que somente se agrupa em dimensões espaciais (não em canais de entrada diferentes) )
Soltius 13/06
11
Isso implica que um modelo que não possui nenhuma camada de pool máximo (a maioria das arquiteturas SOTA atuais não usa pool) depende completamente da escala?
precisa saber é o seguinte
5

Eu acho que há algumas coisas confundindo você, então as primeiras coisas primeiro.

x[n]h[n]x[n]h[n]y[n]=(xh)[n]

y[n]=m=-x[m] h[n-m]

O acima é para sinais unidimensionais, mas o mesmo pode ser dito para imagens, que são apenas sinais bidimensionais. Nesse caso, a equação se torna:

EuneW[r,c]=você=-v=-Euoeud[você,v] k[r-você,c-v]

Pictoricamente, é isso que está acontecendo:

insira a descrição da imagem aqui

De qualquer forma, o que deve ser lembrado é que o kernel , na verdade aprendido durante o treinamento de uma Rede Neural Profunda (DNN). Um kernel apenas será o que você convolve com a sua entrada. O DNN aprenderá o kernel, de modo a destacar certas facetas da imagem (ou imagem anterior), que serão boas para diminuir a perda do seu objetivo.

Este é o primeiro ponto crucial a entender: tradicionalmente, as pessoas projetam kernels, mas no Deep Learning, deixamos a rede decidir qual deve ser o melhor kernel. No entanto, a única coisa que especificamos são as dimensões do kernel. (Isso é chamado de hiperparâmetro, por exemplo, 5x5 ou 3x3 etc.).

Tarin Ziyaee
fonte
Boa explicação. Você pode responder à primeira parte da pergunta. Sobre a CNN a balança / rotação é invariável?
Aadnan Farooq A
11
@AadnanFarooqA Eu vou fazer isso hoje à noite.
Tarin Ziyaee
2

Muitos autores, incluindo Geoffrey Hinton (que propõe a Capsule net), tentam resolver o problema, mas qualitativamente. Tentamos resolver esse problema quantitativamente. Ao ter todos os núcleos de convolução simétricos (simetria diédrica da ordem 8 [Dih4] ou rotação de incremento de 90 graus simétrica, et al) na CNN, forneceríamos uma plataforma para o vetor de entrada e o vetor resultante em cada camada oculta de convolução serem girados de forma síncrona com a mesma propriedade simétrica (ou seja, Dih4 ou rotação de 90 incrementos simétrica, et al). Além disso, por ter a mesma propriedade simétrica para cada filtro (ou seja, totalmente conectado, mas pesa o compartilhamento com o mesmo padrão simétrico) na primeira camada plana, o valor resultante em cada nó seria quantitativamente idêntico e levaria ao mesmo vetor de saída CNN também. Eu o chamei de CNN de transformação idêntica (ou TI-CNN-1). Existem outros métodos que também podem construir CNN idênticas à transformação usando entrada ou operações simétricas dentro da CNN (TI-CNN-2). Com base na TI-CNN, é possível construir CNNs idênticas à rotação de engrenagem (GRI-CNN) por várias TI-CNNs, com o vetor de entrada girado por um pequeno ângulo de passo. Além disso, uma CNN quantitativamente idêntica composta também pode ser construída combinando vários GRI-CNNs com vários vetores de entrada transformados.

  1. "Redes neurais convolucionais transformacionais idênticas e invariantes por meio de operadores de elementos simétricos" https://arxiv.org/abs/1806.03636 (junho de 2018)

  2. “Redes neurais convolucionais transformacionais, idênticas e invariantes, combinando operações simétricas ou vetores de entrada” https://arxiv.org/abs/1807.11156 (julho de 2018)

  3. "Sistemas de redes neurais convolucionais rotacionalmente idênticas e invariáveis" https://arxiv.org/abs/1808.01280 (agosto de 2018)

Ben Lo
fonte
-1

Eu acho que o pool máximo pode reservar invariâncias de translação e rotação apenas para traduções e rotações menores que o tamanho da passada. Se maior, nenhuma invariância

feynman
fonte
11
você poderia expandir um pouco? Recomendamos que as respostas neste site sejam um pouco mais detalhadas que isso (no momento, isso parece mais um comentário). Obrigado!
Antoine