La depuración de las redes neuronales generalmente implica ajustar hyperparameters, la visualización de la aprendió de los filtros, y el trazado de los valores más importantes. Podría usted compartir lo hyperparameters has estado usando?
- ¿Cuál es el tamaño de su lote?
- ¿Cuál es tu ritmo de aprendizaje?
- ¿Qué tipo de autoencoder se está utilizando?
- Has probado a utilizar una eliminación de ruido Autoencoder? (Lo de la corrupción de los valores que han intentado?)
- Cuántas capas ocultas y de qué tamaño?
- ¿Cuáles son las dimensiones de tus imágenes de entrada?
El análisis de los registros de entrenamiento también es útil. Trace una gráfica de la reconstrucción de la pérdida (eje Y) como una función de la época (eje X). Es la reconstrucción de la pérdida convergentes o divergentes?
He aquí un ejemplo de un autoencoder para el género humano la clasificación que se divergentes, fue detenido después de 1500 épocas, había hyperparameters tuned (en este caso una reducción en el ritmo de aprendizaje), y se reinicia con los mismos pesos que fueron divergentes y, finalmente, convergente.
Aquí uno que convergen: (queremos que este)
Vainilla "sin restricciones"puede ejecutar en un problema que simplemente aprender la asignación de identidad. Esa es una de las razones por las que la comunidad ha creado la eliminación de ruido, Escasa, y la Contractura sabores.
Podría publicar un pequeño subconjunto de los datos aquí? Yo estaría más que dispuesto a mostrar los resultados de una de mis autoencoders.
En una nota lateral: usted puede preguntarse a sí mismo ¿por qué estás usando imágenes de los gráficos en el primer lugar de los gráficos con los que fácilmente podría ser representado como un vector de datos. I. e.,
[0, 13, 15, 11, 2, 9, 6, 5]
Si eres capaz de reformular el problema como el anterior, básicamente estás haciendo la vida de su auto-codificador más fácil. No es la primera necesidad de aprender a ver las imágenes antes de que se pueda tratar de aprender de la generación de la distribución.
Seguimiento de la respuesta (a la vista de los datos.)
Aquí están los filtros de 1000 oculto de la unidad, de una sola capa de eliminación de ruido Autoencoder. Tenga en cuenta que algunos de los filtros son aparentemente al azar. Eso es porque he parado de entrenar tan temprano y que la red no tiene tiempo para aprender de esos filtros.
Aquí están las hyperparameters que he entrenado con:
batch_size = 4
epochs = 100
pretrain_learning_rate = 0.01
finetune_learning_rate = 0.01
corruption_level = 0.2
Dejé de pre-entrenamiento después de la 58ª época debido a los filtros fueron lo suficientemente buenas como para publicar aquí. Si yo fuera usted, me gustaría entrenar a un total de 3 capas Apiladas de eliminación de ruido Autoencoder con un 1000x1000x1000 arquitectura para empezar.
Aquí están los resultados de la sintonización fina de paso:
validation error 24.15 percent
test error 24.15 percent
Así en un primer vistazo, parece mejor que el azar, sin embargo, cuando nos fijamos en los datos de ruptura entre las dos etiquetas vemos que tiene exactamente el mismo porcentaje (75.85% rentable y 24.15% rentable). Lo que significa que la red ha aprendido simplemente a responder "rentable", independientemente de la señal. Probablemente me este tren por un tiempo más largo con una mayor red para ver qué pasa. También, parece que estos datos se genera a partir de algún tipo de subyacente financiera del conjunto de datos. Yo recomendaría que usted busca en Redes Neuronales Recurrentes después de la reformulación de su problema en los vectores, como se describe anteriormente. RNNs puede ayudar en la captura de algunos de los temporales de las dependencias que se encuentran en unicc datos como este. Espero que esto ayude.