Main Content

適応ニューラル ネットワーク フィルター

このトピックで説明する ADALINE (適応線形ニューロン) ネットワークは、パーセプトロンに似ていますが、その伝達関数はハードリミットではなく線形です。これにより、出力は任意の値を取ることができます。一方、パーセプトロンの出力は 0 または 1 に制限されています。ADALINE とパーセプトロンのどちらも線形分離可能な問題のみを解くことができます。ただし、ここではパーセプトロンの学習規則よりもはるかに強力な LMS (最小平均二乗) 学習規則を使用します。LMS、いわゆる Widrow・Hoff 学習規則は平均二乗誤差を最小化し、それによって判定境界を学習パターンからできるだけ遠くに移します。

この節では、動作中の環境の変化に応答する適応線形システムを設計します。各タイム ステップで新しい入力ベクトルおよびターゲット ベクトルに基づいて調整される線形ネットワークでは、最近の入力ベクトルおよびターゲット ベクトルに対するネットワークの残差平方和を最小化する重みとバイアスを見つけることができます。この種類のネットワークは、誤差消去、信号処理、および制御システムによく使用されます。

この分野での先駆的な研究は、適応線形要素に ADALINE という名前を付けた Widrow と Hoff によって行われました。このテーマに関する基本的な参考文献は、Widrow, B., and S.D. Sterns, Adaptive Signal Processing, New York, Prentice-Hall, 1985 です。

自己組織化ネットワークおよび競合ネットワークの適応学習についても、この節で考えます。

適応関数

この節では、学習中にネットワークの重みとバイアスをインクリメンタルに変更する関数 adapt を紹介します。

線形ニューロン モデル

以下に、R 個の入力を持つ線形ニューロンを示します。

Schematic diagram showing a linear neuron with vector input. The neuron multiplies vector p by weights vector w, sums the results, and applies a bias b. The neuron then applies linear transfer function to produce output a.

このネットワークの基本構造はパーセプトロンと同じです。唯一の違いは、線形ニューロンでは purelin という名前の線形伝達関数を使用する点です。

A plot of the linear transfer function. The output scales linearly with the input.

この線形伝達関数は、ニューロンの出力を計算するとき、渡された値を単純に返します。

α = purelin(n) = purelin(Wp + b) = Wp + b

このニューロンに、その入力のアフィン関数を学ばせたり、非線形関数の線形近似を求めたりするよう学習させることができます。もちろん、線形ネットワークに非線形計算を実行させることはできません。

適応線形ネットワーク アーキテクチャ

以下に示す ADALINE ネットワークには、重み行列 W を介して R 個の入力に結合された S 個のニューロンから成る 1 つの層があります。

Schematic diagrams showing a layer containing S linear neurons.

このネットワークは、多数の ADALINE を意味する MADALINE と呼ばれる場合があります。右側の図では、長さ S の出力ベクトル a が定義されていることに注意してください。

Widrow・Hoff 規則では、単層線形ネットワークにのみ学習させることができます。ただし、単層線形ネットワークには多層線形ネットワークと同じ程度の能力があるため、これはそれほど大きな欠点ではありません。どんな多層線形ネットワークについても、それに相当する単層線形ネットワークが存在します。

単一 ADALINE (linearlayer)

2 つの入力を持つ単一 ADALINE を考えます。次の図はこのネットワークのブロック線図です。

Schematic diagram showing a single ADALINE receiving a two-element vector input p. The ADALINE multiplies p by weights vector w, sums the results, and applies a bias b. The ADALINE then applies a linear transfer function to produce output a.

この場合、重み行列 W の行は 1 つだけです。ネットワークの出力は

α = purelin(n) = purelin(Wp + b) = Wp + b

または

α = w1,1p1 + w1,2p2 + b

ADALINE には、パーセプトロンと同様に、正味入力 n が 0 になる入力ベクトルによって決まる "判定境界" があります。n = 0 の場合、方程式 Wp + b = 0 によってそのような判定境界が、以下に示すように指定されます ([HDB96] からの転用)。

