Como executar a modelagem de rede neural de maneira eficaz?

13

Qual deve ser a razão entre o número de observações e o número de variáveis? Como detectar o ajuste excessivo no modelo de rede neural e quais são as formas de evitar o ajuste excessivo? Se eu quiser fazer uma classificação com a Rede Neural, as aulas devem ter a mesma frequência? Por favor, me ajude.

asad.taj
fonte
1
Você realmente precisa de NN? Esse método é considerado obsoleto (em parte porque é muito difícil responder às suas perguntas).
1
@mbq: talvez essa deva ser uma pergunta separada, mas você poderia expandir sua afirmação de que as redes neurais são consideradas obsoletas? (e por quem?)
naught101
1
@ naught101 Este é um comentário de 2010 ... Hoje em dia, infelizmente, temos um renascimento dessa loucura, então teremos que esperar alguns anos para que os NNs se tornem obsoletos novamente (;
1
@mbq: isso não responde à minha pergunta. Mas talvez isso faz: stackoverflow.com/questions/683124/neural-networks-obsolete
naught101

Respostas:

25

O conselho que eu daria é o seguinte:

  1. Esgote as possibilidades de modelos lineares (por exemplo, regressão logística) antes de prosseguir para as redes neurais, especialmente se você tiver muitos recursos e poucas observações. Para muitos problemas, a Rede Neural não supera os classificadores lineares simples, e a única maneira de descobrir se o seu problema está nessa categoria é tentar e ver.

  2. Investigue os métodos do kernel (por exemplo, Support Vector Machines (SVM), regressão logística do kernel), primeiro os modelos de processos gaussianos. Em ambos os casos, o ajuste excessivo é efetivamente controlado ajustando um pequeno número de hiperparâmetros. Para métodos de kernel, isso geralmente é realizado por validação cruzada; para modelos de processo gaussiano, isso é feito maximizando a probabilidade marginal (também conhecida como "evidência" bayesiana do modelo). Descobri que é muito mais fácil obter um modelo razoável usando esses métodos do que com redes neurais, pois o meio de evitar o ajuste excessivo é muito mais direto.

  3. Se você realmente deseja usar uma rede neural, comece com uma rede de funções de base radial (regularizada), em vez de uma rede do tipo Multilayer Perceptron (MLP) feedforward.

  4. Se você usa um MLP, use regularização. Se o fizer, será menos sensível às opções sobre arquitetura, como otimizar o número de unidades ocultas. Em vez disso, tudo o que você precisa fazer é escolher um bom valor para o parâmetro de regularização. O "quadro de evidências" bayesiano de MacKay fornece um bom método para definir o parâmetro de regularização. Se você usar a regularização, o número de observações e o número de variáveis ​​se tornarão muito menos problemáticos.

Para detectar o ajuste excessivo, basta executar a validação cruzada para testar o desempenho da generalização.

Quanto às classes com frequências iguais, lembre-se de que, se você treina um modelo com um conjunto de treinamento equilibrado, mas as classes não são equilibradas nos dados operacionais, é muito provável que o modelo subestima a classe minoritária. Se você usar um classificador probabilístico, como regressão logística ou uma rede neural, sempre poderá corrigir as probabilidades estimadas para contabilizar isso após o treinamento. Se o seu conjunto de dados estiver muito desequilibrado, eu recomendaria a ponderação diferencial dos padrões das classes positiva e negativa, com os fatores de ponderação selecionados pela validação cruzada.

No entanto, quando as classes são muito desequilibradas, normalmente os erros falso-negativos e falso-positivos têm custos diferentes (por exemplo, em testes de triagem médica, um falso-negativo é muito pior que um falso-positivo). Com frequência, tudo o que você precisa fazer é incluir os custos de classificação incorreta na função de erro usada para treinar a rede.

Se você é um usuário do MATLAB (como eu), recomendo vivamente o software NETLAB (Ian Nabney e Chris Bishop) ou o software que acompanha o livro Gaussian Process for Machine Learning de Rasmussen and Williams. Eu também posso recomendar fortemente o livro "Redes neurais para reconhecimento de padrões", de Chris Bishop, para qualquer pessoa que comece em redes neurais. É um livro brilhante e cobre o material com grande clareza e o nível mínimo de matemática necessário para realmente entender o que você está fazendo, e a maioria é implementada no software NETLAB (que também pode ser executado no Octave).

HTH

PS A melhor maneira de modelar com uma rede neural é provavelmente usar uma abordagem bayesiana baseada no Hybrid Monte Carlo (HMC), desenvolvido por Radford Neal. Em geral, os problemas começam na modelagem quando você tenta otimizar alguns parâmetros e acaba ajustando demais. A melhor solução é nunca otimizar nada e marginalizar (integrar) sobre parâmetros. Infelizmente, essa integração não pode ser realizada analiticamente, portanto, você precisa usar abordagens baseadas em amostragem. No entanto, isso é (a) computacionalmente caro e (b) um pouco de "arte negra" e exigia profunda compreensão e experiência.

Dikran Marsupial
fonte