Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
情報学習理論
渡辺澄夫
東京工業大学
教師あり学習の枠組み
学習データ
X1, X2, …, Xn
Y1, Y2, …, Yn
テストデータ
X
Y
情報源
q(x,y) y=f(x,w)
学習モデル
復習:最急降下法
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」が成り立たないと永久に揺れたまま
神経回路網
疑問: ものすごく複雑なモデルでも 学習することができるのだろうか
非線型
特定できない
隠れた部分についての対称性
非常に多くのパラメータ
nonlinear
Nonidentifiable
symmetry
Many parameters
Neural Network
歴史はめぐる
単純パーセプトロン 1960頃
多層パーセプトロン 1985頃
SVM 1995頃深層学習 2010頃
生体神経回路網を模倣して作られた大きな複雑さを持つ学習モデルが現実の問題解決に役立つことが広く知られるようになった。
(注意) この分野は宣伝が 過大 と 過小を繰り返している。
夏 → 冬 → 夏 → 冬 → ・・・
「生体神経回路を模倣して作られた」ということが、多すぎる期待を与え、それはまた多くの落胆を引き起こしやすい。
◎ 実際の研究は20年の単位で一歩ずつ進展している。
神経素子
x1 x2 x3 xM
w1 w2 w3wM
∑ wi xiM
i=1
σ( ∑ wi xi + θ) : 出力M
i=1
神経素子(ニューロン)
シナプス結合荷重
バイアスθ
1個の Neuron のモデル
(x1,…,xM) : 外界からの入力(w1,…wM, θ):パラメータ
非線型応答:
ニューロン
u
σ(u) = 1/(1+e-u) : シグモイド関数
u
σ( u )1
0
1/2
(注意)この形の関数に数学的な意味があるかどうかはわかっていない。
三層パーセプトロン
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
同じものを並べるだけなので、プログラムは簡単です。
数式で書くと
M
k=1fi (w)=σ( ∑uij σ( ∑wjkxk+θj) + φi)
H
j=1
出力ユニットN個
中間ユニットH個
入力ユニットM個
θj
φi
wjk
uijパラメータ全部の集合を1文字 w で表す
一個のデータ x=(x1,x2,…,xM), y=(y1,y2,…,yN) についての確率降下は
-∇{ Σ (yi-fi(x,w))2 }N
i=1
この∇が計算できると確率降下法が実行できる。
やってみたらできた
最急降下法の準備:微分の性質(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) )
シグモイド関数のとき
つまり関数の微分を関数の出力だけで計算できる。
以上のことを用いると確率降下の式は、少ない演算で計算できる。
学習の様子
i
j
k
xk
uij
φi
fi
wjk
θj
oj
yi教師データ
NN出力
外界からの入力
入力 x = (x1,x2,…,xM)
に対する
神経回路網の答え
(f1,f2,…,fN)
教師データ
(y1,y2,…,yN)
二乗誤差が小さくなるよう
に各パラメータを変更
最急降下法の計算
神経回路網の出力を 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
問題1 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
(注意) どんなに深い学習モデルでもこれと同じ計算法が使える。
「入力→中間」の結合荷重についての微分を計算してみましょう。
中間→出力
入力→中間
いろいろなことに応用してみよう
構造の発見
適切なパラメータを見つけるには時間がかかる。
運が悪いと見つからないときもある。
適切なパラメータが見つかると急速に学習が進む。
ずっと続けると・・・。
汎化誤差
学習誤差
学習回数
学習誤差と汎化誤差
E(w) = (1/n) Σ (Yi-f(Xi,w))2n
i=1
学習誤差 (学習データ (Xi,Yi)を使う)
E(w) = (1/m) Σ (Yj-f(Xj,w))2m
j=1
汎化誤差 (学習データとは違うテスト用データ (Xj,Yj) を使う)
学習誤差が小さくなるように学習すると汎化誤差も小さくなるのだろうか?
過学習現象
学習は 「大局→局所」の順で進んでいく。
学習の初期は学習誤差と汎化誤差は同様に小さくなる。
学習が進むと学習誤差は小さくなるにも関わらず汎化誤差は増大することがある。
汎化誤差
学習誤差
学習回数
「構造の発見」と「過学習」は区別できるか
◎ 複雑なモデルでも最急降下で学習できる。◎ 「構造の発見」ができる学習モデルは
過学習を起こしやすいモデルでもある。
汎化誤差
学習回数
学習誤差
構造発見
構造発見
誤差
出力1個
中間H個
入力2個
出力
入力
教師データ
中間
問題2
2次元学習データの例
ニューラルネットの学習の過程を観察してみよう。学習は、初期、中期、後期でどのように進むのだろうか。
問題2
初期
学習誤差と汎化誤差の挙動は似ているか?
中期 その後
学習の様子
学習誤差と汎化誤差