Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

放射基底近似

この例では、関数 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 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.

21 個のデータ点に当てはまる関数を見つけましょう。これを行う 1 つの方法は、放射基底ネットワークを使うことです。放射基底ネットワークは、2 つの層で構成されるネットワークです。放射基底ニューロンの隠れ層と、線形ニューロンの出力層があります。次に、隠れ層によって使用される放射基底伝達関数を示します。

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.

隠れ層の各ニューロンの重みとバイアスによって、放射基底関数の位置および幅が定義されます。各線形出力ニューロンは、これらの放射基底関数の重み付き和を形成します。各層の重みとバイアスの値が正しく、隠れニューロンが十分にある場合、放射基底ネットワークはどの関数にも任意の精度で当てはめることができます。この例では、3 つの放射基底関数 (青で表示) がスケーリングおよび合計され、関数 (マゼンタで表示) が生成されます。

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.

関数 NEWRB によってすぐに、P および T によって定義される関数を近似する放射基底ネットワークが作成されます。NEWRB は、学習セットおよびターゲットに加えて、残差平方和の目標値と広がり定数の 2 つの引数を取ります。

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