3. ニューラルネットワークの関数再現能力

ここで一度、人工ニューラルネットワーク(今後はめんどいので”人工”を書くのをサボることがあります)の関数再現能力について勉強しようと思います。
フーリエ変換は知ってるでしょうか。ある関数を沢山の周波数成分に分解した波の関数として再現することができます。実はニューラルネットワークというのはフーリエ変換に似ています。ニューラルネットワークもある入力に対してある出力をする関数で、フーリエ変換が複数の波に変換したように複数の素子に変換するのです。同じように関数を再現する能力を持っています。それを見て行きましょう。

3層のニューラルネットワーク

まず、以下のような3層構造を考えてみます。

threelayer

[第一層] ただ1つの入力のみです。この入力の値がそのまま第2層のそれぞれの素子にそのままつながっています。
[第二層] 1入力1出力の素子がN個並んでいます。それぞれの閾値はθnです。そして、出力が第3層につながっています
[第三層] 第2層から出力されてきた値が重み付けwnで入力されています。

見ると分かるように、第1層と第3層はただの入出力で、第2層がいままでやってきた人工ニューラルネットワークの素子です。それぞれが同じ値を入力しています。この第2層の出力が第3層に行くわけです。

素子の入力はアナログ値で出力もシグモイド関数の値そのものとします。

ここで閾値が-ε/2のような素子を考えます。シグモイド関数なので入力がxとすると式は
sigmoid(x-(-\frac{\epsilon}{2})) = \frac{1}{1+{e}^{-\alpha (x + \frac{\epsilon}{2})}}
となりグラフはこのようになります。
名称未設定アートワーク-8
逆に、ε/2に閾値をもつ素子はこのようになります。
名称未設定アートワーク-9
さて、ここで最初の素子と2番めの素子の出力をつないでみましょう。ただし、2番めの出力の重み付けをマイナスにします。つまり、w1=1, w2=-1とします。すると、最終的な出力は以下の図のようなインパルス状になります
名称未設定アートワーク-13
つまり、素子を2つ使えばある場所にある幅のインパルスを作成することが出来ます。高さは重み付けw1とw2によります。

では、このようなペアの素子を最初の図の様に(以下の図のように)
threelayer
たくさん用意したらどうなるでしょう。しかもインパルスになるペアをx軸の左から右側までずらりと並べたら。そして、1つ1つの幅をものすごく狭くしていけばいろいろな関数を再現できるのが想像できると思います。
名称未設定アートワーク-11
非常に簡単にしてしまった説明ですが、ペアにした素子を沢山並べればどんな形の関数も再現できそうですね。
関数を色々再現して作れるということは、ある入力に対して欲しい出力をしてくれるニューラルネットワークを作ることが出来るという意味です。
前回まではなんとなく「脳に似てるからこれでいっか」といった感じで進めましたが、今回は「数学的にも関数再現能力があり、どんな関数にも似た形になれる能力がある」ということがちゃんと分かりましたね。

ちなみに1次関数につて説明しましたが、N次の関数でも同様に再現できます。
ただし、再現できるものには「連続である」など、制限は入ります。例えば、y=tan(x)は連続でないので完璧に再現することは出来ません(π/2のところなどですね)。しかし、”ほぼ”同じものを作ることが出来ます。

今回はニューラルネットワークに関数の再現能力があることを紹介しましたが、ぜひ、感じて欲しいのは「ニューラルネットワークはネットワーク全体で1つの関数なんだ」というところです。ネットワークの入力と出力の関係位はy=f(x)であり、f(x)のところの中身が沢山の素子なんだってことです。

 まとめ

  • ニューラルネットワークは1つの関数と考えられる
  • ニューラルネットワークは数が多ければ3層だけでも関数の再現能力がある