Main Content

traingd

Retropropagación del gradiente descendente

Descripción

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

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

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

El entrenamiento se lleva a cabo según los parámetros de entrenamiento traingd, 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.lr: tasa de aprendizaje. El valor predeterminado es 0.01.

  • net.trainParam.max_fail: máximo de errores de validación. El valor predeterminado es 6.

  • net.trainParam.min_grad: gradiente mínimo de rendimiento. El valor predeterminado es 1e-5.

  • 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 es false.

  • net.trainParam.showWindow: mostrar la interfaz gráfica del entrenamiento. El valor predeterminado es true.

  • net.trainParam.time: tiempo máximo de entrenamiento en segundos. El valor predeterminado es inf.

Argumentos de entrada

contraer todo

Red de entrada, especificada como un objeto de red. Para crear un objeto de red, use feedforwardnet o narxnet, por ejemplo.

Argumentos de salida

contraer todo

Red entrenada, devuelta como un objeto network.

Registro de entrenamiento (epoch y perf), devuelto como una estructura cuyos campos dependen de la función de entrenamiento de la red (net.NET.trainFcn). Puede incluir campos como los siguientes:

  • Funciones y parámetros de entrenamiento, división de datos y rendimiento

  • Índices de división de datos para conjuntos de entrenamiento, validación y prueba

  • Máscaras de división de datos para conjuntos de entrenamiento, validación y prueba

  • Número de épocas (num_epochs) y la mejor época (best_epoch)

  • Una lista de los nombres de estado de entrenamiento (states)

  • Los campos de cada nombre de estado que registra su valor durante el entrenamiento

  • Rendimientos de la mejor red (best_perf, best_vperf y best_tperf)

Más acerca de

contraer todo

Uso de la red

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

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

  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 traingd.

Para ver ejemplos, consulte help feedforwardnet y help cascadeforwardnet.

Retropropagación del gradiente descendente

La función de entrenamiento del descenso más pronunciado del lote es traingd. Los pesos y sesgos se actualizan en la dirección del gradiente negativo de la función de rendimiento. Si desea entrenar una red mediante el descenso más pronunciado del lote, debería establecer la red trainFcn en traingd y, después, llamar a la función train. Solo hay una función de entrenamiento asociada a una red dada.

Hay siete parámetros de entrenamiento asociados a traingd:

  • epochs

  • show

  • goal

  • time

  • min_grad

  • max_fail

  • lr

La tasa de aprendizaje lr se multiplica por el negativo del gradiente para determinar los cambios en los pesos y sesgos. Cuanto mayor sea la tasa de aprendizaje, mayor será el paso. Si se establece una tasa de aprendizaje demasiado grande, el algoritmo se vuelve inestable. Si se establece una tasa de aprendizaje demasiado baja, el algoritmo tarda mucho tiempo en converger. Consulte las páginas 12-8 de [HDB96] para ver una explicación sobre la elección de la tasa de aprendizaje.

El estado de entrenamiento se muestra para cada show iteraciones del algoritmo. (Si show está establecido en NaN, el estado de entrenamiento no se muestra nunca). Los otros parámetros determinan cuándo se detiene el entrenamiento. El entrenamiento se detiene si el número de iteraciones excede epochs, si la función de rendimiento cae por debajo de goal, si la magnitud del gradiente es menor que mingrad o si el tiempo de entrenamiento es superior a time segundos. max_fail, que se asocia a la técnica de detención antes de tiempo, se explica en Mejorar la generalización.

El siguiente código crea un conjunto de entrenamiento de entradas p y objetivos t. Para el entrenamiento de lotes, todos los vectores de entrada se ubican en una matriz.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];

Cree la red prealimentada.

net = feedforwardnet(3,'traingd');

En este ejemplo simple, desactive una característica que se introduzca posteriormente.

net.divideFcn = '';

En este momento, puede que desee modificar algunos de los parámetros de entrenamiento predeterminados.

net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-5;

Si desea utilizar los parámetros de entrenamiento predeterminados, los comandos anteriores no son necesarios.

Ahora todo está listo para entrenar la red.

[net,tr] = train(net,p,t);

El registro de entrenamiento tr contiene información sobre el progreso del entrenamiento.

Ahora puede simular la red entrenada para obtener su respuesta a las entradas del conjunto de entrenamiento.

a = net(p)
a =
   -1.0026   -0.9962   1.0010   0.9960

Algoritmos

traingd 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:

dX = lr * dperf/dX

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

| | |