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 capas ocultas en un MLP y cuántos neurales? nodos en 1 capa oculta?
machine-learning
neural-network
deep-learning
perceptron
Abhishek kumar
fuente
fuente
Respuestas:
cuantas capas ocultas ?
un modelo con cero capas ocultas resolverá datos linealmente separables . 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 una técnica más simple funcionará, pero un Perceptron también hará el trabajo.
Suponiendo que sus datos requieran separación mediante una técnica no lineal, entonces siempre comience 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 de clasificación / regresión difíciles 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 ( RoT ), y que también he encontrado que son guías confiables (es decir, la guía fue precisa, e incluso cuando no lo fue, normalmente estaba claro qué hacer a continuación):
RoT basado en mejorar la convergencia:
¿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, es fácil podarlos más adelante (durante el progreso de la iteración). Esto es común y existen técnicas de diagnóstico para ayudarlo (por ejemplo, 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:
RoT basado en componentes principales:
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 sabe de lo que está 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 (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 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 empezar , una capa ocultacon 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, 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; 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é antes) 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.
fuente
Es muy difícil elegir la cantidad de neuronas en una capa oculta y elegir la cantidad de capas ocultas en su red neuronal.
Generalmente, 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.
fuente
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 la optimización genética .
Las piezas clave serían:
También puede considerar:
fuente
Recientemente hay un trabajo teórico sobre este https://arxiv.org/abs/1809.09953 . Suponiendo que usa un RELU MLP, todas las capas ocultas tienen el mismo número de nodos y su función de pérdida y la función real que está aproximando con una red neuronal obedecen algunas propiedades técnicas (en el documento), puede elegir su profundidad para ser de orden $ \ log (n) $ y su ancho de capas ocultas será del orden $ n ^ {d / (2 (\ beta + d))} \ log ^ 2 (n) $. Aquí $ n $ es su tamaño de muestra, $ d $ es la dimensión de su vector de entrada y $ \ beta $ es un parámetro de suavidad para su función verdadera. Dado que $ \ beta $ es desconocido, probablemente querrá tratarlo como un hiperparámetro.
Al hacer esto, puede garantizar que con una probabilidad que converja a $ 1 $ como función del tamaño de la muestra, su error de aproximación converja a $ 0 $ como una función del tamaño de la muestra. Dan la tarifa. Tenga en cuenta que no se garantiza que esta sea la "mejor" arquitectura, pero al menos puede brindarle un buen lugar para comenzar. Además, mi propia experiencia sugiere que cosas como la deserción escolar aún pueden ayudar en la práctica.
fuente