Top Banner
MLP深層学習 LSTM 曽和 修平
47

MLP深層学習 LSTM

Apr 13, 2017

Download

Science

Shuhei Sowa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MLP深層学習 LSTM

MLP深層学習 LSTM曽和 修平

Page 2: MLP深層学習 LSTM

LSTM

Page 3: MLP深層学習 LSTM

LSTMとは

• RNNは長い順伝搬ネットワークに展開される

→勾配消失問題が発生する(長い系列が扱えない!)

• LSTMはこの問題を解決し、長い系列を扱えるようにする

Page 4: MLP深層学習 LSTM

LSTMの構造• RNNの中間層の各ユニットを「メモリユニット」というものに置き換える

メモリユニットは前の状態を「覚えていたり」「忘れていたり」することで

RN LST

中間層のユニット

メモリユニット

勾配消失問題を解決しようとする

Page 5: MLP深層学習 LSTM

中間層のユニットとメモリユニット• 中間層の1ユニット

f

WjiWjj’

• メモリユニット

1時刻前の中間層の出力

入力層の出力

Wji

Wjj’

Wjj’I

I

Wji

Wjj’

F

FWji

Wjj’O

O

1時刻前のメモリセルの出力

メモリセル

忘却ゲート

入力ゲート

出力ゲート

Wji

Page 6: MLP深層学習 LSTM

LSTMの構造下の方から見ていく

Wjj’ Wii

この部分は中間層の1ユニットと全く同じ

※添字[j]はユニットの番号,[t]は時刻

u

tj =

X

i

w

(in)ji x

ti +

X

j0

wjj0zt1j0

f(utj)

f(utj)

出力:

(in)

Page 7: MLP深層学習 LSTM

LSTMの構造

1時刻前のメモリセルの出力   を考慮

Wji

Wjj’

I

u

I,tj =

X

i

w

(I,in)ji x

ti +

X

j0

w

Ijj0z

t1j0 + w

Ij s

t1j

s

t1j

出力: g

I,tj = f(uI,t

j )

g

I,tj

Page 8: MLP深層学習 LSTM

LSTMの構造

先に計算した各セルの積

出力:

入力ゲート

f(utj)g

I,tj

f(utj)g

I,tj

これがメモリセルへの入力の1つとなる

Page 9: MLP深層学習 LSTM

LSTMの構造

出力:

Wji

Wjj’

F

F

1時刻前のメモリセルの出力   を「どれだけ覚えているか」をs

t1j

u

F,tj =

X

i

w

(F,in)ji x

ti +

X

j0

w

Fjj0z

t1j0 + w

Fj s

t1j

g

F,tj = f(uF,t

j )

表現している。

Page 10: MLP深層学習 LSTM

LSTMの構造

先に計算した各セルの積

出力:

これがメモリセルへの入力の1つとなる

忘却ゲート

g

F,tj

g

F,tj s

t1j

s

t1j

g

F,tj s

t1j

が1に近ければよく前のメモリセルの状態をよく覚えている事になる

逆に0に近ければ前のメモリセルの状態を忘れた事になる

g

F,tj

Page 11: MLP深層学習 LSTM

LSTMの構造

メモリセルは入力ゲートの出力と入力ゲートの出力の和

メモリセル

忘却ゲート

入力ゲート

s

tj = g

F,tj s

t1j + g

I,tj f(ut

j)

メモリセルや各ゲートの意味については後述

s

tj

Page 12: MLP深層学習 LSTM

LSTMの構造

Wji

Wjj’

O

O

s

tj

u

O,tj =

X

i

w

(O,in)ji x

ti +

X

j0

w

Ojj0z

t1j0 + w

Oj s

tj

出力: g

O,tj = f(uO,t

j )

g

O,tj

現在のメモリセルの値を考慮

Page 13: MLP深層学習 LSTM

LSTMの構造

出力ゲート

s

tj

f(stj)

z

tj

g

O,tj

z

tj = g

O,tj f(stj)

この値が1つのメモリユニットの出力値となる

Page 14: MLP深層学習 LSTM

ゲートの役割

Page 15: MLP深層学習 LSTM

入力重み衝突

i j重み w

ユニットiの入力はユニットjに重みwをかけて「伝達」される

