SlideShare a Scribd company logo
中村 良 慶應義塾大学 青山敦研究室 学部4年
s13642rn sfc.keio.ac.jp   Twitter@_Ryobot
機械学習と深層学習の数理
@
・誤差逆伝播法
・損失関数と活性化関数
・重回帰モデル(最小二乗法,最尤推定法)
・正則化(Ridge,Lasso)
・CNN(Convolutional Neural Network)
・ホップフィールドネットワーク
・ボルツマンマシン
・制約ボルツマンマシン(RBM,DBN)
・強化学習(マルコフ決定過程,Q学習)
・寄せ集め
資料の流れ
機械学習のための行列の微分
x =



x1
...
xk


, f(x) はスカラー, F(x) =



f1(x)
...
fm(x)


, a =



a1
...
ak


 とする.
∂F (x)
∂x =




∂f1(x)
∂x1
· · · ∂fm(x)
∂x1
...
...
...
∂f1(x)
∂xk
· · · ∂fm(x)
∂xk



, ∂xT
a
∂x = ∂aT
x
∂x = a 偏微分演算子でF(x)を作用していると解釈
∂Tr(AB)
∂aij
= bji → ∂Tr(AB)
∂A = BT
A,Bを行列とする.
合成関数の微分
も直感通り
∂f(g(x))
∂x = ∂g(x)
∂x
∂f(g(x))
∂g(x)
付録1.数学の復習http://www.r.dl.itc.u-tokyo.ac.jp/~nakagawa/SML1/math1.pdf
ベクトルの積では.テンソル積の特殊な条件として内積,外積を理解するとよいかも.ベクトルを行列の形に
すると「テンソル=内積(テンソル積の対角成分)+外積(テンソル積の対角以外の成分)」になってをかし
テンソルデータの機械学習もをかしhttp://www.slideshare.net/ryotat/20111128-10460799
もういちどだけ内積・外積http://hooktail.sub.jp/vectoranalysis/ReviewVectorProds/
∂(AB)
∂x = ∂A
∂x B + A∂B
∂x , ∂(AB)
∂A = B + A∂B
∂A = B (if A is independent on B)
行列式のlogの微分
∂
∂x log |A| = Tr A−1 ∂A
∂x , ∂
∂A log |A| = (A−1
)T
機械学習のための線形代数学
数式はLaTeXiTというアプリで作りました.PDF,SVG,TIFF,PNG,JPEGの数式をLaTeXスクリプトで
自動生成してくれてPPTやKeynoteにコピペできるので捗るし,TeXの勉強にもなるしオススメです.
Aが対称行列ならば xT
Ax = Tr(AxxT
)
共分散行列Σは対称行列であり,
正規分布においてx^TΣxの計算が多いので必要
|AB| = |A||B| ⇒ |A−1
| = 1
|A| , (A−1
)T
= (AT
)−1
行列式の基本的な性質
A,BはN×M行列のとき
機械学習は内積のオンパレードであるが,物理でいう仕事 W =
P2
P1(C)
F · ds と同じで作用素と考える
|IN×N + ABT
| = |IM×M + AT
B|
N×1すなわち列ベクトルa,bのとき |IN×N + abT
| = 1 + aT
b
P^{-1}の計算が大変なときに役に立つ
(A + BD−1
C)−1
= A−1
− A−1
B(D + CA−1
B)−1
CA−1
D^{-1}の計算(Woodbury identity)
(P−1
+ BT
R−1
B)−1
BT
R−1
= PBT
(BPBT
+ R)−1
xT
Ax二次形式 の微分(勾配ベクトル)は 2Ax
McCulloch-Pittsモデル(抵抗を使い物理的に実現.論理演算ができる)
ステップ関数:x:入力(0か1のみ), w:重み, h:閾値
1入力1出力のnot演算子(w_1=-2, x=-1)
2入力1出力のor演算子(w_1=1, w_2=1, h=0.5)
2入力1出力のand演算子(w_1=1, w_2=1, h=1.5)
ニューラルネットワーク
y = f(
n
i=1
wixi − h)
パーセプトロン(ローゼンブラットって名前かっこいい)
誤り訂正学習…出力と教師信号間の誤りを訂正する学習
αを更新量を決めるパラメータ.
式を見ると明らかだが誤差がなければ変化しない
活性化しなかった(出力y=0, 教師r=1)場合
hを小さくする,x=1の重みwを大きくする,x=0も重みを変えない
活性化しすぎた(出力y=1, 教師r=0)場合
hを大きくする,x=1の重みwを小さくする,x=0の重みを変えない
wi ← wi + α(r − y)xi
h ← h − α(r − y)
線形分離不可能
多層パーセプトロン
McCulloch-Pittsモデルの全ノードを重み付きで結合させた
入力層,中間層,出力層の3層構造.
誤り訂正学習は層を超えて誤差を訂正できない.ではどうするのか?
初期の頃は,入力層と中間層の重みを乱数,中間層と出力層の重みを
誤り訂正学習させていたらしい.
線形分離可能
多層パーセプトロンが線形分離可能な理由
高卒でもわかる機械学習 (3) 多層パーセプトロンhttp://hokuts.com/2015/12/04/ml3-mlp/
ニューラルネットワークが任意の関数を表現できることの視覚的証明:http://nnadl-ja.github.io/
nnadl_site_ja/chap4.html
OR(論理和)w =


−0.5
1
1

 w =


−1.5
1
1

AND(論理積) NAND(否定論理積)w =


1.5
−1
−1


