Main Content

ニューラル ネットワーク アーキテクチャ

前述のニューロンは、1 つの層内で 2 つ以上組み合わせることができます。また、特定のネットワークに、そういった層を 1 つ以上含めることができます。最初に、複数のニューロンから成る 1 つの層を考えます。

単一ニューロン層

R 個の入力要素と S 個のニューロンを持つ単層ネットワークは次のようになります。

このネットワークで、入力ベクトル p の各要素は、重み行列 W を通じて各ニューロン入力に結合されています。i 番目のニューロンには、その重み付けされた入力とバイアスを収集し、自らのスカラー出力 n(i) を生成する加算器があります。さまざまな n(i) が一つにまとまって、S 要素の正味入力ベクトル n になります。最後に、ニューロン層の出力から列ベクトル a が得られます。a の式が図の下に示されています。

一般的に、層への入力の数はニューロンの数と異なることに注意してください (つまり、R は、必ずしも S と等しくありません)。層には、入力の数とニューロンの数が等しいという制約はありません。

前述のネットワークのうちの 2 つをそのまま並列に配置することで、異なる伝達関数をもつ 1 つの (合成) ニューロン層を作成できます。双方のネットワークは同じ入力を持つことになり、それぞれのネットワークが一定割合の出力を生成することになります。

入力ベクトル要素は、重み行列 W を通じてネットワークに入ります。

W=[w1,1w1,2w1,Rw2,1w2,2w2,RwS,1wS,2wS,R]

ここで、行列 W の要素の行インデックスは重みの適用先ニューロンを示し、列インデックスはどのソースがその重みに対する入力であるかを示しています。つまり、w1,2 のインデックスは、2 つ目の入力要素 "から" 1 つ目の (そして唯一の) ニューロン "への" 信号の強度が w1,2 であることを示しています。

S 個のニューロンと R 個の入力から成る単層ネットワークも、省略表記で描くことができます。

ここで、p は長さ R の入力ベクトル、W は S 行 R 列の行列、a および b は長さ S のベクトルです。前に定義したように、ニューロン層には、重み行列、各種乗算、バイアス ベクトル b、加算器、および伝達関数の各ブロックが含まれています。

入力と層

複数の層を持つネットワークを記述するには、表記を拡張しなければなりません。具体的には、入力に結合される重み行列と、層と層の間で結合される重み行列とを区別する必要があります。重み行列のソースと適用先も識別する必要があります。

入力に結合される重み行列を "入力の重み" と呼び、層の出力に結合される重み行列を "層の重み" と呼びます。さらに、上付き文字を使用して、ネットワークのさまざまな重みや他の要素のソース (2 番目のインデックス) と適用先 (最初のインデックス) を識別します。ここで説明のために、前に示した単層の多入力ネットワークを省略表記で再度描きます。

ご覧のように、入力ベクトル p に結合される重み行列は、ソース 1 (2 番目のインデックス) と適用先 1 (最初のインデックス) を持つ入力重み行列 (IW1,1) とラベル付けされています。バイアス、正味入力、および出力のような層 1 の要素には上付き文字 1 があり、それらが最初の層に関連付けられていることを示しています。

多重ニューロン層では、層の重み (LW) 行列と入力の重み (IW) 行列を使用しています。

多重ニューロン層

1 つのネットワークは複数の層を持つことができます。各層には、重み行列 W、バイアス ベクトル b、および出力ベクトル a があります。図の中でそれぞれの層の重み行列、出力ベクトルなどを区別するために、層の番号が上付き文字として対象の変数に付加されています。次に示す 3 層ネットワークと図の下の方程式で、この層表記の使い方を確認できます。

上に示したネットワークには、R1 個の入力、最初の層の S1 個のニューロン、2 番目の層の S2 個のニューロンなどがあります。一般的に、異なる層には異なる数のニューロンがあります。定数入力 1 が各ニューロンのバイアスに渡されます。

各中間層の出力が次の層の入力であることに注意してください。したがって、層 2 は、S1 個の入力、S2 個のニューロン、S2 行 S1 列の重み行列 W2 を持つ単層ネットワークとして解析できます。層 2 への入力は a1 で、出力は a2 です。層 2 のすべてのベクトルと行列が識別されたので、それ自体を単層ネットワークとして扱うことができます。この方法は、ネットワークのどの層にも適用できます。

多層ネットワークの各層はそれぞれ異なる役割を担います。ネットワーク出力を生成する層は、"出力層" と呼ばれます。それ以外のすべての層は、"隠れ層" と呼ばれます。前に示した 3 層ネットワークには、1 つの出力層 (層 3) と 2 つの隠れ層 (層 1 および層 2) があります。入力が 4 番目の層と呼ばれることもあります。このツールボックスでは、その呼び方を使用しません。

入力ベクトルを 1 つ持つ多層ネットワークのアーキテクチャは、R − S1 − S2 −...− SM という表記で指定できます。ここで、入力ベクトルの要素数と各層のニューロン数が指定されています。

同じ 3 層ネットワークを、省略表記を使用して描くこともできます。

多層ネットワークは非常に強力です。たとえば、1 番目の層がシグモイドで、2 番目の層が線形である 2 層のネットワークに学習をさせ、任意の (有限個の不連続部分がある) 関数をうまく近似することができます。この種類の 2 層ネットワークは、浅層の多層ニューラル ネットワークと逆伝播学習で幅広く使用されます。

ここで、3 番目の層の出力 a3 は対象のネットワーク出力であると想定され、この出力は y とラベル付けされています。この表記は、多層ネットワークの出力の指定に使用されます。

入出力処理関数

ネットワークの入力には、処理関数が関連付けられている場合があります。処理関数は、ユーザー入力データをネットワークで扱いやすい形式やより効率的な形式に変換します。

たとえば、mapminmax は、すべての値が区間 [-1, 1] に入るように入力データを変換します。これによって、多くのネットワークで学習を高速化できます。removeconstantrows は、常に同じ値を持つ入力要素に対応する入力ベクトル内の行を削除しますが、これは、これらの入力要素がネットワークに有用な情報を提供していないためです。3 つ目の一般的な処理関数は fixunknowns です。この関数は、不明なデータ (ユーザー データ内で NaN 値で表される) をネットワークの数値形式に再コード化します。fixunknowns は、どの値が既知で、どの値が不明であるかの情報を保持します。

同様に、ネットワークの出力にも、処理関数が関連付けられている場合があります。出力処理関数は、ユーザー指定のターゲット ベクトルをネットワーク用に変換するために使用されます。後で、ネットワーク出力は同じ関数を使用して反転処理され、元のユーザー指定ターゲットと同じ特性を持つ出力データが生成されます。

多くの場合、mapminmaxremoveconstantrows の両方がネットワーク出力に関連付けられます。ただし、fixunknowns はそうではありません。ターゲット内の不明な値 (NaN 値で表される) は、ネットワーク用に変更する必要がありません。

処理関数の詳細は、ニューラル ネットワーク入出力処理関数の選択で説明されています。

関連するトピック