25 votos

Autoencoders puede ' t aprender características significativas

Tengo 50.000 imágenes como estas dos:

data exampledata example2

En ellos se describen los gráficos de datos. Quería extraer características de estas imágenes, así que he usado autoencoder código proporcionado por Theano (deeplearning.net).

El problema es que estos autoencoders no parecen aprender cualquiera de las funciones. He intentado de gestión por resultados y es el mismo.

Conjunto de datos MNIST proporciona buenas características pero que mis datos no dan ninguna. Te adjunto algunos ejemplos a continuación:

Los filtros creados en MNIST:

mnist filter

Los filtros creados por el entrenamiento en mis datos:

filters from my data

He utilizado diferentes permutaciones de la capa oculta y tamaños de entrenamiento, pero los resultados son siempre los mismos.

Por qué no funciona? ¿Por qué no puede autoencoders extraer características de estas imágenes?

EDITAR:

Para cualquier persona que tiene un problema similar. La solución fue muy simple y la causa realmente tonto. Simplemente me olvidé de cambiar la escala de los valores de los píxeles RGB de codificación de flotar en el rango de 0 - 1.

Reescalado valores resuelto el problema.

15voto

sabalaba Puntos 450

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.

3voto

river Puntos 25

No tengo suficiente rep para comentar, así que voy a poner esto en la respuesta. No sé exactamente el motivo, sin embargo:

  1. El patrón en la parte inferior izquierda de la región es similar a su segundo ejemplo, y el patrón en la parte inferior derecha de la esquina parece muy parecido a su primer ejemplo, cuando inspeccionado de cerca. La pregunta es, ¿cuánta variedad está en el origen de datos? Si todos los 50 000 imágenes son variaciones de un mismo patrón, estos 3 característica significativa de los mapas vemos puede ser más que suficiente para autoencoder para explicar y reconstruir todos sus datos.

  2. Segundo, es posible que desee buscar en el error de reconstrucción y reales de las imágenes reconstruidas. Cómo de buenos resultados? Si la reconstrucción de error es bajo, usted tiene podría tener un overfit, tal vez debido a las razones descritas a continuación (o tal vez la combinación de estos 3 modelos es suficiente para describir todos los datos del interesado). De lo contrario, autoencoder simplemente no puede aprender a reconstruir sus datos y necesita mayor autoencoder o mejor algoritmo de entrenamiento.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X