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.
Respostas:
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 .
fonte
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 , i [ 0 , 1 ] r a n d( 0 , 1 ) - 0,5 R2
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.
fonte
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:
fonte
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. :)
fonte
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 ".
fonte