NeuralNetworkBackProp

ニューラルネットワーク
平成 27 年 7 月 15 日
目次
1
逆誤差伝搬
2
2
アルゴリズム (シグモイド関数を仮定した場合)
5
A 最急降下法
6
B シグモイド関数の微分
7
1
ニューラルネットワークを用いた機械学習とは、in と out のセットを教師信号として与えられた時に、in と out
を結びつけるように中のパラメ‐タを調整する仕組みである。中のパラメータの調整方法は、in からスタートし
て out を出した時に教師信号とのずれを定義しそのズレを小さくしていくように中のパラメータをいじるという
方法を取る。
ニューラルネットワークには、2つのオプションがある。1つめは信号の判定に使う関数を選ぶことができる
(普通ははシグモイド関数を用いる)、2つめは誤差を小さくしていくアルゴリズムである (シンプルなものは最急
降下法を使う)。
1
逆誤差伝搬
この章では、よく用いられるシグモイド関数を仮定した場合の結論を述べる
図 1: 3 層 (多層) パーセプトロンの模式図 (これをパーセプトロンと呼ぶのは本当は正しくない、これは連続的な
非線形性を持つロジスティック回帰モデルを多層にしたもの)
まず foward propagation を計算する。
• 入力層 → 隠れ層
Hj = f (Wji Ii + θj )
(1)
Ok = f (Vkj Hj + γk )
(2)
• 隠れ層 → 出力層
2
• 出力層の誤差を最小にするように、出力層の誤差の変化率 (H ′ (Eq. (4) で定義 ) を変化させた時の) を計算
する
誤差の定義
E≡
1∑
(Ok − Tk )2
2
(3)
k
重みの変更後 Vkj の隠れ層の値を決める量の定義
Hk′ ≡ Vkj Hj + γk
(4)
Hl′ を変化させた時の誤差の変化率 δl を計算しておくと便利であるので計算する。(なぜなら δl がわかれば E ′ を
小さくすることができるから。δl′ = 0 まで)
∂E
∂Hl′
∂E ∂Om
=
∂Om ∂Hl′
∂Om
∂ 1∑
(Ok − Tk )2 )
=
(
∂Om 2
∂Hl′
k
∑
∂Om
(Ok − Tk )δm,k
=
∂Hl′
≡
δl
k
(Ol − Tl )
=
∂Om
∂Hl′
(5)
ここで
∂Om
∂Hl′
∂
′
)
f (Hm
∂Hl′
=
′
′
= (1 − f (Hm
))f (Hm
)
∂
(H ′ )
∂(Hl′ ) m
= (1 − Om )Om δl,m
(6)
途中でシグモイド関数の微分の結果 (B) を用いた。よって出力層の誤差の変化率は
δl
=
∂Om
∂Hl′
(Ol − Tl )(1 − Om )Om δl,m
=
(Ol − Tl )Ol (1 − Ol )
=
(Ol − Tl )
(7)
• 隠れ層の誤差の変化率を計算する
同様に Ij′ ≡ Wji Ii + θm の変化に対して最急降下法 (A) を用いたいので Ij′ の変化に対する S の変化率 σl を計算
しておく。
σl
∂E
∂Il′
∂E ∂H m
=
∂Hm ∂Il′
∂E ∂Hn′ ∂H m
=
∂Hn′ ∂Hm ∂Il′
∂H m
= δn Vnm
∂Il′
≡
3
′
∂f (Im
)
∂Il′
= δn Vnm Hm (1 − Hm )δm,l
= δn Vnm
= δn Vnl Hl (1 − Hl )
(8)
これで隠れそうの誤差の変化率を計算できた。これで出力層の結果と教師信号から順に入力層まで誤差を最小に
するように重みを更新する準備が整った。
• 隠れ層-出力層間の重み V 、出力層の閾値 γ を更新する。
′
Vkj
∂E
∆Vkj
∂Vkj
∂E ∂Hl′
−
∆Vkj
∂Hl′ ∂Vkj
∂(Vlj Hj + γl )
− δl
∆Vkj
∂Vkj
− δl Hj δkl ∆Vkj
= Vkj −
= Vkj
= Vkj
= Vkj
= Vkj − δk Hj ∆Vkj
(9)
ここで ∆Vkj を学習率としてインプットとする。閾値の場合は
γk′
∂E
∆γk
∂γk
∂E ∂Hl′
= γk −
∆γk
∂Hl′ ∂γk
∂(Vlj Hj + γl )
∆γk
= γk − δl
∂γk
= γk − δl δlk ∆γk
= γk −
= γk − δk ∆γk
(10)
• 入力層と隠れ層の間の重み w、重みの閾値 θ を更新する。
′
wji
= wji − σj Ii ∆wij
(11)
θj′ = θj − σj ∆θj
(12)
4
2
アルゴリズム (シグモイド関数を仮定した場合)
学習率の入力, 重みの初期化
(ここからループ)
入力層に訓練データと教師データを入力
隠れ層の値を計算
Hj = f (Wji Ii + θj )
出力層の値を計算
Ok = f (Vkj Hj + γk )
教師信号と出力層の値から出力層の変化率を計算
δl = (Ol − Tl )Ol (1 − Ol )
出力層の値と隠れ層の値から隠れ層の変化率を計算
出力層の重みと閾値を計算
隠れ層の重みと閾値を計算
(ここまでループ)
誤差が十分小さくなったら終了
実際にテストデータをいれる
5
σl = δn Vnl Hl (1
′
Vkj = Vkj − δk Hj ∆Vkj ,
′
wji
= wji − σj Ii ∆wij ,
− Hl )
γk′ = γk − δk ∆γk
θj′ = θj − σj ∆θj
A
最急降下法
図 2: 最急降下法の概念
f (x) を小さくする x を探すアルゴリズム。テイラー展開の1次を使い x を更新していく。
x′ = x −
∂f (x)
δx
∂x
∂f (x)
δx
∂x
つまり x の値を以下のように変化させれば f (x) は小さくなることが保証される。意味は、x を大きくしてみて
f (x) が増える方向に変化したら、x を減らしなさい。以下のようにすると必ず減ることが簡単に示せる。
∆x = x′ − x = −
f (x + ∆x)
一番 f (x) の変化に効く項 −(
∂f (x) 2
∂x ) δx
∂f (x)
∆x + · · ·
∂x
∂f (x) ∂f (x)
= f (x) −
∆x + · · ·
∂x
∂x
∂f (x) 2
= f (x) − (
) ∆x + · · ·
∂x
=
f (x) +
が必ず負となるので f (x) は必ず減る。
6
図 3: シグモイド関数
B
シグモイド関数の微分
f (x) ≡
1
1 + e−x
∂
f (x) = (1 − f (x))f (x)
∂x
を示す。
∂
f (x)
∂x
=
=
=
=
=
=
∂
(1 + e−x )−1
∂x
∂
−(1 + e−x )−2 (1 + e−x )
∂x
e−x
1
1 + e−x 1 + e−x
1 + e−x − 1
1
−x
1+e
1 + e−x
1
1
(1 −
)
1 + e−x 1 + e−x
(1 − f (x))f (x)
で示された。
7
(13)