O que minha rede neural acabou de aprender? Com quais recursos ele se importa e por quê?

30

Uma rede neural aprende características de um conjunto de dados como um meio de atingir algum objetivo. Quando estiver pronto, podemos querer saber o que a rede neural aprendeu. Quais eram os recursos e por que se importava com eles? Alguém pode dar algumas referências no corpo do trabalho que diz respeito a esse problema?

user442920
fonte

Respostas:

28

É verdade que é difícil entender o que uma rede neural está aprendendo, mas houve muito trabalho nessa frente. Definitivamente, podemos ter uma idéia do que nossa rede está procurando.

Vamos considerar o caso de uma rede neural convolucional para imagens. Nós temos a interpretação para a nossa primeira camada de que estamos deslizando os filtros sobre a imagem, portanto nossa primeira camada oculta corresponde ao acordo entre pequenos pedaços da imagem e nossos vários filtros. Podemos visualizar esses filtros para ver qual é a nossa primeira camada de representação:K

camada alexnet 1

Esta imagem é da primeira camada de filtros de um AlexNet e foi tirada deste maravilhoso tutorial: http://cs231n.github.io/understanding-cnn/ . Isso nos permite interpretar a primeira camada oculta como aprendendo a representar a imagem, consistindo em pixels brutos, como um tensor em que cada coordenada é a concordância de um filtro com uma pequena região da imagem. A próxima camada está trabalhando com essas ativações de filtro.

[010141010].

0

Este artigo de Erhan et al (2009) concorda com isso: eles dizem que as visualizações da primeira camada oculta são comuns (e isso ocorreu em 2009), mas a visualização das camadas mais profundas é a parte mais difícil. Desse trabalho:

A principal descoberta experimental desta investigação é muito surpreendente: a resposta de uma unidade interna à entrada de imagens, como uma função no espaço da imagem, parece unimodal, ou pelo menos que o máximo seja encontrado de maneira confiável e consistente para todas as inicializações aleatórias testadas . Isso é interessante porque encontrar esse modo dominante é relativamente fácil e exibi-lo fornece uma boa caracterização do que a unidade faz.

Chris Olah et al ( https://distill.pub/2017/feature-visualization/ ) baseiam-se nisso e discutem como, em geral, você pode (1) gerar imagens que levam a grandes ativações para ter uma ideia do que a rede está procurando; ou (2) capture imagens de entrada reais e veja como diferentes partes da imagem ativam a rede. Esse post se concentra em (1).

Na imagem abaixo, extraída do artigo vinculado de Olah et al., Os autores discutem os diferentes aspectos da rede que você pode inspecionar. A imagem mais à esquerda mostra o resultado da otimização da ativação de um neurônio específico sobre o espaço da imagem de entrada e assim por diante.

C. Olah e cols.

Eu recomendo a leitura desse artigo na íntegra, se você quiser uma compreensão mais profunda disso e, ao ler suas referências, deverá ter uma ótima compreensão do que foi feito com isso.

Agora, é claro, tudo isso era apenas para imagens em que nós, como humanos, podemos entender as entradas. Se você estiver trabalhando com algo mais difícil de interpretar, como apenas um grande vetor de números, talvez não seja possível fazer visualizações tão legais, mas, em princípio, você ainda pode considerar essas técnicas para avaliar os vários neurônios, camadas e etc. .

jld
fonte
2
+1 especialmente para o parágrafo final. Pessoalmente, acho que as pessoas com visão acabaram fazendo visualizações sobre esse grande número de parâmetros.
Haitao Du
é claro que +1 na resposta longa e bem escrita, com referências confiáveis.
Haitao Du
11
@ hxd1011 obrigado, e acho que Olah et al fazem um grande ponto nesse artigo que não é realmente justo ver exatamente o que maximiza um único neurônio, já que a camada realmente é uma base e é mais sobre o espaço que a camada representa do que os vetores de base exatos. Assim, enquanto divertido de se olhar, muitas dessas visualizações não pode ser super perspicaz
JLD
11
Também um equívoco comum é que, ao tirar os filtros da primeira camada, um pedaço de imagem que maximiza a saída de um determinado neurônio se parece exatamente com esse filtro. Na verdade, um patch que maximiza a saída de um neurônio não se parece com nada parecido com os valores numéricos do filtro, desde a sua convolução, não a correspondência do modelo. É aí que acredito que exemplos adversários residem.
Lugi
Olah et al. a postagem do blog é boa, mas eles cometem um erro - eles "otimizam para a ativação máxima" (não exatamente isso, mas perto), encontram uma imagem que não se parece com fotos do conjunto de treinamento e concluem que as CNNs "veem" de forma diferente de nós. Embora a conclusão seja obviamente verdadeira, o raciocínio é falho - o modo de uma distribuição de alta dimensão não se parece em nada com uma amostra típica dessa distribuição. Em outras palavras, é precisamente porque as CNNs precisam classificar gatos, que o modo de distribuição não deve ser um gato, mas um "gato do pesadelo".
DeltaIV 12/01/19
7

A Rede Neural é um dos modelos de caixa preta que não daria regras "fáceis de entender" / ou o que foi aprendido.

Especificamente, o que foi aprendido são os parâmetros no modelo, mas os parâmetros podem ser grandes: centenas de milhares de parâmetros são muito normais.

Além disso, também não está claro os recursos importantes aprendidos, você pode entender que o modelo usa todos os recursos, com muitas operações complicadas para obter os resultados, onde não é fácil dizer em inglês simples como o modelo transforma cada recurso o utiliza.


De fato, a rede neural de uma camada (sem camada oculta) com função logística como função de ativação é idêntica à regressão logística. A regressão logística é muito rica em interpretações. Aqui está um exemplo. Mas com redes neurais complexas / mais camadas ocultas, essa interpretação não se aplicará.

Haitao Du
fonte