Existem razões matemáticas para a convolução nas redes neurais além da conveniência?

14

Nas redes neurais convolucionais (CNN), a matriz de pesos em cada etapa obtém suas linhas e colunas invertidas para obter a matriz do núcleo, antes de prosseguir com a convolução. Isso é explicado em uma série de vídeos de Hugo Larochelle aqui :

A computação dos mapas ocultos corresponderia a uma convolução discreta com um canal da camada anterior, usando uma matriz do [...] kernel, e esse kernel é calculado a partir da matriz de pesos ocultos , onde invertemos as linhas e as colunas.WEuj

insira a descrição da imagem aqui

Se comparássemos as etapas reduzidas de uma convolução à multiplicação regular da matriz como em outros tipos de NN, a conveniência seria uma explicação clara . No entanto, essa pode não ser a comparação mais pertinente ...

No processamento de imagens digitais, a aplicação da convolução de um filtro a uma imagem ( este é um ótimo vídeo do youtube para uma intuição prática ) parece relacionada a:

  1. O fato de que a convolução é associativa, enquanto a correlação (cruzada) não é.
  2. A possibilidade de aplicar filtros no domínio da frequência da imagem como multiplicações, uma vez que a convolução no domínio do tempo é equivalente à multiplicação no domínio da frequência ( teorema da convolução ).

Nesse ambiente técnico específico de correlação DSP é definido como:

FI(x,y)=j=NNi=NNF(i,j)I(x+i,y+j)

que é essencialmente a soma de todas as células em um produto Hadamard:

FEu(x,y)=[F[-N,-N]Eu[x-N,y-N]F[-N,0 0]Eu[x-N,y-N]F[-N,N]Eu[x-N,y+N]F[0 0,-N]Eu[x,y-N]F[0 0,0 0]Eu[x,y]F[0 0,N]Eu[x,y+N]F[N,-N]Eu[x+N,y-N]F[N,0 0]Eu[x+N,y]F[N,N]Eu[x+N,y+N]]

onde é uma função de filtro (expressa como uma matriz) e é o valor de pixel de uma imagem no local :I ( x , y ) ( x , y )F(Eu,j)Eu(x,y)(x,y)

insira a descrição da imagem aqui

O objetivo da correlação cruzada é avaliar a semelhança entre uma imagem de sonda e uma imagem de teste. O cálculo de um mapa de correlação cruzada se baseia no teorema da convolução.


Por outro lado, convolução é definida como:

FI(x,y)=j=NNi=NNF(i,j)I(x-Eu,y-j)

que, desde que o filtro seja simétrico, é o mesmo que uma operação de correlação com as linhas e colunas do filtro invertidas:

FEu(x,y)=[F[N,N]Eu[x-N,y-N]F[N,0 0]Eu[x-N,y-N]F[N,-N]Eu[x-N,y+N]F[0 0,N]Eu[x,y-N]F[0 0,0 0]Eu[x,y]F[0 0,-N]Eu[x,y+N]F[-N,-N]Eu[x+N,y-N]F[-N,0 0]Eu[x+N,y]F[-N,-N]Eu[x+N,y+N]]

insira a descrição da imagem aqui


A convolução no DSP destina-se a aplicar filtros à imagem (por exemplo, suavização, nitidez). Por exemplo, depois de convolver o rosto de Joseph Fourier com um filtro de convolução gaussiano : na borda:[147414162616472641.2674162616414741]

insira a descrição da imagem aqui


Computacionalmente, ambas as operações são um produto interno da Frobenius, que calcula o traço de uma multiplicação de matrizes .


Perguntas (reformulando após comentários e primeira resposta):

  1. O uso de convoluções na CNN está vinculado à FFT?

Pelo que entendi até agora, a resposta é não. As FFTs foram usadas para acelerar as implementações de convulsões da GPU . No entanto, as FFT geralmente não fazem parte da estrutura ou das funções de ativação nas CNNs, apesar do uso de convoluções nas etapas de pré-ativação.

  1. Convolução e correlação cruzada na CNN são equivalentes?

Sim, eles são equivalentes.

  1. Se é simples como "não há diferença", qual é o sentido de lançar os pesos na matriz do kernel?

Nem a associatividade da convolução (útil em provas matemáticas), nem quaisquer considerações sobre FTs e o teorema da convolução são aplicáveis. De fato, parece que a inversão nem ocorre (a correlação cruzada é simplesmente rotulada como convolução) (?).

