Estoy usando la función nnet en R para entrenar mi red neuronal. No estoy obteniendo lo que es el parámetro de decaimiento en nnet es? ¿Este tamaño de paso se utilizará en el menú de descenso de gradiente o en el parámetro de regularización utilizado para superar el sobreajuste?Propósito del parámetro de disminución en la función nnet en R?
Respuesta
Se regulariza para evitar el exceso de ajuste.
decay:
parámetro para el decaimiento de peso. Por defecto 0.
Más información está disponible en el libro de los autores, Modern Applied Statistics with S. Fourth Edition, página 245:
Una forma de asegurar que f es suave es restringir la clase de las estimaciones, por ejemplo, usando una cantidad limitada de nudos spline. Otra forma es regularización en el que el criterio de ajuste se altera para
E + λC(f)
con una penalización de C en el ‘rugosidad’ de f. La degradación del peso, específica de las redes neuronales , usa como penalización la suma de cuadrados de los pesos wij. ... El uso de la reducción de peso parece ayudar tanto al proceso de optimización como a para evitar sobrefatizar. (Énfasis añadido)
Complementando blahdiblah 's respuesta por mirar el código fuente Creo que el parámetro weights
corresponde a la tasa de aprendizaje de propagación hacia atrás (leyendo el manual no podía entender lo que era) Mira el archivo nnet.c, línea , la función dentro fpass:
TotalError += wx * E(Outputs[i], goal[i - FirstOutput]);
aquí, en una nomenclatura muy intuitiva, E
corresponde al error pb y wx
es un parámetro pasado a la función, que finalmente corresponde al identificador Weights[i]
.
También puede estar seguro de que el parámetro decay
es de hecho lo que dice ser, vaya a las líneas 317 ~ 319 del mismo archivo, la función dentro VR_dfunc:
for (i = 0; i < Nweights; i++)
sum1 += Decay[i] * p[i] * p[i];
*fp = TotalError + sum1;
donde p
corresponde a los pesos de las conexiones, que es la definición exacta de regularización de pérdida de peso.
Gracias por su útil respuesta. Estoy intentando configurar un modelo secuencial en Keras para imitar el comportamiento de nnet, pero no parecen coincidir. El argumento "decaimiento" en NNET parece ser equivalente al parámetro de regularización L2 en Keras, pero parte del código en nnet.c es confuso. Primera pregunta: ¿por qué se indexa "Decay" en absoluto? ¿No es solo un valor fijo utilizado para multiplicar la suma de pesos cuadrados? Segunda pregunta: ¿qué es el objeto "pendientes" y por qué se multiplica por "decaimiento"? Tercera pregunta: ¿la disminución se aplica a todos los pesos o solo a las conexiones entre la entrada y la capa oculta? – Josh
- 1. Propósito del parámetro args de getLoaderManager(). InitLoader (..., ..., ...)?
- 2. "este" en el parámetro de la función
- 3. Trazado del modelo de red neuronal del paquete nnet R cran
- 4. Disminución del ancho de banda en C#
- 5. Disminución del ancho de banda en Python
- 6. Disminución de rangos en Haskell
- 7. ¿Cuál es el propósito de un parámetro llamado "indefinido" en una función de JavaScript?
- 8. ¿Cuál es el propósito del segundo parámetro de deepcopy, memo?
- 9. Inserción variable de función en título del gráfico en R
- 10. nombre de columna como parámetro de la función en el lenguaje R
- 11. Animación del tamaño de UILabel disminución
- 12. Cálculo de disminución de tamaño en perspectiva
- 13. orden de evaluación del parámetro de función
- 14. Función de cronómetro en R
- 15. ¿Cómo asignar el parámetro en la función?
- 16. Explicar la función quantile() en R
- 17. Parámetro de la plantilla de la plantilla en la función
- 18. memoria de imagen disminución
- 19. Disminución de las solicitudes POST en la aplicación de raíles
- 20. ¿Es posible cambiar el valor del parámetro de la función?
- 21. Comprobación de la falta de parámetro en la función
- 22. ¿Cómo se puede usar un parámetro de función sin mencionarlo en el cuerpo de la función?
- 23. función como parámetro vs puntero de función como parámetro
- 24. Propósito del árbol de utilidades en ATAM
- 25. ¿Cómo aplico una función multiparamétrica en R?
- 26. Pasar un parámetro en lugar de devolverlo de la función
- 27. Propósito del impulso :: checked_desert
- 28. Aumento (o disminución) de la memoria disponible para los procesos R
- 29. Dónde está el parámetro predeterminado en la función de Python
- 30. ¿Qué significa * & en un parámetro de función
Si eso fuera cierto, la configuración de decaimiento = 0 debería dar como resultado un modelo sobreequipado (con la mejor precisión de conjunto de entrenamiento posible). En mi caso, en cambio, obtuve una muy mala precisión en el conjunto de entrenamiento (alrededor del 10%). Dando decaimiento = 1e-4 -> .8294, decaimiento = 2e-4 -> .8832, 5e-3 -> .9924, 1e-2 -> .9954, 1e-1 -> .9966, 1 -> .9644 .Entonces, creo que el decaimiento debe ser un parámetro para disminuir la tasa de aprendizaje de la función de optimización –
. Si realmente quieres estar seguro, puedes mirar [en la fuente] (http://cran.r-project.org/src/contrib /nnet_7.3-1.tar.gz). Todo es menos de 700 líneas, y con un ojo evidente hacia la comprensibilidad. No he estado inundado de redes neuronales lo suficiente como para seguirlo fácilmente, pero tal vez lo encuentres más fácil. – blahdiblah
http://stats.stackexchange.com/questions/29130/difference-between-neural-net-weight-decay-and-learning-rate – Fernando