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.
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:
- O fato de que a convolução é associativa, enquanto a correlação (cruzada) não é.
- 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:
que é essencialmente a soma de todas as células em um produto Hadamard:
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 )
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:
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:
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:
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):
- 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.
- Convolução e correlação cruzada na CNN são equivalentes?
Sim, eles são equivalentes.
- 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) (?).
fonte
Respostas:
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.
fonte
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 × n O ( n2) N× N n2N2
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)
fonte