remove
powerd by nog twitter
tomiyumi webその他もろもろソフトコンピューティング ― RBFネットワークの学習

topへ   ソフトコンピューティングtopへ
RBFネットワークの学習

下のJavaアプレットでは、
RBFネットワークの
正則化最小二乗法による学習を
シミュレーションできます。



表示されない場合(画面に何もでなかったり「×」が出てたり)は、
Javaを実行するためのソフトウェアが入っていない場合があります。
ここでダウンロードできるので試してみて下さい。


・ 横軸が入力、縦軸が出力です。
 軸の両端にあるテキストボックスに数字を入力して
 「再描画」をクリックすることで
 表示する範囲を変更できます。

・ 1入力・1出力のRBFネットワークは、
 入力を x 、出力を f(x) とすると、
 N個の基底関数 φi(x) を用いて
 次のように書き表わせます。  
f(x) = w0 + i=1 to N wi φi(x)
φi(x) = (x - ci)2 / (2 σi2)

・ 水色の曲線はRBFネットワークの出力 f(x) です。

・ 茶色の曲線は中間層の
 各基底関数(ガウス関数)の出力 φi(x) です。

・ グラフ上でクリックすると、
 その座標に相当する入出力値をもつデータを
 発生させることができます(100個まで)。
 「データ消去」をクリックすると消去します。

・ あるいは、下の「プロット」をクリックすることで
 データを自動的に発生させることもできます。
 サイン波(sine wave)、直線(linear)、
 2値関数(binary)のいずれかを真の関数とし(選択可)、
 そこに「雑音標準偏差」を標準偏差とした
 正規分布にしたがう雑音をのせたデータを
 「データ数」だけ発生させることができます。
 (2値関数は雑音がのりません。)
 真の関数は濃い緑の線で表示されます。

・ 「重み推定」をクリックすると
 結合重みを正則化最小二乗法によって推定します。

・ 基底関数は、
 表示されている範囲で等間隔に配置されます。

・ 黄色いボタンは、
 それぞれが基底関数に対応しており
 (右端はバイアスに対応)、
 クリックすると
 対応する基底関数を消すことができます。
 もう一度クリックすると元に戻ります。
 その上下に付いている「+」「-」を押し続けると、
 重みを少しずつ増減させることができます。

・ 「ユニット数」は中間層のユニット(基底関数)の数です。

・ 「」はガウス型基底関数の幅σ2の値です。
 この値が大きいほど基底関数が横軸方向に広がります。

・ 最小二乗法とは、
 入出力データの対(xi , yi)(i = 1, 2, ..., n) があるとき、
 誤差の二乗和  
 J = i(yi - f(xi))2
 を最小にするようなパラメータを求める方法です。
 具体的には、Jをパラメータで偏微分して
 これを0とおいた方程式を連立して解きます。
 
 この方法によると、
 RBFネットワークの結合重みは、  
 w = (w0 , w1 , w2 , ... , wN)T
 y = (y1 , y2 , ... , yn)T
 Xi = (φi(x1) , φi(x2) , ... , φi(xn))T
 X = (1, X1 , X2 , ... , XN)
 のもとで  
 w = (XT X)-1 XT y
 として求めることができます。
 
 実際には XT X が非正則に近くなり
 逆行列を求めるのが困難になりがちですが、
 それに対処するための方法は
 たくさん知られています。
 
 上のアプレットでは、
 「正則化」の考えを用いた
 正則化最小二乗法を使用しています。
 この方法では、  
 w = (XT X + αI)-1 XT y
 とすることで重みを計算します(Iは単位行列)。
 このαが「正則化パラメータ」です。
 この値が大きいほど結合重みが抑えられ、
 関数が滑らかになります。

・ 「MSE」は Mean Squared Error の略で、
 「平均二乗誤差」と呼ばれる値です。
 データの出力値とRBFネットワークの出力値の
 差の二乗を全データに対して平均したものです。


topへ   ソフトコンピューティングtopへ