Wolfram Language

Visualize o interior de uma rede neural

Para entender o funcionamento interno de uma rede de classificação de imagens treinada, pode-se tentar visualizar as propriedades de imagem às quais os neurônios dentro da rede respondem.

Carregue uma rede pré-treinada.

As propriedades da imagem dos neurônios na primeira camada de convolução são dadas simplesmente pelos seus núcleos de convolução.

Esses neurônios codificam recursos de baixo nível, como bordas e linhas de escala de cinza e cores com orientações variadas.

No entanto, essa abordagem simples não funciona para os neurônios em camadas que estão mais abaixo na cadeia de processamento da rede. Você pode, portanto, utilizar o algoritmo Deep Dream do Google para gerar propriedades neurais em uma imagem aleatória.

Primeiro, especifique uma camada e um recurso que você gostaria de visualizar.

Para obter uma impressão do que um neurônio codifica, trunque a rede na camada dada e anexe camadas que extraiam a atividade quadrada total dos neurônios especificados.

Maximizar a saída dessa rede atualizando constantemente uma imagem aleatória inserida com o gradiente de retropropagação da rede, resulta em uma imagem que ativa principalmente o neurônio em questão. A imagem resultante mostra as características às quais o neurônio responde.

Crie uma imagem inicial que exiba aleatoriedade em todas as escalas.

O comando NetPortGradient["Input"] fornece o gradiente de retropropagação na porta de entrada da rede. O código a seguir normaliza o coeficiente de gradiente máximo para 1/8 e o converte em uma imagem.

Antes de atualizar a imagem iterativamente com a imagem gradiente anterior, é necessário introduzir uma função de jitter que desloca uma imagem por um desvio pequeno.

Adicionar um jitter aleatório ao loop a seguir faz com que os artefatos locais da retropropagação se espalhem e resultem em uma imagem mais regular.

Ao atualizar a imagem inicial aleatória 256 vezes, a imagem abaixo será exibida. Os neurônios em questão parecem codificar pequenos pássaros ou galinhas.

Repita o procedimento acima para outras propriedades em outras camadas. Você notará que os neurônios em nas primeiras camadas codificam propriedades simples, como texturas, enquanto os neurônios em camadas profundas codificam propriedades mais complexas, como rostos de animais.

Propriedades da camada de incepção 3b.

Propriedades da camada de incepção 4d.

Exemplos Relacionados

de en es fr ja ko zh