伝達するためには重みwを大きくしてユニットjを活性させないといけない

一方、無関係な入力が入った時は伝達したくない・・というジレンマがある

Page 16: MLP深層学習 LSTM

入力重み衝突

i j重み w

例)ユニットiは仮に「英語の名詞」に対して反応するとする

入力「pen」がきたら活性する。これは次に伝達したい。

入力「ペン」はそもそも日本語なのでこの特徴を抽出する上で関係ない。これは伝達したくない・・

→重みは大きくしたい

→重みは小さくしたい

Page 17: MLP深層学習 LSTM

入力ゲート

・前のユニットの状態を伝達するかどうかを決定

i j重み w

入力ゲート

・前のユニットの出力が必要ものならゲートを開ける・前のユニットの出力が関係ないものならゲートを閉じる

・この判断をするのが↓の部分のネットワーク

Wji

Wjj’

Ig

I,tj

Page 18: MLP深層学習 LSTM

出力重み衝突/出力ゲート

入力重み衝突と同じ。

・前のユニットの状態を「受け取る」かどうかを決定(入力ゲート)

(出力ゲート)・前のユニットの状態を「伝達する」かどうかを決定

Wji

Wjj’

O

O

s

tj

g

O,tj

・この判断をするのが↓の部分のネットワーク

Page 19: MLP深層学習 LSTM

メモリセル

・メモリセルはこれまでの状態を保持している

メモリセル

忘却ゲート

入力ゲート

s

tj = g

F,tj s

t1j + g

I,tj f(ut

j)

s

tj

・しかし、入力の系列がガラッと変わった時、今までの状 態を捨てたい事がある

Page 20: MLP深層学習 LSTM

メモリセル

主語が男か女かを判断例)

He is a student and she is a student

・「and」の前後で文が独立している

このような場合,she is ・・の文を学習するにあたって

これまでの状態(He is a・・)を捨てたい

Page 21: MLP深層学習 LSTM

忘却ゲート

・これまでの状態を覚えておくか、忘れるかを判断する

Wji

Wjj’

F

F

忘却ゲート

s

t1j

g

F,tj s

t1j

s

t1j

忘れるべきか、覚えておくべきかを判断

Page 22: MLP深層学習 LSTM

逆伝搬計算

Page 23: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)・中間層l ← 中間層l+1の勾配を誤差逆伝搬法で求める

・l層のあるユニットjへの総入力は

u

(l)j =

nX

i=1

w

(l)ji z

(l1)i

En

w

(l)ji

=En

u

(l)j

u

(l)j

w

(l)ji

・勾配を求める為微分する

これが計算できれば勾配が求まる→重みが更新できる

Page 24: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)・中間層l ← 中間層l+1の勾配を誤差逆伝搬法で求める

En

w

(l)ji

=En

u

(l)j

u

(l)j

w

(l)ji この部分はそのまま微分可能

この部分は出力層→中間層の時以外はこのまま計算できない

はどうすれば計算できるのか。En

u

(l)j

Page 25: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)

ユニットjが変動すると,Enはどう影響を受けるのか?

j

0

k

l層l+1層

ユニットjの出力分だけ、次の層の各中間ユニットの総入力が 影響を受ける→この影響が出力層まで連鎖していく

ユニットjの出力 x 重みの分だけ総入力に影響がある

Page 26: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)

つまり、uj^(l)がEnに与える影響(変動) はEn

u

(l)j

En

u

(l)j

=X

k

En

u

(l+1)k

u

(l+1)k

u

(l)j と書ける

そしてこの本ではこの値を「デルタ」と呼んでいる

(l)j ⌘ En

u

(l)j

このデルタさえわかれば後はEn

w

(l)ji

=En

u

(l)j

u

(l)j

w

(l)ji

に代入すれば簡単に勾配が求まる。

Page 27: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)では、デルタはどう変形できるか。

En

u

(l)j

=X

k

En

u

(l+1)k

u

(l+1)k

u

(l)j

右辺第一項はl+1層のデルタになっている

(l)j ⌘ En

u

(l)j

(l)j =

X

k

(l+1)k

u

(l+1)k

u

(l)j ので、こう書ける

さて、右辺第二項について考える。