XOR(排他的論理和)「x_1, x_2どちらかは真だが,『両方が真』ではない」ときに真
多層パーセプトロンが入力データを順に伝播させて出力を得ているなら,ネットワークの出力と入力データ
の教師信号との誤差を各層に逆伝播できれば,現時点の誤りを訂正するように重みを更新できないか?とい
う発想.具体的には,誤差Eと重みw^0における更新量を傾きから決定し,w^1を得る.以下,これを理想
的な重みw^optまで繰り返す.これを勾配降下法(Gradient Descent Method)という.
誤差は二乗誤差Eを使う(あとで最小二乗法で導出を紹介する).これを小さくすればよい.
E(w) =
N
n=1
||rn − yn||2
二乗誤差Eが大きいとき更新量も大きく,小さいとき更新量も小さくしたい.
これは傾きを求めればよいので,誤差関数Eを微分する.η(eta)は学習係数
∆w = −η
∂E
∂w
McCulloch-Pittsモデルのステップ関数は微分できない.どうするか?
微分可能な活性化関数f(u)としてシグモイド関数を使う.(ReLUとかもある)
f(x) =
1
1 + e−ax
(a > 0), f(u) =
1
1 + e−u
aが大きいほどカーブが急激になり,
aが0に近いほどなだらかな曲線
u =
n
i=1
wixi
誤差逆伝播法01
∂E
∂wi
=
∂E
∂y
∂y
∂wi
合成関数の微分から そして,二乗誤差Eの微分を求め,y=f(u)とおくと,
∂E
∂wi
= −(r − y)
∂y
∂wi
= −(r − y)
∂f(u)
∂wi
= −(r − y)
∂f(u)
∂u
∂u
∂wi
シグモイド関数を微分するhttp://nonbiri-tereka.hatenablog.com/entry/2014/06/30/134023
∂E
∂wi
= −(r − y)xi
∂f(u)
∂u
∂u
∂wi
= xi なので
∂f(u)
∂u
= f(u)(1 − f(u))
∂E
∂wi
= −(r − y)xif(u)(1 − f(u))シグモイド関数の微分は なので
y=f(u)なので ∆wi = −η
∂E
∂wi
= η(r − y)y(1 − y)xi が1つのパーセプトロンの更新量となる.
∂E
∂wij
=
∂E
∂yj
∂yj
∂wij
= −(rj − yj)
∂yj
∂wij
= −(rj − yj)
∂yj
∂uj
∂uj
∂wij
E =
1
2
q
j=1
(rj − yj)2
複数のパーセプトロンの二乗誤差は,各出力ノードの誤差の総和なので
よって,二乗誤差の微分は,
ちなみに,w_ijはx_i, y_j間の重みなので,Eの微分は関連するy_jのみの微分となる.
誤差逆伝播法02
よって,
∂E
∂wij
= −(rj − yj)yj(1 − yj)xi
更新量は,∆wij = η(rj − yj)yj(1 − yj)xi
このように複数のパーセプトロンの更新量は,
更新したい重みに結合するx_iとy_jのみから求めらる.
これを中間層を持つ出力ユニットyのみの多層パーセプトロンに応用する.
iを入力層のユニット,jを中間層のユニット,入力層と中間層の重みをw_1ij,中間層と出力層の重みを
w_2j1とする.まず,中間層と出力層の重みw_2j1から更新.
y
z1
z2
z3
∆w2j1 = η(r − y)y(1 − y)zj更新量は,
次に,入力層と中間層の重みw_1ijを更新.
∂E
∂w2j1
=
∂E
∂y
∂y
∂u21
∂u21
∂w2j1
= −(r − y)y(1 − y)zj
∂E
∂w1ij
=
∂E
∂y
∂y
∂u21
∂u21
∂w1ij
= −(r − y)y(1 − y)
∂u21
∂w1ij
w1ij
w2j1
中間層-出力層の更新=(誤差関数の微分)
(活性化関数の微分)(活性の微分)
CAUTION!
i, j, 1はユニットの名前
x_i, z_j, yはユニットの値(0<x<1の値)
w_1ij, w_2j1は重み(マイナスも取る)
u_1j, u_21は活性
z_j, yはシグモイド関数(=活性を
代入したときのシグモイド関数の値)
誤差逆伝播法03
u_21は中間層のユニットの値z_jと重みw_2j1からなるので,z_jに着目して微分すると,
∂u21
∂w1ij
=
∂u21
∂zj
∂zj
∂w1ij
∂u21
∂zj
= w2j1ここで,
∂zj
∂w1ij
=
∂zj
∂u1j
∂u1j
∂w1ij
また,
z_jはシグモイド関数なので,
∂zj
∂u1j
= zj(1 − zj) また,
∂u1j
∂w1ij
= xi
∂u21
∂w1ij
= w2j1zj(1 − zj)xiまとめると, なので,
∂E
∂w1ij
= −(r − y)y(1 − y)w2j1zj(1 − zj)xi
更新量は,∆w1ij = η(r − y)y(1 − y)w2j1zj(1 − zj)xi
入力層-中間層の更新=(誤差関数の微分)中間層-出力層{(活性化関数の微分)
(活性の微分)}入力層-中間層{(活性化関数の微分)(入力値)}
上位層の微分が下位層に
引き継がれることを連鎖律という
では,複数の出力をもつ多層パーセプトロンはどうなるか? 先のモデルの追加として,
出力層のユニットをk,中間層と出力層の重みをw_2jkとし,中間層と出力層の重みw_2jkから更新.
∂E
∂w2jk
=
∂E
∂yk
∂yk
∂u2k
∂u2k
∂w2jk
= −(rk − yk)yk(1 − yk)zj これは先のと同じである.
誤差逆伝播法04
次に,入力層と中間層の重みw_1ijを更新.
中間層のユニットjはすべての出力層のユニットと連結しているので,
二乗誤差Eの重みw_1ijによる微分は,出力層の全ユニットの合計となる.
∂E
∂w1ij
=
q
k=1
∂E
∂yk
∂yk
∂u2k
∂u2k
∂w1ij
= −
q
k=1
(rk − yk)yk(1 − yk)
∂u2k
∂w1ij
∂u2k
∂w1ij
=
∂u2k
∂zj
∂zj
∂w1ij
=
∂u2k
∂zj
(
∂zj
∂u1j
∂u1j
∂w1ij
) = w2jkzj(1 − zj)xi
∆w1ij = η
q
k=1
{(rk − yk)yk(1 − yk)w2jk} zj(1 − zj)xi更新量は,
この更新式のシグモイド関数は,uが0より非常に小さいときyは0に近づき,微分の項も0に近づく.
uが1より非常に大きいときyは1に近づき,微分の項も0に近づく.
このように,更新量が0に近づき更新されなくなる問題がある.いわゆる勾配消失問題
f(u) =
1
1 + e−u
, u =
n
i=1
wixi
結論,誤差逆伝播法のもやもやが解消されてSAN値が上がった.
誤差逆伝播法05
多クラス分類問題は,クロスエントロピー関数(PRML4.108の式)を使う.
E = −
C
c=1
N
n=1
rcn ln ycn
2クラス分類は,E = −
N
n=1
{rn ln yn + (1 − rn) ln(1 − yn)}
E =
N
n=1
||rn − yn||2
回帰は,二乗誤差関数
tanh u =
sinh u
cosh u
=
eu
− e−u
eu + e−u
, f (u) = 1 − f(u)2
ステップ関数,シグモイド関数は紹介したが,他にどんな活性化関数があるのか?
tanh関数(-1<f(u)<1を出力)
ReLUことRectified linear unit(0以上なら入力値をそのまま出力)
f(u) = max{u, 0}, f (u) = 1
ソフトマックス関数(出力に使う尤度関数)
出力層の各ユニットの和が1なので,出力値が各クラスである確率と見なせる.他クラス分類に使われる
p(yk
) =
exp(u2k)
Q
q=1 exp(u2q)
ReLU
Maxout Networks
Maxout
LReLU, Maxout等もある.
損失関数(=誤差関数),活性化関数
#08 確率的勾配降下法http://sig.tsg.ne.jp/ml2015/ml/2015/06/08/stochastic-gradient-descent.html
ロジスティック回帰+確率的勾配降下法http://d.hatena.ne.jp/n_shuyo/20110710/logistic
確率的勾配降下法(SGD)
バッチ学習(batch learning)…すべての学習サンプルを用いて更新量を求める
繰り返し回数t回目の各学習サンプルに対する誤差をEt
n Et
,すべてのサンプルに対する誤差を
誤差 Et
nは,クロスエントロピー関数や二乗誤差関数を使う.
とする.
Et
=
n
n=1
Et
n, w(t+1)
= wt
− η ∂Et
∂wt
バッチ学習のメリットは,学習セットに含まれるノイズのようなサンプルによる大きな変動を抑える.
一方デメリットは,すべての学習サンプルを用いるため更新に時間がかかる.
逐次学習(sequential learning, online learning)…学習サンプルを一つずつ与える
1つのサンプルに対する誤差
ただし,w^tはネットワークのすべての重み
Et
nをEt
= Et
n として更新する.
1つのサンプルから更新量を決めるので,サンプルにより更新量が大きく変動する.対策として,
学習係数ηを小さくして少しずつ更新すると時間がかかる.また,学習が収束しない場合がある.
ミニバッチ学習(mini-batch learning)…バッチ学習と逐次学習の中間的な方法
学習セットを少量のサブセットDに分け,一回の更新にそのサブセットを用いる.
Et
=
n∈D
Et
n
確率的勾配降下法(stocastic gradient descent)…学習サンプルの一部を用いて更新量を求める方法
ミニバッチ学習や逐次学習はSGDである.更新のたびにサンプルの傾向が変わり局所解に陥りにくい.
学習係数
学習係数を大きくすると,更新量が大きくなるが誤差が収束せず,うまくネットワークが学習できない.
学習係数を小さくすると,更新量が小さいため誤差が収束せず,学習に時間がかかる.ではどうするか?
一般に,最初は大きな値にして徐々に小さくすることで収束を図る方法が効果的とされる.
学習係数を自動的に変える方法にAdaGradがある.勾配∇Eを累積した値で学習係数ηを割る.
AdaGradhttp://www.logos.t.u-tokyo.ac.jp/~hassy/deep_learning/adagrad/
w(t+1)
= w −
η
t
i=1( E(i))2 +
E(t)
勾配の累積はネットワークのパラメータごとに行うので,それぞれ独立した学習係数となる.
重回帰モデル(multiple regression model)
y = β0 + β1x1 + · · · + βpxp +目的変数yをp個の説明変数x1⋯xpで予測するモデル
これの連立方程式なので yi = β0 + β1xi1 + · · · + βpxip + i
ベクトルにすると



y1
...
yn


 =



1 x11 · · · x1p
...
...
...
...
1 xn1 · · · xnp






β0
...
βp


 +



1
...
n



y =



y1
...
yn


, X =



1 x11 · · · x1p
...
...
...
...
1 xn1 · · · xnp


, β =



β0
...
βp


, =



1
...
n


 とおくと, y = Xβ +
