Atualizando os pesos dos filtros em uma CNN


13

Atualmente, estou tentando entender a arquitetura de uma CNN. Entendo a convolução, a camada ReLU, a camada de pool e a camada totalmente conectada. No entanto, ainda estou confuso sobre os pesos.

Em uma rede neural normal, cada neurônio tem seu próprio peso. Na camada totalmente conectada, cada neurônio também teria seu próprio peso. Mas o que eu não sei é se cada filtro tem seu próprio peso. Preciso apenas atualizar os pesos na camada totalmente conectada durante a propagação de retorno? Ou todos os filtros têm um peso separado que preciso atualizar?

Respostas:


12

Em uma rede neural normal, cada neurônio tem seu próprio peso.

Isso não está correto. Toda conexão entre neurônios tem seu próprio peso. Em uma rede totalmente conectada, cada neurônio será associado a muitos pesos diferentes. Se houver n0entradas (isto é, n0neurônios na camada anterior) para uma camada com n1neurônios em uma rede totalmente conectada, essa camada terá n0*n1pesos, sem contar com qualquer termo de viés.

Você deve conseguir ver isso claramente neste diagrama de uma rede totalmente conectada do CS231n . Cada borda que você vê representa um peso treinável diferente:

insira a descrição da imagem aqui

As camadas convolucionais são diferentes, pois possuem um número fixo de pesos governados pela escolha do tamanho e do número de filtros, mas independentemente do tamanho da entrada.

Cada filtro tem um peso separado em cada posição de sua forma. Portanto, se você usar dois filtros 3x3x3, terá 54 pesos, novamente sem contar o viés. Isso é ilustrado em um segundo diagrama do CS231n :

insira a descrição da imagem aqui

Os pesos do filtro absolutamente devem ser atualizados na retropropagação, pois é assim que eles aprendem a reconhecer os recursos da entrada. Se você ler a seção "Visualizando redes neurais" aqui , verá como as camadas de uma CNN aprendem recursos cada vez mais complexos da imagem de entrada à medida que você se aprofunda na rede. Tudo isso é aprendido ajustando os pesos do filtro através da retropropagação.


mmm, o número de pesos em cada camada também depende do número de passadas que os filtros levam ... certo?
Arnav Das

2

Durante a propagação de retorno, as camadas densa e de convolução são atualizadas, mas as camadas de pool máximo não têm nenhum peso a ser atualizado. Camadas densas são atualizadas para ajudar a rede a se classificar. As camadas de convolução são atualizadas para permitir que a rede aprenda os próprios recursos. Como você não fez a pergunta, basta adicionar um link para você, se quiser saber mais. Há uma explicação muito boa para propagação traseira aqui, que pode ser útil para você.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.