Page 28: MLP深層学習 LSTM

誤差関数に関する勾配の求め方(復習)l+1層のユニットkに関する総入力uは

u

(l+1)k =

X

j

w

(l+1)kj z

(l)j =

X

j

w

(l+1)kj f(u

(l)j )

この式をuj^(l)で微分すると

u

(l+1)k

u

(l)j

= w

(l+1)kj f

0(u(l)j )

よって

(l)j =

X

k

(l+1)k (w

(l+1)kj f

0(u(l)j ))

Page 29: MLP深層学習 LSTM

LSTMの逆伝搬計算LSTMのメモリユニットの各「デルタ」を計算する

最適化対象の変数は以下

Wji

Wjj’

Wjj’II

Wji Wjj’F F

Wji Wjj’OO

Wji

Wj F

Wj I

Wj O

・・これまでと同じ

・・入力ゲート値の重み

・・忘却ゲート値の重み

・・出力ゲート値の重み

Page 30: MLP深層学習 LSTM

逆伝搬計算

Wji

Wjj’

O

O

s

tj

g

O,tj

まずはこのセルのデルタを考える※vk^tは次の出力層への総入力

出力層に関して 次時刻のメモリユニットに関して

O,tj =

X

k

out,tk

v

tk

u

O,tj

+X

j0

(t+1)j0

u

(l+1)k

u

(O,t)j

j’

Page 31: MLP深層学習 LSTM

逆伝搬計算

v

tk =

X

j

w

outkj z

tj

この部分を求める出力層のユニットへの総入力は

これをuj^(O,t)で微分するとv

tk

u

O,tj

= w

outkj f

0(uO,tj )f(stj)

z

ij = g

O,tj f(stj)

出力ゲート

s

tj

f(stj)

z

tj

g

O,tj

である事に注意

O,tj =

X

k

out,tk

v

tk

u

O,tj

+X

j0

(t+1)j0

u

(l+1)k

u

(O,t)j

j’

Page 32: MLP深層学習 LSTM

逆伝搬計算

この部分を求めるこれは先と同じように計算できる

v

tk

u

O,tj

= w

outkj f

0(uO,tj )f(stj)

出力ゲート

s

tj

f(stj)

z

tj

g

O,tj

O,tj =

X

k

out,tk

v

tk

u

O,tj

+X

j0

(t+1)j0

u

(l+1)k

u

(O,t)j

j’

j’u

(t+1)j0

u

O,tj

= wj0jf0(uO,t

j )f(stj)

Page 33: MLP深層学習 LSTM

逆伝搬計算

tj =

X

k

w

outkj δ

out,tk +

X

j0

wj0jδt+1j0

ここで

とおき

v

tk

u

O,tj

= w

outkj f

0(uO,tj )f(stj)

をデルタO,tに代入すると・・

δ

O,tj = f

0(uO,tj )f(stj)✏

tj となる

j’u

(t+1)j0

u

O,tj

= wj0jf0(uO,t

j )f(stj)

Page 34: MLP深層学習 LSTM

逆伝搬計算

出力ゲート

s

tj

f(stj)

z

tj

g

O,tj

次は、このセルのデルタを求める

これも先と同様の考え方をする。

e

tj =

X

k

out,tk

v

tk

s

tj

+X

j0

(t+1)j0

u

(l+1)k

s

tj

出力層に関して 次時刻のメモリユニットに関して

j’

Page 35: MLP深層学習 LSTM

逆伝搬計算

v

tk =

X

j

w

outkj z

tj

出力層のユニットへの総入力は

これをsj^tで微分すると

z

ij = g

O,tj f(stj) である事に注意

e

tj =

X

k

out,tk

v

tk

s

tj

+X

j0

(t+1)j0

u

(l+1)k

s

tj

v

tk

s

tj

=X

j

w

outkj g

O,tj f

0(stj)

j’

Page 36: MLP深層学習 LSTM

逆伝搬計算

こちらに関しても同様の流れで計算して

e

tj =

X

k

out,tk

v

tk

s

tj

+X

j0

(t+1)j0

u

(l+1)k

s

tj

tj =

X

k

w

outkj δ

out,tk +

X

j0

wj0jδt+1j0 とおくと

