una tipos redes programar paso neuronales neuronal las humana hacer funcionan como aplicaciones actualidad neural-network tensorflow hyperparameters

neural network - tipos - ¿En qué orden debemos sintonizar los hiperparámetros en las redes neuronales?



tipos de redes neuronales (4)

No conozco ninguna herramienta específica para tensorflow, pero la mejor estrategia es comenzar primero con los hiperparámetros básicos, como la tasa de aprendizaje de 0.01, 0.001, peso_decay de 0.005, 0.0005. Y luego sintonizarlos. Hacerlo manualmente tomará mucho tiempo, si está usando caffe, la siguiente es la mejor opción que tomará los hiperparámetros de un conjunto de valores de entrada y le dará el mejor conjunto.

https://github.com/kuz/caffe-with-spearmint

Para más información, puedes seguir este tutorial también:

http://fastml.com/optimizing-hyperparams-with-hyperopt/

Para la cantidad de capas, lo que sugiero que haga es primero hacer una red más pequeña y aumentar los datos, y después de tener suficientes datos, aumentar la complejidad del modelo.

Tengo una ANN bastante simple que usa Tensorflow y AdamOptimizer para un problema de regresión y ahora estoy en el punto de ajustar todos los hiperparámetros.

Por ahora, vi muchos parámetros diferentes que tengo que ajustar:

  • Tasa de aprendizaje: tasa de aprendizaje inicial, disminución de la tasa de aprendizaje
  • El AdamOptimizer necesita 4 argumentos (tasa de aprendizaje, beta1, beta2, épsilon), por lo que necesitamos ajustarlos, al menos épsilon
  • tamaño del lote
  • nb de iteraciones
  • Lambda L2-parámetro de regularización
  • Número de neuronas, número de capas
  • ¿Qué tipo de función de activación para las capas ocultas, para la capa de salida?
  • parámetro de abandono

Tengo 2 preguntas:

1) ¿Ves algún otro hiperparámetro que pueda haber olvidado?

2) Por ahora, mi ajuste es bastante "manual" y no estoy seguro de que no esté haciendo todo correctamente. ¿Hay un orden especial para ajustar los parámetros? Por ejemplo, primero la tasa de aprendizaje, luego el tamaño del lote, luego ... No estoy seguro de que todos estos parámetros sean independientes; de hecho, estoy bastante seguro de que algunos de ellos no lo son. ¿Cuáles son claramente independientes y cuáles claramente no son independientes? ¿Deberíamos entonces afinarlos juntos? ¿Hay algún artículo o artículo que habla sobre cómo ajustar correctamente todos los parámetros en un orden especial?

EDITAR: Aquí están los gráficos que obtuve para diferentes tasas de aprendizaje inicial, tamaños de lote y parámetros de regularización. La curva púrpura es completamente extraña para mí ... Debido a que el costo disminuye de manera tan lenta como los demás, pero se atascó a una tasa de precisión más baja. ¿Es posible que el modelo esté atascado en un mínimo local?

Accuracy

Cost

Para la velocidad de aprendizaje, utilicé el decaimiento: LR (t) = LRI / sqrt (época)

Gracias por tu ayuda ! Pablo


Para los parámetros que son menos importantes, es probable que pueda simplemente elegir un valor razonable y mantenerlo.

Como usted ha dicho, los valores óptimos de estos parámetros dependen unos de otros. Lo más fácil es definir un rango razonable de valores para cada hiperparámetro. Luego muestre aleatoriamente un parámetro de cada rango y entrene un modelo con esa configuración. Repite esto un montón de veces y luego elige el mejor modelo. Si tiene suerte, podrá analizar qué configuración de hiperparámetro funcionó mejor y sacar algunas conclusiones a partir de eso.


Pon en marcha el tensorboard. Trazar el error allí. Deberá crear subdirectorios en la ruta donde TB busca los datos para trazar. Yo hago esa creación subdir en el script. Así que cambio un parámetro en el script, le pongo un nombre al ensayo, lo ejecuto y grafico todos los ensayos en el mismo cuadro. Muy pronto obtendrá una idea de la configuración más efectiva para su gráfico y datos.


Mi orden general es:

  1. Tamaño del lote, ya que afectará en gran medida el tiempo de entrenamiento de futuros experimentos.
  2. Arquitectura de la red:
    • Número de neuronas en la red.
    • Número de capas
  3. Descanso (abandono, L2 reg, etc.)

Dependencias:

Supongo que los valores óptimos de

  • tasa de aprendizaje y tamaño del lote
  • tasa de aprendizaje y número de neuronas
  • número de neuronas y número de capas

Depende fuertemente el uno del otro. Aunque no soy un experto en ese campo.

En cuanto a sus hiperparámetros:

  • Para el optimizador de Adam: "Los valores recomendados en el documento son eps = 1e-8, beta1 = 0.9, beta2 = 0.999". ( source )
  • Para la tasa de aprendizaje con Adam y RMSProp, encontré que los valores alrededor de 0.001 son óptimos para la mayoría de los problemas.
  • Como alternativa a Adam, también puede usar RMSProp, que reduce la huella de memoria hasta en un 33%. Ver esta respuesta para más detalles.
  • También puede ajustar los valores de peso iniciales (consulte Todo lo que necesita es un buen inicio ). Aunque, el inicializador Xavier parece ser una buena manera de evitar tener que ajustar el peso en su interior.
  • No ajuste el número de iteraciones / épocas como un hiperparámetro. Entreno la red hasta que su error de validación converge. Sin embargo, le doy a cada carrera un presupuesto de tiempo.