y:n次元の観測ベクトル,n次元目的変数
X:n×(p+1)次元の計画行列(design matrix) ,説明変数
β:(p+1)次元の回帰係数ベクトル (これを求める)
ϵ:n次元の誤差ベクトル
重回帰モデルの理論と実装 -なぜ正則化が必要か-http://qiita.com/hogefugabar/items/
c0d71feeb1111a3c6f47
Python: Boston データセットで線形回帰分析を学ぶhttp://momijiame.tumblr.com/post/115202866516/python-boston-
%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%A7%E7%B7%9A%E5%BD%A2%E5%9B%9E
%E5%B8%B0%E5%88%86%E6%9E%90%E3%82%92%E5%AD%A6%E3%81%B6
最小二乗法
二乗誤差 S(β) =
n
i=1
2
i = T
= (y − Xβ)T
(y − Xβ) を最小にするβを求める.
S(β)
= (y − Xβ)T
(y − Xβ)
= (yT
− (Xβ)T
)(y − Xβ)
= (yT
− βT
XT
)(y − Xβ)
= yT
y − βT
XT
y − yT
Xβ + βT
XT
Xβ
= yT
y − 2yT
Xβ + βT
XT
Xβ
これをβで微分すると,
S(β)
∂β = −2XT
y + 2XT
Xβ
S(β)
∂β = 0 とおくと, −2XT
y + 2XT
Xβ = 0
XT
Xβ = XT
y
(XT
X)−1
もし が存在すれば(正則なら) β = (XT
X)−1
XT
y
結果がスカラーなので転置を外してますのでお見知り置きを
二項目は二次形式の微分ですね
ところで,なぜ二乗誤差なの?単に絶対値付けたり,4乗や6乗じゃダメなの?と,疑問に思う
かもしれない.僕は疑問に思った.どうやら,最小二乗法の推定量は,不偏で最小の分散を持
つことを保証されているかららしい.詳しくは”ガウス=マルコフの定理”を参照して
多変量正規分布
多変量正規分布の確率密度 f(−→x ) =
1
(2π)
n
2 |Σ|
exp −
1
2
(−→x − −→µ ) Σ−1
(−→x − −→µ )
補足するとx,uはn次元列ベクトル,Σはn×n対称行列(分散共分散行列のこと)
ためしにn=1を代入すると確かに普通の正規分布になる。では二次元(二変量)はどうか?
µ1
µ2
平均ベクトルは 分散共分散行列は
σ2
1 σ12
σ12 σ2
2
Σ−1
=
1
σ2
1σ2
2 − σ2
12
σ2
2 −σ12
−σ12 σ2
1
=
1
σ2
1σ2
2(1 − ρ2)
σ2
2 −σ12
−σ12 σ2
1
逆行列は ρは相関係数
成分表示は汚いですね
f(x1, x2) =
1
2πσ1σ2 1 − ρ2
× exp
−
1
2(1 − ρ2)
(x1 − µ1)2
σ2
1
− 2ρ
(x1 − µ1)(x2 − µ2)
σ1σ2
+
(x2 − µ2)2
σ2
2
二次元の標準形をプロットするとこう
なぜ多変量正規分布が出てきたかというと,
このあとの最尤推定で使います.
全空間で積分すると1,期待値がμ,分散共分散行列がΣ,標準形はNn(0,In)
最尤推定法
重回帰式 y = Xβ + の誤差ベクトルϵが多変量正規分布に従うと仮定
データ解析 Rによる多変量解析入門 (7) 最尤法,モデル選択http://www.is.titech.ac.jp/~shimo/class/doc/
lec20021121-9.pdf
∼ Nn(0, σ2
In)
よって y ∼ Nn(Xβ, σ2
In) 補足するとn=1としてΣ=σ^2で、規格化定数は平方根
確率密度関数は f(y|X, β, σ2
) = 1
(2πσ2In)n/2 exp − 1
2σ2 (y − Xβ)T
(y − Xβ)
最尤推定量β,σ^2は,尤度をmaxにする時のβ,σ^2だから対数尤度をβとσ^2でそれぞれ偏微分
L(β, σ2
|X, y) = f(y|X, β, σ2
)尤度は
対数尤度は (β, σ2
|X, y) = log L(β, σ2
|X, y)
= −
n
2
log(2πσ2
) −
1
2σ2
(y − Xβ)T
(y − Xβ)
ˆβ = (XT
X)−1
XT
y
ˆσ2
= 1
n (y − X ˆβ)T
(y − X ˆβ)
これは最犬推定→
L2正則化の必要性
(XT
X)−1
βを求めるには が存在する必要があった.
逆行列が存在しない時は階数がフルランクじゃない時.それはどんな時か?
1) 説明変数間の相関強すぎ(いわゆるマルチコ),2)n<pのとき
(XT
X + λIp+1)−1
のように何か足すことによって逆行列が求まるようにすれば…?
βλ = (XT
X + λIp+1)−1
XT
y · · · (∗)よって
このように正則でない行列を正則にすることによって推定量を得る方法を正則化という
λ(>0)は正則化パラメータ
Sλ(β) = (y − Xβ)T
(y − Xβ) + λβT
β
= ||y − Xβ||2
+ λ||β||2
を誤差関数としてβを推定.
L2ノルム(ユークリッド距離)はノルムがp=2の時である.過学習を抑え汎化性能を高める働き
λ||β||2
はペナルティ項
Sλ(β) = ||y − Xβ||2
+ λ||β||2
= (y − Xβ)T
(y − Xβ) + λβT
β
= (yT
− (Xβ)T
)(y − Xβ) + λβT
β
= (yT
− βT
XT
)(y − Xβ) + λβT
β
= yT
y − βT
XT
y − yT
Xβ + βT
XT
Xβ + λβT
β
= yT
y − 2βT
XT
y + βT
XT
Xβ + λβT
β
import pandas as pd
import numpy as np
from numpy import linalg as la
df = pd.read_csv("hogehoge.csv", index_col=0)
y = df.iloc[:, 説明変数の数].values
df = (df - df.mean())/df.std() # 基準化
X = df.iloc[:, :説明変数の数].values
X = np.column_stack((np.ones(len(X)),X))
beta = np.dot(np.dot(la.inv(np.dot(X.T, X)),X.T), y)
print beta
Python(pandas+numpy)による重回帰モデル
Sλ(β)
∂β
= 0 −2XT
y + 2XT
Xβ + 2λβ = 0
(XT
X + λIp+1)β = XT
y
β = (XT
X + λIp+1)−1
XT
y
Sλ(β)
∂β
= −2XT
y + 2XT
Xβ + 2λββで微分すると
とおくと
Lq 正則化を導入した二乗誤差関数は
q=2のものをL2正則化(Ridge)といい Sλ(β) = ||y − Xβ||2
+ λ||β||2
損失関数 Sλ(β) をβについて偏微分した値が0になるようなβを計算すると
βridge = arg min
β∈Rp
||y − Xβ||2
+ λ||β||2
= (XT
X + λIp+1)−1
XT
y
q=1のものをL1正則化(Lasso)といい
Lassoの理論と実装 -スパースな解の推定アルゴリズム-http://qiita.com/hogefugabar/items/
71916560f7efc6eededf
Sλ(β) = ||y − Xβ||2
+ λ||β||1
Lasso
Sλ(β) = ||y − Xβ||2
+ λ||β||q
= ||y − Xβ||2
+ λ
p
i=0
|βi|q
1/p
· · · (∗)
βlasso = arg min
β∈Rp
||y − Xβ||2
+ λ||β||1
L2正則化のときと同様にβで偏微分して推定量を求めたいが,L1の誤差関数の正則化項
(i.e.,λ|β|)がβで偏微分不可能なため,L2正則化のときのように推定量を求められない.
そこでCD(Coordinate Descent)というアルゴリズムを用いてβlassoを推定する.
Sλ(β)は正則化二乗和誤差関数という.
Coordinate Descent
CDでは,各パラメータ           毎に誤差関数を微分して更新式を得て,それを用いて
更新を繰り返し行うことにより,収束した最適な推定値得る.言い換えれば,次式の誤差関数をβjに
関して最小化するプロセスをすべてのjに対して反復して行う.
(i.e., β1, β2, · · · , βp)
Sλ(β) =
1
2n
||y − Xβ||2
+ λ||β||1誤差関数を
補足すると,初項のβはスカラー,第二項のβはベクトルであることに注意.
β(-j)は,係数ベクトルのj番目の要素βjを除いた(p - 1)次元ベクトルという意味.X(-j)も同様.
〈·,·〉は2つのベクトルの内積.よって,Rλ(β)をβjに関して最小化する解は次式の通り.
をβj(βj ≠ 0 )に関して微分し,=0とおいて
yi = β0 +
p
j=1
βjxij + i i = 1, · · · , N確認だが,
∂Rλ(β)
∂βj
=
1
n
N
i=1
XT
ij(Xijβj + X
(−j)
i , β(−j)
− yi) + λsign(βj) = 0
【10頁にCDAが記載】Lassoタイプの正則化法に基づくスパース推定法を用いた超高次元データ解析
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1908-05.pdf
βj =
1
XT
ijXij
S
N
i=1
XT
ij(yi − X
(−j)
i , β(−j)
), λn
正則化パラメータλを大きくすれば正則
化項の値が大きくる.つまり,回帰係数
βのうち0となるものが増える.逆にλ
を小さくすれば通常の重回帰モデルと同
じくなる.つまり,回帰係数βのうち0
となるものが減る.
ここで,Sはsoft-thresholding operatorと呼ばれ, S(x, λ) =



