Transcript L(W)
最適化と学習アルゴリズム
勾配降下法
直線探索
劣勾配降下法
ニュートン法
確率的勾配降下法
学習における計算効率の問題
既に説明した回帰、識別(分類)の解法で得た閉じ
た式は逆行列計算が必要。例えば、線形回帰の場
合の正規方程式の解である重みベクトルは
w=(XTX)-1XTy
学習データが高次元になると(XTX)の次元も大きく
なり、逆行列の計算はコストが高い(次元数の3乗)
要は損失(=Loss)を最小化したい
正規方程式の場合は2乗誤差だった。
逆行列計算を避けて最適化する方法が実用
上重要。
記法:損失(Loss)
入力データ: xi , 重みベクトル:
wは D次元ベクトルとする
xiに対する分類の正解: yi ( 1 or 1) ただしデータは m個あるとする
1 m
Lw loss w on xi , yi
m i 1
例:
1 m
2乗損失の場合 Lw w, xi yi
m i 1
ヒンジ損失の場合 2
2
1 m
2
w, xi yi
m i 1
1 m
Lw 1 yi w, xi
m i 1
ここで z max0, z
記法:
勾配(Gradient)とヘッセ行列(Hessian)
wは D次元ベクトルとする
pノルム: w
p
w1 wD
p
p
1
p
w
p
p
w1 wD
p
p
w w k における Lの勾配
Lw
Lw
L w
,....,
w1
wn w w k
w1 w1 k
D
D
w w k における Lのヘッセ行列
T
k
HL w k
2
2 Lw
L
w
w1wD w w k ,w w k
w1w1 w1 w1 k
1
1
D
D
2
2
Lw
Lw
wD w1 w w k ,w w k
wD wD w w k
D
D
1
1
D
D
勾配降下法
右図で分るように
L(w)が凸の場合
は、勾配▽L(w)の
逆方向に進むと
W*=argmin L(W)
に向かって進む。
図は1次元だが
実際は多次元な
ので、勾配の方
向が大切なこと
に注意
勾配
=▽L(W)
L(w)
min L(w)
w
▽L(W*)=0
W*
定式化
• 勾配降下法(Gradient Descent)の定式化する
w:重みベクトル
Lw:重みベクトル
wのときの損失
w k : k回目の繰り返し結果の 更新された重みベクト ル
最適な重みベクトル : w* arg min Lw
w
を求めるには勾配の逆 方向に進むので下の式となる。
重みベクトルの更新式 : w k 1 arg min L v w k k L w k
v
L* * :2乗損失だと
2
2
w
k 1
arg min v w
v
k
k
L w
k
2
2
損失を微分して0と置 けば閉じた解が求まり
w k 1 w k k L w k
となる
2乗損失でないとこう簡単な式
ではない
最急降下法アルゴリズム
• L(w)を最小化するようなwを求めるために、wの現在
の値w(k)から勾配▽L(w)の逆方向に進むアルゴリズム
初期値 w ( 0 ) ; k 0; w* arg min L(w );
step1 : w ( k )が w*に十分近いなら終了
は w ( k )が w ( k 1)に十分近くて収束した )
(具体的に
step 2 : L(w ( k ) )を計算
step3 : w ( k 1) w ( k ) k L(w ( k ) ) k は進む幅(step size)
step 4 : k k 1 として step1へ
L ( w ) yn w , ( x n )
2
2
つまり 2乗損失なら
w ( k 1) w ( k ) k ( yn w ( k ) , (x n ) ) (x n )
最急降下法の収束の評価
前提条件
凸 & ▽2L(w) positive
k
k 1
k
k 1
L
w
L
w
G
w
w
Lipschitz条件:
2
L w k
テイラー展開により近似
2
G
w k 1 w k k L w k とし、 L w k+1 を 2次のテイラー近似する と
Lw Lw 2 Lw
Lw
Lw 0により
Lw Lw Lw
Lw Lw Lw 1
k+1
k
k
k
2
2
2
k
2
k+1
k
k
k
2
2
k
k
2
2
k
k 1
k
2
k
2
2
2 L w k
2
直観的説明
凸かつ▽2L(w)≥0な
ので、minLに近づく
につれてこの差は
小さくなる
min L(w)
w(k)
W(k+1)
L w k L w k 1 G w k w k 1
Lipshitz条件より以下のような
Lw G
2
2
Gがある
L w k L w k 1 L w k
k
適当なGで上か
ら抑えられる
2
w k w k 1 G w k w k 1
2
2
k
最急降下法の収束の評価:つづき
Lw
k
2
2
L w k L w k 1
1
w k 1が w*に十分近い( w k+1 w* )ないし等しいとすると
k
Lw
k
2
2
L w k L w*
ここで , B w という Bを選び、
*
2
Lipschit z条件 L w k
L w k L w*
B
G k
2
k
B
とおく
G k
G より
G2
BG
k
誤差を 以下にするのはオーダ として:
BG
O O
k
B 2G 2
O 2 回の更新で誤差以下に収束
捕捉
k をやたらと大きくする
と無意味!
L w k L w* G w k w*
2
B w* B w k w* くらいにはなるだろう
2
2
L w k L w* BG G w k w* このあたりを想定して
という雰囲気
2
という Bを選び、
k
B
G k
とおく
step size αを決める:直線探索
α(k)が小さすぎると収束が遅々として進まず、
大きすぎると最悪の場合最適値を飛び
越す
最適なα(k) を求める問題:直線探索
k
k
min
L
w
d
k
の
dは 降下方向(つまり L w k 方向)
単位ベクトル subject to k 0
厳密に解くのは困難
直線探索の代案
k
1 k
kの減少関数にする i.e.
しかし、あまりにもヒューリスティック
もう少し客観的な基準として
Armijo基準とWolfe基準がある
Armijo基準とWolfe基準
ξ=0
最適値
α=0
α
行き過ぎ
L(W+α▽L(W))-L(W)
α▽L(W)
ξα▽L(W): 0<ξ<1 予め決まった値
この不等式を満たすようにαを選ぶ:
Armijo基準
Wolfe基準:
α が小さくなりすぎないた
め。 α =0だと明らかに成
立しない(!▽L(W)Td<0)
L(W+αd)-L(W) ≤ ξα▽L(W)Td
LW T d LW d T d
1
直線探索の代案:2分割法
k回目の繰り返しにおいて以下のアルゴリズ
ムでα(k)を減少させる
Step1 t=1, αt(k)=α(k)
Step2 if 停止基準(Armijo基準等)が満たされる
then return αt(k)
else αt(k)=α(k)/2
Step3 k k+1
Step4 Step 2へ
微分可能でない場合:
劣勾配(sub-gradient)の利用
凸関数 : convext : Lの subgradient
Lw g | v 0 Lv Lw v w g
T
Lw g | ...
w v
例
L1 loss
L w w 1 w
Lw 1 w 0
Lw 1,1
L w 1 w 0
hinge loss
Lw 1 w
Lw 1 w 1
Lw 1,0
L w 0 w 1
劣勾配降下法
Sub-Gradient Descent
初期値 w ( 0 ) ; k 0; w* arg min L(w );
step1 : w ( k )が w*に十分近いなら終了
(具体的に
は w ( k )が w ( k 1)に十分近くて収束した )
step 2 sub - gradient : Lw
g | v 0 Lv Lw v w g を計算
step3 : w k 1 arg min L v w k k g
v , gL w
step 4 : k k 1 として step1へ
最急降下法がうまくいかない場合
• ジグザグに動きながら最適解に近づくので収束する
速度が遅い(効率が良くない)
• 勾配以外の情報も使ってみるニュートン法
ニュートン法
最小化したいのは損失 L(w)
ただし、直接には最適化できない場合を考えている
今wの現在値w(k)が与えられていて、dを加えることに
よってより最適値に近いw(k+1)を得たい。
ここでw(k)が定数でdを変数と思って
L(w(k+1))= L(w(k)+ d)
の左辺を直接最適化する代わりに右辺を最小にする d
を求める。
この結果をd(k)とし、よりよいLをL(w(k)+ d(k))として、繰
り返すことによって真の最適値に近づこうとする
ここでL(w(k)+ d)を2次のテーラー近似する場合が
ニュートン法
2次のテーラー展開
Lw
k
Lw
d L w
k
k
T
1 T
d d HL w k d
2
右辺をdの関数と見て最小化しニュートン方向d(t)を求める
d
k
arg min 右辺 HL w
k
1
L w k
d
ニュートン法のアルゴリズム
step0 : k 0; 初期値 w 0 ; w* arg min L(w );
step1 : w ( k )が w*に十分近いなら終了
HLw Lw はstep size
1
dk HL w k L w k を計算
step2 : ニュートン方向 step3 : w
( k 1)
w
(k )
step4 : k k 1 として
k
step1へ
k は直線探索で決めても よい
k
1
k
k
ニュートン法の直感的な解釈
この辺りは▽の変化すなわ
ちヘッセ行列 HL(W)が小さ
いので大きく進む方が効率
がよい
HL(W)-1:大
この辺りは▽の変化すな
わちヘッセ行列 HL(W)が
大きいので大きく進むと不
味い方向に行ってしまう。
HL(W)-1 :小
ニュートン法の問題点
ニュートン法は勾配降下法より多くの場合で性
能がよいが、ヘッセ行列の逆行列を繰り返しの
度に計算しなければならない
N×Nの行列の逆行列の計算にはO(N3)のコスト
がかかる。Nが大きくなると実用的でなくなる
ヘッセ行列の逆行列を近似する行列を行列のか
け算だけによる更新式を使ってO(N2)で計算する
方法もある。
BFGS公式のヘッセ逆行列版(cf. 共立出版「最適化
法」p.122)
確率的勾配降下法
Stochastic Gradient Descent(SGD)
ここまで述べてきた方法は全データを一挙に学習に
用いるバッチ処理
1データないし少数のデータ毎に重みベクトルw学習
する方法:オンライン学習に近い
最終結果としては、1ないし少数データ毎の学習で得られ
たwの平均
メモリに全データを展開しなくてよい可能性もある省メ
モリしかし、全データを何回も繰り返し使うなら省メモリ
にならない 1つのデータは1回しか見ないストリームマイニング的
2種類のSGD
Sample Approximation(SA):1データ毎の学習
SGD(SA) と
w0
w1 w 0
バッチ学習
w k
lossw 0 on x1 , y1
0
loss w k on x1 , y1
w 2 w1
x1 , y1
w3 w 2
x2 , y2
loss w k on x 2 , y2
x3 , y 3
loss w k on x3 , y3
1lossw1 on x 2 , y2
2 lossw 2 on x3 , y3
:
w i w i 1
i 1lossw i 1 on xi , yi
w m w m1
lossw m1 on x m , ym
m1
1 m
w wi
m i 1
x i, y i
loss w k on xi , yi
:
xm, ym
このデータ生成が確率的
loss w k on x m , ym
w
k 1
w
k
k
1 m
loss w k on xi , yi
m i 1
さらに kを 1して上の処理を繰り返 す
Sample Average Approximation(SAA)
SA inside SAA
全データからランダムにm個のデータをサン
プルしてm個のデータからなるデータ集合を
作る。
このようにして異なるデータ集合をk個作る。
データ集合(i)にSGD(SA)を適用して学習し、重
みベクトルw(i)を計算
m
1
最終結果 w wi
m
i 1
例:SGDによるサポートベクターマシン
1 m
T
min
1
y
w
xi
i
W
m i 1
に注意すると SVDは以下のようになる
1 m
min 1 yi wT xi
W 2 B m
i 1
初期値: w 0 , 全データ数 : n
以下を k回繰り返す
{
からランダムに生成
iを 1..n if yi wT xi 1 then w w yi xi
if w 2 B then w Bw w
w sum w sum w}
結果: w w sum k
2
w 2
2
2