tj = g

O,tj f

0(stj)✏tj

j’

j’u

(t+1)j0

u

O,tj

= wj0jgO,tj f

0(stj)

Page 37: MLP深層学習 LSTM

逆伝搬計算

デルタの定義式をもう一度眺める

(l)j =

X

k

(l+1)k (w

(l+1)kj f

0(u(l)j ))

伝搬元のデルタ

伝搬元の重み

現在の層の出力を微分したもの

これらの積の和(伝搬元のユニット数)

Page 38: MLP深層学習 LSTM

逆伝搬計算

次は、メモリセルのデルタを求めるメモリセル

忘却ゲート

入力ゲート

s

tj

このセルの「伝搬元」は・・・外部出力向け ・セル自身への帰還・入力ゲート ・忘却ゲート ・出力ゲートつまり、これら全ての「デルタ」x重みの和がメモリセルの「デルタ」

メモリセルは総入力sj^tを受け、恒等写像の活性化関数を経てsj^tを返すと考える

f

0(stj) = 1

Page 39: MLP深層学習 LSTM

逆伝搬計算

メモリセル

忘却ゲート

入力ゲート

s

tj ・外部出力向け のデルタ

これは先程計算済み。

tj = g

O,tj f

0(stj)✏tj

Page 40: MLP深層学習 LSTM

逆伝搬計算

メモリセル

忘却ゲート

入力ゲート

s

tj ・セル自身への帰還 のデルタ

1時刻後のメモリセルの値と1時刻後のゲート値の積

g

F,t+1j

cell,t+1j

忘却ゲートメモリセル

伝搬元のデルタ伝搬元の重み

Page 41: MLP深層学習 LSTM

逆伝搬計算

メモリセル

忘却ゲート

入力ゲート

s

tj ・入力ゲート

・忘却ゲート・出力ゲート からのデルタ

それぞれ・・ w

Ij

I,t+1j

w

Fj

F,t+1j

w

Oj

O,tj

Page 42: MLP深層学習 LSTM

逆伝搬計算

よって、メモリセルのデルタは下記のように表される

メモリセル

忘却ゲート

入力ゲート

s

tj

cell,tj = e

tj + g

F,t+1j

cell,t+1j + w

Ij

I,t+1j + w

Fj

F,t+1j + w

Oj

O,tj

まだ

F,tj

I,tjと

が求められていないので求めていく。

最初のセルに関するデルタ

tj

Page 43: MLP深層学習 LSTM

逆伝搬計算

デルタの定義式をもう一度眺める(再掲)

(l)j =

X

k

(l+1)k (w

(l+1)kj f

0(u(l)j ))

伝搬元のデルタ

伝搬元の重み

現在の層の出力を微分したもの

これらの積の和(伝搬元のユニット数)

Page 44: MLP深層学習 LSTM

逆伝搬計算

F,tjまず、

Wji

Wjj’

F

F

に関して。伝搬元のデルタは? =

cell,tj

伝搬元の重みは? = s

t1j

現在の層の出力を微分したものは? = f

0(uF,tj )

伝搬元は単一のセルからなので、和を取る必要はない。

F,tj = f

0(uF,tj )st−1

j

cell,tjよって・・

Page 45: MLP深層学習 LSTM

逆伝搬計算

次、 に関して。伝搬元のデルタは? =

cell,tj

伝搬元の重みは? = 現在の層の出力を微分したものは? = 伝搬元は単一のセルからなので、和を取る必要はない。

よって・・

I,tj

Wji

Wjj’

Ig

I,tj

f(utj)

f

0(uI,tj )

I,tj = f

0(uI,tj )f(ut

j)cell,tj

Page 46: MLP深層学習 LSTM

逆伝搬計算

最後、 に関して。伝搬元のデルタは? =

cell,tj

伝搬元の重みは? = 現在の層の出力を微分したものは? = 伝搬元は単一のセルからなので、和を取る必要はない。

よって・・

tj

Wjj’ Wii

f(utj)

g

I,tj

f

0(utj)

tj = g

I,tj f

0(utj)

cell,tj

Page 47: MLP深層学習 LSTM

逆伝搬計算

これで、全てのデルタの計算ができた。

重みの更新ができる