neural network と universality について
TRANSCRIPT
Neural Network の
Universalityについて
本資料の内容は、
「Neural Network and Deep Learning」Michel Nielsen著
http://neuralnetworksanddeeplearning.com/
に基づいています。
本資料の内容は、
Rigorous(厳密)さよりも、Roughly(ざっくり)でも
直観的な理解のしやすさ、
に焦点を当ててまとめました。
アウトライン
1.本資料について(スキップ可)
2.Neural Network とは?
3.論理関数としてのUniversality
4.連続関数としてのUniversality
アウトライン
1.本資料について(スキップ可)
2.Neural Network とは?
3.論理関数としてのUniversality
4.連続関数としてのUniversality
1.本資料について
「Neural Network and Deep Learning」の著者Michael Nielsen とは?
1-1.Michael Nielsen
過去:量子情報処理分野の研究者現在:科学者、作家、プログラマーとして、
科学のオープン化など、複数の活動を遂行中。http://michaelnielsen.org/
Michael Nielsen
著書:
量子情報処理入門(和訳あり)
オープンサイエンス(和訳あり)
Neural networkAnd
Deep Learning
本資料の内容はこれ
1.本資料について
Neural Network と Deep Learningについて、Principle(原理)に焦点をおいてまとめたオンラインブック。本資料は、特に Neural Network の直観的理解につながる
Universalityについて、1章と4章の内容についてまとめました。
1-2.Neural Network and Deep Learning
アウトライン
1.本資料について(スキップ可)
2.Neural Network とは?
3.論理関数としてのUniversality
4.連続関数としてのUniversality
2. Neural Networkとは? 2-1. Neural Network
大量のデータからコンピュータに学習させるための、(生物模式的な)理論的枠組み。
学習用データ
未知データを入力
1 3 1
2 8 6
4 3 2
6 0 4
8 5 9
0 9 4
6 1 0
2 1 1
3 9 0
Neural Network正解を出力
0 9 4
6 1 0
学習用データ
つまり・・・
2. Neural Networkとは? 2-1. Neural Network
入力:手書き数字画像
学習用データ
1 3 1
2 8 6
4 3 2
6 0 4
8 5 9
0 9 4
6 1 0
2 1 1
3 9 0
Neural Network
学習用データ
入出力関係からルールを学習
例:
出力:表された数字
上の4画像に近いパーツがあれば、その画像に表された数字は、0である可能性が高い。
0
※手書き数字画像の各ピクセルを並べたベクトルを X 、出力数字を y として、(X, y)の入出力関係データを大量に用いる。
未知データを入力
正解を出力
0 9 4
6 1 0
2. Neural Networkとは? 2-1. Neural Network
入力:手書き数字画像
学習用データ
1 3 1
2 8 6
4 3 2
6 0 4
8 5 9
0 9 4
6 1 0
2 1 1
3 9 0
学習用データ
学習したルールをもとに正解を出力(正解率は95%以上)
例:
出力:表された数字
上の4画像に近いパーツがあれば、その画像に表された数字は、0である可能性が高い。
0
未知データを入力
正解を出力
0 9 4
6 1 0
Neural Network
※手書き数字画像の各ピクセルを並べたベクトルを X 、出力数字を y として、(X, y)の入出力関係データを大量に用いる。
具体的に、どうやって学習をするのか?
2. Neural Networkとは? 2-2.Perceptron
Neural Network の基本単位である各ニューロンをPerceptronモデルで表す。
このモデルは、人間の意思決定モデルとも解釈できる。
Perceptronモデル 意思決定モデル
Output:0: 買い物に行かない1: 買い物に行くInput:X1: 天気が良いかどうかX2: 恋人がついてくるかどうかX3: 近くで祭りがあるかどうか
(w1,w2,w3,thershold) = (0.7, 0.5, 0.1, 1) とすれば、(x1,x2,x3) = (1,1,0) でOutputは 1 。つまり、天気が良く、恋人がついてこれば、近くで祭りがなくても、買い物に行く。
2. Neural Networkとは? 2-2.Perceptron
Perceptronモデル 意思決定モデル
Output:0: 買い物に行かない1: 買い物に行くInput:X1: 天気が良いかどうかX2: 恋人がついてくるかどうかX3: 近くで祭りがあるかどうか
(w1,w2,w3,threshold) = (0.7, 0.5, 0.1, 1) とすれば、(x1,x2,x3) = (1,1,0) でOutputは 1 。つまり、天気が良く、恋人がついてこれば、近くで祭りがなくても、買い物に行く。
(w1,w2,w3,…,threshold) が変わると
Output が変わる。
つまり(w1,w2,w3,…,threshold) が
ルールを決める
Neural Network の基本単位である各ニューロンをPerceptronモデルで表す。
このモデルは、人間の意思決定モデルとも解釈できる。
2. Neural Networkとは?
学習用データ
1 3 1
2 8 6
4 3 2
6 0 4
8 5 9
0 9 4
6 1 0
2 1 1
3 9 0
Neural Network
学習用データ
未知データを入力
正解を出力
0 9 4
6 1 0
大量データから、多数パーセプトロンの (w1,w2,w3,…,threshold) を調整し、複雑なルールを学習する。
2-2.Perceptron
2. Neural Networkとは?
学習用データ
1 3 1
2 8 6
4 3 2
6 0 4
8 5 9
0 9 4
6 1 0
2 1 1
3 9 0
学習用データ
入出力関係から(w1,w2,w3…, threshold)を調整し、ルールを学習
例:
上の4画像に近いパーツがあれば、その画像に表された数字は、0である可能性が高い。
未知データを入力
正解を出力
0 9 4
6 1 0
大量データから、多数パーセプトロンの (w1,w2,w3,…,threshold) を調整し、複雑なルールを学習する。
Neural Network
2-2.Perceptron
2. Neural Networkとは? 2-3.Sigmoidニューロン
ただし実際には、非連続関数は扱いにくいため、Perceptronを Sigmoid ニューロンで近似する場合が多い。
Perceptron Sigmoidニューロン
なお、はじめに (生物模式的な)と書いたのは、
「Neural Networkは、脳機能のモデル化である」
という研究の源泉があるからです。ただ、専門家の意見としては、厳密には違うらしいです。
参照:http://spectrum.ieee.org/robotics/artificial-intelligence/machinelearning-maestro-michael-jordan-on-the-delusions-of-big-data-and-other-huge-engineering-efforts
あくまで、Neural Network を
「大量のデータからコンピュータに学習させるための、(生物模式的な)理論的枠組み」
くらいで捉えるのがよさそうです。
アウトライン
1.本資料について(スキップ可)
2.Neural Network とは?
3.論理関数としてのUniversality
4.連続関数としてのUniversality
Universality とは、
「一般性」や「普遍性」
という意味です。
「~のUniversality」 とは、
「任意の~」という意味を持ちます。
Neural Network の「論理関数としてのUniversality」
とは、
Neural Network によって、「任意の論理計算を実現できる」
ことを意味します。
本章では、
どうやって、Neural Networkによって、任意の論理計算を実現できるのか?
についてまとめました。
3.論理関数としてのUniversality 3-1.NANDゲート
NANDゲートを基本素子として、複数の基本素子を組み合わせれば、任意の論理計算を実現できる。
X1 X2 X1 NAND X2
0 0 1
0 1 1
1 0 1
1 1 0
X1
X2
X1 NAND X2
NANDゲート
3.論理関数としてのUniversality 3-1.NANDゲート
X1 X2 X1 NAND
X2
0 0 1
0 1 1
1 0 1
1 1 0
例:Bitwise Sum X1 X2 BitwiseSum
0 0 00
0 1 01
1 0 01
1 1 10
X1
X2
X1 NAND X2
NANDゲート※任意の論理計算の実現性について、証明の記載まではなかったので、例の記載のみにとどめておきます。
NANDゲートを基本素子として、複数の基本素子を組み合わせれば、任意の論理計算を実現できる。
つまり、
Neural Network の基本素子である「ニューロン」によって「NANDゲート」
を実現できれば、
Neural Networkは任意の論理計算を実現できる、
ということになります。
3.論理関数としてのUniversality 3-2.NANDゲートニューロン
ニューロン(パーセプトロン)によってNANDゲートを実現できる。
X1 X2 X1 NAND X2
0 0 (-2)*0+(-2)*0 > -3 | 1
0 1 (-2)*0+(-2)*1 > -3 | 1
1 0 (-2)*1+(-2)*0 > -3 | 1
1 1 (-2)*1+(-2)*1 > -3 | 0(w1,w2,thershold) = (-2, -2, -3)
NANDゲートニューロン
3.論理関数としてのUniversality 3-2.NANDゲートニューロン
ニューロン(パーセプトロン)によってNANDゲートを実現できる。つまり、Neural Network によって、任意の論理計算を実現できる。
X1 X2 X1 NAND X2
0 0 (-2)*0+(-2)*0 > -3 | 1
0 1 (-2)*0+(-2)*1 > -3 | 1
1 0 (-2)*1+(-2)*0 > -3 | 1
1 1 (-2)*1+(-2)*1 > -3 | 0
(w1,w2,thershold) = (-2, -2, -3)
NANDゲートニューロン
例:Bitwise Sum
X1 X2 BitwiseSum
0 0 00
0 1 01
1 0 01
1 1 10
※任意の論理計算の実現性について、証明の記載まではなかったので、例の記載のみにとどめておきます。
Neural Network によって、任意の論理計算を実現できる
ことが分かりました。
これは、
Neural Network が、他の計算デバイスと同等の計算能力を持つ
ことを意味します。
これに加えて、
Neural Network は、他の計算デバイスによって実現が容易でない計算能力
を持っています。
それが、先に紹介した
「大量データからコンピュータに学習させる」
という計算能力です。
そして、その計算能力を保証するのが、
「連続関数としてのUniversality」
です。次章では、このことについてまとめました。
アウトライン
1.本資料について
2.Neural Network とは?
3.論理関数としてのUniversality
4.連続関数としてのUniversality
前章同様に、Neural Network の
「連続関数としてのUniversality」とは、
Neural Network によって、「任意の連続関数を実現できる」
ことを意味します。
より具体的には、
「Neural Network によって、十分に正確な近似のもとで、
任意の多入力多出力連続関数Fm(X1,X2,X3,…,Xn)
(n=1,2,3, …; m=1,2,3, …;)を実現できる」
ことを意味します。
図で表すと、以下のような感じです。(n=3,m=2)
本章では、
どうやって、Neural Networkによって、任意の連続関数を実現できるのか?
についてまとめました。
まずは、1入力1出力の場合を考えます。
S1 S2
※1.パーセプトロンの不等式において、(右辺)=0と
するため、 として(左辺)に移項している。
4.連続関数としてのUniversality 4-1.1入力1出力関数
Sigmoidニューロンによって、任意のステップ関数を再現できる。
※2.隠れ層(中間層)に2つのニューロンがあるが、右図グラフが表すのは、上のニューロンの出力結果。 パーセプトロンの不等式
隠れ層
4.連続関数としてのUniversality 4-1.1入力1出力関数
Sigmoidニューロンによって、任意のステップ関数を再現できる。
パーセプトロンの不等式
(b,w)が十分に大きい
も自由に変化可能
※2.隠れ層(中間層)に2つのニューロンがあるが、右図グラフが表すのは、上のニューロンの出力結果。
※1.パーセプトロンの不等式において、(右辺)=0と
するため、 として(左辺)に移項している。
4.連続関数としてのUniversality 4-1.1入力1出力関数
Sigmoidニューロンによって、”bump”関数を実現できる。
3. ここでいう ”bump” 関数とは、右図グラフのような、S1で 0→ h となり、 S2で h→0 となる関数。 h = w1 = -w2 = 0.8 で”bump”の高さを表す。
1.S1 = - b1 / w1, S2 = - b2 / w2 とする。
S1 S2
2.右図グラフは、隠れ層(中間層)の出力の重み付き和の結果。
4.連続関数としてのUniversality 4-1.1入力1出力関数
Sigmoidニューロンによって、複数の”bump”関数を実現できる。
2. hは、各 “bump”の高さを表す。
1.ニューロン内の数値は、各 ”bump” の変化点を表す。
0.4 0.6
0.9
0.7
4.連続関数としてのUniversality 4-1.1入力1出力関数
無数の”bump”関数によって、任意の連続関数を近似できる。
このように、
無数の隠れ層を用意し、無数の”bump” 関数を細かく用意すれば、十分に正確な近似のもとで、
隠れ層の出力の重み付き和によって、任意の連続関数を実現できる。
問題は、Neural Network全体の出力によって、任意の連続関数を実現すること。
これは、隠れ層の出力の重み付き和を、にすることによって達成できる。
以上で、1入力1出力の場合に、
Neural Networkによって、任意の連続関数を実現できる
ことが分かりました。
次に、2入力1出力の場合を考えます。
4.連続関数としてのUniversality 4-2.2入力1出力関数
Sigmoidニューロンによって、任意のステップ関数を実現できる。( y の重みが0で、x に関して)
1.出力ニューロン内の数値は、ステップ関数の変化点を表す。
2.出力ニューロン内の変数は、変化する変数を表す。
4.連続関数としてのUniversality 4-2.2入力1出力関数
Sigmoidニューロンによって、任意のステップ関数を実現できる。( xの重みが0で、yに関して)
1.出力ニューロン内の数値は、ステップ関数の変化点を表す。
2.出力ニューロン内の変数は、変化する変数を表す。
4.連続関数としてのUniversality 4-2.2入力1出力関数
Sigmoidニューロンによって、”bump”関数を実現できる。( y の重みが0で、x に関して)
1.右図グラフは、隠れ層の出力の重み付き和を表す。
2.出力ニューロン内の数値は、”bump” の変化点を表す。
3.h は、“bump” の高さを表す。
4.連続関数としてのUniversality 4-2.2入力1出力関数
1.右図グラフは、隠れ層の出力の重み付き和を表す。
3.h は、“bump” の高さを表す。
Sigmoidニューロンによって、”bump”関数を実現できる。( x の重みが0で、y に関して)
2.出力ニューロン内の数値は、”bump” の変化点を表す。
4.連続関数としてのUniversality 4-2.2入力1出力関数
1.右図グラフは、隠れ層の出力の重み付き和を表す。
2.出力ニューロン内の変数は、変化する変数を表す。
3.h は、“bump” 関数の高さを表す。
”bump”関数を重ねあわせると、グラフのような関数となる。
ここ(3h/2)で、Sigmoid 関数によって
区切ると、
図のような“tower”
のような関数となる。
4.連続関数としてのUniversality 4-2.2入力1出力関数
1.右図グラフは、Neural Network全体の出力を表す。(b= -3h/2)
2.”tower”関数とは、右図グラフのような、”bump” 関数の2次元版。
3.ニューロン内の数字は、各変数の変化点の位置を表す。
”bump”関数を重ねあわせることで、“tower” 関数を実現できる。
4.連続関数としてのUniversality 4-2.2入力1出力関数
Sigmoidニューロンによって、複数の”tower”関数を実現できる。
1.右図グラフは、2層目の隠れ層の出力の重み付き和を表す。
4.連続関数としてのUniversality 4-2.2入力1出力関数
無数の”tower” 関数によって、任意の連続関数を実現できる。
このように
無数の“tower”関数を細かく用意すれば、
十分に正確な近似のもとで、
隠れ層の出力の重み付き和によって、任意の連続関数を実現できる。
前節同様に、
隠れ層の出力の重み付き和を、にすることによって、
2入力1出力の場合でも、任意の連続関数を実現できる。
n入力1出力の場合でも同様に、任意の連続関数を実現できる。
・Snとtnは、各変数の“bump” 関数の変化点を表す。
・n入力の場合、出力ニューロンにおいて、b = - (n + 1/2) h となる。
1出力をm出力にするには、1出力のNeural Networkをm 個用意すればよいだけ。
以上の議論から、
Neural Network によって、十分に正確な近似のもとで、
任意の多入力多出力連続関数Fm(X1,X2,X3,…,Xn)
(n=1,2,3, …; m=1,2,3, …;)を実現できる
ことがわかりました。
つまり、
Neural Network によって、任意の連続関数を実現できる
ことが分かりました。
しかし、任意の計算を
“理論”的に実現できることと、“実用”的に実現すること
には、大きな差があります。
Neural network の中でも、Deep Learning は、
所望の計算を“実用”的に実現する方法
として、経験則的に良い方法と言われています。
本自体がまだアップロードされていませんが、
Deep Learning
についても、機会があればまとめてみたいと思います。