6 votos

Formación de una red neuronal

Estoy tratando de entrenar una Red Neuronal Artificial para la clasificación. En las capas de entrada, he 402 neuronas; los primeros 400 son binarios, y las dos últimas son flotantes puntos en el rango de -1 a 1. En la capa oculta he de 400 neuronas, y en la capa de salida tengo un nodo único que quiero representar valores entre -1 y 1.

He tratado de formar esta red a través de una vectorizados implementación de propagación hacia atrás que he encontrado en internet (he intentado diferentes implementaciones, y también implementado uno mismo). Mi problema es que mi red no parecen aprender mucho. Si mi tasa de aprendizaje es mayor que alrededor de 0.0001, me meten en problemas, y rápidamente entra en un mínimo local, y con una menor tasa de aprendizaje el aprendizaje es (obviamente) muy muy lento.

Puedo como mucho los datos de entrenamiento como sea posible, así que esto no es un problema, pero, por supuesto, el tiempo es limitante, así que me gustaría ser capaz de entrenar a esta red en una hora decente.

¿Tiene alguna intuición sobre lo que podría estar equivocado, o la cantidad de datos que se necesita para formar esta red de alrededor de 160.000 pesos?

Si es pertinente, puedo subir algunos de los datos.

Editar: Debido a que el comentario de Martin, he aquí algunas de aprendizaje estadísticas para diferentes número de neuronas ocultas: Hoja de cálculo de Google Docs

Otra cosa que he observado, es que para mi conjunto de datos, una salida constante de 0.3 resultará en un ESS de alrededor de 160, así que definitivamente quiero conseguir por debajo de este ESS.

7voto

Martin O'Leary Puntos 2046

Si el tiempo es un factor limitante, usted podría tratar de reducir el número de unidades ocultas sustancialmente. En mi experiencia, es muy raro que la necesidad de este muchas unidades ocultos. Me gustaría empezar con una pequeña cantidad (menos de diez) de unidades ocultas, y ver si esto le da un rendimiento adecuado.

Si usted está más preocupado acerca de los mínimos locales, tal vez vale la pena tratar de agregar un componente estocástico a su algoritmo, basado en recocido simulado o estocástico de gradiente de la pendiente. Esto puede ralentizar las cosas un poco, pero va a evitar mínimos locales de ser un problema.

3voto

AlanBarber Puntos 146

Gradiente de la pendiente suele ser un mal algoritmo de optimización. Pruebe uno de los siguientes:

  • estocástico de gradiente de la pendiente
  • De Levenberg-Marquardt.
  • gradiente conjugado

Estos algoritmos son generalmente

  1. más rápido y
  2. lograr mejores resultados

E. g. los "dos pilares" problema puede ser resuelto por la gradiente de la pendiente en >10.000 iteraciones y por el de Levenberg-Marquardt en < 300 iteraciones.

Creo que hay un consejo sobre el conjunto de entrenamiento y el tamaño de la red neuronal FAQ pero no puedo encontrar en el momento. Normalmente debe ser el número de entradas * n, donde n es suficientemente grande (OK, esto probablemente no va a ayudar a usted).

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