メインコンテンツ

ニューロン モデル

シンプルなニューロン

ニューラル ネットワークの基本構成は、この例のような単入力ニューロンです。

A single-input neuron. The neuron receives input scalar p and calculates a scalar output a.

この例のニューロンで実行されるのは、異なる 3 つの関数演算です。最初に、スカラー入力 p にスカラーの重み w が乗算され、同じくスカラーである積 wp になります。次に、重み付けされた入力 wp にスカラーのバイアス b が加算され、正味入力 n になります (この場合、バイアスは関数 f b 分の左シフトと見なせます。バイアスは、定数入力 1 をもつ点を除いて、重みとよく似ています)。最後に、正味入力が伝達関数 f に渡され、スカラー出力 a が生成されます。これら 3 つの処理には、重み関数、正味入力関数、および伝達関数という名前が付いています。

多くのタイプのニューラル ネットワークでは、重み関数は重みと入力の積ですが、場合によっては、他の重み関数 (重みと入力の距離 |w - p| など) も使用されます (重み関数の一覧については、help nnweight と入力してください)。最も一般的な正味入力関数は、重み付けされた入力とバイアスの和ですが、乗算など他の演算も使用できます (正味入力関数の一覧については、help nnnetinput と入力してください)。放射基底ニューラル ネットワークの概要では、距離を重み関数として使用し、乗算を正味入力関数として使用する方法を説明しています。伝達関数にも数多くのタイプがあります。さまざまな伝達関数の例が、伝達関数に記載されています (伝達関数の一覧については、help nntransfer と入力してください)。

wb はどちらも、ニューロンの "調整可能な" スカラー パラメーターであることに注意してください。ニューラル ネットワークの中心となる考え方は、ネットワークが目的のまたは関心対象となる動作を示すように、これらのパラメーターを調整できるということです。したがって、重みまたはバイアス パラメーターを調整することで、ネットワークに特定のジョブの実行を学習させることができます。

Deep Learning Toolbox™ ソフトウェアのすべてのニューロンはバイアスへの用意があります。バイアスは例の多くで使用されており、このツールボックスのほとんどでバイアスが想定されています。ただし、必要に応じて、ニューロンのバイアスを省略できます。

伝達関数

多数の伝達関数が Deep Learning Toolbox ソフトウェアに含まれています。

最もよく使用される 2 つの関数を以下に示します。

次の図は線形伝達関数を示しています。

Plot of the linear transfer function. The function returns an output a that is equal to the input n.

このタイプのニューロンは、関数近似を目的とした多層ネットワークの最後の層で使用されます。これについては、浅層の多層ニューラル ネットワークと逆伝播学習に示します。

以下に示すシグモイド伝達関数は、負の無限大から正の無限大の間にある任意の値を入力として取り、出力を 0 から 1 の範囲にスカッシングします。

Plot of the log-sigmoid transfer function transfer function. For large negative inputs, the output tends to zero. For large positive inputs, the output tends to one. When the input is zero, the output is 0.5.

この伝達関数は多層ネットワークの隠れ層で一般的に使用されますが、これは 1 つには、この関数が微分可能であるためです。

上に示した各伝達関数のグラフの右にある正方形内の記号は、対応する伝達関数を表します。これらのアイコンは、ネットワーク図のブロック内の通常の f に代わり、使用されている特定の伝達関数を示します。

伝達関数の詳細な一覧については、help nntransfer と入力してください。また、独自の伝達関数を指定することもできます。

ベクトル入力を持つニューロン

シンプルなニューロンは、ベクトル入力を扱うように拡張できます。以下に、単一の R 要素入力ベクトルを持つニューロンを示します。ここで、個々の入力要素

p1,p2,pR

に次の重みが乗算され

w1,1,w1,2,w1,R

重み付けされた値がサミング ジャンクションに渡されます。これらの和は単に、(単一行の) 行列 W とベクトル p のドット積 Wp です (ドット積だけでなく、放射基底ニューラル ネットワークの概要にあるように、重み行列の行と入力ベクトルの間の距離など、他の重み関数もあります)。

A neuron with vector input. The neuron receives input vector p and calculates a scalar output a.

このニューロンにはバイアス b があり、重み付けされた入力に加算され、正味入力 n になります (加算だけでなく、放射基底ニューラル ネットワークの概要で使用されている乗算など、他の正味入力関数も使用できます)。正味入力 n は伝達関数 f の引数です。

n=w1,1p1+w1,2p2++w1,RpR+b

もちろん、この式は、MATLAB® コードで次のように記述できます。

n = W*p + b

ただし、このようなコードは、ネットワーク全体を定義しシミュレーションを行う関数に既に組み込まれているため、このレベルのコードを書くことはほとんどありません。

省略表記

上に示した 1 つのニューロンの図には、詳細が多数含まれています。多数のニューロン、そしておそらくは多数のニューロンから成る層を含むネットワークを考える場合、詳細が多くなりすぎて、主要な概念が見落とされる傾向があります。そのため、個々のニューロンの省略表記が考案されています。この表記を以下に示します。この表記は、以降の複数のニューロンから成る回路で使用されます。

A neuron with vector input.

ここで、入力ベクトル p は、左側の黒い垂直バーで表現されます。p の次元は、図の記号 p の下に R × 1 と表示されています (なお、前文の R のような大文字は、ベクトルの "サイズ" を参照するときに使用されます)。したがって、pR 個の入力要素のベクトルです。これらの入力には、1 行 R 列の行列 W が右から乗算されます。前と同じように、定数 1 が入力としてニューロンに渡され、スカラー バイアス b が乗算されます。伝達関数 f への正味入力は n、つまり、バイアス b と積 Wp の和です。この和が伝達関数 f に渡され、ニューロンの出力 a が得られます。この場合、出力はスカラーです。ニューロンが複数ある場合、ネットワークの出力はベクトルになることに注意してください。

前の図では、1 つの "層" のネットワークが定義されています。1 つの層には、重み、乗算および加算 (ここでは、ベクトルの積 Wp に対応)、バイアス b、および伝達関数 f が含まれています。入力の配列であるベクトル p は、層には含まれず、層とは呼ばれません。

シンプルなニューロンと同様に、層にはそこで実行される 3 つの演算、重み関数 (この場合は行列の乗算、つまりドット積)、正味入力関数 (この場合は加算)、および伝達関数があります。

このネットワークの省略表記を使用するときは、行列のサイズが行列変数名のすぐ下にいつも表示されます。この表記により、アーキテクチャを理解して、アーキテクチャに関連する行列演算処理を把握できます。

伝達関数で説明されているように、特定の伝達関数が図で使用される場合、その伝達関数の記号が上記の f に代わります。こちらはその例です。

Icons for the hardlim, purelin, and logsig ransfer functions.

参考

トピック