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?
fonte
Respostas:
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.
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.σi i Ii i wij i j nhidden
Outra técnica é usar a derivada do mapeamento da rede neural em relação à entrada em questão, em média sobre as entradas.
Aqui é a ésima entrada, é a saída e o valor esperado é obtido com relação ao vetor de entradas .xi i y x
fonte
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.
fonte
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.
fonte
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.
fonte
Dado que você tem:
Alguém já tentou:
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