x − λ (x > λ)
0 (|x| ≤ λ)
x + λ (x < −λ)
具体的にはλ=1のとき,横軸x,縦軸S(x,λ)のグラフは次の通り.
また,切片(intercept)であるβ0については,
通常は正則化を考慮しない.2乗誤差をβ0に
ついて微分し,求めると,
β0 =
n
i=1(yi − Xiβ)
n
βjの更新を1,⋯,pについて繰り返すと,擬似コードは,
LassoにおけるCoordinate Descent
01 βの初期化,λの固定
02 if 切片がある:
03   (∗∗∗)式でβ0更新.
04 while 収束条件を満たさない:
05   for j in 1,⋯,p:
06     (∗∗)式でβjを更新.
07   if 切片がある:
08     (∗∗∗)式でβ0更新.
脳も機械学習もスパースコーディングが嬉しい
脳のスパースコーディングは仮説の域をでないが,スパースモデリング自体はたくさんいるニューロン(基
底ベクトル)のうち,一部のニューロン(基底ベクトル)だけが活動(線形結合)して,情報の重複をできるだけ
抑えて情報を表現できる.勝手な解釈だが,大脳のコラムの存在意義は複数のニューロンでGroup Lasso
を形成してるのでは? そして複数のコラムによる線形結合として情報を表現している.
「脳は10%しか活動していない」と言われるが,スパースコーディング的には活動していないこと自体に
意味がある.(スパースの恩恵は省エネであり,スパースがうまい個体ほど適者生存した,ともいえる.)
スパースコーディング
Group Lassoでグループごと重みが0に潰れる理由https://research.preferred.jp/2014/05/group-lasso/
【論文】スパース信号表現とその音声・画像処理への応用http://www.kurims.kyoto-u.ac.jp/~kyodo/
kokyuroku/contents/pdf/1743-05.pdf
Ωlasso(w) = w 1 =
i
|wi| Ωglas(w) =
g
wg 2
Lasso Group Lasso
λΣM
j=1(α|wj| + (1 − α)w2
j )
Elastic Net
よく使われる正則化項は以下の通り.他にもさまざまな正則化項(例えばL0,赤池情報量規準)がある.
Convolutional Neural Network
概論
CNNは,フィルタ内の領域の情報を畳み込んで作成するConvolution Layerを導入したNNである.
Convolution Layerは重みフィルタを移動させながら適用することで作成し,重みフィルタの数だけ作成さ
れる.これを重ねて活性化関数で繋いでいくことでネットワークを構築する.畳み込みにより点ではなく領
域ベースでの特徴抽出が可能になり,画像の移動や変形などに頑健になる.また,エッジなど領域ベースで
ないとわからない特徴抽出も可能になる.
GTC 2015 - Deep Learning用のCUDAライブラリ「cuDNN」http://news.mynavi.jp/articles/2015/
04/10/gtc2015_cudnn/
畳み込み
フィルタを使った「畳み込む」という処理は,「フィルタ内の画像の
ベクトル」と「畳み込みに使用するベクトル」との内積である.
2D ConvolutionはImageにFilterを重ね,対応するピクセルの値を掛
けて,総和をとる.つまり,枠内のピクセルを行ベクトルに並べ替え、
フィルタを列ベクトルに並べ替えて内積を計算する.
Convolutional Layer
S細胞の役割.パラメータには,フィルタの数(K),フィルタの大きさ(F),フィルタの移動幅(S),パディン
グ(P)がある.
特徴マップに出力する前に,tanhやReLU等の活性化関数に投げてもよい.フィルタは3次元でもよい.例
えば入力がRGB画像であれば,フィルタは3×F×Fになる.フィルタの種類を変えた特徴マップも得るので,
その場合,前のフィルタ数がKなら,次のフィルタはK×F×Fになる.
Pooling Layer
C細胞の役割.レイヤの縮小を行い,扱いやすくするための層.慣習的にAverage Pooling,Max
Pooling,Lp Pooling(中央値を強調.Lpノルムの計算に似ている)が使われる.Max Poolingの場合,
最大値の重みが1,それ以外は0となる.故に,選ばれたユニットのみ誤差逆伝播する.
Fully Connected Layer
多層パーセプトロンと同じで,特徴量から最終的な判定を行う層.二次元の特徴マップを一次元にして入力
する.多クラス分類の出力層は尤度関数を使う.回帰は線形出力関数により各ユニットの値を求める.
Convolutional Neural Networkとは何なのかhttp://qiita.com/icoxfog417/items/
5fd55fad152231d706c2
自然言語処理における畳み込みニューラルネットワークを理解するhttp://tkengo.github.io/blog/2016/03/
11/understanding-convolutional-neural-networks-for-nlp/
CNNのレイヤー構成
p(yk
) =
exp(u2k)
Q
q=1 exp(u2q)
p(yp
) =
M
m=1
wpmxm尤度関数 線形出力関数
Convolutional Layerの誤差逆伝播法
入力画像層のユニットをn_11,…, n_1r,フィルタ層のユニット(重み)をn_21,…, n_24,特徴マップ層
のユニットをn_31,…, n_3sとする.
まず,フィルタ層と特徴マップ層の重みを更新する.
∆w2jk = η(rk − yk)yk(1 − yk)zj
上位層の連鎖律により,n_11, n_21間の重みの更新量は次のようになる.
∆w1
1ij = η
q
k=1
{(rk − yk)yk(1 − yk)w2jk} zj(1 − zj)xi
同様に,すべてのユニットの更新量は次の通り.
∆wn
1ij = η
q
k=1
{(rk − yk)yk(1 − yk)w2jk} zj(1 − zj)xi
同じフィルタを異なる場所に畳み込むので,更新量の累積は次の通り.
w2jk
w1
1ij
w2
1ij
n11
n12
n1r
n21
n22
n31
n32
n3s
w1ij
w1
1ij
w2
1ij
w1ij
∆w1ij = η
N
n=1
∆wn
1ij
これをすべてのフィルタ層のユニットについて個別に行う.
CNNのハイパパラメータ
ネットワークに関わるハイパパラメータとして,
・畳み込み層の4つのパラメータ(前述)
・活性化関数の種類
・プーリングの種類
・層の構成(畳み込み層,全結合層の数等)
・ドロップアウトの割合
・前処理,正規化の有無
学習に関わるハイパパラメータとして,
・ミニバッチのサイズ
・学習係数
・更新回数
・事前学習の有無
ハイパパラメータの比較(10クラスの一般物体認識のデータセットであるCIFAR-10)の結果を見ると,
性能に影響があるのは,
・フィルタの数(多いほど良い)
・活性化関数の種類(ReLUとMaxoutが拮抗)
・前処理(ZCA白色化は必須レベル)
逆に,フィルタのサイズ,全結合層の数,
ドロップアウトの有無,学習係数の違い,
ミニバッチサイズ,正規化項の有無はさほ
ど関係ない.(とはいえ,学習回数が少ない
と影響はある.)
画像認識ならCNNだが,構成はまちまちである.最近はタスクに応じてstate-of-the-artな構成が公開され
ているそうだ.
Deep Learningの最大の闇は,ハイパパラメータの最適化にあるだろう.
Deep Learningでは,ハイパパラメータはとんでもない数ある.(学習係数,隠れ層のユニット数,層の段
数,epoch,dropout,momentum,weight decay,batch size…etc.)ではどうするか?
ランダムサンプリング
文字通り無作為にパラメータを抽出していく方法.探索の分布や幅などを変えるといったことができる.
Bayesian Optimization
関数の最適化問題とみなして,学習器を最適化していく手法が存在する.ハイパパラメータをx,学習器の誤
差関数をf(x)として,このf(x)を最小にするxを求める.このBlackBox関数の最適化手法には遺伝的アルゴリ
ズムや差分進化法がなどが有名であるが,Bayesian Optimizationでは,”BlackBox関数の事前分布を仮定
し,事後分布を見て最適化する”という手法.詳しくは,以下を参照して.
Deep Learningのハイパパラメータの調整http://olanleed.hatenablog.com/entry/2015/12/23/180457
【論文】Practical Bayesian Optimization of Machine Learning Algorithmshttp://papers.nips.cc/
paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf
ベイジアン最適化の視覚的意味https://twitter.com/asas_mimi/status/703956375114612736?
lang=ja
ハイパパラメータ
ホップフィールドネットワーク
概要
グラフィカルモデルの相互結合型ネットワーク.CNN等がパターン認識に対し,
連想記憶を行い,入力データのノイズ除去などに応用される.
連想記憶とは,あるユニットの値の組み合わせを入力パターンとして与え,対
応する出力パターンyを出力することである.入力パターンと出力パターンが
一致する記憶を自己相関記憶という.
n個の2値{0,1}のユニットで構成し,2^nの組み合わせが存在.時刻tにおけるユニットiの応答値をu_i(t),ユ
ニット値をx_iとする.時刻t+1でのユニット値x_i(t+1)は,重みw_ijと閾値b_i(t)から次のようになる.
xi(t + 1) =



