machine-learning - mexico - neural networks and deep learning pdf
arquitectura de perceptrón multicapa(MLP): ¿criterios para elegir el número de capas ocultas y el tamaño de la capa oculta? (3)
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, el número de neuronas en esa capa oculta debe estar entre el número de entradas (10 en su ejemplo) y el número 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 usando cross-validation . Puede quedarse con el número que produce la red de mejor rendimiento.
Si tenemos 10 vectores propios, entonces podemos tener 10 nodos neuronales en la capa de entrada. Si tenemos 5 clases de salida, entonces podemos tener 5 nodos en la capa de salida. Pero ¿cuál es el criterio para elegir el número de capa oculta en un MLP y cuántos neuronales nodos en 1 capa oculta?
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 usar la optimización genética .
Las piezas clave serían:
- Cromosoma : Vector que define cuántas unidades en cada capa oculta (por ejemplo [20,5,1,0,0] significan 20 unidades en la primera capa oculta, 5 en segundo, ..., con las capas 4 y 5 faltantes). 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 de cómo se generan los cromosomas. Por ejemplo, no se debe generar [10, 0, 3, ...], porque cualquier unidad después de una capa faltante (el ''3, ...'') sería irrelevante y desperdiciaría los ciclos de evaluación.
- Función de acondicionamiento físico : 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 total de unidades o el tiempo de cálculo si desea encontrar la "red más pequeña / más 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.
- Crecimiento : Comience con una red muy pequeña, luego agregue unidades y capas, y vuelva a hacer un seguimiento del rendimiento del conjunto CV.
¿Cuántas capas ocultas ?
un modelo con cero capas ocultas resolverá los datos linealmente separables . Entonces, a menos que usted ya sepa que sus datos no son separables linealmente, no está de más verificar esto, ¿por qué utilizar un modelo más complejo de lo que requiere la tarea? Si es linealmente separable, una técnica más simple funcionará, pero un Perceptron también hará el trabajo.
Suponiendo que sus datos requieren separación por una técnica no lineal, siempre comience con una capa oculta . Casi seguro que eso es todo lo que necesitarás. Si sus datos son separables usando un MLP, entonces ese MLP probablemente solo necesite una sola 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 MLP de capas ocultas múltiples usadas para modelar datos con éxito. ya sea en los tableros de anuncios de ML, en los libros de texto ML, en los artículos académicos, etc. Existen, sin duda, pero las circunstancias que justifican su uso son empíricamente bastante raras.
¿Cuántos nodos en la capa oculta?
De la literatura académica de MLP. mi propia experiencia, etc., he reunido y a menudo confío en varias reglas generales ( RoT ), y que también he encontrado que son guías confiables (es decir, la guía era precisa, e incluso cuando no lo era, por lo general, estaba claro qué hacer a continuación):
RoT basado en mejorar la convergencia:
Cuando comience la construcción del modelo, err en el lado de más nodos en la capa oculta.
¿Por qué? En primer lugar, es probable que algunos nodos adicionales en la capa oculta no causen 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 señal a la red durante la iteración (capacitación o creación de modelos). Segundo, si comienzas con nodos adicionales en tu 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, Hinton Diagram, que es solo una representación visual de las matrices de peso, un "mapa de calor" de los valores de peso,).
RoTs basado en el tamaño de la capa de entrada y el tamaño de la capa de salida:
Una regla práctica es que el tamaño de esta capa [oculta] esté 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 utilizamos una regla general de: (Número de entradas + salidas) x 2/3
RoTs basado en componentes principales:
Normalmente, especificamos tantos nodos ocultos como dimensiones [componentes principales] necesarios para capturar el 70-90% de la varianza del conjunto de datos de entrada .
Y sin embargo, el autor RoTs 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 sabe de lo que está hablando), elija la cantidad de neuronas en la capa oculta en función de si su MLP incluye algún tipo de regularización o detención temprana .
La única técnica válida para optimizar el número de neuronas en la capa oculta:
Durante la construcción de tu modelo, prueba obsesivamente; las pruebas revelarán las firmas de la arquitectura de red "incorrecta". Por ejemplo, si comienza con un MLP que tiene una capa oculta compuesta por un pequeño número de nodos (que aumentará gradualmente según sea necesario, según los resultados de las pruebas), su entrenamiento y el error de generalización serán altos debido a la parcialidad y la falta de ajuste.
A continuación, aumente la cantidad de nodos en la capa oculta, uno a la vez, hasta que el error de generalización comience a aumentar, esta vez debido a un ajuste excesivo y una gran variación.
En la práctica, lo hago de esta manera:
capa de entrada : el tamaño de mi vactor de datos (el número 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 determinada por mi modelo: regresión (un nodo) versus clasificación (número de nodos equivalentes 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. El tamaño "ideal" es más probable que sea más pequeño (es decir, cierto número 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; de nuevo, esto es solo una observación empírica, y el volumen de esta observación es mi propia experiencia. Si el proyecto justifica el tiempo adicional requerido, entonces empiezo con una sola capa oculta compuesta por un pequeño número de nodos, luego (como expliqué justo arriba) 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. Ver la figura a continuación.