Plot showing a decision boundary in the input plane.

右上のグレーの領域にある入力ベクトルでは出力が 0 より大きくなります。左下の白の領域にある入力ベクトルでは出力が 0 より小さくなります。したがって、ADALINE を使用してオブジェクトを 2 つのカテゴリに分類できます。

ただし、ADALINE がこの方法でオブジェクトを分類できるのは、オブジェクトを線形分離できる場合のみです。そのため、ADALINE にはパーセプトロンと同じ制限があります。

次のコマンドを使用すると、説明したものと似たネットワークを作成できます。

net = linearlayer;
net = configure(net,[0;0],[0]);

構成する 2 つの引数のサイズは、層に 2 つの入力と 1 つの出力があることを示しています。通常は、train がこの構成を代わりに行いますが、このようにすることで学習前に重みを検証することができます。

既定では、ネットワークの重みとバイアスは 0 に設定されています。現在の値は次のコマンドにより確認できます。

W = net.IW{1,1}
W =
	 0	 0

b = net.b{1}
b =
	 0

また、重みとバイアスには任意の値、たとえば、重みに 2 と 3 を、バイアスに −4 を割り当てることができます。

net.IW{1,1} = [2 3];
net.b{1} = -4;

特定の入力ベクトルについてこの ADALINE をシミュレートしてみます。

p = [5; 6];
a = sim(net,p)
a =
    24

まとめると、linearlayer で ADALINE ネットワークを作成し、必要に応じてその要素の調整を行い、sim でそれをシミュレートできます。

最小平均二乗誤差

パーセプトロンの学習規則と同様に、最小平均二乗誤差 (LMS) アルゴリズムは教師あり学習の一例で、そこでは学習規則に目的のネットワーク動作の一連の例が提供されます。

{p1,t1},{p2,t2},{pQ,tQ}

ここで、pq はネットワークへの入力であり、tq は対応するターゲット出力です。各入力がネットワークに適用されるたびに、ネットワーク出力がターゲットと比較されます。誤差は、ターゲット出力とネットワーク出力の間の差として計算されます。目標は、これらの誤差を合計した値の平均を最小化することです。

mse=1Qk=1Qe(k)2=1Qk=1Qt(k)α(k))2

LMS アルゴリズムは、ADALINE の重みとバイアスを調整して、この平均二乗誤差を最小化します。

幸い、ADALINE ネットワークの平均二乗誤差性能インデックスは二次関数です。したがって、性能インデックスは入力ベクトルの特性に応じ、1 つの大域的最小または弱い最小をもつか、最小をもたないかのいずれかになります。すなわち、入力ベクトルの特性によって、一意の解が存在するかどうかが決まります。

このトピックの詳細は、[HDB96] の第 10 章を参照してください。

LMS アルゴリズム (learnwh)

適応ネットワークは、近似的な最急降下手順に基づく LMS アルゴリズム、つまり Widrow・Hoff 学習アルゴリズムを使用します。ここでもまた、正しい動作の例について適応線形ネットワークに学習させます。

以下に示した LMS アルゴリズムについては、線形ニューラル ネットワークで詳しく説明します。

W(k + 1) = W(k) + 2αe(k)pT(k)

b(k + 1) = b(k) + 2αe(k)

適応フィルター処理 (adapt)

ADALINE ネットワークは、パーセプトロンと同様に、線形分離可能な問題のみを解くことができます。その一方で、実際の応用で最も広く使用されているニューラル ネットワークの 1 つです。適応フィルター処理は、その主要な応用分野の 1 つです。

タップ付き遅延線

ADALINE ネットワークを十分に活用するには、新しいコンポーネントとしてタップ付き遅延線が必要です。そのような遅延線を次の図に示します。入力信号が左から入り、N-1 個の遅延を通過します。タップ付き遅延線 (TDL) の出力は、現在の入力信号や前の入力信号などで構成された N 次元のベクトルです。

