Main Content

traingdm

Retropropagación del gradiente descendente con momento

Sintaxis

net.trainFcn = 'traingdm'
[net,tr] = train(net,...)

Descripción

traingdm es una función de entrenamiento de red que actualiza los valores de peso y sesgo de acuerdo con el gradiente descendente con momento.

net.trainFcn = 'traingdm' establece la propiedad de red trainFcn.

[net,tr] = train(net,...) entrena la red con traingdm.

El entrenamiento se lleva a cabo según los parámetros de entrenamiento traingdm, que se muestran a continuación con sus valores predeterminados:

net.trainParam.epochs1000

Número máximo de épocas que desea entrenar

net.trainParam.goal0

Objetivo de rendimiento

net.trainParam.lr0.01

Tasa de aprendizaje

net.trainParam.max_fail6

Máximo de errores de validación

net.trainParam.mc0.9

Constante de momento

net.trainParam.min_grad1e-5

Gradiente mínimo de rendimiento

net.trainParam.show25

Épocas entre las que se muestran progresos

net.trainParam.showCommandLinefalse

Generar una salida en la línea de comandos

net.trainParam.showWindowtrue

Mostrar la interfaz gráfica del entrenamiento

net.trainParam.timeinf

Tiempo máximo de entrenamiento en segundos

Uso de la red

Puede crear una red estándar que use traingdm con feedforwardnet o cascadeforwardnet. Para preparar una red personalizada que se entrene con traingdm:

  1. Establezca net.trainFcn en 'traingdm'. Esto establece net.trainParam en los parámetros predeterminados de traingdm.

  2. Establezca las propiedades net.trainParam en los valores que desee.

En cualquier caso, llamar a train con la red resultante entrena la red con traingdm.

Para ver ejemplos, consulte help feedforwardnet y help cascadeforwardnet.

Más acerca de

contraer todo

Gradiente descendente con momento

Además de traingd, existen otras tres variaciones del gradiente descendente.

Gradiente descendente con momento, implementado mediante traingdm, permite que una red responda no solo al gradiente local, sino también a las tendencias recientes en la superficie de error. Actuando como un filtro paso bajo, el momento permite a la red ignorar pequeñas características en la superficie de error. Sin momento, una red puede quedarse estancada en un mínimo local poco profundo. Con momento, una red puede superar ese mínimo. Consulte las páginas 12–9 de [HDB96] para ver una explicación sobre el momento.

El gradiente descendente con momento depende de dos parámetros de entrenamiento. El parámetro lr indica la tasa de aprendizaje, similar al gradiente descendente simple. El parámetro mc es la constante de momento que define la cantidad de momento. mc se establece entre 0 (sin momento) y valores cercanos a 1 (gran cantidad de momento). Una constante de momento de 1 da como resultado una red que es completamente insensible al gradiente local y, por lo tanto, no aprende adecuadamente.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'traingdm');
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net = train(net,p,t);
y = net(p)

Algoritmos

traingdm 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 las derivadas del rendimiento perf con respecto a las variables de peso y sesgo X. Cada variable se ajusta según el gradiente descendente con momento,

dX = mc*dXprev + lr*(1-mc)*dperf/dX

donde dXprev es el cambio anterior del peso o el sesgo.

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.

  • 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

Consulte también

| | |