Main Content

trainbr

Retropropagación de regularización bayesiana

Descripción

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

ejemplo

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

trainbr es una función de entrenamiento de red que actualiza los valores de peso y sesgo de acuerdo con la optimización Levenberg-Marquardt. Minimiza una combinación de errores cuadráticos y pesos, y, después, determina la combinación correcta para producir una red que generalice bien. El proceso se denomina regularización bayesiana.

El entrenamiento se lleva a cabo según los parámetros de entrenamiento trainbr, 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.mu: parámetro de adaptación de Marquardt. El valor predeterminado es 0.005.

  • net.trainParam.mu_dec: factor de disminución de mu. El valor predeterminado es 0.1.

  • net.trainParam.mu_inc: factor de aumento de mu. El valor predeterminado es 10.

  • net.trainParam.mu_max: valor máximo de Mu. El valor predeterminado es 1e10.

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

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

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

Las paradas de validación están deshabilitadas de forma predeterminada (max_fail = inf) para que el entrenamiento pueda continuar hasta que se encuentre una combinación óptima de errores y pesos. No obstante, se puede obtener alguna minimización de peso/sesgo con tiempos de entrenamientos menores si la validación se activa estableciendo max_fail en 6 u otro valor estrictamente positivo.

Ejemplos

contraer todo

Este ejemplo muestra cómo resolver un problema con entradas p y objetivos t mediante una red. Implica ajustar una onda sinusoidal con ruido.

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

Se crea una red prealimentada con una capa oculta de 2 neuronas.

net = feedforwardnet(2,'trainbr');

Aquí se entrena y prueba la red.

net = train(net,p,t);
a = net(p)

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)

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

contraer todo

Uso de la red

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

  1. Establezca NET.trainFcn en 'trainbr'. Esto establece NET.trainParam en los parámetros predeterminados de trainbr.

  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 trainbr. Para ver ejemplos, consulte feedforwardnet y cascadeforwardnet.

Algoritmos

trainbr puede entrenar cualquier red, siempre y cuando su peso, entrada combinada y funciones de transferencia tengan funciones derivadas.

La regularización bayesiana minimiza una combinación lineal de errores cuadráticos y pesos. También modifica la combinación lineal para que, al final del entrenamiento, la red resultante tenga buenas calidades de generalización. Consulte MacKay (Neural Computation, Vol. 4, No. 3, 1992, pp. 415 to 447) y Foresee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997) para acceder a más explicaciones detalladas sobre la regularización bayesiana.

La regularización bayesiana tiene lugar dentro del algoritmo de Levenberg-Marquardt. 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 mostrado anteriormente 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 a mu_max.

Referencias

[1] MacKay, David J. C. "Bayesian interpolation." Neural computation. Vol. 4, No. 3, 1992, pp. 415–447.

[2] Foresee, F. Dan, and Martin T. Hagan. "Gauss-Newton approximation to Bayesian learning." Proceedings of the International Joint Conference on Neural Networks, June, 1997.

Historial de versiones

Introducido antes de R2006a