Quando comecei com redes neurais artificiais (NN), pensei que teria que combater o excesso de ajustes como o principal problema. Mas, na prática, nem consigo que meu NN ultrapasse a barreira da taxa de erro de 20%. Eu não posso nem bater minha pontuação na floresta aleatória!
Estou buscando conselhos muito gerais ou não tão gerais sobre o que fazer para que um NN comece a capturar tendências de dados.
Para implementar o NN, uso o Theano Stacked Auto Encoder com o código do tutorial que funciona muito bem (menos de 5% de taxa de erro) para classificar o conjunto de dados MNIST. É um perceptron multicamada, com a camada softmax na parte superior e cada uma delas oculta posteriormente sendo pré-treinada como autoencoder (descrito detalhadamente no tutorial , capítulo 8). Existem ~ 50 recursos de entrada e ~ 10 classes de saída. O NN possui neurônios sigmóides e todos os dados são normalizados para [0,1]. Tentei várias configurações diferentes: número de camadas ocultas e neurônios (100-> 100-> 100, 60-> 60-> 60, 60-> 30-> 15, etc.), aprendizado diferente e pré-treinamento taxas etc.
E a melhor coisa que posso obter é uma taxa de erro de 20% no conjunto de validação e uma taxa de erro de 40% no conjunto de teste.
Por outro lado, quando tento usar a Floresta Aleatória (do scikit-learn), obtenho facilmente uma taxa de erro de 12% no conjunto de validação e 25% (!) No conjunto de teste.
Como é que meu NN profundo com pré-treinamento se comporta tão mal? O que devo tentar?