下のJavaアプレットでは、 RBFネットワークの 正則化最小二乗法による学習を シミュレーションできます。 表示されない場合(画面に何もでなかったり「×」が出てたり)は、 Javaを実行するためのソフトウェアが入っていない場合があります。 ここでダウンロードできるので試してみて下さい。 ・ 横軸が入力、縦軸が出力です。 軸の両端にあるテキストボックスに数字を入力して 「再描画」をクリックすることで 表示する範囲を変更できます。 ・ 1入力・1出力のRBFネットワークは、 入力を x 、出力を f(x) とすると、 N個の基底関数 φi(x) を用いて 次のように書き表わせます。
・ 水色の曲線はRBFネットワークの出力 f(x) です。 ・ 茶色の曲線は中間層の 各基底関数(ガウス関数)の出力 φi(x) です。 ・ グラフ上でクリックすると、 その座標に相当する入出力値をもつデータを 発生させることができます(100個まで)。 「データ消去」をクリックすると消去します。 ・ あるいは、下の「プロット」をクリックすることで データを自動的に発生させることもできます。 サイン波(sine wave)、直線(linear)、 2値関数(binary)のいずれかを真の関数とし(選択可)、 そこに「雑音標準偏差」を標準偏差とした 正規分布にしたがう雑音をのせたデータを 「データ数」だけ発生させることができます。 (2値関数は雑音がのりません。) 真の関数は濃い緑の線で表示されます。 ・ 「重み推定」をクリックすると 結合重みを正則化最小二乗法によって推定します。 ・ 基底関数は、 表示されている範囲で等間隔に配置されます。 ・ 黄色いボタンは、 それぞれが基底関数に対応しており (右端はバイアスに対応)、 クリックすると 対応する基底関数を消すことができます。 もう一度クリックすると元に戻ります。 その上下に付いている「+」「-」を押し続けると、 重みを少しずつ増減させることができます。 ・ 「ユニット数」は中間層のユニット(基底関数)の数です。 ・ 「幅」はガウス型基底関数の幅σ2の値です。 この値が大きいほど基底関数が横軸方向に広がります。 ・ 最小二乗法とは、 入出力データの対(xi , yi)(i = 1, 2, ..., n) があるとき、 誤差の二乗和
具体的には、Jをパラメータで偏微分して これを0とおいた方程式を連立して解きます。 この方法によると、 RBFネットワークの結合重みは、
実際には XT X が非正則に近くなり 逆行列を求めるのが困難になりがちですが、 それに対処するための方法は たくさん知られています。 上のアプレットでは、 「正則化」の考えを用いた 正則化最小二乗法を使用しています。 この方法では、
このαが「正則化パラメータ」です。 この値が大きいほど結合重みが抑えられ、 関数が滑らかになります。 ・ 「MSE」は Mean Squared Error の略で、 「平均二乗誤差」と呼ばれる値です。 データの出力値とRBFネットワークの出力値の 差の二乗を全データに対して平均したものです。 |