Te recomendamos que pruebes esta respuesta en un entorno controlado antes de enviarlo a producción, un saludo.
Solución:
cuantas capas ocultas?
un modelo con cero las capas ocultas se resolverán linealmente separable datos. Entonces, a menos que ya sepa que sus datos no se pueden separar linealmente, no está de más verificar esto: ¿por qué usar un modelo más complejo de lo que requiere la tarea? Si es linealmente separable, entonces funcionará una técnica más simple, pero un Perceptron también hará el trabajo.
Suponiendo que sus datos requieran separación mediante una técnica no lineal, entonces siempre comienza con una capa oculta. Es casi seguro que eso es todo lo que necesitará. Si sus datos se pueden separar usando un MLP, entonces ese MLP probablemente solo necesite una única capa oculta. Hay una justificación teórica para esto, pero mi razón es puramente empírica: muchos problemas difíciles de clasificación / regresión se resuelven utilizando MLP de capa única oculta, pero no recuerdo haber encontrado ningún MLP de capa oculta múltiple utilizado para modelar datos con éxito. -ya sea en tableros de anuncios de ML, libros de texto de ML, artículos académicos, etc. Existen, ciertamente, pero las circunstancias que justifican su uso son empíricamente bastante raras.
¿Cuántos nodos hay en la capa oculta?
De la literatura académica MLP. mi propia experiencia, etc., he recopilado y a menudo confío en varias reglas generales (Putrefacción), y que también he encontrado que son guías confiables (es decir, la guía era precisa, e incluso cuando no lo era, generalmente estaba claro qué hacer a continuación):
RoT basado en mejorar la convergencia:
Cuando comiences a construir el modelo, erra por el lado de más nodos en la capa oculta.
¿Por qué? Primero, es poco probable que algunos nodos adicionales en la capa oculta hagan ningún daño; su MLP aún convergerá. Por otro lado, muy pocos nodos en la capa oculta pueden evitar la convergencia. Piénselo de esta manera, los nodos adicionales proporcionan un exceso de capacidad: pesos adicionales para almacenar / liberar la señal a la red durante la iteración (entrenamiento o construcción de modelos). En segundo lugar, si comienza con nodos adicionales en su capa oculta, entonces es fácil podarlos más tarde (durante el progreso de la iteración). Esto es común y existen técnicas de diagnóstico para ayudarlo (por ejemplo, el diagrama de Hinton, que es solo una descripción visual de las matrices de peso, un “mapa de calor” de los valores de peso).
RoT basados en el tamaño de la capa de entrada y el tamaño de la capa de salida:
Una regla general es para el tamaño de este [hidden] capa para estar en algún lugar entre el tamaño de la capa de entrada … y el tamaño de la capa de salida …
Para calcular el número de nodos ocultos usamos una regla general de: (Número de entradas + salidas) x 2/3
RoT basado en componentes principales:
Normalmente, especificamos tantos nodos ocultos como dimensiones [principal
components] necesario para capturar el 70-90% de la varianza del conjunto de datos de entrada.
Y, sin embargo, el autor de NN FAQ llama a estas Reglas “sin sentido” (literalmente) porque: ignoran el número de instancias de entrenamiento, el ruido en los objetivos (valores de las variables de respuesta) y la complejidad del espacio de características.
En su opinión (y siempre me pareció que él sabía de lo que estaba hablando), elija la cantidad de neuronas en la capa oculta en función de si su MLP incluye alguna forma de regularización o detención anticipada.
La única técnica válida para optimizar el número de neuronas en la capa oculta:
Durante la construcción de su modelo, pruebe obsesivamente; las pruebas revelarán las firmas de una arquitectura de red “incorrecta”. Por ejemplo, si comienza con un MLP que tiene una capa oculta compuesta por una pequeña cantidad de nodos (que aumentará gradualmente según sea necesario, según los resultados de la prueba), su error de entrenamiento y generalización será alto debido a sesgos y desajustes.
Luego, aumente el número de nodos en la capa oculta, uno a la vez, hasta que el error de generalización comience a aumentar, esta vez debido al sobreajuste y la alta variación.
En la práctica, lo hago de esta manera:
capa de entrada: el tamaño de mi vactor de datos (la cantidad de características en mi modelo) + 1 para el nodo de sesgo y sin incluir la variable de respuesta, por supuesto
capa de salida: solo determinado por mi modelo: regresión (un nodo) versus clasificación (número de nodos equivalente al número de clases, asumiendo softmax)
capa oculta: para comenzar, una capa oculta con un número de nodos igual al tamaño de la capa de entrada. Es más probable que el tamaño “ideal” sea más pequeño (es decir, una cierta cantidad de nodos entre el número en la capa de entrada y el número en la capa de salida) en lugar de más grande; nuevamente, esto es solo una observación empírica, y el volumen de esta observación es mi propia experiencia. Si el proyecto justificó el tiempo adicional requerido, entonces comienzo con una sola capa oculta compuesta por una pequeña cantidad de nodos, luego (como expliqué anteriormente) agrego nodos a la Capa Oculta, uno a la vez, mientras calculo la generalización error, error de entrenamiento, sesgo y varianza. Cuando el error de generalización ha disminuido y justo antes de que comience a aumentar nuevamente, la cantidad de nodos en ese punto es mi elección. Consulte la figura siguiente.
Es muy difícil elegir la cantidad de neuronas en una capa oculta y elegir la cantidad de capas ocultas en su red neuronal.
Por lo general, para la mayoría de las aplicaciones, una capa oculta es suficiente. Además, la cantidad de neuronas en esa capa oculta debe estar entre la cantidad de entradas (10 en su ejemplo) y la cantidad de salidas (5 en su ejemplo).
Pero la mejor forma de elegir la cantidad de neuronas y capas ocultas es la experimentación. Entrene varias redes neuronales con diferentes números de capas ocultas y neuronas ocultas, y mida el rendimiento de esas redes mediante la validación cruzada. Puede seguir con el número que produzca la red de mejor rendimiento.
Para automatizar la selección del mejor número de capas y el mejor número de neuronas para cada una de las capas, puede utilizar optimización genética.
los key piezas serían:
- Cromosoma: Vector que define cuántas unidades en cada capa oculta (p. Ej. [20,5,1,0,0] es decir, 20 unidades en la primera capa oculta, 5 en la segunda, …, faltan las capas 4 y 5). Puede establecer un límite en el número máximo de capas para probar y el número máximo de unidades en cada capa. También debe establecer restricciones sobre cómo se generan los cromosomas. P.ej [10, 0, 3, … ] no debería generarse, porque cualquier unidad después de una capa faltante (el ‘3, …’) sería irrelevante y desperdiciaría ciclos de evaluación.
- Función de fitness: Una función que devuelve el recíproco del error de entrenamiento más bajo en el conjunto de validación cruzada de una red definida por un cromosoma dado. También puede incluir el número de unidades totales o el tiempo de cálculo si desea encontrar la “red más pequeña / rápida pero más precisa”.
También puede considerar:
- Poda: Comience con una red grande, luego reduzca las capas y las unidades ocultas, mientras realiza un seguimiento del rendimiento del conjunto de validación cruzada.
- Creciente: Comience con una red muy pequeña, luego agregue unidades y capas, y nuevamente realice un seguimiento del rendimiento del conjunto de CV.