Schematic diagram of a tapped delay line.

適応フィルター

タップ付き遅延線を ADALINE ネットワークと組み合わせると、次の図に示す "適応フィルター" を作成できます。

Schematic diagram of a tapped delay line providing data to an ADALINE network. After each delay block in the delay line, the delay line provides an input to the ADALINE network. The input vector p is made up of the original signal and N progressively more delayed versions of the input signal.

このフィルターの出力は、次で与えられます。

α(k)=purelin(Wp+b)=i=1Rw1,αi(ki+1)+b

デジタル信号処理では、このネットワークは "有限インパルス応答 (FIR)" フィルターと呼ばれています [WiSt85]。このような適応ネットワークの生成とシミュレーションに使用するコードを確認してみましょう。

適応フィルターの例

最初に、linearlayer を使用して新しい線形ネットワークを定義します。

Schematic diagram of a tapped delay line providing input to a linear digital filter. The linear digital filter multiplies input p by weights vector w, sums the results, and applies a bias b. The filter then applies a linear transfer function to produce output a.

線形層には、1 個の入力を持つ 1 個のニューロンと、0、1、および 2 の遅延から成るタップ付き遅延があると仮定します。

net = linearlayer([0 1 2]);
net = configure(net,0,0);

遅延は必要な数だけ指定でき、必要に応じて一部の値を省略できます。それらは昇順でなければなりません。

それぞれの重みとバイアスの値を次で指定できます。

net.IW{1,1} = [7 8 9];
net.b{1} = [0];

最後に、遅延の出力の初期値を次で定義します。

pi = {1 2};

これらは、図の上から下へ順に適用される遅延に対応するように、左から右へ順序付けられています。ネットワークの設定はこれで終わりです。

入力の設定で、入力スカラーが最初に値 3、次に値 4、さらに値 5、最後に値 6 の順に到着すると仮定します。このシーケンスを示すには、値を cell 配列の要素として中かっこで囲んで定義します。

p = {3 4 5 6};

これで、ネットワークと入力のシーケンスの準備ができました。ネットワークのシミュレーションを行い、その出力が時間の関数としてどうなるかを確認します。

[a,pf] = sim(net,p,pi)

このシミュレーションから次の出力シーケンスが得られます。

a
    [46]    [70]    [94]    [118]

また、遅延出力の最終的な値は次になります。

pf
    [5]    [6]

この例はとても単純なので、自分が入力、遅延の初期値などを理解していることの確認を、計算機なしでチェックできます。

関数 adapt を使用して、ここで定義したネットワークに学習させ、特定の出力シーケンスを生成できます。たとえば、一連の値 10、20、30、40 を生成するネットワークが必要であるとします。

t = {10 20 30 40};

これを行うための定義済みのネットワークの学習を、上で使用した初期遅延条件から開始できます。

このデータ全体の 10 回の通過に対し、ネットワークを適応させます。

for i = 1:10
    [net,y,E,pf,af] = adapt(net,p,t,pi);
end

このコードは、次に示す最終的な重み、バイアス、および出力シーケンスを返します。

wts = net.IW{1,1}
wts =
    0.5059    3.1053    5.7046
bias = net.b{1}
bias =
   -1.5993
y
y = 
    [11.8558]    [20.7735]    [29.6679]    [39.0036]

さらに何回か実行すると、出力シーケンスは目的の値 10、20、30、および 40 にさらに近づくと推測できます。

このようにして、適応ネットワークの指定、シミュレーション、そして最後に adapt による学習を行うことができます。ただし、適応ネットワークの優れた価値は、予測やノイズ キャンセリングなどの特定の機能を実行するための利用にあります。

予測の例

適応フィルターを使用して、定常ランダム過程 p(t) の次の値を予測するとします。次の図に示すネットワークを使用して、この予測を行うことができます。

