Радиальное приближение базиса

Этот пример использует функцию NEWRB, чтобы создать радиальную сеть базиса, которая аппроксимирует функцию, заданную набором точек данных.

Задайте 21 вход P и связанные с ним цели T.

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. The axes with title Training Vectors contains an object of type line.

Мы хотели бы найти функцию, которая соответствует 21 точке данных. Один из способов сделать это - с радиальной сетью базиса. Радиальная сеть базиса является сетью с двумя слоями. Скрытый слой радиальных базисных нейронов и выходной слой линейных нейронов. Вот радиальная передаточная функция базиса, используемая скрытым слоем.

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. The axes with title Radial Basis Transfer Function contains an object of type line.

Веса и смещения каждого нейрона в скрытом слое определяют положение и ширину функции радиального базиса. Каждый линейный выходной нейрон образует взвешенную сумму этих радиальных базисных функций. При правильных значениях веса и смещения для каждого слоя и достаточном количестве скрытых нейронов радиальная сеть базиса может соответствовать любой функции с любой желаемой точностью. Это пример трех радиальных базисных функций (в синем цвете) масштабируются и суммируются, чтобы получить функцию (в пурпурном цвете).

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. The axes with title Weighted Sum of Radial Basis Transfer Functions contains 4 objects of type line.

Функция NEWRB быстро создает радиальную сеть базиса, которая аппроксимирует функцию, заданную P и T. В дополнение к набору обучающих данных и целям, NEWRB принимает два аргумента, суммарно квадратную цель ошибки и константу расширения.

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

Чтобы увидеть, как работает сеть, реплицируйте набор обучающих данных. Затем моделируйте сетевую характеристику для входов в той же области значений. Наконец, постройте график результатов на том же графике.

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. The axes contains 2 objects of type line. These objects represent Target, Output.