SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
深層学習
著:岡本  孝之  
NAIST	
Computational  Linguistic  Lab  	
D1  Masayoshi  Kondo
4章  –前半-‐‑‒
00:  はじめに
【⽬目的と狙い】
•  Deep  Learningに興味があるけど詳しくは分からない理理系修⼠士学⽣生向け
•  実⽤用的なことよりも基礎的知識識を重視
•  今後論論⽂文を読んで⾏行行く上での基礎体⼒力力を滋養し、各学⽣生の理理解速度度の向上が狙い
【ガイドライン】
•  「深層学習(講談社  :  岡本  貴之  著)」の本をまとめる形で発表
•  全8章の165ページから構成
•  本の内容に準拠(本に記載されていない内容・表現を知っている場合でも原則的
には記載を控える。あくまでも本の内容に忠実。)
•  ただし、適宜、参考⽂文献や関連論論⽂文等はあれば記載していくつもり
•  理理系(情報⼯工学系)の⼤大学学部4年年⽣生が理理解できるくらいをイメージしてまとめる
今回  :  第4章
XX:  緑のスライドとは?  
書籍(本書)には記載されていないが、必要箇所の説明に際し
補助・追記として個⼈人的に記載が必要と思われた場合には、
緑⾊色のページに適宜載せることとする.
•  本には載っていないけど、あえて追加説明したい場合は、
緑スライドに書くことにする.
•  緑スライドに書かれる内容は本には記載されていない.
00:  はじめに
全8章
•  【第1章】はじめに
•  【第2章】順伝搬型ネットワーク
•  【第3章】確率率率的勾配降降下法
•  【第4章】誤差逆伝搬法
•  【第5章】⾃自⼰己符号化器
•  【第6章】畳込みニューラルネット(CNN)
•  【第7章】再帰型ニューラルネット(RNN)
•  【第8章】ボルツマンマシン
00:  はじめに  –  これまでのまとめ  (1・2章)  -‐‑‒
深層学習(Deep  Learning)  /  ニューラルネット  を使って分析するとは
•  ネットワークの構造  を決める
•  活性化関数  を決める
•  学習⽅方法(誤差関数と最適化法)  を決める
の3つを⾏行行うことである
00:  はじめに  –  これまでのまとめ  (3章)  -‐‑‒
深層学習・ニューラルネットワークを使⽤用することは、
•  学習時の過適合(overfitting)
•  学習にかかる膨⼤大な計算時間
との戦い.
過適合を緩和する⽅方法と計算時間を縮⼩小する⼿手法を組み合わせて
現実的に解決可能な問題へ落落とし込む
ニューラルネットワークの学習
誤差関数を最⼩小(極⼩小)にするパラメータ
(重み・バイアス)を求める作業
•    誤差関数  に対する  ユニット  の影響
•    ユニット  に対する  重み・バイアス  の影響
複雑な構造を持つニューラルネットに対して
誤差関数に対するパラメータの影響(微分)を求めるために
00:  はじめに(今回まとめ)
の2段形式で考える
微分!!
第4章  誤差逆伝搬法
  4.1  勾配計算の難しさ
  4.2  2層ネットワークでの計算
  4.3  多層ネットワークへの⼀一般化
  4.4  勾配降降下法の完全アルゴリズム
  4.5  勾配消失問題
今回(前編)!!
次回(後編)
第4章  誤差逆伝搬法
  4.1  勾配計算の難しさ
  4.2  2層ネットワークでの計算
  4.3  多層ネットワークへの⼀一般化
  4.4  勾配降降下法の完全アルゴリズム
  4.5  勾配消失問題
