Estou tentando descobrir quantos pesos e preconceitos são necessários para a CNN.
Digamos que eu tenho uma imagem (3, 32, 32) e quero aplicar um filtro (32, 5, 5). Para cada mapa de recursos, tenho pesos 5x5, portanto, devo ter 3 x (5x5) x 32 parâmetros. Agora eu preciso adicionar o viés. Eu acredito que tenho apenas (3 x (5x5) + 1) x 32 parâmetros, então o viés é o mesmo em todas as cores (RGB)?
Isso está correto? Mantenho o mesmo viés para cada imagem em toda a sua profundidade (neste caso, 3) enquanto uso pesos diferentes? Por que é que?
O viés opera por neurônio virtual, portanto, não há valor em ter várias entradas de viés onde há uma única saída - o que equivaleria a somar os diferentes pesos de viés em um único viés.
Nos mapas de recursos que são a saída da primeira camada oculta, as cores não são mais mantidas separadas *. Efetivamente, cada mapa de características é um "canal" na próxima camada, embora eles geralmente sejam visualizados separadamente, onde a entrada é visualizada com os canais combinados. Outra maneira de pensar sobre isso é que os canais RGB separados na imagem original são 3 "mapas de recursos" na entrada.
Não importa quantos canais ou recursos estejam em uma camada anterior, a saída para cada mapa de recursos na próxima camada é um valor único nesse mapa. Um valor de saída corresponde a um único neurônio virtual, necessitando de um peso parcial.
Em uma CNN, como você explica na pergunta, os mesmos pesos (incluindo o peso da polarização) são compartilhados em cada ponto do mapa de recursos de saída. Portanto, cada mapa de recursos tem seu próprio peso de polarização e previous_layer_num_features x kernel_width x kernel_heightpesos de conexão.
Portanto, sim, seu exemplo, resultando em (3 x (5x5) + 1) x 32pesos totais para a primeira camada, está correto para uma CNN com a primeira camada oculta processando a entrada RGB em 32 mapas de recursos separados.
* Você pode ficar confuso vendo a visualização dos pesos da CNN, que podem ser separados nos canais de cores em que operam.
Eu pensei que havia um viés por filtro ... temos definições diferentes de neurônios virtuais?
Charlie Parker
@CharlieParker Em termos de número de parâmetros, um viés por filtro é igual a um viés por neurônio. Existem algumas maneiras equivalentes de visualizar a arquitetura de um mapa de recursos da CNN. Um seria como a camada "totalmente expandida", com um grande número de neurônios, todos compartilhando os mesmos parâmetros. Outra seria pensar em cada filtro convolucional como descrevendo as conexões locais de um único neurônio, e a camada usa repetidamente esse mesmo neurônio. Acho que provavelmente temos a mesma definição de neurônio, mas a resposta descreve as coisas de apenas uma perspectiva.
Neil Slater
Interessante, eu acho que você pensa em cada neurônio para cada filtro, eu estava pensando, por algum motivo, em cada ativação de cada neurônio, mas o filtro é ativado em muitos lugares da imagem, é claro que eu tinha muito mais neurônios em mente.
Charlie Parker
1
É propriedade das CNNs que eles usem pesos e vieses compartilhados (mesmos pesos e vieses para todos os neurônios ocultos em uma camada) para detectar o mesmo recurso. Isso leva a um aprendizado mais profundo em comparação com redes neurais simples. Você pode ler isso como uma referência:
Estou fazendo uma pergunta diferente. Minha pergunta é sobre o viés. A partir da fórmula, parece que para cada mapa de recursos há pesos diferentes, mas o mesmo viés é usado em todos os mapas de recursos.
É propriedade das CNNs que eles usem pesos e vieses compartilhados (mesmos pesos e vieses para todos os neurônios ocultos em uma camada) para detectar o mesmo recurso. Isso leva a um aprendizado mais profundo em comparação com redes neurais simples. Você pode ler isso como uma referência:
http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introducing_convolutional_networks
fonte