たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

普遍性定理/ニューラルネットワークによる関数近似

ニューラルネットワークに関して最も衝撃的な事実の1つは任意の関数を表現できることです。 例えば誰かから複雑で波打った関数f(x)を与えられたとします:

ニューラルネットワークと深層学習

もちろん、例えば中国語の文章を英語に翻訳するニューラルネットワークの存在が分かることは、 そのようなニューラルネットワークを構成したり、ネットワークがその性質を持つか判定する良い方法がわかることを意味しません。 ブーリアン回路のようなモデルに対する古典的な普遍性定理にもこの制限は適用されます。 しかし、この本の前の章で見てきたように、ニューラルネットワークには関数を学習する強力なアルゴリズムがあります。 学習アルゴリズムと普遍性の組み合わせは魅力的です。 ここまで、この本では学習アルゴリズムに焦点を置いてきました。本章では、普遍性とそれが意味する所に焦点を置きます。

ニューラルネットワークと深層学習

そして、隠れニューロンをさらに増やす事で、さらに近似を良くできます。 ステートメントをより正確にする為に、私達が計算したい関数f(x)と希望の精度ϵ>0が与えられたとします。 十分な数の隠れニューロンを用いる事で、出力g(x)が|g(x)−f(x)<ϵ|を任意の入力xに対して満たすニューラルネットワークを常に見つけられることを普遍性定理は保証しています。 言い換えれば、希望の精度の範囲内で考えられるすべての入力に対して良い近似であることを示しているのです。

ニューラルネットワークと深層学習

2つ目の注意点は、この方法で近似できる関数のクラスは連続関数であるという点です。 もし関数が不連続、すなわち急激なジャンプが突然発生する場合、ニューラルネットワークを用いた近似は一般的には不可能です。 これは驚くべき事ではありません。というのも、私達のニューラルネットワークが計算できるのは入力に対して連続な関数だからです。 しかし、計算したい関数が不連続でも、連続関数による近似で十分な場合もあります。その場合には、ニューラルネットを利用できます。 通常はこの制限は重大なものではありません。
まとめると、普遍性定理のより正確なステートメントは、「隠れ層を1つ持つニューラルネットワークを用いて任意の連続関数を任意の精度で近似できる」となります。 本章では隠れ層が1層ではなく2層の場合のもう少し弱いバージョンの定理を証明します。 少し証明をひねる事で本章での証明を隠れ層が1層しかない場合に適用する方法を、演習問題において簡単に説明します。

ニューラルネットワークと深層学習