1     ui(t) > 0 の場合
xi(t)   ui(t) = 0 の場合
0     ui(t) < 0 の場合
ui(t) =
n
j=1
wijxj(t) − bi(t)
よって,各時刻でランダムに選ばれた1ユニットのみ変化させ,ユニット値が変化しなくなるまで繰り返す.
ただし,自己結合は存在しない(w_ii=0,重み行列は対角0),また重みは対称である(w_ij=w_ji)
相互結合型のネットワークhttp://www.cis.twcu.ac.jp/~asakawa/chiba2002/lect6-mutual/mutual.html
エネルギー関数
ネットワークの状態が変化した時のエネルギー関数の振る舞いを観察するために,あるユニットkに関する
項とそれ以外の項にわけると,
E = −
1
2
n
i=k
n
j=k
wijxixj +
n
i=k
bixi −
1
2
(
n
j
wkjxj +
n
i
wikxi)xk + bkxk
xk(t) → xk(t + 1) ∆xk = xk(t + 1) − xk(t)ここで のとき は,1か-1となる.
Δx_kによるエネルギー関数の変化ΔE_kは,ユニットk以外は変化しない.また wij = wji なので,
∆Ek = −
1
2
(
n
j=1
wkjxj +
n
i=1
wikxi)∆xk + bk∆xk = −(
n
j=1
wkjxj − bk)∆xk = −uk∆xk
まず,Δx_k>0のとき,x_kは0→1なので,u_k>0の場合で,ΔE_k<0となる.
一方,Δx_k<0のとき,x_kは1→0なので,u_k<0の場合で,ΔE_k<0となる.
また,Δx_k=0のとき,ΔE_k=0なので,すべての場合において,∆Ek ≤ 0
よってエネルギー関数は,単純減少関数である.マルコフ連鎖の不変分布に似ている理由は後述する.
重みの学習は,エネルギー関数Eを導入する.小さな値をとる時,ネットワークは安定となる.
E = −
1
2
n
i=1
n
j=1
wijxixj +
n
i=1
bixi
エネルギー関数には非増加性があり,時刻とともに減少する.本当だろうか?
連想記憶
パターンベクトルを0,1ではなく,-1,1をとるとする.
P個のパターンをネットワークで記憶する.各パターンは
記憶項目に相当する値がエネルギー関数の最小値になるようにエネルギー関数を定義.閾値を0とすると,
xs
= (xs
1, xs
2, · · · , xs
n)(s = 1, 2, · · · , P)
Es
= −
1
2
n
i=1
n
j=1
ws
ijxs
i xs
j
これを最小化する方法は,Es が x2
i x2
j に依存するように, とすると,
Es
= −
1
2
n
i=1
n
j=1
(xs
i )2
(xs
j)2
wij =
1
P
P
s=1
ws
ij =
1
P
P
s=1
xs
i xs
j
このように,相関行列で表される.すべてのパターンに対する重みは,
によって近似的に求まる.記憶すべきパターンが似ていたり,パターンベクトルの次元数nに対してパターン
数Pの数が多すぎると正しき記憶できない.このパターン間の相互干渉のことをクロストークという.ホップ
フィールドは記憶できるパターン数はユニット数の15 %程度であることを示した.相関行列を用いてホップ
フィールドネットの結合強度を決定する方法に対し,一般化逆行列generalized inverse matrixの概念を導
入し,クロストークを生じさせないようパターンを直交化して記憶する方法が提案されている.
ws
ij = xs
i xs
j
左式で重みを求め,テスト時はそ
のままこの重みを用いてもよいが,
通常は学習(後述)を行う.
(x_i^s)^2と(x_j^s)^2は1*1でも-1*-1でも1
エネルギー関数が単純減少するなら,エネルギー関数の最小値が学習パターンなるように,エネルギー関数
の重みを調整すれば、どんなテストパターンを与えても最小値の学習パターンに収束する,というカラクリ.
ボルツマンマシン
ホップフィールドネットワークがクロストークが生じたり局所解に落ちると正しく記憶できないことを前述
したが,この問題を回避するために,出力を確率的に決めるものをボルツマンマシンという.ネットワーク
の動作に温度の概念を取り入れ,最初は激しく徐々に穏やかに動作する擬似焼きなまし法(シミュレーティ
ド・アニーリング)を用いた.
ボルツマンマシンhttp://www.cis.twcu.ac.jp/~asakawa/chiba2002/lect6-boltzmann/boltzmann.html
ボルツマンマシンhttp://www.sist.ac.jp/~kanakubo/research/neuro/boltzmannmachine.html
【最も詳細な解説】http://www.mbs.med.kyoto-u.ac.jp/cortex/18_Boltzmann.pdf
T=3,細胞の内部状態uが2のとき,実線の
矢印で示した範囲が出力値が1になる確率
ホップフィールドネットワークに応用する場合,非同期に一つ
のユニットが状態変化するたびに,温度を下げていく.下げ率
は一回毎に前回の温度の0.8~0.99倍程度にする事が多い.初
期温度はT=5.0,T=3.0あたりで,設計者によりまちまちであ
る.温度の下げ率が小さい程,最適解に落ち着く可能性は高く
なるが,その代わり計算時間が長くなる.下げ率が大きいと,
計算時間は短く出来るが,局所解に捕捉される危険が高まる.
(シグモイド関数っぽく式変形した)
温度の低下を時間の関数として
で、最小値に達することが証明されている.
T =
c
log(t + 1)
P(f(x) = 1) =
1
1 + exp(−ui
T )
p(xi = 1|ui) =
exp(
ui
kT )
1+exp(
ui
kT )
p(xi = 0|ui) = 1
1+exp(
ui
kT )
マルコフ連鎖とボルツマン分布
n個のユニットの場合,ネットワーク全体の状態 [x1, x2, · · · , xn]は全部で2^n通り存在する.
ネットワークが時刻tで状態αになった時,次の時刻t+1で別の状態βになる遷移確率は,
pt+1
(β) =
α
P(β|α)pt
(α)
Σ_αははすべての状態についての総和である.2^n次行列のPを状態遷移行列とすると,
pt+1
(β) = Ppt
(α)
状態遷移行列Pが時刻によらないものならば時刻t+1における確率分布p^{t+1}はp^tによって完全に記述でき
る.このような確率過程をマルコフ連鎖という.ネットワークの状態がp=Ppのように時刻によらない形に
なっている場合を定常状態という.定常状態におけるp(α)の出現確率は,
p(α) = ce−
E(∞)
T Cは規格化定数で,当然 c =
α
e−
E(∞)
T
この形をした確率密度関数に従う分布を統計物理学ではボルツマン分布という.
E(α)は状態 α = [x1, x2, · · · , xn]に対するエネルギーで,次式のようになる.
E(α) = −
1
2 i j
wijxixj
定常状態pの出現確率はネットワークの各状態に対して計算されるエネルギーEによって決まり,その確率が
ボルツマン分布に従うことからこのネットワークのことをボルツマンマシンという.ただし,ユニット数が
多いと定常分布を実際に計算するのはほぼ不可能なので,シミュレーションの出番になる.
E(無限)がネットワーク安定であること=マルコフ過程が定常状態であること,と理解すれば良さそう
例えば,αで学習させてい
れば,E(無限)がエネルギー
関数の最小値(=αのエネル
ギー)となる.このとき,
P(α)のeの指数が最大なの
で,出現確率p(α)は最大と
なりp(β)は相対的に低くな
るので,直感的にも正しい.
0,重みw_ijと閾値b_iの初期化(乱数または前述の相関行列を使う)
1.1,あるユニットiに着目し,u_iを求め,出現確率としてx_iを求める.
1.2,出力x_iとx_jがともに1なら,w_ijを大きくする.
1をすべてのユニットで繰り返す.
次に,反学習(哺乳類のREM睡眠の役割で,分散記憶を妨げる副次モードを取り除く)は,
2.1,1.1と同様
2,2,出力x_iとx_jがともに1なら,w_ijを小さくする.
2をすべてのユニットで繰り返す.
この学習(Positive Phase)と反学習(Negative Phase)を繰り返す.
ボルツマンマシンの学習は,
学習と反学習
更新量は尤度関数L(θ)から導出する.θをすべての重みwとバイアスbを表すパラメータとすると,
L(θ) =
N
n=1
p(xn|θ)
確率分布p(x_n|θ)は,
Z(θ) =
x
exp {−E(x, θ)}規格化定数は,
対数尤度関数に変形すると,log L(θ) =
N
n=1
log p(xn|θ)
p(xn|θ) =
1
Z(θ)
exp {−E(x, θ)}
対数尤度関数をw,bで微分し,それぞれの勾配を求めて更新量とする.
尤度関数はすべての組み合わせをもとにしているので,ユニット数が大きいと組み合わせ爆発が起きる.そ
のため,近似的な学習法として,コントラスティブダイバージェンス(後述)を用いる.
尤度を最大(微分=0)にすると,
ボルツマン分布の出現確率が最大となり,
エネルギー関数は最小となるので,
直感的にも正しいことがわかる.
ボルツマンマシンには,可視ユニット(入力データ)の確率に影響を与える非可視ユニットを導入したものが
ある.可視ユニットを可視変数v,非可視ユニットを隠れ変数hとする.
制約ボルツマンマシン(RBM)
ここで,同じ種類のユニット間を結合させないという制約を導入した
ものを制約ボルツマンマシン(RBM,Restricted Boltzmann
Machine)という.vで構成された可視層とhで構成された隠れ層の二
層構造で,同じ層内で結合しない.エネルギー関数は以下の通り.
bとcはバイアス,wは重みで,それらをまとめたパラメータ群をθとする.エネルギー関数Eはv_iとh_jの積
すなわち相関と,重みhが一致するときに最尤値をとる.また,確率分布は,
p(v, h|θ) =
1
Z
exp {−E(v, h, θ)} Z =
v,h
exp {−E(v, h, θ)}規格化定数は,
制約ボルツマンマシンの学習において,パラメータb_i,c_j,w_ijを求めるために対数尤度関数を用いると,
log L(θ|v) = log
1
Z
h
exp {−E(v, h, θ)}
= log
h
exp {−E(v, h, θ)} − log
v,h
exp {−E(v, h, θ)}
規格化定数は,すべてのvのエネルギー関
数の加算なのでΣ_v,hとなる.
E(v, h, θ) = −
m
i=1
bivi −
n
j=1
cjhj −
m
i=1
n
j=1
wijvihj
θで微分して勾配を求めると,
重みw_ijは,
∂ log L(θ|v)
∂θ
=
∂
∂θ
(log
h
exp {−E(v, h, θ)}) −
∂
∂θ
(log
v,h
exp {−E(v, h, θ)})
= −
1
h exp {−E(v, h, θ)}
h
exp {−E(v, h, θ)}
∂E(v, h, θ)
∂θ
+
1
v,h exp {−E(v, h, θ)}
v,h
exp {−E(v, h, θ)}
∂E(v, h, θ)
∂θ
= −
h
p(h|v)
∂E(v, h, θ)
∂θ
+
v,h
p(v, h)
∂E(v, h, θ)
∂θ
∂ log L(θ|v)
∂wij
= −
h
p(h|v)
∂E(v, h, θ)
∂wij
+
v,h
p(v, h)
∂E(v, h, θ)
∂wij
=
h
p(h|v)hjvi −
v
p(v)
h
p(h|v)hjvi
= p(Hj = 1|v)vi −
v
p(v)p(Hj = 1|v)vi
p(h|v) =
p(v, h)
p(v)
=
1
Z e−E(v,h)
1
Z
h
e−E(v,h)
=
e−E(v,h)
h
e−E(v,h)
補足すると,
h
p(h|v) = 1よって,
ここで,vは入力画像としてありうる{0,1}のパターン全体のことで,指数オーダーで組み合わせ爆発を起こす
確率分布    を現実には計算できない.打開策として,ギブスサンプリング(Gibbs sampling)の繰り返し
でp(v)を近似させる方法があるが,非常に多くの繰り返し回数を必要とする.
そこで,コントラスティブダイバージェンスという近似解法が提案された.
ゼロから始めるDeepLearning_その4_Restrictedボルツマンマシンとはhttp://rishida.hatenablog.com/
entry/2014/03/08/111330
An Introduction to Restricted Boltzmann machineshttp://image.diku.dk/igel/paper/AItRBM-
proof.pdf
バイアスb_iは,
∂ log L(θ|v)
∂bi
= vi −
v
p(v)vi
バイアスc_jは,
∂ log L(θ|v)
∂cj
= p(Hj = 1|v) −
v
p(v)p(Hj = 1|v)
よって,各パラメータの更新量は,
v
p(v)



