動径基底関数ネットワーク(RBFネットワーク)とは?仕組みと特徴を解説
動径基底関数(RBF:Radial Basis Function)ネットワークは、フィードフォワード型ニューラルネットワークの代表的なモデルの一つです。入力層を除けば2層構造を持ち、多層パーセプトロン(MLP)との違いは、隠れユニットが計算を実行する方法にあります。
隠れユニットの仕組み
各隠れユニットは、入力空間内の特定の点を定義します。あるデータインスタンスに対する隠れユニットの出力(活性化値)は、そのユニットが持つ点とインスタンスの点との距離に基づいて決まります。2つの点が近いほど、活性化値は高くなります。
この仕組みは、距離を類似度の指標へ変換する非線形変換関数を用いて実現されます。一般には鐘型(ベル型)のガウス型活性化関数が使われ、その幅は隠れユニットごとに異なる値を設定できます。特定の隠れユニットが同程度の活性化値を示すインスタンス空間上の点の集合が、超球や超楕円体の形状をなすことから、これらの隠れユニットは「RBF(動径基底関数)」と呼ばれます。
出力層の構造
RBFネットワークの出力層は、多層パーセプトロンのものと似ています。隠れユニットの出力の線形結合を取り、分類問題ではそれをシグモイド関数に通します。
学習されるパラメータとその決定方法
このネットワークが学習するパラメータには、①RBFの中心と幅、②隠れ層から得られる出力を線形結合する際の重み、の2種類があります。多層パーセプトロンに対する重要な利点は、前者のパラメータ群を後者とは独立に決定できながら、精度の高い分類器を作れるという点です。
第一のパラメータ群(中心と幅)の決定
第一のパラメータ群を決める方法の一つがクラスタリングです。単純なk-meansクラスタリングアルゴリズムを適用し、クラスごとに独立してクラスタリングを行うことで、クラスごとにk個の基底関数を得られます。
第二のパラメータ群(重み)の学習
第二のパラメータ群は、第一のパラメータを固定したまま学習します。具体的には、線形回帰やロジスティック回帰などの手法を用いて、単純な線形分類器を学習するだけです。隠れユニット数が訓練インスタンス数よりはるかに少なければ、この処理は非常に高速に実行できます。
RBFネットワークの限界
RBFネットワークの弱点は、属性重み付けのパラメータを全体の最適化プロセスに組み込まない限り、距離計算においてすべての属性が等しい重みで扱われる点です。そのため、多層パーセプトロンとは対照的に、無関係な(不要な)属性へ効果的に対応できません。サポートベクターマシン(SVM)も同様の問題を抱えています。
ガウスカーネルを持つSVMとの関係
ガウスカーネル(いわゆる「RBFカーネル」)を使用するサポートベクターマシンは、RBFネットワークの一種と見なすことができます。この場合、各訓練インスタンスを中心として1つの基底関数が配置され、すべての基底関数が同一の幅を持ち、マージン最大化ハイパープレーンの計算によって出力が線形に結合されます。その結果、一部のRBFだけが非ゼロの重みを持つことになります。これらは「サポートベクトル」を定義するものです。
-
JavaScriptのクロージャとは?仕組みと実装例をわかりやすく解説
クロージャとはJavaScriptにおけるクロージャ(Closure)とは、外側の関数の実行が完了して値を返した後であっても、内側の関数から外側の関数のスコープ(変数)にアクセスできる仕組みのことです。言い換えれば、内側の関数は、外側の関数の変数に対して常にアクセスできるということです。この性質を活用することで、データを外部から直接操作されないように隠蔽したり、関数の呼び出し間で状態を保持する処理を実現したりすることが可能になります。クロージャのサンプルコード以下は、JavaScriptでクロージャを使用した具体的なコード例です。ボタンをクリックすると、クロージャによって保持された値を使って2
-
コンピュータネットワークのプロトコル階層とは?基本要素と5層モデルの仕組みを解説
プロトコルとは、データ通信を行う際に通信主体(エンティティ)が従うべき一連の規則のことです。コンピュータ同士が正しく情報をやり取りするためには、共通の「約束事」が必要であり、それを担うのがプロトコルです。プロトコルを構成する3つの要素構文(シンタックス) − 送受信されるデータの形式・フォーマットを定義します。意味(セマンティクス) − 転送される各ビット列が持つ意味を定義します。タイミング − データをいつ送信するか、どの速度で転送するかといった時間的な規定を指します。インターネット上のコンピュータ間通信は、さまざまなプロトコルによって定義されています。中でもTCP(Transmission