exponenta event banner

Радиальная базисная аппроксимация

В этом примере функция 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.