ニューラルネットワークの学習アルゴリズム
1
階層型ニューラルネットの学習
階層型ニューラルネットの学習データは,
X =
x11 x12 · · · x1p x21 x22 · · · x2p ... ... . .. ... xn1 xn2 · · · xnp
, y=
y1 y2 ... yn
(1)
と与えられ,学習誤差は E=
∑n i=1
[yi− {v0+
∑q k=1
vkψ(wk0+∑
j=1
wkjxij)}]2 (2)
と定義される.
一方,学習すべき重みパラメータは隠れ層ユニット数: qとすると,
• 重みパラメータ行列:
W
q×(1+p)
=
w10 w11 w12 · · · w1p
w20 w21 w22 · · · w2p
... ... ... . .. ... wq0 wq1 wq2 · · · wqp
. (3)
• 重みパラメータ行列:
v
(1+q)×1=
v0
v1
... vq
. (4)
である. 最急降下法や他の非線形最適化アルゴリズムを用いて学習するには,各重みパラメータの偏微分 係数
• ∂E
∂wkj
, k= 1,2,· · ·, q, j= 0,1,2,· · · , p,
• ∂E
∂vk
, k= 0,1,2,· · ·, q
を計算する必要がある. 最適化アルゴリズムではこれらの偏微分係数を繰り返し計算する必要があるた め,これらを効率的に計算できることが望ましい. 階層型ニューラルネットにおいては,偏微分係数の計 算を効率的に行う誤差逆伝播法 (back-propagation) と呼ばれる方法が使われる. 以下では誤差逆伝 播法について学ぼう.
2
誤差逆伝播法
2.1 中間変数の導入
誤差逆伝播法の導出にあたり以下のような変数を導入する:
• i番目の学習データに対する学習誤差をei, i= 1,2,· · ·, n,とする;
• i番目の学習データに対する予測値をyˆi, i= 1,2,· · ·, n,とする;
• i番目の学習データに対するk番目の隠れ層ユニットからの出力値をzik, i = 1,2,· · · , n, k = 1,2,· · ·, q,とする;
• i番目の学習データに対するk番目の隠れ層ユニットへの入力値をuik, i = 1,2,· · ·, n, k = 1,2,· · ·, q,とする;
図1 は階層型ニューラルネットにおける上記の中間変数を模式化したものである.
Figure 1: 学習誤差の計算
2.1.1 順方向計算
学習データ((xi1, xi2,· · · , xip), yi),の学習誤差ei を計算するプロセスを順方向計算(forward compu- tatioin)と呼ぶ. 順方向計算の計算の流れは,
xij −→(4a)−→ uik −→(4b)−→ zik −→(4c)−→ yˆi −→(4d)−→ei (5) と表される. 順方向計算の各プロセスは
uik=wk0+
∑p j=1
wkjxij, k= 1,2,· · ·, q, (6a)
zik=ψ(uik), k= 1,2,· · ·, q, (6b)
ˆ
yi=v0+
∑q k=1
vkzik (6c)
ei= (yi−yˆi)2 (6d)
と定式化される.
2.1.2 逆方向計算
順方向計算では(3)のように計算をすすめたが,その逆に,
∂ei
∂yˆi −→ ∂yˆi
∂zik −→ ∂zik
∂uik −→ ∂uik
∂xij
(7)
と計算を進めるプロセスを逆方向計算(backward computation)という. 逆方向計算の各プロセスは
∂ei
∂ˆyi
=−2(yi−yˆi) (8a)
∂yˆi
∂zik
=vk, k= 1,2,· · · , q, (8b)
∂zik
∂uik =ψ′(uik), k= 1,2,· · ·, q, (8c)
∂uik
∂xij
=wkj, k= 1,2,· · ·, q, j = 1,2,· · ·, p, (8d)
と計算される. 以上の順方向計算および逆方向計算より,微分計算の連鎖率 (chain rule)を用いて,
∂E
∂v0
=
∑n i=1
∂ei
∂yˆi · ∂yˆi
∂v0
(9a)
=
∑n i=1
(−2(yi−yˆi))·1 (9b)
= −2
∑n i=1
(yi−yˆi), (9c)
∂E
∂vk
=
∑n i=1
∂ei
∂yˆi · ∂ˆyi
∂vk
(10a)
=
∑n i=1
(−2(yi−yˆi))·zik (10b)
= −2
∑n i=1
(yi−yˆi)zik, (10c)
∂E
∂wk0
=
∑n i=1
∂ei
∂yˆi · ∂yˆi
∂zik · ∂zik
∂uik · ∂uik
∂wk0
(11a)
=
∑n i=1
(−2(yi−yˆi))·vk·ψ′(uik)·1 (11b)
= −2
∑n i=1
(yi−yˆi)vkψ′(uik) (11c)
= −2
∑n i=1
(yi−yˆi)vkψ(uik)(1−ψ(uik)). (11d)
∂E
∂wkj = ∑
i=1
∂ei
∂yˆi · ∂ˆyi
∂zik · ∂zik
∂uik · ∂uik
∂wkj (12a)
=
∑n i=1
(−2(yi−yˆi))·vk·ψ′(uik)·xij (12b)
= −2
∑n i=1
(yi−yˆi)vkψ′(uik)xij (12c)
= −2
∑n i=1
(yi−yˆi)vkψ(uik)(1−ψ(uik))xij. (12d) と微分係数が計算できる.
3
階層型ニューラルネットにおけるモデル選択
以前に学んだ最近傍回帰分析,多項式回帰分析, RBFネットワークなどではモデル選択が必要であった.
階層型ニューラルネットにおいてもモデル選択は不可欠である.
3.1 隠れ層ユニット数
階層型ニューラルネットでは隠れ層のユニット数によりモデルの自由度が変化する. 隠れ層ユニット数q を小さくし過ぎると未学習になり,大きくし過ぎるすると過学習となるため,適切な数を選択する必要が ある. 図2 はオートバイ衝突実験データに階層型ニューラルネットを適用した例である. 隠れ層ユニッ ト数をq= 1,2,5,10個とした場合が示されている.
4
階層型ニューラルネットの学習アルゴリズム
階層型ニューラルネットの学習アルゴリズムを整理しよう. まず,学習ステップtにおける階層型ニュー ラルネットのパラメータを
W(t)
q×(1+p)
=
w10(t) w11(t) w12(t) · · · w1p(t) w20(t) w21(t) w22(t) · · · w2p(t)
... ... ... . .. ... wq0(t) wq1(t) wq2(t) · · · wqp(t)
, v(t)
(1+q)×1
=
v0(t) v1(t) v2(t)
... vq(t)
(13)
と表す. また,W(t),v(t)における学習誤差をE(t),その勾配ベクトルの対応するものをそれぞれdW(t), dv(t)と表す.
アルゴリズムの骨子は以下のようになる:
• 入力:
– 入力データ行列,出力データベクトル:
X =
x11 x12 · · · x1p
x21 x22 · · · x2p
... ... . .. ... xn1 xn2 · · · xnp
, (14)
y=
y1 y2 ... yn
, (15)
-150 -100 -50 0 50 100
0 10 20 30 40 50 60
Output Y
Input X
-150 -100 -50 0 50 100
0 10 20 30 40 50 60
Output Y
Input X
隠れ層ユニット数q= 1 隠れ層ユニット数q= 2
-150 -100 -50 0 50 100
0 10 20 30 40 50 60
Output Y
Input X
-150 -100 -50 0 50 100
0 10 20 30 40 50 60
Output Y
Input X
隠れ層ユニット数q= 5 隠れ層ユニット数q= 10
Figure 2: さまざまな隠れ層ユニット数における階層型ニューラルネット
– 隠れ層ユニット数: q, – 初期学習率: α, – 学習減衰率: δ, – 最大学習ステップ: T.
• ステップ1: t= 0とする. パラメータW(0),v(0)を初期化する. また,E(−1) =∞とする.
• ステップ2: パラメータW(t),v(t), における学習誤差E(t)および勾配ベクトルdW(t), dv(t)を 求める.
• ステップ3: 学習誤差の減少率が
E(t−1)−E(t)
E(t−1) +E(t) < ε (16)
ならば終了する. ここで,εは小さな正数(例えばε= 10−8)である.
• ステップ4: パラメータを
W(t+ 1) ← W(t)− α
1 +δtdW(t), (17)
v(t+ 1) ← v(t)− α
1 +δtdv(t) (18)
と更新する. t=T ならば終了する. t < T ならばtをインクリメントしてステップ2に戻る.
• 出力: 最適な重みパラメータW∗,v∗.