Pregunta

Estoy creando una herramienta para predecir el tiempo y el costo de los proyectos de software basados ??en datos del pasado. La herramienta utiliza una red neuronal para hacer esto y hasta ahora, los resultados son prometedores, pero yo creo que pueda hacer mucho más optimización con sólo cambiar las propiedades de la red. No parece haber ninguna regla o incluso muchos mejores prácticas cuando se trata de estos ajustes así que si alguien con experiencia me podría ayudar a que sería de gran aprecio.

Los datos de entrada se compone de una serie de números enteros que podría ir tan alto como el usuario quiere ir, pero la mayoría estará bajo 100.000, habría pensado. Algunos serán tan bajo como 1. Son detalles como el número de personas en un proyecto y el costo de un proyecto, así como detalles acerca de las entidades de base de datos y casos de uso.

Hay 10 entradas en total y 2 salidas (el tiempo y costo). Estoy usando Propagación resiliente para entrenar la red. Actualmente tiene: 10 nodos de entrada, 1 capa oculta con 5 nodos y 2 nodos de salida. Estoy entrenando a meterse debajo de una tasa de error del 5%.

El algoritmo debe ejecutarse en un servidor web por lo que he puesto en una medida para detener la formación cuando parece que no va a ninguna parte. Esto se establece en 10.000 iteraciones de entrenamiento.

En la actualidad, cuando trato de entrenar con algunos datos que son un poco variados, pero dentro de los límites de lo que esperamos los usuarios a poner en él, se necesita mucho tiempo para entrenar, golpeando el límite de 10.000 iteración sobre y de nuevo.

Esta es la primera vez que he utilizado una red neuronal y no se sabe muy bien qué esperar. Si usted me podría dar algunas pistas sobre qué tipo de configuración que debería usar para la red y para el límite de iteraciones que sería de gran aprecio.

Gracias!

¿Fue útil?

Solución

En primer lugar, gracias por proporcionar tanta información sobre su red! Aquí están algunas sugerencias que debe darle una imagen más clara.

  • Usted necesita para normalizar sus entradas. Si un nodo ve un valor medio de 100.000 y otro sólo 0.5, no verá un impacto igual de las dos entradas. Es por ello que necesita para normalizarlos.
  • A sólo 5 neuronas ocultas para los nodos 10 de entrada recuerdo haber algún lugar de leer que necesita al menos el doble de la cantidad de entradas; tratar más de 20 neuronas ocultas. Esto le proporcionará a su modelo de red neuronal la capacidad para desarrollar un modelo más complejo. Sin embargo, demasiadas neuronas y su red se acaba de memorizar el conjunto de datos de entrenamiento.
  • retropropagación elástica está bien. Sólo recuerde que hay otros algoritmos de entrenamiento por ahí como Levenberg-Marquardt.
  • ¿Cuántos conjuntos de formación tiene? Las redes neuronales en general tienen una gran base de datos para ser bueno en hacer predicciones útiles.
  • Considere añadir un factor de impulso a su algoritmo de entrenamiento con pesas para acelerar las cosas si no lo ha hecho ya.
  • La formación en línea tiende a ser mejor para hacer predicciones generalizadas que el entrenamiento por lotes. Los ex actualiza los pesos después de ejecutar cada conjunto de entrenamiento a través de la red, mientras que la última actualización de la red después de pasar a través de cada conjunto de datos. Es su llamada.
  • Es el discreto o continuo de datos? Las redes neuronales tienden a hacer un mejor trabajo con 0s y 1s que las funciones continuas. Si es lo primero, me gustaría recomendar el uso de la función de activación sigmoide. Una combinación de funciones tanh y activación linear para las capas ocultas y de salida tienden a hacer un trabajo bueno con datos continuamente-variables.
  • ¿Necesita otra capa oculta? Puede ayudar si la red se ocupa de mapeo de la superficie de entrada-salida compleja.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top