Abrindo a caixa preta das redes neurais

rede neural convolucional

Cada kernel de convolução extrai recursos diferentes . Cada kernel de convolução envolve a entrada para gerar um mapa de recursos. Este mapa de recursos reflete os recursos extraídos pelo kernel de convolução da entrada.

  1. Extração de kernel de convolução superficial: recursos de pixel subjacentes, como bordas, cores e manchas;
  2. Extração de kernel de convolução de nível médio: recursos de textura de nível médio, como listras, linhas, formas, etc.;
  3. Extração de kernel de convolução de alto nível: recursos semânticos de alto nível, como olhos, pneus, texto, etc.

Finalmente, a camada de saída de classificação produz o resultado de classificação mais abstrato.

A imagem acima mostra os recursos extraídos por um kernel de convolução raso. Podemos ver que alguns kernels de convolução extraem formas e outros extraem cores. É um recurso de convolução semelhante ao filtro Gabor.

A imagem acima mostra os recursos extraídos pelos kernels de convolução média e profunda. O kernel de convolução média extrai blocos maiores de cor e textura. Os recursos extraídos pelo kernel de convolução profunda podem incluir humanos ou algumas coisas concretas.

Interpretabilidade CAM

Na figura acima, a imagem original de entrada foi convolvida camada por camada. Na última camada, haverá 512 núcleos de convolução e 512 canais, ou seja, 512 características profundas foram extraídas . Uma média é calculada para cada recurso do canal e, em seguida, o peso (coeficiente) de cada valor do recurso é obtido através da camada FC (camada totalmente conectada) - \(W_1, W_2, W_3,..., W_n\) , para cada categoria Você pode obter um valor de pontuação (pontuação), que é obtido por

\(pontuação=W_1*valor próprio azul+W_2*valor próprio vermelho+...+W_n*valor próprio verde\)

Obtido e, finalmente, calculado um valor de probabilidade por meio de softmax, que é um processo de classificação CNN para mapa de calor CAM, é refletido principalmente no peso do valor do recurso \(W_1, W_2, W_3,..., W_n\) .

  • Desvantagens do CAM
  1. Deve haver uma camada GAP, caso contrário a estrutura do modelo deverá ser modificada e retreinada.
  2. Apenas a saída da última camada convolucional pode ser analisada e a camada intermediária não pode ser analisada.
  3. Apenas tarefas de classificação de imagens

GradCAM

No GradCAM, em vez de usar a camada GAP, você pode usar completamente a camada FC para gerar a pontuação através da camada totalmente conectada, representada por \(y^c\) .

  • Derivada de uma matriz

1. A derivada de uma função escalar em relação a um vetor:

Esta é uma função escalar bidimensional. Sabemos que o valor mínimo desta função é.

\({df(y)\sobre dy}=0\)

Se esta função for uma função escalar tridimensional composta por duas variáveis ​​independentes, a imagem será a seguinte

Encontre o valor mínimo desta função binária, simultaneamente

  1. \({∂f(y_1,y_2)\sobre ∂y_1}=0\)
  2. \({∂f(y_1,y_2)\sobre ∂y_2}=0\)

Se uma função escalar tem n variáveis ​​independentes \(f(y_1,y_2,y_3,...,y_n)\) , definimos um vetor

S=[ ]

Então a derivada parcial da função em relação ao vetor Y pode ser definida como

\({∂f(Y)\sobre ∂Y}=\) \([\) \(]\)

Este é um vetor de coluna n*1 e descobrimos que seu número de linhas é igual ao denominador Y. Esse layout é chamado de layout do denominador .

Da mesma forma, também podemos definir a derivada parcial da função em relação ao vetor Y como

\({∂f(Y)\sobre ∂Y}=[{∂f(Y)\sobre ∂y_1}{∂f(Y)\sobre ∂y_2}...{∂f(Y)\sobre ∂y_n }]\)

Este é um vetor de linha 1*n e descobrimos que seu número de linhas é igual ao numerador f(Y) (um escalar 1*1). Esse layout é chamado de layout de numerador .

O layout do denominador e o layout do numerador são transpostos um do outro .

Exemplo 1: \(f(y_1,y_2)=y_1^2+y_2^2\)

Layout do denominador:

Seja Y=[ ]

mas

\({∂f(Y)\sobre ∂Y}=\) [ ]=[ ]

Disposição molecular:

\(Y=[y_1 y_2]\)

mas

\({∂f(Y)\sobre ∂Y}=[​{∂f(Y)\sobre ∂y_1} {∂f(Y)\sobre ∂y_2}]=[2y_1 2y_2]\)

2. Derivada da função vetorial em relação ao vetor

Se nossa função também for um vetor

F(S)=[ ]

Cada \(f_x(Y)\) (x=1,2,3,...,m) aqui é equivalente a uma função escalar f(Y) acima (a variável independente é o vetor Y), F(Y ) é uma função vetorial de m*1.

Exemplo um:

  1. S=[ ]
  2. F(S)=[ ]=[ ]

A derivada parcial de uma função vetorial em relação a um vetor, o layout do denominador é

\({∂F(Y)\sobre ∂Y}=\) [ ]=[ ]   

Como no Exemplo 1, existem

\({∂F(Y)\sobre ∂Y}=\) [ ]=[ ]=[ ]

Esta é uma matriz 3*2.

 

Um programador nascido na década de 1990 desenvolveu um software de portabilidade de vídeo e faturou mais de 7 milhões em menos de um ano. O final foi muito punitivo! Google confirmou demissões, envolvendo a "maldição de 35 anos" dos programadores chineses nas equipes Flutter, Dart e . Python Arc Browser para Windows 1.0 em 3 meses oficialmente GA A participação de mercado do Windows 10 atinge 70%, Windows 11 GitHub continua a diminuir a ferramenta de desenvolvimento nativa de IA GitHub Copilot Workspace JAVA. é a única consulta de tipo forte que pode lidar com OLTP + OLAP. Este é o melhor ORM. Nos encontramos tarde demais.
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/3768341/blog/11086857
Recomendado
Clasificación