Antoni Parellada
fonte
Antoni, você pode apontar para qualquer fonte em que eles alterem os pesos? Como o @hossein apontou, você pode fazer qualquer coisa com correlação cruzada que você pode fazer com as convoluções, apenas invertendo a ordem. Portanto, todo esse material no domínio da frequência é irrelevante.
seanv507
@ seanv507 Editei meu OP para incluir a fonte do que acredito que você está me perguntando. Entendo que a convolução é a mesma operação que a correlação cruzada com uma matriz de filtro invertida, mas não entendo por que analisamos a "dor" da convolução discreta se não há nada que não possa ser realizado com correlação. A resposta dada é claramente instruída, mas poderia ser incluída em um comentário e não explica o motivo por trás de duas operações distintas (é uma "tradição" do DSP transferida para o ML?), As implicações no processo de aprendizagem, e a relação com os TFs.
Antoni Parellada 27/03
1
Antoni, não há necessidade de virar. É mais uma convenção; na DSP, as pessoas falam sobre convolução em vez de correlação cruzada, e redes neurais correlacionais cruzadas não saem da língua. Porém, a operação mais natural (para humanos interpretar) é a correlação cruzada (você está correspondendo a modelos) para a CNN (considere, por exemplo, um filtro de borda vertical em vez de uma rotação simétrica). Então eu acho que Hugo Larochelle é talvez falando de bibliotecas numéricas onde convolução em vez de correlação cruzada é a função padrão (ele está dizendo efetivamente correlação cruzada pode ser feito por uma convolução.).
seanv507
1
Antoni, concordo com as 2 primeiras perguntas / respostas, e meu comentário foi responder à 3ª pergunta.
seanv507
1
Embora não exista necessariamente um link direto entre a CNN e a FFT, há evidências de que você pode obter a aceleração da CNN usando FFT quando reter a soma da convolução usual. Veja aqui por exemplo: arxiv.org/pdf/1312.5851.pdf
Alex R.

Respostas:

8

Não há diferenças no que as redes neurais podem fazer quando usam convolução ou correlação. Isso ocorre porque os filtros são aprendidos e se uma CNN pode aprender a executar uma tarefa específica usando a operação de convolução, também pode aprender a executar a mesma tarefa usando a operação de correlação (aprenderia a versão rotacionada de cada filtro).

Para encontrar mais detalhes sobre os motivos pelos quais as pessoas às vezes acham mais intuitivo pensar em convolução do que em correlação, este post pode ser útil.

Resta a pergunta de que, se não houver diferença entre convolução e correlação cruzada, qual é o sentido de lançar os pesos na matriz do kernel? Gostaria de incluir algumas frases do livro Deep learning de Ian Goodfellow et al. para responder a esta pergunta:

"O único motivo para inverter o kernel é obter a propriedade comutativa. Embora a propriedade comutativa seja útil para escrever provas, geralmente não é uma propriedade importante de uma implementação de rede neural ... Muitas bibliotecas de aprendizado de máquina implementam correlação cruzada, mas chamam convolução " .

O argumento é que, embora a convolução seja uma operação favorita em aplicações clássicas de visão de máquina, ela é substituída pela correlação em muitas das implementações das redes neurais convolucionais.

Hossein
fonte
Obrigado. Eu li com atenção o blog ao qual você vincula e parece que o uso da convolução não é simplesmente equivalente à correlação e responde à seleção de recursos no domínio da frequência. Eu estou procurando uma resposta elaborando sobre isso.
Antoni Parellada 26/03
Como eu sei, eles são equivalentes no que podem fazer , uma vez que ambos produzem um produto escalar de duas matrizes, mas a convolução inverte a matriz do filtro antes do produto escalar, e como as CNN aprendem os filtros, podem aprender os filtros invertidos.
Hossein
+1 na explicação Hosseins, mas -1 no link do blog. O blog é focado principalmente em hardware, e ele é um cara de CS, sem experiência em convolução e outros conceitos de processamento de sinal.
seanv507
Eu ainda gostaria de insistir em ter um parágrafo adicional sobre a relação (ou falta dela) entre convolução nas CNNs e transformadas de Fourier.
Antoni Parellada 28/03
2

Há uma razão prática para o vínculo entre FFTs e convolução.

A convolução é lenta no domínio do tempo / imagem. A aplicação de um filtro a um pixel requer multiplicações e adições de . A aplicação a cada pixel em uma imagem requer, portanto, operações . Isso cresce rapidamente, e o grande número de operações não apenas requer tempo extra, mas também introduz mais erros numéricos.n×nO(n2)N×Nn2N2

O Teorema da Convolução diz que a convolução no domínio do tempo é equivalente à multiplicação pontual no domínio da frequência. As FFTs são rápidas: elas apresentam um bom desempenho assintótico e as implementações reais geralmente são altamente otimizadas. A mudança para o domínio de Fourier permite realizar uma convolução no tempo (que é dominado pela multiplicação pontual), em vez de . Isso pode fornecer uma aceleração considerável, mesmo que pareça muito mais complicado seguir a rota FFT -> multiplicação -> inversa FFT. Mais aquiO(N2registroN2)O(N2)O(n2N2)

Matt Krause
fonte