Schematic diagram of a predictive filter comprising a tapped delay line providing input to a linear digital filter.

予測対象の信号 p(t) が左からタップ付き遅延線に入ります。p(t) の前の 2 つの値は、タップ付き遅延線からの出力として利用できます。このネットワークは、adapt を使用して各タイム ステップの重みを変更し、右端にある誤差 e(t) を最小化します。この誤差が 0 の場合、ネットワーク出力 a(t) は p(t) と厳密に等しくなり、ネットワークによる予測が適切に完了します。

定常ランダム過程 p(t) の自己相関関数が与えられると、誤差曲面、最大学習率、および重みの最適値を計算できます。もちろん、通常はランダム過程についての詳細な情報がないため、これらの計算は実行できません。このような欠落は、ネットワークでは問題になりません。ネットワークを初期化して動作させると、タイム ステップごとにネットワークが適応して誤差を最小化し、比較的短時間で入力 p(t) を予測できます。

[HDB96] の第 10 章ではこの問題が扱われており、解析が実行され、学習中の重みの軌跡が示されています。ネットワークは、何の問題も無く最適な重みを自ら見つけます。

ノイズ キャンセリングの例

飛行機のパイロットを考えます。パイロットがマイクに向かって話すとき、コックピット内のエンジン音が音声信号と混ざります。このようにノイズが加わることにより、結果的に乗客が耳にする信号の品質が低下します。目標は、パイロットの音声を含み、エンジン音を含まない信号を得ることです。エンジン音のサンプルを入手して、適応フィルターへの入力として適用することで、適応フィルターによるノイズの打ち消しが可能です。

Schematic diagram showing an adaptive filter used to remove engine noise from a signal containing a pilot's voice and engine noise.

前の図が示すように、パイロットの音声とエンジン音が混合している信号 m をエンジン音の信号 n から予測するよう、ニューラル線形ネットワークに適応的に学習させます。エンジン信号 n は、m に含まれるパイロットの音声信号については何も適応ネットワークに提供しません。ただし、エンジン信号 n は、パイロットとエンジンの信号 m へのエンジンの寄与を予測するために使用できる情報をネットワークに提供します。

このネットワークは適切に機能して、適応的に m を出力します。この場合、ネットワークはパイロットとエンジンの信号 m に含まれるエンジンの干渉ノイズのみを予測できます。ネットワーク誤差 e は、パイロットとエンジンの信号 m から、悪影響を与えるエンジン音信号の予測結果を引いたものに等しくなります。したがって、e にはパイロットの音声のみが含まれます。この線形適応ネットワークは、エンジン音の打ち消しを適応的に学習します。

こういった適応ノイズ キャンセリングは、信号 m のノイズをフィルター処理するのではなく、信号からノイズを取り去るため、概して従来のフィルターよりも優れています。

適応ノイズ キャンセリングの例については、適応ノイズ キャンセリングを試してください。

複数のニューロン適応フィルター

適応システムで複数のニューロンが必要になるような場合、なんらかの表記を追加する必要があります。次の図に示すように、タップ付き遅延線を S 個の線形ニューロンと合わせて使用できます。

Schematic diagram of a multiple neuron adaptive filter comprising a tapped delay line providing input to a linear layer.

または、この同じネットワークを省略形式で表すこともできます。

Abbreviated schematic diagram of a multiple neuron adaptive filter.

タップ付き遅延線をもう少し詳細に表示する必要があり、遅延がそれほど多くない場合は、次の表記を使用できます。

Abbreviated schematic diagram of a multiple neuron adaptive filter showing more detail of the tapped delay line.

ここで、タップ付き遅延線は以下を重み行列に送ります。

  • 現在の信号

  • 前の信号

  • それ以前に遅延した信号

このリストはさらに長くも、また必要に応じて遅延値の一部を省略することもできます。唯一の要件は、遅延は上から下へ、少ないものから多いものの順に現れなければならないことです。