¿Cómo se deben seleccionar los parámetros al ajustar las redes neuronales?

Ajustar los parámetros de una red neuronal es un proceso complicado, y existen muchos enfoques diferentes, pero no hay un tamaño único que se adapte mejor a mi conocimiento. Uno de los parámetros más importantes para seleccionar es la tasa de aprendizaje.

Adaptar la tasa de aprendizaje a medida que avanza su modelo es un enfoque que se puede tomar para reducir el tiempo de capacitación y evitar los mínimos locales. El enfoque más común aquí es comenzar con una pequeña tasa de aprendizaje y aumentarla exponencialmente si dos épocas seguidas reducen el error, mientras que, por otro lado, lo disminuyen rápidamente si ocurre un aumento significativo de error.

Otro enfoque se basa en la dirección del gradiente. En este caso, comienza con una pequeña tasa de aprendizaje nuevamente, pero esta vez la aumenta si dos épocas seguidas tienen una dirección de gradiente bastante similar o, por otro lado, la disminuye drásticamente si la dirección difiere mucho.

Un tercer enfoque es elegir una tasa de aprendizaje separada para cada peso, y luego modificar la tasa para cada peso a medida que entrena. Si después de carreras sucesivas el peso se mueve en la misma dirección, continúe y aumente la tasa de aprendizaje. Por otro lado, si el peso se mueve en la dirección opuesta, baje la tasa de aprendizaje para ese peso en particular.

Si el error fue un paisaje y estabas buscando el punto más bajo de ese paisaje, estos enfoques te ayudarían a ubicar el área donde las cuevas corren más profundo rápidamente para que no estés caminando por cada pequeño callejón que encuentres tratando de encontrar el fondo. Sin embargo, una vez que llegas al lugar donde las cuevas son más profundas, comienzas a moverte con cuidado y precisión para asegurarte de encontrar la que sea la más baja.

Otros dos parámetros importantes son la profundidad y el ancho de la red neuronal. Esto realmente depende del problema en cuestión. Si bien, por lo general, el enfoque más simple es mejor cuando se trata de problemas de aprendizaje automático, las técnicas avanzadas de regularización, como el abandono cuando se usan redes neuronales, pueden permitir redes muy profundas y anchas, al tiempo que conservan la capacidad de generalizar. Por lo general, voy tan profundo y ancho como sea necesario para obtener el error de validación óptimo usando la validación cruzada k-fold pero no más profundo o más ancho de lo necesario para llegar allí. Si agregar una nueva capa no proporciona una disminución significativa en el error de validación, lo más probable es que no sea necesario agregar más capas. Lo mismo ocurre con las neuronas en cada capa.

Por último viene el error de entrenamiento. A menudo es común entrenar una red neuronal hasta que se alcanza un cierto error de entrenamiento, luego detenerse allí. Normalmente estableceré esto en un valor muy bajo, pero monitorearé la red mientras se entrena. Una vez que vea que el error de entrenamiento disminuye pero el error de validación aumenta de manera constante, ese valor justo antes de que esto comience a ocurrir es, por lo general, el mejor error de entrenamiento para entrenar hasta que golpee para no comenzar a adaptarse demasiado.

Espero que haya ayudado, avíseme si tiene más preguntas.

La optimización de hiperparámetros sigue siendo una pregunta abierta en Deep Learning. Actualmente no hay buenos marcos teóricos para hacerlo y la intuición, la experimentación y la búsqueda aleatoria reinan. Dicho esto, los métodos bayesianos también han demostrado ser prometedores. Echa un vistazo a autoML https://sites.google.com/site/au

Las respuestas aquí son geniales. También encontré otra respuesta particularmente relevante a lo que ya está escrito aquí sobre cómo ajustar estos parámetros de manera eficiente aquí:

La respuesta de Jonathan Schwarz a ¿Es posible ajustar los hiperparámetros de una red neuronal de manera eficiente?

La búsqueda de cuadrícula es la más segura y utilizada