Como visualizar / entender o que uma rede neural está fazendo?

37

As redes neurais são frequentemente tratadas como "caixas pretas" devido à sua estrutura complexa. Isso não é ideal, pois geralmente é benéfico ter uma compreensão intuitiva de como um modelo está funcionando internamente. Quais são os métodos para visualizar como uma rede neural treinada está funcionando? Como alternativa, como podemos extrair descrições facilmente digeríveis da rede (por exemplo, este nó oculto está trabalhando principalmente com essas entradas)?

Estou interessado principalmente em redes feed-forward de duas camadas, mas também gostaria de ouvir soluções para redes mais profundas. Os dados de entrada podem ser de natureza visual ou não visual.

rm999
fonte
11
Aqui está um bom exemplo: playground.tensorflow.org
nobar 20/09/16

Respostas:

12

As redes neurais às vezes são chamadas de "aproximadores de funções diferenciáveis". Então, o que você pode fazer é diferenciar qualquer unidade em relação a qualquer outra unidade para ver qual é o seu relacionamento.

Você também pode verificar a sensibilidade do erro da rede em uma entrada específica.

Depois, há algo chamado "campos receptivos", que é apenas a visualização das conexões que entram em uma unidade oculta. Isso facilita a compreensão do que unidades específicas fazem para dados de imagem, por exemplo. Isso pode ser feito para níveis mais altos também. Consulte Visualizando recursos de nível superior de uma rede profunda .

bayerj
fonte
13

Estime a importância do recurso aumentando aleatoriamente todos os valores de um único recurso e registrando como a função geral de condicionamento físico diminui.

Portanto, se seu primeiro recurso for continuamente avaliado e dimensionado para , você poderá adicionar ao valor de cada exemplo de treinamento para o primeiro recurso. Então procure quanto diminui o seu . Isso efetivamente exclui um recurso de seus dados de treinamento, mas lida com interações cruzadas melhor do que excluir literalmente o recurso.x1 1,Eu[0 0,1 1]rumand(0 0,1 1)-0,5R2

Em seguida, classifique seus recursos pela degradação das funções de condicionamento físico e faça um gráfico de barras bonito. Pelo menos alguns dos recursos mais importantes devem passar por uma verificação interna, dado o seu conhecimento do domínio do problema. E isso também permite que você seja surpreendido com recursos informativos que você pode não ter esperado.

Esse tipo de teste de importância de recurso funciona para todos os modelos de caixa preta, incluindo redes neurais e grandes conjuntos CART. Na minha experiência, a importância do recurso é o primeiro passo para entender o que um modelo está realmente fazendo.

someben
fonte
11
Obrigado pela resposta; isso é realmente algo que eu fiz e acho muito útil. Nesta questão, porém, estou procurando mais algo que pareça dentro da rede, em vez de tratá-lo como uma caixa preta.
rm999
2

Aqui está uma intuição gráfica para um tipo específico de redes neurais. No final desse post, há um link para o código R que mostra uma visualização para um problema específico. Aqui está o que parece:

insira a descrição da imagem aqui

Dimitriy V. Masterov
fonte
1

No outono de 2011, participei do curso on-line gratuito de aprendizado de máquina da Standford, ministrado por Andrew Ng, e visualizamos uma rede neural que era um detector de rosto. A saída foi uma face genérica. Quero mencionar isso por completo, mas você não mencionou esse tipo de aplicativo, por isso não vou desenterrar os detalhes. :)

Andrew
fonte
A Universidade é Stanford. Posso encontrar o curso de Andrew Ng na web. Ouvi Dick DeVeaux dando uma palestra sobre redes neurais, alegando que os neurônios parte dele meio que escondem o que realmente está acontecendo. é apenas outro tipo de classificador não linear e, se, em vez de analisá-lo da perspectiva do diagrama, eles são melhor compreendidos, escrevendo o que fazem algebricamente. Espero estar lembrando disso direito.
Michael R. Chernick
De Veaux e Ungar, Uma breve introdução às redes neurais de 1997: "as redes neurais parecem estar em toda parte nos dias de hoje, e pelo menos em sua publicidade são capazes de fazer tudo o que a estatística pode fazer sem todo o barulho e preocupação de ter que fazer qualquer coisa, exceto compre um software ".
Denis19 /
0

O método abaixo mencionado é retirado deste link , visite o site para mais detalhes.

Comece com uma imagem aleatória, ou seja, forneça valores arbitrariamente aos pixels. "Em seguida, fazemos um encaminhamento usando esta imagem x como entrada para a rede para calcular a ativação a_i (x) causada por x em algum neurônio i em algum lugar no meio da rede. Em seguida, fazemos um retrocesso (executando backprop) para calcular o gradiente de a_i (x) em relação às ativações anteriores da rede.No final da passagem para trás, ficamos com o gradiente ∂a_i (x) / ∂x ou como alterar a cor de cada pixel para aumentar a ativação do neurônio I. Fazemos exatamente isso adicionando uma pequena fração αα desse gradiente à imagem:

x ← x + α⋅∂a_i (x) / ∂x

Continuamos fazendo isso repetidamente até termos uma imagem x 'que causa alta ativação do neurônio em questão ".

LKB
fonte