Main Content

Aproximación de base radial

En este ejemplo se utiliza la función NEWRB para crear una red de base radial que aproxima una función definida por un conjunto de puntos de datos.

Defina 21 entradas P y objetivos T asociados.

X = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ...
      .1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ...
      .3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(X,T,'+');
title('Training Vectors');
xlabel('Input Vector P');
ylabel('Target Vector T');

Figure contains an axes object. The axes object with title Training Vectors, xlabel Input Vector P, ylabel Target Vector T contains a line object which displays its values using only markers.

Nos gustaría encontrar una función que ajuste los 21 puntos de datos. Una forma de hacerlo es mediante una red de base radial. Una red de base radial es una red con dos capas: una capa oculta de neuronas de base radial y una capa de salida de neuronas lineales. A continuación verá la función de transferencia de base radial que utiliza la capa oculta.

x = -3:.1:3;
a = radbas(x);
plot(x,a)
title('Radial Basis Transfer Function');
xlabel('Input p');
ylabel('Output a');

Figure contains an axes object. The axes object with title Radial Basis Transfer Function, xlabel Input p, ylabel Output a contains an object of type line.

Los pesos y los sesgos de cada neurona de la capa oculta definen la posición y la anchura de una función de base radial. Cada neurona de salida lineal forma una suma ponderada de estas funciones de la base radial. Con los valores de peso y sesgo correctos para cada capa y con suficientes neuronas ocultas, una red de base radial puede ajustar cualquier función con la precisión deseada. A continuación encontrará un ejemplo de tres funciones de base radial (en azul) que se escalan y suman para generar una función (en magenta).

a2 = radbas(x-1.5);
a3 = radbas(x+2);
a4 = a + a2*1 + a3*0.5;
plot(x,a,'b-',x,a2,'b--',x,a3,'b--',x,a4,'m-')
title('Weighted Sum of Radial Basis Transfer Functions');
xlabel('Input p');
ylabel('Output a');

Figure contains an axes object. The axes object with title Weighted Sum of Radial Basis Transfer Functions, xlabel Input p, ylabel Output a contains 4 objects of type line.

La función NEWRB crea rápidamente una red de base radial que aproxima la función definida por P y T. Además del conjunto de entrenamiento y los objetivos, NEWRB toma dos argumentos: el objetivo de la suma de los errores cuadráticos y la constante de dispersión.

eg = 0.02; % sum-squared error goal
sc = 1;    % spread constant
net = newrb(X,T,eg,sc);
NEWRB, neurons = 0, MSE = 0.176192

Para ver cómo funciona la red, vuelva a representar el conjunto de entrenamiento. A continuación, simule la respuesta de la red a las entradas en el mismo intervalo. Por último, represente los resultados en la misma gráfica.

plot(X,T,'+');
xlabel('Input');

X = -1:.01:1;
Y = net(X);

hold on;
plot(X,Y);
hold off;
legend({'Target','Output'})

Figure contains an axes object. The axes object with xlabel Input contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Target, Output.