trainlm
Retropropagación Levenberg-Marquardt
Descripción
net.trainFcn = 'trainlm'
establece la propiedad de red trainFcn
.
[
entrena la red con trainedNet
,tr
] = train(net
,...)trainlm
.
trainlm
es una función de entrenamiento de red que actualiza los valores de peso y sesgo de acuerdo con la optimización Levenberg-Marquardt.
trainlm
es generalmente el algoritmo de retropropagación más rápido de la toolbox, y se recomienda como el algoritmo supervisado óptimo, a pesar de que requiere más memoria que otros.
El entrenamiento se lleva a cabo según los parámetros de entrenamiento trainlm
, que se muestran a continuación con sus valores predeterminados:
net.trainParam.epochs
: número máximo de épocas que desea entrenar. El valor predeterminado es 1000.net.trainParam.goal
: objetivo de rendimiento. El valor predeterminado es 0.net.trainParam.max_fail
: máximo de errores de validación. El valor predeterminado es6
.net.trainParam.min_grad
: gradiente mínimo de rendimiento. El valor predeterminado es1e-7
.net.trainParam.mu
:mu
inicial. El valor predeterminado es 0.001.net.trainParam.mu_dec
: factor de disminución demu
. El valor predeterminado es 0.1.net.trainParam.mu_inc
: factor de aumento demu
. El valor predeterminado es 10.net.trainParam.mu_max
: valor máximo demu
. El valor predeterminado es1e10
.net.trainParam.show
: épocas entre muestras (NaN
cuando no hay muestras). El valor predeterminado es 25.net.trainParam.showCommandLine
: generar una salida en la línea de comandos. El valor predeterminado esfalse
.net.trainParam.showWindow
: mostrar la interfaz gráfica del entrenamiento. El valor predeterminado estrue
.net.trainParam.time
: tiempo máximo de entrenamiento en segundos. El valor predeterminado esinf
.
Los vectores de validación se utilizan para detener el entrenamiento antes de tiempo si el rendimiento de la red en los vectores de validación no mejora o se mantiene sin cambios durante max_fail
épocas seguidas. Los vectores de prueba se utilizan a modo de verificación adicional de que la red está generalizando bien, pero no afectan al entrenamiento.
Ejemplos
Argumentos de entrada
Argumentos de salida
Limitaciones
Esta función usa la matriz jacobiana para realizar los cálculos, lo que implica que el rendimiento es una media o suma del cuadrado de los errores. Por lo tanto, las redes entrenadas con esta función deben usar las funciones de rendimiento mse
o sse
.
Más acerca de
Algoritmos
trainlm
admite el entrenamiento con vectores de validación y de prueba si la propiedad NET.divideFcn
de la red está establecida como una función de división de datos. Los vectores de validación se utilizan para detener el entrenamiento antes de tiempo si el rendimiento de la red en los vectores de validación no mejora o se mantiene sin cambios durante max_fail
épocas seguidas. Los vectores de prueba se utilizan a modo de verificación adicional de que la red está generalizando bien, pero no afectan al entrenamiento.
trainlm
puede entrenar cualquier red, siempre y cuando su peso, entrada combinada y funciones de transferencia tengan funciones derivadas.
La retropropagación se utiliza para calcular la matriz jacobiana jX
del rendimiento perf
con respecto a las variables de peso y sesgo X
. Cada variable se ajusta según Levenberg-Marquardt:
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
donde E
son todo errores y I
es la matriz identidad.
El valor adaptativo mu
aumenta en mu_inc
hasta que el cambio anterior da como resultado un valor de rendimiento reducido. El cambio se realiza después en la red y mu
se reduce en mu_dec
.
El entrenamiento se detiene cuando tiene lugar alguna de estas condiciones:
Se ha alcanzado el número máximo de
epochs
(repeticiones).Se ha sobrepasado el máximo de
time
.El rendimiento se minimiza al
goal
.El gradiente de rendimiento está por debajo de
min_grad
.mu
sobrepasa amu_max
.El rendimiento de validación (error de validación) ha aumentado más de
max_fail
veces desde la última vez que disminuyó (al utilizar la validación).
Historial de versiones
Introducido antes de R2006a