【学習】
ニューラルネットの出⼒力力が正解ラベルと
近くなるようにパラメータを調整すること
ニューラルネット
パラメータ:重み・バイアス
⼊入⼒力力
(ベクトル)
出⼒力力
(⼆二値  or  ベクトル)
-‐‑‒:  これまでのお話(第1章〜~第3章)  と  ここからのお話  
ニューラルネットと計算の流流れ
誤差関数を⼩小さく  するように
関数の極値を求める
関数の「微分」!!
ー  ここからのお話  ー
Q  :  誤差逆伝搬法  とは??
Ans:  この「微分」を効率率率よく計算する⽅方法
ニューラルネット
パラメータ:重み・バイアス
⼊入⼒力力
(ベクトル)
出⼒力力
(⼆二値  or  ベクトル)
順伝搬:  ⼊入⼒力力  から  出⼒力力値  の計算の流流れ
逆伝搬:出⼒力力値  と  正解ラベル  との  誤差修正の計算  (パラメータ更更新)の流流れ
DNNの学習(最適化)
∇E ≡
∂E
∂w
=
∂E
∂w1
!!
∂E
∂wM
"
#
$
%
&
'
t
w(t+1)
= w(t)
−ε∇E
勾配降降下法(第3章<前半>参照)
重みWに対する
を求めれば良良いのね.
∂E
∂w
誤差逆伝搬法  (RNNは、BPTT法)
∂E
∂w
  ~∼  [誤差]
[誤差]t  ←  h([誤差]t+1)
[誤差]は、モデルの出⼒力力値と正解
ラベルの差から求めることが出来
そう.
データを最も良良く表現する
重みWを求めること
-‐‑‒:  DNNの学習  ⼿手続き
どうやって
求めんの?
    が求まれば、重みWを
更更新できる.
∇E
どうやって
求めんの?
-‐‑‒  具体例例で考える
ある1つのサンプルxnに対して、誤差関数に⼆二乗誤差を⽤用いた全L層
からなるニューラルネットを考える.    (⼆二乗誤差:                )
∂En
∂wji
(l)
=
∂En
∂y
⋅
∂y
∂wji
(l)
= y(xn )− dn( )
t ∂y
∂wji
(l)
En =
1
2
y(xn )− dn
2
第l層のj番⽬目ユニット  における  前層i番⽬目ユニットからの⼊入⼒力力  に対する
重み      で誤差関数を微分すると…wji
(l)
微分の計算は中間層、特に⼊入⼒力力層に近い層のパラメータほど困難
01:    勾配計算の難しさ  
勾配降降下法  を実⾏行行するには、誤差関数の勾配  を計算する必要がある
∇E ≡
∂E
∂w
=
∂E
∂w1
!!
∂E
∂wM
"
#
$
%
&
'
t
w(t+1)
= w(t)
−ε∇E
第3章<前半>
参照
【課題】
・・・ ・・・
第l層・・・ ・・・
wji
(l)
関数y(x)内で    が活性化関数の深い⼊入れ⼦子構造の中に現れるため、微分の連鎖
規則を何度度も繰り返す必要があり、プログラミングが⾯面倒・計算量量が⼤大きくなる
f f f・・・ ・・・
wji
(l)
誤差逆伝搬法  は、この問題を解決する
02:    勾配計算の難しさ  
∂En
∂wji
(l)
=
∂En
∂y
⋅
∂y
∂wji
(l)
= y(xn )− dn( )
t ∂y
∂wji
(l)
簡単に求められるといいんだけど…
y(x) = f (u(L)
)
= f (W(L)
z(L−1)
+ b(l)
)
= f (W(L)
f (W(L−1)
z(L−2)
+ b(L−1)
)+ b(L)
)
= f (W(L)
f (W(L−1)
f (! f (W(l)
z(l−1)
+ b(l)
)!))+ b(L)
)
⼊入れ⼦子構造  が続く・・・
(f:  活性化関数)
-‐‑‒  具体例例で考える  (つづき)
第4章  誤差逆伝搬法
  4.1  勾配計算の難しさ
  4.2  2層ネットワークでの計算
  4.3  多層ネットワークへの⼀一般化
  4.4  勾配降降下法の完全アルゴリズム
  4.5  勾配消失問題
