mathematical foundation of statistical learningwatanabe-...三層パーセプトロン x 1 x 2 x m f...
TRANSCRIPT
神経回路網
疑問: ものすごく複雑なモデルでも 学習することができるのだろうか
非線型
特定できない
隠れた部分についての対称性
非常に多くのパラメータ
nonlinear
Nonidentifiable
symmetry
Many parameters
Neural Network
神経素子
x1 x2 x3 xM
w1 w2 w3wM
∑ wi xiM
i=1
σ( ∑ wi xi + θ) : 出力M
i=1
神経素子(ニューロン)
シナプス結合荷重
バイアスθ
1個の Neuron のモデル
(x1,…,xM) : 外界からの入力(w1,…wM, θ):パラメータ
三層パーセプトロン
x1 x2 xM
f1 f2 fN
出力層
中間層
入力層 最急降下でやってみたらできた。(Rumelhart&McClelland,1985)
遠い遠い昔、「入力→中間」を学習させるのは不可能だと思われていた。「出力の誤差からここを学習するなんて無理・・・」
Three-Layer Perceptron
モデルの説明
i
j
k
xk
oj=σ(∑wjkxk+θj)M
k=1
中間
fi =σ(∑uijoj+φi)H
j=1
出力
uij
φi
fi
wjk
θj
oj
同じものを並べるだけなので、プログラムは簡単です。
学習と汎化
E(w) = (1/n) Σ (Yi-f(Xi,w))2n
i=1
学習誤差関数
F(w) = ∫∫ (y-f(x,w))2 q(x,y) dxdy
汎化誤差関数
学習の真の目的は汎化誤差を小さくすることである
最急降下法
E(w) = (1/n) Σ (Yi-f(Xi,w))2n
i=1学習誤差関数
∇E(w)を計算するには、毎回 i=1,2…,n の足し算をしなくてはならない。サンプル数 n が大きいと大変。
w(t+1) -w(t) = - η∇E(w(t))
最急降下法: t=0,1,2,3,…, η>0 は定数
∇E(w) = (1/n) Σ ∇{ (Yi-f(Xi,w))2 }∇を計算するとn
i=1
確率降下法
各時刻 t において i 番目のデータをランダムに選んで
とする。
w(t+1) - w(t) = ーη(t)∇{ (Yi-f(Xi,w(t)))2 }
◎1個ずつデータを取ってくるだけで学習できる。
◎ η(t) を適切に設計する必要がある。
◎ 最急「バッチ学習」 ⇔ 確率「オンライン学習」
最急降下法と確率降下法
定理: η(t) (t=0,1,2,3,…) が
η(0)+η(1)+・・・+η(t) → ∞
η(t) → 0
を満たすとする。このとき、確率降下法は最急降下法と(局所的には)同じ点に収束する。
「η(0)+η(1) +・・・+η(t) →∞」が成り立たないと途中で止まる
「η(t) → 0」が成り立たないと永久に揺れたまま
最急降下法の準備:微分の性質(1)
任意の関数 f,g,h の合成関数の微分
f(g(x))’=f ’(g(x)) g’(x)
f(g(h(x)))’=f ’(g(h(x))) g’(h(x)) h’(x)
y = σ(o) o = w1x1+w2x2+・・・+wMxM
∂y/∂wi = σ’(o) xi
例えば
のときは
最急降下法の準備(2)
σ(x) = 1 / (1+ e-x) の微分は
σ’ (x) = σ(x) (1-σ(x) )
シグモイド関数のとき
つまり関数の微分を関数の出力だけで計算できる。
以上のことを用いると確率降下の式は、少ない演算で計算できる。
最急降下法の計算
神経回路網の出力を f = (yi), 教師データを y= (yi) とする。
二乗誤差は E(w) = ― ∑(fi -yi )2N
i=1
12
(N : 出力の次元)
∂E∂ uij
= (fi -yi ) fi (1- fi ) oj
= (fi -yi ) ∂ fi∂ uij fi =σ(∑uijoj+φi)
H
j=1
◎ つまり微分は各ニューロンの出力を組み合わせると計算できる。
「中間→出力」の結合荷重についての微分は
(参考)生体神経回路との関係について
uij := uij ーη(fi -yi ) fi (1- fi ) oj
fi
ojuij
システム全体の誤差の最急降下を各ニューロンのローカルな値だけを使って計算できる。生体神経回路と類似するかどうかは、まだわかっていない。
(参考) Hebb 則生体神経回路の結合荷重は、通った信号の強さに比例して強くなる
◎ 導出された最急降下法は、自然界にある生体神経回路でも使われているのだろうか(?)。小脳では使われているらしい(??)
Biological Neural Network
計算式 E(w) = ― ∑(fi -yi )2N
i=1
12
(1) ∂ fi∂oj
∂ oj
∂wjk
∂E∂wjk
(2) (3) の順に計算する
(3) の結果を誤差逆伝播法という
∂E∂wjk
= ∑ (fi -yi ) ∂ fi∂wjk
N
i=1
∂ fi∂wjk
= ∂ fi∂oj
∂ oj
∂wjkoj=σ(∑wjkxk+θj)
M
k=1
ヒント:
fi =σ(∑uijoj+φi)H
j=1
(注意) どんなに深い学習モデルでもこれと同じ計算法が使える。
「入力→中間」の結合荷重についての微分を計算してみましょう。
中間→出力
入力→中間
過学習現象
学習は 「大局→局所」の順で進んでいく。
学習の初期は学習誤差と汎化誤差は同様に小さくなる。
学習が進むと学習誤差は小さくなるにも関わらず汎化誤差は増大することがある。
汎化誤差
学習誤差
学習回数
「構造の発見」と「過学習」は区別できるか
◎ 複雑なモデルでも最急降下で学習できる。◎ 「構造の発見」ができる学習モデルは
過学習を起こしやすいモデルでもある。
汎化誤差
学習回数
学習誤差
構造発見
構造発見
誤差
関数近似能力(1)
どんな連続関数も、中間ユニットを十分たくさんとってパラメータを適切に定めれば3層パーセプトロンによって近似できる。
入江文平,舟橋賢一, サイベンコ (1987)
※多項式でも、三角関数でも、できる。
※関数空間のトポロジーは、同値でないものがたくさんあって、「近似できる」という意味にもいろいろなものがある。
※「Weierstrassの多項式近似定理」
関数近似能力(2)
バロン(1993)3層ニューラルネットは、多項式や三角関数よりも遥かに優れた近似効率を持つ。
※ 神経回路網は、多項式や三角関数とは違うのか?という問いかけがなされてきた。関数近似の意味ではその違いが示されている。
※ 実は、多項式や三角関数でも、目標関数に合わせて基底関数を選ぶことができれば同じオーダーの精度になる。基底関数を最適化できるかどうかが本質的な違いである。
関数近似能力(3)
x1 x2 x3
F(x) = Σ aj f( bj, x )H
j=1
単純パーセプトロン、SVM 、カーネルマシンでは {aj}だけがパラメータ
3層パーセプトロン、深層学習では{ aj, bj } の両方がパラメータ
y
aj
bj
{bj} は関数空間(関数の空間)を最適化し、{aj}は空間内での最適化を行っている。
◎ カーネルマシンの提案は、小川英光(1993)、SVM(1995)など
関数近似能力(4)
min || g(x) - Σ aj f( bj, x ) || 2H
j=1≧ C1(g) / H 2/M
従来のモデル: (M=dim x)どのように{bj}を選んでも、ある関数 g とある H が存在して
{aj}
階層モデル:
min || g(x) - Σ aj f( bj, x ) || 2H
j=1≦ C2(g) / H
{aj,bj}
任意の関数 g と任意の H に対して
例:1023 個のデータがあっても 1000×1000画素の画像空間では一次元あたり (1023)1/(106) =1.00005 個しかデータがない。
ものすごくたくさんのデータがあるように見える場合でも超高次元空間上ではスパースでしかない。
「次元の呪い」 は解かれたCurse of dimensionality
画像・音声・自然言語は超高次元空間上にある。
人工知能を作るということは、超高次元空間上の関数または確率密度関数を作るということである。
次元の呪い 「人工知能が関数または確率密度関数で表せた
としても、超高次元空間では学習によって作ることは不可能だろう」
と思われてきた。しかし階層型学習モデルによって、この課題は解決された・・・。
注意: 学習モデルの能力とは
どれだけ、たくさんの関数を近似できるか?
一般的には 両立しない
関数近似能力
少ない個数の例から、未知のものに対してどれだけ正確な予測ができるか?
汎化能力
だが・・・ しかし・・・
任意の関数が近似できることは、どんな問題でも解決できることではない。
◎ 汎化能力についても解析が進みつつある。
◎ 関数近似能力については解明された。
汎化能力とモデルの設計
複雑なモデルを用いて学習方法を工夫する
できるだけ単純なモデルを用いる
汎化能力の向上のための二つの考えかた
テストデータについての誤差(汎化誤差)を小さくできる能力を汎化能力という。
方法(1)「最小二乗法+モデル選択」
モデルが複雑であるほど 「汎化誤差ー学習誤差」 は大きくなる(オーバーフィット)。
最小二乗法は「汎化誤差ー学習誤差」が大きいので、小さなモデルを使わなくてはならない。このため神経回路網の長所が活かせない。
モデルの複雑さ
誤差
汎化誤差
学習誤差
最尤法は1920頃 Fisher 等に支持されたが最良の方法でないことがわかった。
方法(2)「正則化」
H(w) = Σ (Yi-f(Xi,w))2 + R(w)n
i=1
学習誤差関数に正則化項を加えて最小化 (Tikhonov)
Ridge 項 R(w) = λ Σ |wj|2
Lasso 項 R(w) = λ Σ |wj|
例 λ>0 (ハイパーパラメータ)として
汎化能力が向上するかどうかは、真の分布、学習モデル、正則化項、ハイパーパラメータによって異なる。どのように λ を最適化すると良いのだろうか。
◎ Ridge : 大昔からあるので最初の研究は不明。たぶんTikhonov。◎ Lasso : 石川眞澄(1990)、 Tibshirani (1996) など。
方法(3)「ベイズ予測」
H(w) = Σ (Yi-f(Xi,w))2 + R(w)n
i=1
パラメータを確率分布にして平均関数で予測する
ベイズ法あるいはアンサンブル学習によって予測精度は向上するが事後分布に従うパラメータ生成の演算量が大きかった。しかし近年、ベイズ法もコンピュータで実現できるようになり、高精度な予測が必要な問題を中心に使われるようになっている。
p(w) ∝ exp(- H(w) ) : 事後分布
f*(x) = ∫ f(x,w) p(w)dw : ベイズ予測
ベイズ法は1760頃からあるが広く使われるようになったのは1985頃から。
汎化能力の探求
◎ 神経回路網の最小二乗推定における汎化誤差は、従来の統計学の方法では解析できない (萩原克幸・戸田尚宏・臼井支朗, 1992)。
最小二乗法はオーバーフィットが大きい。
最小二乗法を用いて汎化誤差を小さくするには小さなモデルを適用する必要がある。またAIC, BIC では神経回路網を評価できない。
◎ 神経回路網にベイズ法を適用したときの汎化誤差は、新しい数学的方法によって解析できる(2001)。
ベイズ法ではオーバーフィットが小さい。
ベイズ法では大きめのモデルを用いてもオーバーフィットが小さく関数近似能力を活用することができ、汎化誤差を小さくできる。神経回路網にも適用できる評価法がある(WAIC,WBIC)。
神経回路網は召喚魔法?
ニューラルネットワークをさらに多層にしたものが深層学習。
深層学習は、画像・音声・自然言語のように対象が複雑になればなるほど、問題が大規模で難しくなればなるほど実力を発揮するが、適切に使うにはノウハウが必要になる。このため「深層学習は召喚魔法(?)」という意見もある。
◎ ネットワーク構造の決め方
◎ パラメータ初期値の設計法
◎ 正則化項の作り方
◎ 最急降下法のとめ方
◎ アンサンブルの作り方 など
召喚士 募集中
深層学習を自由自在に操り真に強い敵と
戦える才能を持つ人を探しています。
「誰でも使えるようになってほしい」という要望が多数。
学習システムの応用(1)
神経回路網に限らず、いろいろな学習システムがある。サポートベクトルマシン、隠れマルコフモデル、混合正規分布、ボルツマンマシン、ベイズネットワーク、・・・、深層学習。
様々なことに応用されている。音声画像の処理・認識、ロボット制御、医療情報処理、ひとのモデリング、自動運転、経済予測、消費者解析、・・・。
応用をする場合、実務の知識と経験が必要です。どのモデル・方法が適切かは現実をよく考えて決めます。
データ解析のための基本ツールも知っておきましょう。