wij ← wij + ∂ log L(θ|v)
∂wij
bi ← bi + ∂ log L(θ|v)
∂bi
cj ← cj + ∂ log L(θ|v)
∂cj
0,重みとバイアスを乱数で初期化する.
1.1,入力パターンを可視層v(0)にセット.
1.2,隠れ層のユニットh(0)の値を更新する.
1.3,可視層のユニットv(1)の値を更新する.
1.4,出力x_i,x_yの値に従って,重みwとバイアスbとcを更新する.
1.1~1.4の工程をk回繰り返す.ただし,一般的にk=1で十分である.(括弧内の数字は更新回数)
1.1~1.4の工程から得られる確率p(v|θ)が入力したvの分布に近づくようにパラメータθを学習.
Contrastive Divergence
p(vi = 1|h) = σ(
n
j=1 wijhj + cj)
コントラスティブダイバージェンスの学習は,
パラメータの更新はミニバッチ学習が効果的.サンプル1つ1つの更新量を求め,その平均を更新量とする.
学習後のRBMに元画像にノイズを加えた画像を入力すると,ノイズがなくなった元画像が出力される.
以下の確率分布でhとvの値を更新する.σはシグモイド関数.
p(hj = 1|v) = σ(
m
i=1 wijvi + bi)



wij ← wij + η(p(H
(0)
j = 1|v(0)
)v
(0)
i − p(H
(k)
j = 1|v(k)
)v
(k)
i )
bi ← bi + η(v
(0)
i − v
(k)
i )
cj ← cj + η(p(H
(0)
j = 1|v(0)
) − p(H
(k)
j = 1|v(k)
))
Deep Belief Network
制約ボルツマンマシンを多層化したものをDeep Belief Network(DBN)という.NNが最上位層の誤差を
逆伝播させるのに対し,DBNはContrastive Divergenceによって層ごとにパラメータθを学習する.
DBNは,生成モデルと判別モデルの両方で用いることができる.
生成モデルは,データはある確率分布に従って生成されているとし,最尤推定などでその確率分布(尤もら
しいパラメータ)を学習サンプルから導出する.ノイズ除去や次元圧縮(特徴表現)ができる.
判別モデルは,最上位層にクラス分類のための層(ソフトマックスなど)を追加し,分類を行う.
DBNの各層をl=0,1,…,Lとし,可視化層をv(0),隠れ層のユニットをh(l)とする.
各層の条件付き確率分布は, p(h(l)
|h(l−1)
) =
i
f(b
(l)
i +
j
w
(l−1)
ij h
(l−1)
j )
1ユニットの条件付き確率分布は,p(h
(l)
i |h(l−1)
) = f(b
(l)
i +
j
w
(l−1)
ij h
(l−1)
j )
h(0)=vとして,各層のパラメータを逐次学習していく.
強化学習(Reinforcement Learning)
強化学習とは,試行錯誤を通じて環境に適応する学習制御の枠組
である.教師付き学習(Supervised learning)とは異なり,状態
入力に対する正しい行動出力を明示的に示す教師が存在しない.
かわりに報酬というスカラーの情報を手がかりに学習する.
強化学習とは?(What is Reinforcement Learning?)http://sysplan.nams.kyushu-u.ac.jp/gen/edu/
RL_intro.html
強化学習で有名なsutton本全文http://people.inf.elte.hu/lorincz/Files/RL_2006/SuttonBook.pdf
1,エ-ジェントは時刻tにおいて環境の状態観測S(t)に応じて意志決定を行い,行動a(t)を出力する.
2,エ-ジェントの行動により環境はS(t+1)へ状態遷移し,その遷移に応じた報酬r(t)を与える.
3,時刻tをt+1に進めてステップ1へ戻る.
学習
エ-ジェントは利得(return,最も単純な場合報酬の総計)の最大化を目的として,状態観測から行動出力
へのマッピング(政策,policy)を獲得する.
マルコフ決定過程(MDP)
強化学習では,環境のダイナミクスをマルコフ決定過程(Markov decision process: MDP)によってモデル
化し, アルゴリズムの解析を行う.MDPにおいて,環境のとりうる状態の集合を
エージェントがとりうる行動の集合を            と表す.A = {a1, a2, · · · , al}
S = {s1, s2, · · · , sn}
環境中のある状態s ∈ Sにおいて,エージェントがある行動aを実行すると,環境は確率的に状態s' ∈ Sへ遷
移する.その遷移確率を                        と表す.このとき環境からエー
ジェントへ報酬rが確率的に与えられ,その期待値は
Pr = {st + 1 = s |st = s, at = a} = Pa
(s, s )
E{rt|st = s, at = a, st+1 = s } = Ra
(s, s )
エージェントの各時刻における意志決定は,政策関数                 (ただし全状態s,
全行動aにおいて定義)によって表される.これは単に政策πともいう.
π(s, a) = Pr{at = a|st = s}
マルコフ性
状態s’への遷移が,そのときの状態sと行動aにのみ依存し,それ以前の状態や行動には関係ないこと.
エルゴ-ト性
任意の状態sからスタ-トし,無限時間経過した後の状態分布確率は最初の状態とは無関係になること.
マルコフ決定過程の環境下での強化学習問題は,以下のように定式化される.
・ エージェントは環境の状態遷移確率Pa(s,s’)や報酬の与えられ方Ra(s,s')についての知識を予め持たない.
・ エージェントは環境との試行錯誤的な相互作用を繰り返して,最適な政策を学習する.
最適なState-Value関数
全ての状態sにおいて          となるとき,政策πはπ'より優れているという.マルコフ決定過
程では,他のどんな政策よりも優れた,あるいは同等な政策が少なくとも1つ存在する.これを最適政策π*
という.最適政策は複数存在することもあるが,全ての最適政策は唯一のState-Value関数を共有する.こ
れは最適なState-Value関数V*と呼ばれ,以下のように定義される.
V π
(s) V π
(s)
V ∗
(s) = maxπ V π
(s), for all s ∈ S
最適なAction-Value関数
最適な政策はまた, 以下に示す唯一のAction-Value関数を共有する.
報酬の時系列評価は利得(return)と呼ばれる.強化学習では,割引報酬合計による評価を利得として用いる
場合が多い.これは,時間の経過とともに報酬を割引率γ(0 ≦ γ < 1)で割引いて合計する.ある時刻tにお
ける状態,あるいはそのとき実行した行動の利得Vtを以下で定義する.
Vt = rt + γrt+1 + γ2
rt+2 + · · · =
∞
k=0
γk
rt+k
ただし,r_tは時刻tにおける報酬である.マルコフ決定過程においてエ-ジェントが定常政策π(時不変な
政策)をとるとき,利得の期待値は,時間に関係なく状態sだけに依存する性質を持つ.よってvalueは状態
sの関数になるのでState-Value関数と呼び    と表す.V π
(s)
Q∗
(s, a) = maxπ Qπ
(s, a), for all s ∈ S and a ∈ A
Q*(s,a)はQ値と呼ばれ,状態sで行動aを選択後,ずっと最適政策をとりつづけるときの利得の期待値を表す.
Q*(s,a)が与えられた場合,状態sにおいて最大のQ値を持つ行動aが最適な行動である.
Q学習
Q*(s,a)が得られれば,最適な政策は簡単に得られ
る.Q-learningは環境との試行錯誤的な相互作用
の繰り返しを通じてQ*(s,a)を推定する代表的な強
化学習アルゴリズムである.
S × A個のエントリを持つ2次元配列変数Q(s,a)を
用意し,以下のように環境とのインタラクション
に応じて変数を修正する.
max a' Q( s',a')は,状態s'において最大のQ値を持
つ行動のQ値を意味する.
1,エージェントは環境の状態s_tを観測する.
2,エージェントは任意の行動選択方法(探査戦略)に従って行動a_tを実行する.
3,環境から報酬r_tを受け取る.
4,状態遷移後の状態s_t+1を観測する.
5,以下の更新式によりQ値を更新.ただし,αは学習率(0 < α < 1),γは割引率(0 < γ< 1)である.
6,時間ステップtをt+1へ進めて手順1へ戻る.
Q(st, at) ← (1 − α)Q(st, at) + α rt + γ max
a
Q(st+1, a)
つまり,1ステップ分未来を見通して,現
在のQ値を更新している?
Q学習
Q-learningの収束定理
エージェントの行動選択において,全ての行動を十分な回数選択し,
かつ学習率αが                     を満たす時間tの関数となっているとき,Q-
learningのアルゴリズムで得るQ値は確率1で最適なQ値に収束する(概収束).ただし環境はエルゴート性を
有する離散有限マルコフ決定過程であることを仮定する.
∞
t=0 α(t) → ∞ かつ
∞
t=0 α(t)2
< ∞
行動選択方法(探査戦略)
上記の収束定理は,全ての行動を十分な回数選択しさえすれば行動選択方法(探査戦略)には依存せずに成り
立つ.よって行動選択はランダムでもよい.しかし,強化学習ではまだQ値が収束していない学習の途中に
おいてもなるべく多くの報酬を得るような行動選択を求められることが多い.学習に応じて序々に挙動を改
善していくような行動選択方法として,以下の方法が代表的である.
・ ε-greedy選択:εの確率でランダム,それ以外は最大のQ値を持つ行動を選択.semi-uniform policy
と呼ばれる場合もある.
・ ボルツマン選択:exp(Q(s,a)/T)に比例した割合で行動選択,ただし,Tは時間とともにゼロに近付く.
などの方法が提案されている.
ここで,真の行動価値      がわかっていれば純粋な教師あり学習として           とす
れば良いが,強化学習では教師信号にあたる      は与えられない.そこでテーブル関数を用いたQ学
習と同様に,
Q-Network(Q値の関数近似)
DQNの生い立ち+Deep Q-NetworkをChainerで書いたhttp://qiita.com/Ugo-Nama/items/
08c6a5f6a571335972d5
強化学習の汎用化Sarsa http://www.slideshare.net/MasatoNakai1/sarsa-61840605
    が何らかのパラメータθを用いて表されていて,近似された関数を      と表す.Q(s,a) Qθ(s, a)
Q学習に相当する関数を近似するには,古典的には次式の勾配法によるアルゴリズムを使う.
θ ← θ − α θLθ Lθは以下の誤差関数で,Lθ =
1
2
target − Qθ(s, a)
2
Q∗
(s, a) target = Q∗
(s, a)
Q∗
(s, a)
target = r + γ max
a
Qθ(s , a )をその時点での教師信号として使う.
誤差関数の微分は,あくまで      を教師信号に近づけるためとして,教師信号に対する微分は行わな
い.よって,
Qθ(s, a)
θLθ = − target − Qθ(s, a) θQθ(s, a)
= − r + γ max
a
Qθ(s , a ) − Qθ(s, a) θQθ(s, a)
以上より,更新式は,θ ← θ + α r + γ max
a
Qθ(s , a ) − Qθ(s, a) θQθ(s, a)
深層強化学習(Deep Q-Network)
DQNは,強化学習の関数近似に深層学習の技術を適用したものである.DeepmindのNIPSとNatureの論文
では,両方とも畳み込みニューラルネットワークが用いられている.
DQNが最初に現れたNIPSでの論文"Playing atari with deep reinforcement learning"では
Experience Replayをミニバッチ手法と組み合わせて大規模に使っている.しかし,これでもなおオンライ
ン強化学習アルゴリズムは不安定である.
一方,Natureでの論文”Human-level control through deep reinforcement learning"ではNeural
Fitted Q Iteration + Growing Batchを適用することで、オンライン「ほとんどバッチ」強化学習による安
定化が図られている.
分散深層強化学習(Distributed Deep Reinforcement Learning)
PFNのエンジニアが開発した強化学習できる.深層学習,強化学習,分散学習,カリキュラム学習が使われ
ている.
分散学習では,各ロボットカーの経験がすべてのロボットカーに蓄積される.
カリキュラム学習では,優しいコースから順に学習を進め,だんだんと難しくする.
【PFN】分散深層強化学習でロボット制御https://research.preferred.jp/2015/06/distributed-deep-
reinforcement-learning/
YouTube版https://www.youtube.com/watch?v=a3AWpeOjkzw
【Google】Deep Learning for Robots: Learning from Large-Scale Interaction http://
googleresearch.blogspot.jp/2016/03/deep-learning-for-robots-learning-from.html
近年話題の量子コンピュータD-Waveは量子アニーリングを用いており,従来の計算機の1億倍高速に組み合
わせ最適化問題を解くことができる,という事例もある.機械学習の理想的な計算機として期待され.NP完
全を多項式オーダーで解ける可能性もあり,ナップザック問題を用いた公開鍵暗号方式が終わるかもしれな
い終末観に心馳せている次第です.
量子アニーリングコンピュータ
そもそもの起源は門脇博士と西森教授の1998年の共著論文.量子モンテカルロ法でセールスマン問題をシ
ミュレーテッドアニーリングより効率的に解いた量子アニーリングが基礎理論.D-Waveだけでなく国内で
もCMOSアニーリングやコヒーレントイジングモデルがある.D-Waveのハードウェアには,磁束量子パラ
メトロン(QFP)やDC-SQUIDが使われている.
西森秀稔さんの解説サイト:量子アニーリングhttp://www.stat.phys.titech.ac.jp/~nishimori/QA/q-
annealing.html
門脇博士と西森教授の論文:Quantum annealing in the transverse Ising model http://
www.stat.phys.titech.ac.jp/~nishimori/papers/98PRE5355.pdf
ウォーレン・マカロック、ウォルター・ピッツ(1943) - 形式ニューロン
ホジキン、ハクスレー(1952) - Hodgkin‒Huxley model
フランク・ローゼンブラット(1958) - 単純パーセプトロン(SGD)
David Cox(1958) - ロジスティック回帰(準ニュートン法)
Vladimir Vapnik(1963) - Support Vector Machine
デビッド・マー(1982) - 計算論的神経科学
Hinton、Sejnowski(1985) - ボルツマンマシン
デビッド・ラメルハート,Hinton(1986) - バックプロパゲーション
ブルーノ・オルスホーゼン(1990~) - スパースコーディング
Leo Breiman(2001) - ランダムフォレスト
Hinton(2006~) - オートエンコーダ、DBN
計算論的神経科学寄りの本
デビッド・マー(1982)『ビジョン』聖書
甘利 俊一『脳の計算論』誰か感想おしえて
川人 光男(1996)『脳の計算理論』運動野の
フィードバック誤差学習の章ちゃんと読みたい.
伊藤正男『脳の不思議』小脳チップとか
『理工系からの脳科学入門』入門的
機械学習寄りの本
『事例+演習で学ぶ機械学習』重回帰とか
『イラストで学ぶディープラーニング』
RNNがないのが惜しい.流れはつかめて良い
青本こと『深層学習』数式が追いにくいが
網羅的でよい.入門書には向かない.
PRMLこと『パターン認識と機械学習』辞書
数学(理工系大学3,4年向け)
フーリエ解析と偏微分方程式 (E. クライツィグ)
数値解析(森正武)線形代数したい人向け
確率と確率過程(伏見 正則)確率過程した(ry
クライツィグ本は,200頁でラプラス変換,
フーリエ解析,偏微分方程式を網羅してて最
高です.演習付きで理論より実践向きの本.
OpenCVでSIFT+BoVWしてみた
データセット
前処理
・格子点orランダム
・グレートスケール化
・リサイズ
・量子化
キーポイント
SIFT
ディスクリプタ
語彙
クラスタリング
・教師なし学習
・k-means
・EM法
勾配方向ヒストグラム
↓変換
ベクトル
(辞書)
単語の代表点
BoVW
出現頻度の計算
特徴量
x
教師あり学習
y=f(x)
パラメータ最適化
・ロジスティック回帰
・SVM(線形カーネル)
・SVM(HIK)
答え
y
CaffeでCNNしてみた
生データ 特徴量
近傍の特徴量特徴点画像
NN
CNN(SGD)
パラメータ学習
x
fine-tuning
別データセット
で学習
頑健
特徴量150次元
100クラス識別
答え
yな特徴量
教師あり学習
BoVW+HIK
エラー率:50%
CNN
エラー率:15%
基底ベクトルのこと
係数行列
Deep Learning入門
Deep Learningの概要http://revast-blog.com/top/?p=57
Deep Learningと画像認識 ~歴史・理論・実践~http://www.slideshare.net/nlab_utokyo/deep-
learning-40959442
その他
深層学習ライブラリKeras http://aidiary.hatenablog.com/entry/20160328/1459174455
カーネル法への招待 http://www.ism.ac.jp/~fukumizu/ISM_lecture_2010/Kernel_1_intro.pdf
[ニューラルネットワーク]メモ。デビッド・マー『Vision』http://d.hatena.ne.jp/CUSCUS/20150611
Why Topological Data Analysis Can Deal with Complex Data:http://www.ayasdi.com/blog/
machine-intelligence/why-topological-data-analysis-can-deal-with-complex-data/?
utm_source=dlvr.it&utm_medium=twitter
マルコフ連鎖モンテカルロ法入門-1http://www.slideshare.net/teramonagi/ss-5190440?ref=https://
twitter.com/i/cards/tfw/v1/
673681860690513920?cardname=player&earned=true&lang=ja&card_height=130
ラフスケッチの自動線画化http://hi.cs.waseda.ac.jp/~esimo/ja/research/sketch
OpenCVリファレンス:https://book.mynavi.jp/support/pc/opencv2/c3/
K-means 法を D3.js でビジュアライズしてみたhttp://tech.nitoyon.com/ja/blog/2013/11/07/k-
means/
寄せ集め
GAN
自動生成にはGAN(Generative Adversarial Net)を使う.
DCGANソースコード:https://github.com/Newmu/dcgan_code
DCGAN:Chainerを使ってコンピュータにイラストを描かせるhttp://qiita.com/rezoolab/items/
5cc96b6d31153e0c86bc
DCGAN:Chainerで顔イラストの自動生成http://qiita.com/mattya/items/
e5bfe5e04b9d2f0bbd47(github)https://github.com/mattya/chainer-DCGAN
VAEGAN(論文)[Autoencoding beyond pixels using a learned similarity metric]http://arxiv.org/pdf/
1512.09300.pdf
VAE(Variational Auto Encoder)は対数尤度の変分下限を最大化する手法.
猫のRGB-D映像を大量に学習させたら,猫の視覚的な概念を得るだけでなく,立体的な動きの概念まで学習
し,ポリゴンやプログラムを作らずAR空間を動き回る猫を自動生成できないか?というのは無理か
AlphaGo
Demis Hassabis - The Future of Artificial Intelligence(深層強化学習やAlphaGoを解説):https://
www.youtube.com/watch?v=4fjmnOQuqao
AlphaGoの元論文(Natureのやつ.(1) 人の手から次の手予測 (SL) (2) 勝つ手を指すようなポリシーを
Reinforceで学習 (RL) (3) 指し手の価値関数をRLで推定(V) (4) SLで展開しVで評価)[Mastering the
game of Go with deep neural networks and tree search]http://www.nature.com/nature/journal/
v529/n7587/full/nature16961.html
AlphaGoの元論文(専門家の知識をDNNに学習=treeのrolloutでDNNで学習.隠れマルコフによる熟練者の
戦略を学習する逆強化学習)[Maximum Entropy Deep Inverse Reinforcement Learning]http://
arxiv.org/pdf/1507.04888v3.pdf

More Related Content

機械学習と深層学習の数理