【イメージ図】
⼊入
⼒力力
出
⼒力力
-‐‑‒:  2層ネットワークでの計算  
本書では「2層ネットワーク」と表現しているが、内容を読む限り「3層ネッ
トワーク」として読めるので予め明⾔言する.(本書では、恐らく⼊入⼒力力層を除い
た残りの層を数えて2層ネットワークと表現している.)
バイアス
⼊入⼒力力層
中間層
(隠れ層) 出⼒力力層
•  ⼊入⼒力力層  から  中間層  へ
zj
(2)
= f (uj
(2)
) = f ( wji
(2)
zi
(1)
i
∑ )
zi
(1)
= xi
•  中間層  から  出⼒力力層  へ
yj (x) = zj
(3)
= uj
(3)
= wji
(3)
zi
(2)
i
∑
•  ⼊入⼒力力ベクトルがそのまま
    ⼊入⼒力力層からの出⼒力力値となる
•  中間層は、⼊入⼒力力層の出⼒力力値と
        重みの積の線形結合から計算
•  出⼒力力層の活性化関数は
  恒等写像であることに注意
【順伝搬の計算〜~⼊入⼒力力から出⼒力力まで〜~】
03:  2層ネットワークでの計算  
【設定】
•  (背景として、回帰問題への適応を想定)
•  ⼊入⼒力力層、中間層が1層、出⼒力力層から構成されるニューラルネットワークを考える
•  中間層のユニットは任意の活性化関数fを持つ
•  出⼒力力層の活性化関数は恒等写像(                                )
•  誤差関数は⼆二乗誤差を選択
z = f (u) = u
※注意:最終⽬目標は、パラメータ(重みとバイアス)の最適値を求めること!!
•  出⼒力力層  の重みについての微分
∂En
∂wji
(3)
= (y(x)− d)t ∂y
∂wji
(3)
•  出⼒力力層の活性化関数が
    恒等写像であること
•  前層出⼒力力値の線形和の係数が
重みであることから、微分
    すると      は楽に求まる.
∂y
∂wji
(3)
=[ 0 ! 0 zi
(2)
0 ! 0 ]t
∂y
∂wji
(3)
∂En
∂wji
(3)
= (yj (x)− dj )zi
(2)
(第3章<前半>  参照)
∇E ≡
∂E
∂w
=
∂E
∂w1
!!
∂E
∂wM
"
#
$
%
&
'
t
w(t+1)
= w(t)
−ε∇E
【逆伝搬の計算〜~出⼒力力から⼊入⼒力力まで〜~】
04:  2層ネットワークでの計算  
最終⽬目的:  パラメータ(重みとバイアス)の最適値を求めること
後は重みの値が収束する
まで繰り返し更更新するだけ
•  中間層  の重みについての微分
∂En
∂wji
(2)
=
∂En
∂uj
(2)
∂uj
(2)
∂wji
(2)
∂uj
(2)
∂wji
(2)
誤差関数に対する
ユニットの影響
ユニットに対する
パラメータの影響
∂En
∂uj
(2)
=
∂En
∂uk
(3)
∂uk
(3)
∂uj
(2)
k
∑
∂uj
(2)
∂wji
(2)
= zi
(1)
これらの微分項は、下記のように計算できる.
∵uj
(2)
= wji
(2)
zi
(1)
i
∑
"
#
$
%
&
'
∂En
∂uk
(3)
= uk
(3)
− dk
∂uk
(3)
∂uj
(2)
= wkj
(3)
"f (uj
(2)
)
合成関数の微分法で
•    誤差関数  と  ユニット
•    ユニット  と  パラメータ
の⼆二つの関係に分解して考える
•      は、ニューラルネットの性質から、  
                簡単に計算可能
•      は、誤差関数と出⼒力力層の出⼒力力値
    (最終出⼒力力値)の関係に注⽬目
•      は、隣隣接ユニット間の関係に注⽬目
∂En
∂uk
(3)
∂uk
(3)
∂uj
(2)
【逆伝搬の計算〜~出⼒力力から⼊入⼒力力まで〜~】
05:  2層ネットワークでの計算  
•  誤差関数は最終出⼒力力値にのみ依存する
        ことに注⽬目  =  簡単に(直接)微分可能
