Aprendizado profundo: como sei quais variáveis ​​são importantes?

20

Em termos de linguagem da rede neural (y = Peso * x + viés), como eu saberia quais variáveis ​​são mais importantes que outras?

Eu tenho uma rede neural com 10 entradas, uma camada oculta com 20 nós e uma camada de saída que possui um nó. Não sei como saber quais variáveis ​​de entrada são mais influentes do que outras variáveis. O que estou pensando é que, se uma entrada é importante, ela terá uma conexão altamente ponderada com a primeira camada, mas o peso pode ser positivo ou negativo. Então, o que devo fazer é pegar o valor absoluto dos pesos da entrada e somar. Os insumos mais importantes teriam somas mais altas.

Por exemplo, se o comprimento do cabelo é uma das entradas, ele deve ter 1 conexão com cada um dos nós da próxima camada, com 20 conexões (e, portanto, 20 pesos). Posso apenas pegar o valor absoluto de cada peso e somar?

user1367204
fonte
3
Você certamente pode fazer isso, mas não está claro o que realmente significa além de "a soma de todos os pesos para essa variável em todas as conexões". Chamar isso de "importância" é totalmente arbitrário.
Matthew Drury
1
Eu só quero QUALQUER informação que sugira que uma variável seja importante e acho que essa pode ser uma boa maneira.
user1367204

Respostas:

16

O que você descreve é de fato uma maneira padrão de quantificar a importância das entradas da rede neural. Observe que, para que isso funcione, no entanto, as variáveis ​​de entrada devem ser normalizadas de alguma forma. Caso contrário, os pesos correspondentes às variáveis ​​de entrada que tendem a ter valores maiores serão proporcionalmente menores. Existem diferentes esquemas de normalização, como, por exemplo, subtrair a média de uma variável e dividir por seu desvio padrão. Se as variáveis ​​não foram normalizadas em primeiro lugar, você pode executar uma correção nos pesos no cálculo de importância, como multiplicar pelo desvio padrão da variável.

Ii=σij=1nhidden|wij|.

Aqui é o desvio padrão da ésima entrada, é a importância da ésima entrada, é o peso que conecta a ésima entrada ao ésimo nó oculto da primeira camada e é o número de nós ocultos na primeira camada.σiiIiiwijijnhidden

Outra técnica é usar a derivada do mapeamento da rede neural em relação à entrada em questão, em média sobre as entradas.

Ii=σi|dydxi|

Aqui é a ésima entrada, é a saída e o valor esperado é obtido com relação ao vetor de entradas .xiiyx

Sam Marinelli
fonte
Isso funcionaria se eu usasse apenas as conexões entre as entradas e a primeira camada oculta (em vez de usar todas as camadas ocultas)?
user1367204
Você deve usar apenas a primeira camada oculta. Após uma camada, os outros pesos não são vinculados a uma entrada mais que a outra. Eu editei a resposta um pouco para esclarecer isso.
Sam Marinelli
Lembrei-me de outra abordagem e a adicionei à resposta.
Sam Marinelli
11

Uma força um tanto bruta, mas solução eficaz:

Tente 'soltar' uma entrada usando uma constante para um dos seus recursos de entrada. Treine a rede para cada um dos casos possíveis e veja como sua precisão diminui. Entradas importantes fornecerão o maior benefício para a precisão geral.

rhadar
fonte
Essa é certamente uma possibilidade.
SmallChess
6
Porém, existe uma armadilha: mesmo que um recurso seja extremamente importante, se houver outro altamente correlacionado ao primeiro, nenhum deles será considerado importante pelos seus critérios (a falta do primeiro é compensada pela presença do último, embora menos informativa, mas mais recursos 'único' vai aparecer mais importante que maneira)
Firebug
Isto é por vezes chamado de ablação (mais especificamente micro ablação) testando
Veltzer Doron
7

105

Para uma rede rasa, isso fornece um exemplo de definição da importância da variável.

Para uma rede realmente profunda, as pessoas não falam muito sobre importância variável. Porque as entradas são recursos de nível bruto, como pixels em uma imagem.

Haitao Du
fonte
Eu editei meu comentário para refletir o que eu quis dizer. Eu pretendia dizer 20 nós na primeira camada, não 5 nós. Grande parcela e obrigado por distinguir redes rasas / profundas.
user1367204
9
@ hxd1011 para não ser puritano, mas profundo significa mais camadas, não milhares de unidades ocultas :).
1077 Rafael
3

O máximo que encontrei sobre isso é elaboradamente listado neste site, mais especificamente, você pode ver isso . Se você falar apenas sobre modelos lineares, precisará normalizar os pesos para torná-los interpretáveis, mas mesmo isso pode ser enganador mais sobre isso no link mencionado. Algumas pessoas tentaram fazer funções complexas de pesos para interpretar a importância das entradas (Garson, Gedeon e Milne), mas mesmo isso pode ser enganador, você pode descobrir mais sobre isso depois de rolar o primeiro link que mencionei. Em geral, eu aconselho a interpretar os resultados com um grão de sal.

concorda com a resposta do @ rhadar, mas gostaria de acrescentar que, em vez de usar qualquer constante, tente usar o valor médio para essa entrada e não se esqueça de treinar novamente a rede.

PS: desculpe não foi possível postar mais links ou comentar aqui não tem muita reputação.

Vaibhav Arora
fonte
1

Dado que você tem:

  1. Uma tarefa de classificação
  2. Um modelo treinado
  3. Recursos normalizados (entre 0 e 1)

Alguém já tentou:

  1. Zerando os preconceitos
  2. Passe cada vez como recursos um vetor quente, onde todos os recursos são zero, exceto um.
  3. Examine a saída.

Nesse caso, acho que a saída seria um número que designaria a "importância" do recurso, pois essa saída também representaria a saída do caminho desse sinal 1 dentro da rede.

É como acender apenas uma lâmpada dentro de um labirinto e medir a luz que sai na saída.

Δημητρης Παππάς
fonte
Eu não acho que isso ajudaria muito. O que você gostaria que a avaliação é o quanto a variação de que a entrada afetaria a saída (por si só ou em combinação com outras funções)
elachell