狠狠撸

狠狠撸Share a Scribd company logo
カジュアル勉強会 @仙台
Excelで機械学習入門 第6回
株式会社 エクテック
データサイエンティスト
第10回までの流れ
1回~3回 4回~10回
AI周辺の
基本知識
最適化の基本
推論の基本
重回帰分析
機械学習
サポートベクタマシン
ナイーブベイズ
ニューラルネットワーク
RNN/BPTT
強化学習/Q学習
前段
勉强会に参加する以上...
『なにか』を
持って帰って欲しい
『すべて』は難しいけれど
気になった、興味をもった
キーワードでも良いので
?元に持って帰って
いただけると幸いです
環境について
(Surroundings)
Excel 2013, 2016
Google Spreadsheets
本日のアジェンダ
1. 誤差逆伝播法(バックプロパゲーション法)
2. 误差逆伝播法を贰虫肠别濒で体験
誤差逆伝播法
(バックプロパゲーション法)
前回学んだ
ニューラルネットワーク
そのニューラルネットワークの
重みと閾値を決定するために利?
『ユニットの誤差』δ(デルタ)
を使い、?倒な微分計算を
数列の漸化式で回避する?法
4 ? 3 画素の??2値画像として読み取った
「0」,「1」の?書き?字画像を識別する
ニューラルネットワークを作成します。
学習?画像データは55枚とします。
前回のお话で
訓練データから求めた誤差の総和E
?的関数となるEを最?にする
重みと閾値を探す
训练データは55枚あるので
…
{t1, t2} …
正解ラベルtの組は55個ある
(今回は”0”,”1”の数字データなので
学習の際にあらかじめ ”0” or “1”の
ラベルがふられている)
{t1, t2} {t1, t2} {t1, t2}
E = e1 + e2 + … + e55
ek = {(t1[k]-z1[k]) + (t2[k]-z2[k]) }
Z1
Z2
t1
t2
z1
z2
出?層
k番?の
画像
計算
出? 理想値
2 2
……
k番?
1番?
55番?
学習データ
……
k番?
1番?
55番?
学習データ
ニューラルネット
……
k番?
1番?
55番?
学習データ
ニューラルネット
e1 = {(t1[1]-z1[1]) + (t2[1]-z2[1]) }
2
ek = {(t1[k]-z1[k]) + (t2[k]-z2[k]) }
e55 = {(t1[55]-z1[55]) + (t2[55]-z2[55]) }
2 2
2 2
……
……
誤差
2
予測値の算出
……
k番?
1番?
55番?
学習データ
ニューラルネット
e1 = {(t1[1]-z1[1]) + (t2[1]-z2[1]) }
2
ek = {(t1[k]-z1[k]) + (t2[k]-z2[k]) }
e55 = {(t1[55]-z1[55]) + (t2[55]-z2[55]) }
2 2
2 2
……
……
誤差
2
0
0
1
……
正解
t1[1]=1
t2[1]=0
t1[k]=1
t2[k]=0
t1[55]=0
t2[55]=1
……
理想値
予測値の算出
……
k番?
1番?
55番?
e1 = {(t1[1]-z1[1]) + (t2[1]-z2[1]) }
2 2
ek = {(t1[k]-z1[k]) + (t2[k]-z2[k]) }
e55 = {(t1[55]-z1[55]) + (t2[55]-z2[55]) }
2 2
2 2
……
……
0
0
1
……
学習データ 誤差
ニューラルネット
予測値の算出
正解
t1[1]=1
t2[1]=0
t1[k]=1
t2[k]=0
t1[55]=0
t2[55]=1
……
理想値
E = e1 + e2 + … + e55
?的関数
さて、ここで?的関数を
最?化するには
今まで学んできた内容ならば
勾配降下法を?いる?
勾配降下法の式を书き下すと
?的関数Eにおいて、重み w11, …,w11, …と
閾値 θ1, … ,θ1, … を順に
w11+Δw11, …, θ1+Δθ1, …
H H H H
w11+Δw11, …, θ1+Δθ1, …
O O O O
H O
H O
と変化させたときに?的関数Eが最も?さく
なるのは次の関係が成り?つときである
(w11, … , θ1, … , w11, …, θ1, …)
= - η(
H H O O
δE
δw11
δE
δθ1
δE
δw11
δE
δθ1
H OH O,…, ,…, ,…, ,… )
これを計算しようとすると
途?もない計算を?うことになる
※たかだか55枚なのに
そこで
誤差逆伝播法の登場
そもそも?的関数Eは 平?誤差の和
E = e1 + e2 + … + e55
そもそも?的関数Eは 平?誤差の和
E = e1 + e2 + … + e55
つまり?的関数Eの勾配は、
平?誤差の和の勾配
そもそも?的関数Eは 平?誤差の和
E = e1 + e2 + … + e55
つまり?的関数Eの勾配は、
平?誤差の和の勾配
さきにeの勾配を計算して、最後に
それらの和を求めるとEの勾配となる
さきにeの勾配を計算して、最後に
それらの和を求めるとEの勾配となる
E
δE
δw
δE
δθ
δe1
δw
δe2
δw
δe55
δw
δe1
δθ
δe2
δθ
δe55
δθ
e1 e2 e55… … …
ここで
『ユニットの誤差』の導?
誤差逆伝播法の仕組みをみていく
※数学的にみていくと難解であるため
ここではイメージのみ
?的関数Eにおいて、重み w11, …,w11, …と
閾値 θ1, … ,θ1, … を順に
w11+Δw11, …, θ1+Δθ1, …
H H H H
w11+Δw11, …, θ1+Δθ1, …
O O O O
H O
H O
と変化させたときに?的関数Eが最も?さく
なるのは次の関係が成り?つときである
(w11, … , θ1, … , w11, …, θ1, …)
= - η(
H H O O
δE
δw11
δE
δθ1
δE
δw11
δE
δθ1
H OH O,…, ,…, ,…, ,… )
ユニットごとに、ユニット間の
重みや閾値を計算しようとするから
?変なことになる
じゃあ、ユニット単位で
まとめて誤差を考えれば良いじゃない
1. ユニットの誤差ξの導?
2. 勾配を、ユニットの誤差ξから算出
3. 出?層の『ユニットの誤差』を算出
4. 誤差逆伝播法から中間層の
? 『ユニット誤差』を求める
i Xi
Hj
Zk
i番?の
ニューロン
(i=1,2,...,12)
j番?の
ニューロン
(j=1,2,3)
k番?の
ニューロン
(k=1,2)
wji wkj
O
ネットワークの
情報伝達の?向
誤差逆伝播法
θj θk
OH
H
Xi Hj Zk
隠れ層
(Hidden layer)
??層
(Input layer)
出?層
(Output layer)
i は??層の中の
上からの位置を
?すとする
j は隠れ層の中の
上からの位置を
?すとする
k は出?層の中の
上からの位置を
?すとする
Hj
Zk
Xi ユニットXi の出?xi
ユニットHj の出?hj
ユニットZkの出?zk
??字は、ユニット名を
??字は、ユニットの出?変数を表すことにします
sj
隠れ層
(Hidden layer)
j番?のニューロン
出?層
(Output layer)
k番?のニューロン
??の
線形和
H
θj
H
wji
H
??層 i番?の
ニューロン
sk
??の
線形和
O
θk
O
wkj
O
隠れ層 j番?の
ニューロン
1. ユニットの誤差ξの導?
δe
δsj
ξj = (j=1,2,3)
δe
δsk
, ξj = (k=1,2)OH
1. ユニットの誤差ξの導?
δe
δsj
ξj = (j=1,2,3)
δe
δsk
, ξk = (k=1,2)OH
2. 勾配を、ユニットの誤差ξから算出
δe
δwji
H = ξj xi ,
H δe
δθj
H = -ξj
H
(i=1,2, …, 12, j=1,2,3)
δe
δwkj
O = ξk hj ,
O δe
δθk
O = -ξk
O
(j=1,2,3, k=1,2)
3. 出?層の『ユニットの誤差』を算出
ξk =
O δe
δsk
O =
δe
δzk
δzk
δsk
O =
δe
δzk
= a(sk)
O
3. 出?層の『ユニットの誤差』を算出
ξk =
O δe
δsk
O =
δe
δzk
δzk
δsk
O =
δe
δzk
= a(sk)
O
??で、 e = 1/2{(t1-z1) + (t2-z2) }2 2
なので、※計算のしやすさから 1/2倍している
δe
δz1
= -(t1 - z1),
δe
δz2
= -(t2 - z2)
3. 出?層の『ユニットの誤差』を算出
ξk =
O δe
δsk
O =
δe
δzk
δzk
δsk
O =
δe
δzk
= a(sk)
O
より
δe
δz1
= -(t1 - z1),
δe
δz2
= -(t2 - z2)
ξ1 = -(t1 - z1) a(s1), ξ2 = -(t2 - z2) a(s2),
O OO O
3. 出?層の『ユニットの誤差』を算出
ξk =
O δe
δsk
O =
δe
δzk
δzk
δsk
O =
δe
δzk
= a(sk)
O
より
δe
δz1
= -(t1 - z1),
δe
δz2
= -(t2 - z2)
ξ1 = -(t1 - z1) a(s1), ξ2 = -(t2 - z2) a(s2),
O OO O
既知の値なので誤差 ξk
O
が求まる
4. 誤差逆伝播法から中間層の
? 『ユニット誤差』を求める
※算出を実際にトライしてみてください
ξj = (ξ1w1j + ξ2w2j ) a(sj) (i=1,2,3)
H O O O O H
4. 誤差逆伝播法から中間層の
? 『ユニット誤差』を求める
※算出を実際にトライしてみてください
ξj = (ξ1w1j + ξ2w2j ) a(sj) (i=1,2,3)
H O O O O H
この仕組みによって、
?倒な微分計算を?わず、
漸化式で解くことが可能となる
ニューラルネットワークの
計算は、隠れ層(中間層)から出?層へ
??、『ユニットの誤差』の計算は
出?層から隠れ層(中間層)へ
これが
誤差逆伝播法
误差逆伝播法を贰虫肠别濒で体験
Excel推奨
※計算重いので注意してください
1. 訓練データの準備
訓練データ
55枚
??なので、0, 1で表現
2. 重みと閾値の初期化
勾配降下法の
ステップ幅を決める
初期値を設定
(ランダム)
3. ユニットの出?値と
活性化関数の微分値を計算
1番?の画像に対して
隠れ層と出?層の
各ユニットの線形和?
活性化関数の微分値?
平?誤差eを計算
4. 誤差逆伝播法から
各層のユニット誤差ξを計算
ユニットの
誤差を計算
5.平?誤差e の勾配を計算
ユニットの
誤差を計算をしたので、
平?誤差の勾配を
次に計算
6. 訓練データ全てについて関数を
コピー&Eの勾配を計算
55枚分を
横にコピペ
55枚分の、平?誤差eの勾配を合計して
?的関数 Eを計算
7. 勾配降下法を利?して
重みと閾値を計算
勾配降下法で、
新たな重みと閾値を計算
並?して、
Eの勾配の総和を計算
8. 3.~7.を繰り返し計算
50回?の計算
そのときの重みと閾値
いざ、テスト
Casual learning machine learning with_excel_no6
いかがでしたでしょうか?
ニューラルネットワーク
感覚的にわかってきたのでは?
次回以降、
深層学習に?っていきます
EoF

More Related Content

Casual learning machine learning with_excel_no6