•  隣隣接ユニット間の変分なら、活性化関数
は⼊入れ⼦子構造にならないので計算が楽
•  中間層  の重みについての微分
【逆伝搬の計算〜~出⼒力力から⼊入⼒力力まで〜~】
06:  2層ネットワークでの計算  
∂En
∂uj
(2)
=
∂En
∂uk
(3)
∂uk
(3)
∂uj
(2)
k
∑
∂uj
(2)
∂wji
(2)
= zi
(1)
∵uj
(2)
= wji
(2)
zi
(1)
i
∑
"
#
$
%
&
'
∂En
∂uk
(3)
= uk
(3)
− dk
∂uk
(3)
∂uj
(2)
= wkj
(3)
"f (uj
(2)
)
代⼊入
∂En
∂wji
(2)
=
∂En
∂uj
(2)
∂uj
(2)
∂wji
(2)
誤差関数に対する
ユニットの影響
ユニットに対する
パラメータの影響
∂En
∂wji
(2)
= !f (uj
(2)
) wkj
(3)
(uk
(3)
− dk )
k
∑
"
#
$
%
&
'zi
(1)
(第3章<前半>  参照)
∇E ≡
∂E
∂w
=
∂E
∂w1
!!
∂E
∂wM
"
#
$
%
&
'
t
w(t+1)
= w(t)
−ε∇E
後は重みの値が収束するまで
繰り返し更更新するだけ
第4章  誤差逆伝搬法
  4.1  勾配計算の難しさ
  4.2  2層ネットワークでの計算
  4.3  多層ネットワークへの⼀一般化
  4.4  勾配降降下法の完全アルゴリズム
  4.5  勾配消失問題
δj
(l)
≡
∂En
∂uj
(l)
07:  多層ネットワークへの⼀一般化  
任意の層数のネットワークに拡張するお話
具体的には、2層ネットワークの中間層の重みの関する計算を⼀一般化
∂En
∂wji
(2)
=
∂En
∂uj
(2)
∂uj
(2)
∂wji
(2)
2層ネットワークの中間層の重みの変分 誤差関数に対する第l層での重みの変分⼀一般化
∂En
∂wji
(l)
=
∂En
∂uj
(l)
∂uj
(l)
∂wji
(l)
重みの計算の⼀一般化にあたり、新しい記号(計量量)を導⼊入
∂En
∂uj
(l)
=
∂En
∂uk
(l+1)
∂uk
(l+1)
∂uj
(l)
k
∑
∂uj
(l)
∂wji
(l)
= zi
(l−1)
∵uj
(l)
= wji
(l)
zi
(l−1)
i
∑
#
$
%
&
'
(
誤差関数に対する第l層での重みの変分
∂En
∂wji
(l)
=
∂En
∂uj
(l)
∂uj
(l)
∂wji
(l)
δj
(l)
= δk
(l+1) ∂uk
(l+1)
∂uj
(l)
k
∑
∂uj
(l)
∂wji
(l)
= zi
(l−1)
∵uj
(l)
= wji
(l)
zi
(l−1)
i
∑
#
$
%
&
'
(
∂uk
(l+1)
∂uj
(l)【    について】
uk
(l+1)
= wkj
(l+1)
zj
(l)
j
∑
= wkj
(l+1)
f (uj
(l)
)
j
∑
    を    で表現できたので微分するとuj
(l)
uk
(l+1)
∂uk
(l+1)
∂uj
(l)
= wkj
(l+1)
!f (uj
(l)
)
δj
(l)
≡
∂En
∂uj
(l)
08:  多層ネットワークへの⼀一般化  
変換
δj
(l)
= δk
(l+1)
wkj
(l+1)
!f (uj
(l)
)( )
k
∑
この計算
どうするの…
第(l+1)層のユニットのδが与えられれば、
第l層のユニットのδの計算が可能である
ことを⽰示している
ニューラルネットの性質から
単純に変換しただけ
誤差関数に対する第l層での重みの変分
∂En
∂wji
(l)
=
∂En
∂uj
(l)
∂uj
(l)
∂wji
(l)
09:  多層ネットワークへの⼀一般化  
∂En
∂wji
(l)
=δj
(l)
zi
(l−1)
∂uj
(l)
∂wji
(l)
= zi
(l−1)
∵uj
(l)
= wji
(l)
zi
(l−1)
i
∑
#
$
%
&
'
(
δj
(l)
= δk
(l+1)
wkj
(l+1)
!f (uj
(l)
)( )
k
∑
δj
(l)
≡
∂En
∂uj
(l)
∂uj
(l)
∂wji
(l)
合成関数の微分法で
•    誤差関数  と  ユニット
•    ユニット  と  パラメータ
の⼆二つの関係に分解して考える
•        は、ニューラルネットの性質
                      から簡単に計算可能
•        は、出⼒力力側隣隣接ユニットのδ
                      だけから計算可能
δj
(l)
第(l­−1)層のユニットiと第l層のユニットj
を繋ぐ重み    に関する微分は、ユニットj
に関するδとユニットiの出⼒力力の単純な積で
計算できることが分かる.
(⼊入れ⼦子構造のめんどくさい処理理を回避)
wji
(l)
10:  多層ネットワークへの⼀一般化  
誤差逆伝搬法  による誤差勾配の計算⼿手順
1.【順伝搬】z(1)=xnとして、各層lのユニット⼊入出⼒力力u(l)及びz(l)を順に計算.
2.  出⼒力力層でのδj
(L)を求める.
3.【逆伝搬】中間層l(=L-‐‑‒1,  L-‐‑‒2,  L-‐‑‒3,…,4  ,3,  2)でのδj
(L)を、出⼒力力側から
          下記の式に従って計算.
4.  各層l(=2,  3,  4,…,L-‐‑‒2  ,L-‐‑‒1  ,L)のパラメータwji
(l)に関する微分を
        下記の式に従って計算.
δj
(l)
= δk
(l+1)
wkj
(l+1)
!f (uj
(l)
)( )
k
∑
∂En
∂wji
(l)
=δj
(l)
zi
(l−1)
ミニバッチ等の複数の訓練サンプルに対する誤差関数(誤差の総和)
の勾配については??
11:  多層ネットワークへの⼀一般化  
ここまでの話はあるひとつのサンプルに関する誤差関数Enの勾配のお話
ミニバッチの誤差関数  =  各訓練サンプルの誤差関数の総和
E = En
n
∑
したがって、前スライドの誤差勾配に関する計算⼿手順を各訓練サンプル毎に
平⾏行行に計算し、得られる各勾配を下記の式が⽰示す和として求める.
∂E
∂wji
(l)
=
∂En
∂wij
(l)
n
∑
第4章  誤差逆伝搬法
  4.1  勾配計算の難しさ
  4.2  2層ネットワークでの計算
  4.3  多層ネットワークへの⼀一般化
  4.4  勾配降降下法の完全アルゴリズム
  4.5  勾配消失問題
次回(後編)
終わり

Contenu connexe

Plus de Masayoshi Kondo

Plus de Masayoshi Kondo (7)

Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
Graph-to-Sequence Learning using Gated Graph Neural Networks. [ACL'18] 論文紹介
 
GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介GeneratingWikipedia_ICLR18_論文紹介
GeneratingWikipedia_ICLR18_論文紹介
 
Deep Learning
Deep LearningDeep Learning
Deep Learning
 
Semantic_Matching_AAAI16_論文紹介
Semantic_Matching_AAAI16_論文紹介Semantic_Matching_AAAI16_論文紹介
Semantic_Matching_AAAI16_論文紹介
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
Get To The Point: Summarization with Pointer-Generator Networks_acl17_論文紹介
Get To The Point: Summarization with Pointer-Generator Networks_acl17_論文紹介Get To The Point: Summarization with Pointer-Generator Networks_acl17_論文紹介
Get To The Point: Summarization with Pointer-Generator Networks_acl17_論文紹介
 
Linguistic Knowledge as Memory for Recurrent Neural Networks_論文紹介
Linguistic Knowledge as Memory for Recurrent Neural Networks_論文紹介Linguistic Knowledge as Memory for Recurrent Neural Networks_論文紹介
Linguistic Knowledge as Memory for Recurrent Neural Networks_論文紹介
 

深層学習(岡本孝之 著)Deep learning chap.4_1