Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DeepLearningTutorial

10,139 views

Published on

Deep Learning, Neural Network, CNN, RNN, auto encoder and GAN

Published in: Science
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

DeepLearningTutorial

  1. 1. ディープラーニング基礎講座 山下 隆義
  2. 2. 目次 ディープラーニングについて ニューラルネットワーク 畳み込みニューラルネットワーク リカレントニューラルネットワーク 生成モデル(オートエンコーダ) ディープラーニングのツール 2
  3. 3. ディープラーニングの現在(1) 画像認識のベンチマークでトップ Convolution Pooling Softmax Other GoogLeNet(2014) ImageNet Large Scale Visual Recognition Challenge (ILSVRC) Team year Error (top-5) SuperVision 2012 15.3% Clarifai 2013 11.2% VGG – Oxford (16 layers) 2014 7.32% GoogLeNet (19 layers) 2014 6.67% Residual Net. 2015 3.57% human expert 5.1% Residual Net(2015) 3
  4. 4. ディープラーニングの現在(2) 2015年:更に深く,更に精度が向上 http://research.microsoft.com/en-us/um/people/kahe/ilsvrc15/ilsvrc2015_deep_residual_learning_kaiminghe.pdf 4
  5. 5. ディープラーニングの現在(3) 画像から文章を生成 http://googleresearch.blogspot.jp/2014/11/a-picture-is-worth-thousand-coherent.html 5
  6. 6. 文章から画像へ http://arxiv.org/pdf/1511.02793v2.pdf 6
  7. 7. ディープラーニングの現在(4) Deep Q- Network V. Mnih et al., "Playing atari with deep reinforcement learning”,2014 7
  8. 8. ディープラーニングの現在(5) 高速な一般物体検出 You Only Look Once: Unified, Real-Time Object Detection, 2016 8
  9. 9. ディープラーニングの現在(6) Convolutional Pose Machine, 2016 高速な姿勢推定 9
  10. 10. ディープラーニングの現在(7) Fukui, 2016 10
  11. 11. ディープラーニングの現在(8) V. Badrinarayanan, et.al, , SegNet: A Deep Convolutional Encoder-Decoder Architecture for Robust Semantic Pixel-Wise Labelling, 2015 11
  12. 12. ディープラーニングの現在(9) 加藤,Heterogeneous Learningと重み付き誤差関数の導入による顔画像解析, 2015 12
  13. 13. ロボットのばら積みピッキング 13
  14. 14. ロボットとディープラーニング 14
  15. 15. ロボット動作の分散学習 15
  16. 16. 眼症の早期発見 「緑内障」「糖尿病網膜症」「加齢黄斑変性」の早期 発見(オプティム・佐賀大学) Google Deep Mindも眼症の早期発見に取り組んでいる http://www.optim.co.jp/news-detail/21059 16
  17. 17. がんの早期発見 ディープラーニングを活用したがんの早期予測 科学技術振興機構の戦略的創造研究推進事業(CREST)に採択された統合的ながん医療システムの開発プロジェクト https://www.preferred-networks.jp/ja/news/ncc_crest 17
  18. 18. 注目のきっかけ(1) 音声認識・画像認識のベンチマークでトップ 音声認識(2011) F. Seide, G. Li and D. Yu, “Conversational Speech Transcription Using Context-Dependent Deep Neural Networks.”, INTERSPEECH2011. 多層(7つ)結合.事前学習あり 一般物体認識(2012) A. Krizhevsky, I. Sutskever and G. E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." NIPS. Vol. 1. No. 2. 2012. 多層のCNNで従来性能を大きく上回る 18
  19. 19. 注目のきっかけ(2) “Googleのネコ細胞”(2012) http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archi ve/unsupervised_icml2012.pdf YouTubeの映像を学習データとして与えると, 人の顔に反応するニューロン ネコの顔に反応するニューロン などを自動的に獲得 1000万枚の学習データ 1000台のPCで3日間学習 19
  20. 20. Deep Learning界隈の動向 Deep Learningの 手法がトップ Facebook AI Research設立 LeCunが所長 Googleが DeepMindを買収 (5億ドル) PFIがPFN設立 トヨタ・ファナック・パ ナソニックが出資 Toyotaが米国に研究 所を設立 10億ドル/5年 人の認識精度を上回る AlphaGoが囲碁世界 チャンピオンに勝利 2012年 2016年 Baiduが1つのネットワーク で2つの言語を認識 ロボットの動作を学習 2014年 様々な問題へ応用が進む 20
  21. 21. 何がDeep Learning?? Deep Learningに関連するキーワード Restricted Boltzmann Machines Deep Belief Networks Deep Boltzmann Machines Convolutional Neural Networks Deep Neural Networks Back- propagation Contrastive Divergence Dropout Maxout Maxpooling Dropconnect 21
  22. 22. 何がDeep Learning?? Restricted Boltzmann Machines Deep Belief Networks Deep Boltzmann Machines Convolutional Neural Networks Deep Neural Networks Back- propagation Contrastive Divergence Dropout Maxout Maxpooling Dropconnect ネットワークの構成 ネットワークの学習方法 汎化性向上の方法 22
  23. 23. 何がDeep Learning?? Restricted Boltzmann Machines Deep Belief Networks Deep Boltzmann Machines Convolutional Neural Networks Deep Neural Networks Perceptron 人工知能モデル 確率モデル 多層化 畳込み層を導入 多層化 多層化 Deep Learning Dropout Maxout Max pooling Dropconnect 23
  24. 24. PerceptronとRBM Perceptron Restricted Boltzmann Machine(RBM) xi x1 p(xi =1|Y) =σ ( wij yj + ai j=1 m ∑ ) p(yj =1| X) =σ ( wij xi + bj i=1 n ∑ ) yi =σ ( wij xj + bj j=1 m ∑ ) 24
  25. 25. DNNとDBN Deep Neural Networks(DNNs) Deep Belief Networks(DBN) 教師あり学習(Back propagation) すべてのパラメータを同時に学習 教師なし学習(Contrastive Divergence) 階層ごとにパラメータを学習 + 教師あり学習(Back propagation) すべてのパラメータを同時に学習パラメータ更新 パラメータ更新 パラメータ学習 入力層入力層 隠れ層 隠れ層 出力層 入力層 出力層 入力層 出力層 出力層 25
  26. 26. 目次 ディープラーニングについて ニューラルネットワーク 畳み込みニューラルネットワーク リカレントニューラルネットワーク 生成モデル(オートエンコーダ) ディープラーニングのツール 26
  27. 27. ニューラルネットワークの歴史(1) 1960 1980 2000 201019901970 マカロックとピッツが形式ニューロンを発表 (1943) ローゼンブラットがパーセプトロンを発表 (1953) ミンスキーとパパートが単純パーセプトロンは 線形分離不可能なパターンを識別できない事 を示す(1969) 27
  28. 28. ニューラルネットワークの歴史(2) 1960 1980 2000 201019901970 ホップフィールトがホップフィールドモデルを提案 (1986) ラメルハートらが誤差逆伝播法を提案 (1986) 福島らがネオコグニトロンを提案 (1980) ルカンらが畳み込みニューラルネットワークを 提案(1998) 28
  29. 29. ニューラルネットワークの歴史(3) 1960 1980 2000 201019901970 様々なベンチマークで圧勝 (2011) Hinton, BengioらがDeep Neural Networkに Pre TrainingとAuto Encoderを導入した手法を 提案(2006) 29
  30. 30. 第1期のニューラルネットワーク(1) マカロック−ピッツの素子モデル 最初のニューロンモデル 複数の入力に対して1つの出力を行う素子と見なす 入力:0か1のみ 出力:0か1のみ wiは結合荷重 hはしきい値 y = f( nX i=1 wixi h) u y h x1 x2 xn y w1 w2 wn 30
  31. 31. 第1期のニューラルネットワーク(2) マカロック−ピッツの素子モデル パラメータはどうやって決める? ⇒ 人があらかじめ決める 当時はまだ抵抗などの素子で構成 自動的にパラメータを決めるには? ⇒ データから学習して決定する 31
  32. 32. 第1期のニューラルネットワーク(3) パーセプトロン x1とx2のパターンとその教師信号を与えて, w1とw2およびhの値を学習する 教師あり学習 基本的な考え方 −出力yと教師信号が一致 ⇒w1,w2,hの値は変えない −出力yと教師信号が一致しない ⇒w1,w2,hの値を調整する 誤り訂正学習 x1 x2 y w1 w2 y = f( nX i=1 wixi h) 32
  33. 33. 第1期のニューラルネットワーク(4) パーセプトロン パラメータの調整方法 2つのケースに分けて考える 1)出力y=0,教師信号1の場合(活性化しなかった) −hを小さくする − xi=1である結合荷重wiは大きくする − xi=0である結合荷重wiは変えない 2)出力y=1,教師信号0の場合(活性化しすぎた) − hを大きくする − xi=1である結合荷重wiは小さくする − xi=0である結合荷重wiは変えない x1 x2 y w1 w2 y = f( nX i=1 wixi h) 33
  34. 34. 第1期のニューラルネットワーク(5) パーセプトロン パラメータの調整方法 更新量はあらかじめ決めておく(=α) rは教師信号 x1 x2 y w1 w2 y = f( nX i=1 wixi h) h h ↵(r y) wi wi + ↵(r y)xi f(u) 0 u y uはΣwixi-h uが0より大きい場合:y =1 それ以外の場合:y=0 1 34
  35. 35. パーセプトロンのトイプロブレム(1) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 初期値をそれぞれ w1=1,w2=-1,h=0,α=0.5とする (初期値は適当に決めている) 学習データを1つずつ与えていき,パラメータを調整する 式 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 35
  36. 36. パーセプトロンのトイプロブレム(2) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 初期値をそれぞれ w1=1,w2=-1,h=0,α=0.5とすると 式 入力x1 入力x2 出力y 0 0 1 × 活性化しすぎている学習データから パラメータを調整 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) Σwixi-h は0より多いのでy=1 36
  37. 37. パーセプトロンのトイプロブレム(3) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 初期値をそれぞれ w1=1,w2=-1,h=0,α=0.5とすると 式 入力x1 入力x2 出力y 0 0 1 × 更新式より w1 = 1 ⇒ 1 w2 = -1 ⇒ -1 h = 0 ⇒ 0.5 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 37
  38. 38. パーセプトロンのトイプロブレム(4) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=1,w2=-1,h=0.5,α=0.5より 式 入力x1 入力x2 出力y 1 0 1 × 活性化しすぎている学習データから 再度パラメータを調整 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 38
  39. 39. パーセプトロンのトイプロブレム(5) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=1,w2=-1,h=0.5,α=0.5より 式 入力x1 入力x2 出力y 1 0 1 × 更新式より w1 = 1 ⇒ 0.5 w2 = -1 ⇒ -1 h = 0.5 ⇒ 1 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 39
  40. 40. パーセプトロンのトイプロブレム(6) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=-1,h=1,α=0.5より 式 入力x1 入力x2 出力y 0 1 0 ○ 正解なのでパラメータの調整なし h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 40
  41. 41. パーセプトロンのトイプロブレム(7) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=-1,h=1,α=0.5より 式 入力x1 入力x2 出力y 1 1 0 × 活性化していないので学習データから 再度パラメータを調整 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 41
  42. 42. パーセプトロンのトイプロブレム(8) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=-1,h=1,α=0.5より 式 入力x1 入力x2 出力y 1 1 0 × 更新式より w1 = 0.5 ⇒ 1 w2 = -1 ⇒ -0.5 h = 1 ⇒ 0.5 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 42
  43. 43. パーセプトロンのトイプロブレム(9) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=1,w2=-0.5,h=0.5,α=0.5より 式 入力x1 入力x2 出力y 0 0 0 ○ 再度最初の学習データを用いて調整する h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 正解なのでパラメータの調整なし 43
  44. 44. パーセプトロンのトイプロブレム(10) パーセプトロン 学習データ パラメータ w1=1,w2=-0.5,h=0.5,α=0.5より 式 × 2サイクル目 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 入力x1 入力x2 出力y 1 0 1 更新式より w1 = 1 ⇒ 0.5 w2 = -0.5 ⇒ -0.5 h = 0.5 ⇒ 1 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 44
  45. 45. パーセプトロンのトイプロブレム(11) パーセプトロン 学習データ 入力x1 入力x2 正解r 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=-0.5,h=1,α=0.5より 式 入力x1 入力x2 出力y 0 1 0 ○ 正解なのでパラメータの調整なし 2サイクル目 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 45
  46. 46. パーセプトロンのトイプロブレム(12) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=-0.5,h=1,α=0.5より 式 入力x1 入力x2 出力 1 1 0 × 更新式より w1 = 0.5 ⇒ 1 w2 = -0.5 ⇒ 0 h = 1 ⇒ 0.5 2サイクル目 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 46
  47. 47. パーセプトロンのトイプロブレム(13) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=1,w2=0,h=0.5,α=0.5より 式 入力x1 入力x2 出力 0 0 0 ○ 再度最初の学習データを用いる(3サイクル目) h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 正解なのでパラメータの調整なし 47
  48. 48. パーセプトロンのトイプロブレム(14) パーセプトロン 学習データ パラメータ w1=1,w2=0,h=0.5,α=0.5より 式 × 3サイクル目 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 入力x1 入力x2 出力 1 0 1 更新式より w1 = 1 ⇒ 0.5 w2 = 0 ⇒ 0 h = 0.5 ⇒ 1 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 48
  49. 49. パーセプトロンのトイプロブレム(15) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=0,h=1,α=0.5より 式 入力x1 入力x2 出力 0 1 0 ○ 3サイクル目 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 正解なのでパラメータの調整なし 49
  50. 50. パーセプトロンのトイプロブレム(16) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 更新されたパラメータ w1=0.5,w2=0,h=1,α=0.5より 式 入力x1 入力x2 出力 1 1 0 × 更新式より w1 = 0.5 ⇒ 1 w2 = 0 ⇒ 0.5 h = 1 ⇒ 0.5 3サイクル目 h h ↵(r y) wi wi + ↵(r y)xi y = f( nX i=1 wixi h) 50
  51. 51. パーセプトロンのトイプロブレム(17) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 パラメータ w1=1,w2=0.5,h=0.5 入力x1 入力x2 出力 0 0 0 ○ 4サイクル目 パラメータ w1=1,w2=0.5,h=0.5 入力x1 入力x2 出力 1 0 1 × パラメータ w1=0.5,w2=0.5,h=0.5 入力x1 入力x2 出力 0 1 0 ○ パラメータ w1=0.5,w2=0.5,h=0.5 入力x1 入力x2 出力 1 1 1 ○ 51
  52. 52. パーセプトロンのトイプロブレム(18) パーセプトロン 学習データ 入力x1 入力x2 正解 0 0 0 1 0 0 0 1 0 1 1 1 入力x1 入力x2 出力 0 0 0 ○ 5サイクル目 入力x1 入力x2 出力 1 0 0 ○ パラメータ w1=0.5,w2=0.5,h=1 入力x1 入力x2 出力 0 1 0 ○ パラメータ w1=0.5,w2=0.5,h=1 入力x1 入力x2 出力 1 1 1 ○ パラメータ w1=0.5,w2=0.5,h=1 パラメータ w1=0.5,w2=0.5,h=1 52
  53. 53. パーセプトロンの限界(1) 線形分離可能な場合 トイプロブレムの例を図で表すと 1つの正例 (x1=1,x2=1の場合)と それ以外のパターンを分ける問題 x1 x2 線形分離可能な問題であれば1つのパーセプトロンだけで解くことができる 53
  54. 54. パーセプトロンの限界(2) 線形分離不可能な場合 2つの正例と2つの負例を分けるパラメータは得ることができない 線形分離不可能な問題は解くことができない x1 x2 解決策として・・・ 複数のパーセプトロンを利用 (1つ1つが線形分離可能な問題を解く) 54
  55. 55. 複数パーセプトロンの構成 階層的な構造により構成 x1 x2 各パーセプトロンが1つの線形分離可能な問題を解く その結果を統合して最終的な結果を得る ⇒ どうやってパラメータを決定するか? 入力 出力 中間値 ニューラルネットワーク 55
  56. 56. 初期のニューラルネットワーク(1) パラメータの決定方法 入力ー中間層のパラメータは固定 中間層ー出力層のパラメータのみ調整する x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq 56
  57. 57. 初期のニューラルネットワーク(2) パラメータの決定方法 中間層ー出力層の各パーセプトロンは, 結合荷重:w2ki (中間層のi番目から出力層のk番目) しきい値:h2k (出力層のk番目) 更新式は, h2k h2k ↵(rk yk)x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq w2ki w2ki ↵(rk yk)zi 57
  58. 58. 初期のニューラルネットワーク(3) 線形分離可能か? 出力y1は活性化し,それ以外の出力yは活性化しないような 入力Zを得ることが必要 入力xは中間値zに変換される 入力Xi≠Xjが中間値Zi=Zjとなることもある −十分なパーセプトロンが中間層に必要 −入力層−中間層の変換も学習により決める必要あり x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq 58
  59. 59. 初期のニューラルネットワーク(4) 線形分離可能か? 出力y1は活性化し,それ以外の出力yは活性化しないような 入力Zを得ることが必要 入力xは中間値zに変換される 入力Xi≠Xjが中間値Zi=Zjとなることもある −十分なパーセプトロンが中間層に必要 −入力層−中間層の変換も学習により決める必要あり 線形分離不可能な場合の構成に行き詰まり,下火に・・・ x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq 59
  60. 60. 第2期のニューラルネットワーク(1) どのようにパラメータを学習するか? 出力yと教師信号との誤差を伝搬できればパラメータの更新が可能 誤差逆伝播法 (バックプロパゲーション) x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq 60
  61. 61. 第2期のニューラルネットワーク(2) 誤差を伝播させるためには? 出力yと教師信号との誤差を微分可能にする必要あり マカロック・ピッツモデル ステップ関数⇒微分不可能 シグモイド関数⇒微分可能 x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq 61
  62. 62. 誤差逆伝播法(1) シグモイド関数によるパーセプトロン シグモイド関数 パーセプトロンのもつ値 誤差の算出 f(u) = 1 1 + e u x1 x2 xn y w1 w2 wn u = nX i=1 wixi E = 1 2 (r y)2 62
  63. 63. 誤差逆伝播法(2) 勾配を求める 誤差をwiで微分する 誤差をwiで微分する x1 x2 xn y w1 w2 wn @E @wi @E @wi = @E @y @y @wi @E @wi = (r y) @y @wi = (r y) @f(u) @wi @E @wi = (r y) df(u) du @u @wi 63
  64. 64. 誤差逆伝播法(3) 勾配を求める パーセプトロンの式を微分すると 上を下記式に代入すると 後はf(u)の微分のみ x1 x2 xn y w1 w2 wn @u @wi = xi u = nX i=1 wixi @E @wi = (r y) df(u) du @u @wi @E @wi = (r y)xi df(u) du 64
  65. 65. 誤差逆伝播法(4) シグモイド関数の微分 シグモイド関数 微分すると f(u) = 1 1 + e u シグモイド関数の微分はシグモイド関数自身で表すことが出来る df(u) du = f(u)(1 f(u)) x1 x2 xn y w1 w2 wn 65
  66. 66. 誤差逆伝播法(5) 誤差の計算 誤差の微分 シグモイド関数の微分 df(u) du = f(u)(1 f(u)) 代入すると y = f(u) として, x1 x2 xn y w1 w2 wn @E @wi = (r y)xi df(u) du @E @wi = (r y)xif(u)(1 f(u)) @E @wi = (r y)y(1 y)xi 66
  67. 67. 誤差逆伝播法(6) 誤差の計算 誤差の微分からwiの変化量を求める wiの変化分をΔwiとして 1つのパーセプトロンの結合荷重の更新量は x1 x2 xn y w1 w2 wn wi = ⌘ @E @wi @E @wi = (r y)y(1 y)xi wi = ⌘(r y)y(1 y)xi 67
  68. 68. 誤差逆伝播法(7) 複数のパーセプトロンへの対応 誤差の算出 E = qX j=1 (rj yj)2 Eの微分は x1 x2 xn n1 n2 nq Z1 Z2 Zp y1 y2 yq @E @wji = @E @yj @yj @wji @E @wji = (rj yj) @yj @wji = (rj yj) @yj @uj @uj @wji 68
  69. 69. 誤差逆伝播法(8) 複数のパーセプトロンへの対応 Eの微分の式について 下記の式を元に @yj @uj = yj(1 yj) @uj @wji = xi @E @wji = (rj yj) @yj @uj @uj @wji @E @wji = (rj yj)yj(1 yj)xi x1 x2 xn n1 n2 nq Z1 Z2 Zp y1 y2 yq 69
  70. 70. 誤差逆伝播法(9) 複数のパーセプトロンへの対応 wiの更新量は wji = ⌘ @E @wji @E @wji = (rj yj)yj(1 yj)xi wji = ⌘(rj yj)yj(1 yj)xi x1 x2 xn n1 n2 nq Z1 Z2 Zp y1 y2 yq 70
  71. 71. 誤差逆伝播法(10) 中間層をもつネットワークへの対応(1つの出力) 中間層−出力層間の結合荷重w2iの更新量は @E @w2j1 = @E @y @y @u21 @u21 @w2j1 x1 x2 xn n1 1 n1 2 n1 p n2 1 Z1 Z2 Zp y1 @E @w2j1 = (r y)y(1 y)zj w2j1 = ⌘(r y)y(1 y)zj 71
  72. 72. 誤差逆伝播法(11) 中間層をもつネットワークへの対応(1つの出力) 入力層−中間層間の結合荷重w1iの更新量は 結合荷重w1ijは中間層nijのzjにのみ影響を与える @E @w1ij = @E @y @y @u21 @u21 @w1ij @u21 @w1ij = @u21 @zj @zj @w1ij x1 x2 xn n1 1 n1 2 n1 p n2 1 Z1 Z2 Zp y1 @E @w1ij = (r y)y(1 y) @u21 @w1ij 72
  73. 73. 誤差逆伝播法(12) 中間層をもつネットワークへの対応(1つの出力) 中間層nijのzjに対する結合荷重w1ijによる微分は 入力層ー中間層間の微分 @zj @u1j = zj(1 zj) 結合荷重 @u21 @w1ij = @u21 @zj @zj @w1ij w2j1 @zj @w1ij = @zj @u1j @u1j @w1ij @zj @w1ij = zj(1 zj)xi x1 x2 xn n1 1 n1 2 n1 p n2 1 Z1 Z2 Zp y1 @u1j @w1ij = xi 73
  74. 74. 誤差逆伝播法(13) 中間層をもつネットワークへの対応(1つの出力) 入力層ー中間層間の微分 更新量は @u21 @w1ij = @u21 @zj @zj @w1ij x1 x2 xn n1 1 n1 2 n1 p n2 1 Z1 Z2 Zp y1 = w2j1zj(1 zj)xi @E @w1ij = (r y)y(1 y) @u21 @w1ij = (r y)y(1 y)w2j1zj(1 zj)xi w1ij = ⌘(r y)y(1 y)w2j1zj(1 zj)xi 74
  75. 75. 誤差逆伝播法(14) 中間層をもつネットワークへの対応(1つの出力) 伝搬される更新量は 中間層−出力層間 入力層−中間層層間 この項は共通 出力層での計算結果の一部を伝播している x1 x2 xn n1 1 n1 2 n1 p n2 1 Z1 Z2 Zp y1 w2j1 = ⌘(r y)y(1 y)zj w1ij = ⌘(r y)y(1 y)w2j1zj(1 zj)xi 75
  76. 76. 誤差逆伝播法(15) 中間層をもつネットワークへの対応(複数の出力) 誤差Eは E = qX k=1 (rk yk)2 入力層:n個 xi 中間層:p個 n1j 出力層:q個 n2k 結合荷重w2jkの更新量は yk(1 yk) zj @E @w2jk = @E @yk @yk @u2k @u2k @w2jk x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq (rk yk) @E @w2jk = (rk yk)yk(1 yk)zj w2jk = ⌘(rk yk)yk(1 yk)zj 76
  77. 77. 誤差逆伝播法(16) 中間層をもつネットワークへの対応(複数の出力) 入力層-中間層間の結合荷重w1ijの更新量は 入力層:n個 xi 中間層:p個 n1j 出力層:q個 n2k 結合荷重w1ijは中間層nijのzjにのみ影響を与える 結合荷重 = zj(1 zj)xi @E @w1ij = qX k=1 [ @E @yk @yk @u2k @u2k @w1ij ] @u2k @w1ij = @u2k @zj @zj @w1ij w2jk @zj @w1ij = @zj @u1j @u1j @w1ij x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq = qX k=1 [(rk yk)yk(1 yk) @u2k @w1ij ] 77
  78. 78. 誤差逆伝播法(17) 中間層をもつネットワークへの対応(複数の出力) 入力層-中間層間の結合荷重w1ijの更新量は 入力層:n個 xi 中間層:p個 n1j 出力層:q個 n2k @E @w1ij = qX k=1 [ @E @yk @yk @u2k @u2k @w1ij ] x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq = qX k=1 [(rk yk)yk(1 yk) @u2k @w1ij ] @E @w1ij = qX k=1 [(rk yk)yk(1 yk)w2jk]zj(1 zj)xi w1ij = ⌘ qX k=1 [(rk yk)yk(1 yk)w2jk]zj(1 zj)xi 78
  79. 79. 誤差逆伝播法(18) 中間層をもつネットワークへの対応(複数の出力) 更新式の関係 入力層:n個 xi 中間層:p個 n1j 出力層:q個 n2k とすると = 1jxi w2jk = 2kzj w1ij = qX k=1 [ 2kw2jk]zj(1 zj)xi x1 x2 xn n11 n12 n1p n21 n22 n2q Z1 Z2 Zp y1 y2 yq w2jk = ⌘(rk yk)yk(1 yk)zj w1ij = ⌘ qX k=1 [(rk yk)yk(1 yk)w2jk]zj(1 zj)xi 2k = ⌘(rk yk)yk(1 yk) 79
  80. 80. 誤差逆伝播法(19) 更新式について シグモイド関数による更新量 ステップ関数による更新量 wi = ↵(r y)xi wi = ⌘(r y)y(1 y)xi 80
  81. 81. 誤差逆伝播法(20) 更新式について シグモイド関数による更新量 の項によりy(1 y) yが0に近いと,Δwiが0に近づく yが1に近くても,Δwiが0に近づく uが0よりもかなり小さい場合 uが0よりもかなり大きい場合 Δwiが0に近くなる 勾配(=更新量)がサチる wi = ⌘(r y)y(1 y)xi 81
  82. 82. @E @w1ij = (r y)y(1 y)w2j1zj(1 zj)xi @E @w2j1 = (r y)y(1 y)zj 誤差逆伝播法 ーまとめー x1 x2 xn y1 入力層 中間層 出力層 z1 z2 zm w1ij w2j1 @E @w2j1 = @E @y @y @u21 @u21 @w2j1 誤差関数の微分 シグモイド関数の微分 中間層の値 @E @w1ij = @E @y @y @u21 @u21 @w1ij @u21 @w1ij = @u21 @zj @zj @w1ij @zj @w1ij = @zj @u1j @u1j @w1ij 誤差関数の微分 シグモイド関数の微分 重み付き和 中間ー出力層間 シグモイド関数の微分 入力値 入力ー中間層間 82
  83. 83. @E @w2j1 = (rk yk)y(1 yk)zj 誤差逆伝播法 ーまとめー x1 x2 xn y1 入力層 中間層 出力層 z1 z2 zm w1ij w2jk 誤差関数の微分 シグモイド関数の微分 中間層の値 誤差関数の微分 シグモイド関数の微分 重み 中間ー出力層間 シグモイド関数の微分 入力値 入力ー中間層間 @E @w1ij = qX k=1 [ @E @yk @yk @u2k @u2k @w1ij ] @E @w2jk = @E @yk @yk @u2k @u2k @w2jk @zj @w1ij = @zj @u1j @u1j @w1ij @u2k @w1ij = @u2k @zj @zj @w1ij yk = 2 qX k=1 [(rk yk)yk(1 yk) @u2k @w1ij ] @E @w1ij = 2 qX k=1 [(rk yk)yk(1 yk)w2jk]zj(1 zj)xi 83
  84. 84. 誤差関数(1) E = qX k=1 (rk yk)2 E = NX n=1 {rn ln yn + (1 rn) ln(1 yn)} E = NX n=1 CX c=1 rcn ln ycn 2クラス問題の場合 多クラス問題の場合 二乗誤差 クロスエントロピー誤差 84
  85. 85. 誤差の更新方法(1) すべての学習サンプルを一度に用いて誤差を求める E = NX n=1 qX k=1 (rnk ynk)2 誤差から重みを更新する wi(t) wi(t+1) E(t) @E(t) @wi 学習サンプルが増えると計算量が 増加する wi(t + 1) = wi(t) ⌘ @E(t) @wi 最急降下法 85
  86. 86. 誤差の更新方法(2) 1つの学習サンプルを一度に用いて誤差を求める 誤差から重みを更新する wi(t) wi(t+1) E(t) @E(t) @wi E = qX k=1 (rk yk)2 学習サンプル数が大量に増えても 計算量は変化しない 1つのサンプルの誤差で大きく更新される wi(t + 1) = wi(t) ⌘ @E(t) @wi 確率的勾配降下法(オンライン) 86
  87. 87. 誤差の更新方法(3) 少量の学習サンプルを一度に用いて誤差を求める 誤差から重みを更新する wi(t) wi(t+1) E(t) @E(t) @wi 最急降下法と確率的勾配降下法(オンライ ン)のデメリットを補う −計算量は変化しない −誤差を総和するため大きく変化しにくい E = NX n=1 qX k=1 (rnk ynk)2 wi(t + 1) = wi(t) ⌘ @E(t) @wi 確率的勾配降下法(ミニバッチ) 87
  88. 88. 最適化方法 最適化とは? 予測結果と正解との誤差からパラメータを更新すること 更新の仕方により,最適な解が変わる 確率的勾配降下法(SGD) Adagrad Adadelta RMSProp Adam Eve など 88
  89. 89. 確率的勾配降下法 勾配降下法 すべてのサンプルを利用して誤差を求めて更新する 確率的勾配降下法 1つのサンプルの誤差を求めて更新する ミニバッチ勾配降下法 n個のサンプルを利用して誤差を求めて更新する 89
  90. 90. 確率的勾配降下法の問題点 勾配の変化 勾配が大きくブレると収束しにくい => 慣性項をいれよう! 学習率の設定 1回の更新でパラメータをどの程度更新したらよいか? 学習過程で学習率をどの程度変えるとよいか? =>学習率を自動で決めるようにしよう! 90
  91. 91. 慣性項(モーメンタム) ブレを低減するために,過去の更新量を考慮する wt+1 wt ⌘ @E(wt ) @wt + ↵ wt α:慣性項のパラメータ 前回の更新量をα倍して加算 パラメータの更新をより慣性的なものにする η:今回の更新量の学習率 ハイパーパラメータが 2つになり,設定が難しくなる 91
  92. 92. Adagrad 学習係数を自動で調整する h0 = ✏ ⌘t = ⌘0 p ht wt+1 wt ⌘t @E(wt ) @wt ht = ht 1 + @E(wt ) @wt 2 ε:初期値(小さい値,10-8など) ht:過去の更新量の2乗を累積 η0:学習率の初期値(0.001など) ηt:学習率 過去の勾配情報を考慮して学習率を決める 学習率ηtは徐々に小さくなる J. Duchi, E. Hazan, Y.Singer, Adaptive Subgradient Methods for Online Learning and Stochastic Optimization, JMLR, Vol.12, pp.2121−2159, 2011. 92
  93. 93. RMSProp Adagradを改良した手法 h0 = ✏ wt+1 wt ⌘t @E(wt ) @wt ε:初期値(小さい値,10-8など) ht:過去の更新量の2乗を累積 η0:学習率の初期値(0.001など) ηt:学習率,徐々に小さくなる α:過去を考慮する値(0.99など) ht = ↵ht 1 + (1 ↵) @E(wt ) @wt 2 ⌘t = ⌘0 p ht + ✏ αにより過去の勾配の影響を抑える 今回のhtを優先して反映させる 直近の勾配情報を優先して学習率を決める A. Graves, Generating Sequences With Recurrent Neural Networks, arXiv:1308.0850, 2013 93
  94. 94. Adadelta 学習係数ηを用いない手法 st+1 = ⇢st + (1 ⇢)v2 t wt+1 = wt vt vt = p st + ✏ p ht + ✏ @E(wt ) @wt ht = ⇢ht 1 + (1 ⇢) @E(wt ) @wt 2 過去の更新量stと勾配htの比から更新率をきめる 初期値:h0=0,s0=0 ρ:減衰率(0.95など) ht:過去の更新量の2乗を累積 vt:学習率の初期値(0.001など) st:学習率,徐々に小さくなる ε:初期値(10-6など) M. Zeiler, "ADADELTA: an adaptive learning rate method." arXiv arXiv:1212.5701, 2012 94
  95. 95. Adam モーメンタムとAdagradの長所を組み合わせ m:1次モーメントに相当 v:2次モーメントに相当 β1:減衰率 β2:減衰率 ˆm = mt+1 1 t 1 ˆv = vt+1 1 t 2 wt+1 + wt ↵ ˆm p ˆv + ✏ vt+1 = 2vt + (1 2) @E(wt ) @wt 2 mt+1 = 1mt + (1 1) @E(wt ) @wt α=0.001,β1=0.9,β2=0.999,ϵ=10−8 95
  96. 96. 最適化の比較 http://sebastianruder.com/optimizing-gradient-descent/index.html 96
  97. 97. 目次 ディープラーニングについて ニューラルネットワーク 畳み込みニューラルネットワーク リカレントニューラルネットワーク 強化学習 生成モデル(オートエンコーダ) ディープラーニングのツール 97
  98. 98. 畳み込みニューラルネットワーク 初期の研究(今も同じ) 畳み込み、サブサンプリング、全結合の層から構成 手書き文字認識に応用 Y. LeCun, et.al. “Gradient-based Learning Applied to Document Recognition”, Proc. of The IEEE, 1998. 98
  99. 99. 畳み込み層(1) カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野) Convolution Response f Input image Feature map10x10 kernel 3x3 8x8 Activation function Convolutions 99
  100. 100. 畳み込み層(1) カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野) Convolution Response f Input image Feature map10x10 kernel 3x3 8x8 Activation function Convolutions 100
  101. 101. 畳み込み層(1) カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野) Convolution Response f Input image Feature map10x10 kernel 3x3 8x8 Activation function Convolutions 101
  102. 102. 畳み込み層(2) 画像全体にフィルタを畳み込む -1 0 1 -2 0 2 -1 0 1 例えば ソーベルフィルタ Convolution Layerのフィルタは, 学習により獲得 102
  103. 103. 畳み込み層(3) カーネルをスライドさせて画像に畳み込む 近接の画素とのみ結合する(局所受容野) カーネルは複数でも良い Activation functionInput image Feature map10x10 8x8 Convolution Response kernel 3x3 f f f Convolutions 103
  104. 104. 畳み込み層(4) 入力が複数チャンネル(カラー画像など)の場合 * 各チャンネルにフィルタを畳み込む Red Green Blue 104
  105. 105. 活性化関数 シグモイド関数 Rectified Linear Unit(ReLU) Leaky ReLU 古くから使われている サチると勾配が消滅 画像認識でよく使われる 学習が速く、勾配がサチる ことがない f (xi ) = max(xj,0)f (xi ) = 1 1+e −xj Convolutions f(x) = max(↵x, x) (0 < ↵ < 1) f(xi) = max(↵xi, xi) ReLUを改良した活性化関 数 負の値を出力 105
  106. 106. プーリング層 Feature mapのサイズを縮小させる Max pooling 2x2の領域 での最大値 Average pooling 2x2の領域 での平均値 Sampling 89 56 65 18 24 9 121 77 43 22 32 18 181 56 42 35 45 19 210 166 101 67 79 56 121 65 32 210 101 79 89 56 65 18 24 9 121 77 43 22 32 18 181 56 42 35 45 19 210 166 101 67 79 56 86 37 21 153 61 50 106
  107. 107. hj = f( nX i=1 wijxi + bj) 全結合層 全結合型の構成 x1 x2 x3 xi h1 h2 hj 各ノードとの結合重み 例えば、 は を算出し、 activation functionに与えて値を得る Full connection w11 w12 w21 w1j w22w31 w32 w3 j wij wi2 wi1 107
  108. 108. 出力層 出力ノード数=認識するクラス数 Softmaxを利用するのが一般的 P(y1) P(y2) P(yM) 各クラスの確率を算出して、 最大値を認識クラスとする x1 x2 x3 xi h1 h2 hM 前層 出力層 classification 各クラスの確率 P(yi ) = exp(hi ) exp(hj ) j=1 M ∑ 108
  109. 109. どうやって学習するの? 学習できめること: 各種パラメータ 畳み込み層の各カーネルの要素の値 全結合層の各ユニットの結合重み Layer数が多ければ多いほど沢山のパラメータ 教師データをもとに識別エラーから各パラメータを更新 エラーが小さくなるように更新を繰り返し行い、収束を図る 確率的勾配降下法(Stochastic Gradient Descent) 109
  110. 110. 確率的勾配降下法 順伝播と逆伝播を繰り返してパラメータ群を更新 Input: 画像:x ラベル:y 学習セット: (x1,y1),…, (xn,yn) 順伝播 現パラメータ群により各学習データの認識を行う 逆伝播 認識結果(誤差)をもとに,パラメータ群を更新する Convolution Full connection Classification 110
  111. 111. 確率的勾配降下法 誤差を最小化するように各層のパラメータを更新 Input: 画像:xi ラベル:yi 学習セット: (x1,y1),…, (xn,yn) 全パラメータをWとする ロス関数:y’iとラベルyiの違いを算出 これを最小化する Convolution Full connection Classification y' = F(W, x) E = Loss(F(W, xi ), yi ) i n ∑ 逆誤差伝搬法で誤差の偏微分を計算 更新率γを掛けて、パラメータ群Wを更新 W ← W −γ ∂E ∂W 111
  112. 112. ミニバッチ 一度に大量の学習サンプルでロスを求めるのは大変 ⇒過学習もおきやすい 少しのサンプルだけでパラメータを更新⇒mini batch 確率的勾配降下法 (SGD) m1 m2 mk 各mを利用して逐次的にパラメータを更新 mkまで利用したら再度m1を利用 n枚 112
  113. 113. 畳み込み層の誤差逆伝播(1) 畳み込み層を全結合層のように書き直すと Input image 5x5 f Feature map 4x4kernel 2x2 Activation function n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 中間層は入力層の特定のユニットとのみ結合 カーネルは重みw1ijに相当する 113
  114. 114. 畳み込み層の誤差逆伝播(2) 畳み込み層を全結合層のように書き直すと Input image 5x5 f Feature map 4x4kernel 2x2 Activation function n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 中間層は入力層の特定のユニットとのみ結合 カーネルは重みw1ijに相当する 114
  115. 115. 畳み込み層の誤差逆伝播(3) カーネルの要素の更新 上位層の重みw2jkを更新する (全てのw2jkについて下記式で更新) n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 Zj Input image 5x5 f Feature map 4x4kernel 2x2 Activation function w2jk = ⌘(rk yk)yk(1 yk)zj 115
  116. 116. 畳み込み層の誤差逆伝播(4) カーネルの要素の更新 上位層の重みw2jkとx1から更新量を求める n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 Zj Input image 5x5 f Feature map 4x4kernel 2x2 Activation function w1 111 = ⌘ qX k=1 [(rk yk)yk(1 yk)w2jk]z1(1 z1)x1 116
  117. 117. 畳み込み層の誤差逆伝播(5) カーネルの要素の更新 ずらした位置での更新量も求める n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 Zj Input image 5x5 f Feature map 4x4kernel 2x2 Activation function w2 122 = ⌘ qX k=1 [(rk yk)yk(1 yk)w2jk]z2(1 z2)x2 117
  118. 118. 畳み込み層の誤差逆伝播(6) カーネルの要素の更新 全ての位置での更新量を累積して,最終的 な更新量を求める n21 n22 n23 n2p n31 n32 n33 n34 n35 n36 n37 n38 w2jk n11 n12 n13 n14 y1 w1ij p=16 n1r n15 n16 n17 n18 r=25 Zj Input image 5x5 f Feature map 4x4kernel 2x2 Activation function wn 1ij = ⌘ qX k=1 [(rk yk)yk(1 yk)w2jk]zj(1 zj)xi w1ij = ⌘ NX n=1 wn 1ij 118
  119. 119. プーリング層の誤差逆伝播(1) プーリング層を全結合層のように書き直すと n21 n22 n23 n24 n31 n32 w2jk n11 n12 n13 n14 y1 w1ij p=4 n1r n15 n16 n17 n18 r=16 2x2のmaxプーリングの場合,4つのユニットから結合 し,最大となる結合の重みが1,それ以外は0となる. Feature Map 4x4 subsampling 2x2 119
  120. 120. プーリング層の誤差逆伝播(2) プーリング層を全結合層のように書き直すと n21 n22 n23 n24 n31 n32 w2jk n11 n12 n13 n14 y1 w1ij p=4 n1r n15 n16 n17 n18 r=16 選ばれたユニットのみ誤差が伝播する Feature Map 4x4 subsampling 2x2 120
  121. 121. 汎化性を向上させるための方法 121
  122. 122. Dropout 全結合層の過学習を抑制する (学習方法のおさらい) 入力データのラベルとネットワークの 出力の誤差を元にパラメータを更新 Input layer Kernel K1 Kn 全結合層の一部のノードからの結合を取り除く (0にする) だいたい50% 各mini-batchで異なる結合をランダムに取り除く G. Hinton, N.Srivastava, A.Krizhevsky, I.Sutskever, and R.Salakhutdinov, “Improving neural networks by preventing co- adaptation of feature detectors.”, arXiv preprint arXiv:1207.0580, 2012. 122
  123. 123. 学習画像の生成 Data Augmentation 位置や大きさを変えて学習データ数を増やす Elastic Distortion 位置や大きさだけでなく,形状の変化も適用 P.Y. Simard, D. Steinkraus, and J.C. Platt, “Best practices for convolutional neural networks applied to visual document analysis.”, ICDAR2003. 123
  124. 124. 前処理の重要性 Global Contrast Normalization 各画像を平均0,分散1になるように正規化 入力データの明るさを正規化することで性能が向上 124
  125. 125. 前処理の重要性 Global Contrast Normalization 各画像を平均0,分散1になるように正規化 正規化なし 正規化あり 下図はpylearn2の結果 125
  126. 126. 前処理の重要性 ZCA whitening 隣接ピクセルの冗長性をなくすような Wを主成分分析により学習 X ' = WX http://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf 隣接ピクセルの冗長性をなくす 126
  127. 127. 前処理の重要性 ZCA whitening ZCA whitening only Global contrast normalization + ZCA whitening 127
  128. 128. Normalize Layer activation function で得られた値を正規化 Convolutional layer Normalize layer Pooling layer Convolutional layer Normalize layer Pooling layer pooling layer後にNormalize layerを配置することもある 128
  129. 129. Normalize Layer Local contrast normalization Convolutional layer Normalize layer 同一特徴マップにおける局所領域内で正規化する vj,k = xj,k − wp,q xj+p,k+q∑ wp,q =1∑ yj,k = vj,k max(C,σ jk ) σ jk = wpqvj+p,k+q 2 ∑ K. Jarrett, K. Kavukcuoglu, M. Ranzato and Y.LeCun ,“What is the Best Multi-Stage Architecture for Object Recognition?”, ICCV2009 129
  130. 130. Normalize Layer Local response normalization Convolutional layer Normalize layer 同一位置における異なる特徴マップ間で正規化する yi j,k = (1+α (yl j,k )2 )β l=i−N/2 i+N/2 ∑ G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever and R. R. Salakhutdinov ,“Improving neural networks by preventing co-adaptation of feature detectors ”, arxiv2012 130
  131. 131. Batch Normalization ミニバッチごとのデータ分布を統一する スケールγとシフト量βを学習で獲得 収束性が高くなる(速くなる) 各層の入力または出力に対して行い,各層での分布のばらつきを統一することもできる S.Ioffe, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”, 2015 µB = 1 m mX i=1 xi 2 B = 1 m mX i=1 (xi µB)2 ˆxi = xi µ p 2 B + ✏ yi = ˆxi + ミニバッチ内の平均と分散を算出 平均0,分散1になるように正規化 平均0,分散1になるように正規化 131
  132. 132. 画像認識におけるDeep Learningの活用 132
  133. 133. Deep Learningの応用先 検出 回帰 セグメンテーション 人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり シーンラベリング 顔器官検出 人の姿勢推定 手領域抽出 髪領域抽出 顔ラベリング 認識 一般物体認識 (LSVRCトップ) 顔認識(照合) (LFWトップ) 人物属性推定 一般物体検出 (Pascal VOCトップ) 文字認識 133
  134. 134. ディープラーニング手法の変遷 物体認識ベンチマークを通じて,より深い構造へ 1998年 2012年 2014年 2015年 AlexNet LeNet GoogLeNet ResNet 134
  135. 135. 物体認識 ImageNet Large Scale Visual Recognition Challenge (ILSVRC) ImageNetのデータセットを利用して1000クラスの物体認識を行う http://image-net.org 135
  136. 136. ディープラーニングによる物体認識 AlexNet ILSVRC2012で優勝 8層(畳み込み5層,全結合3層)の構造 Team year Error (top-5) SuperVision(AlexNet) 2012 15.3% 1層目のフィルタ A. Krizhevsky, ImageNet Classification with Deep Convolutional Neural Networks, NIPS2012 136
  137. 137. ディープラーニングによる物体認識 VGG16 ILSVRC2014で2位 16層と深い構造 Team year Error (top-5) SuperVision 2012 15.3% Clarifai 2013 11.2% VGG – Oxford (16 layers) 2014 7.32% 3x3のフィルタを2層積層すると 5x5のフィルタと等価になる AlexNetとほぼ等価の構成 K. Simonyan, Very Deep Convolutional Networks for Large-Scale Image Recognition, ICLR2015 137
  138. 138. ディープラーニングによる物体認識 GoogLeNet Inception モジュールを9つ積層 途中の層の誤差を求め,下位層まで誤差を伝播 Convolution Pooling Softmax Other Inception module Team year Error (top-5) SuperVision 2012 15.3% Clarifai 2013 11.2% VGG – Oxford (16 layers) 2014 7.32% GoogLeNet (22layers) 2014 6.67% 3x3 convolutions 5x5 convolutions Filter concatenation Previouslayer 3x3max pooling 1x1 convolutions 1x1 convolutions 1x1 convolutions 1x1 convolutions C. Szegedy, Going Deeper with Convolutions, CVPR2015 138
  139. 139. ディープラーニングによる物体認識 Residual Network 特定層への入力をバイパスして上位層へ与える 逆伝播時に誤差を下位層に直接与えることができる Team year Error (top-5) SuperVision 2012 15.3% Clarifai 2013 11.2% VGG – Oxford (16 layers) 2014 7.32% GoogLeNet (22layers) 2014 6.67% Residual Net. 2015 3.57% human expert 5.1% K. He, Deep Residual Learning for Image Recognition, CVPR2016 139
  140. 140. ディープラーニングによる物体認識 http://research.microsoft.com/en-us/um/people/kahe/ilsvrc15/ilsvrc2015_deep_residual_learning_kaiminghe.pdf 140
  141. 141. Network in Network(1) 畳み込み層の活性化関数に小さなネットワークを導入 Input image Feature map Respon se kernel マイクロネットワーク Lin, Min, Qiang Chen, and Shuicheng Yan. "Network In Network.", ICLR2014 141
  142. 142. Network in Network(2) 簡単な実装:1x1の畳み込み処理として表現 CCCP層で畳み込むフィルタは全ての位置で同じなので,パラメータ数は増えない Lin, Min, Qiang Chen, and Shuicheng Yan. "Network In Network.", ICLR2014 142
  143. 143. Network in Network(3) 全結合層なしでネットワークを構成 ILSVRC2014での性能 TOP5のエラー率 10.91% for 1 model 9.79% for 3 models Lin, Min, Qiang Chen, and Shuicheng Yan. "Network In Network.", ICLR2014 143
  144. 144. Deep Learningの応用先 回帰 セグメンテーション シーンラベリング 顔器官検出 人の姿勢推定 手領域抽出 髪領域抽出 顔ラベリング 認識 一般物体認識 (LSVRCトップ) 顔認識(照合) (LFWトップ) 人物属性推定 文字認識 検出 人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり 一般物体検出 (Pascal VOCトップ) 144
  145. 145. CNNの課題 物体検出への応用の難しさ 与えられた領域の名称を認識することは得意 問題:どのように物体の領域(=位置)を与えるか? CNNだけでは物体らしい領域を抽出ことは困難 物体検出とは? 画像中の物体の名称と位置 を特定する http://image-net.org/challenges/LSVRC/2014/slides/ILSVRC2014_09_12_14_det.pdf 145
  146. 146. 一般物体検出 • Selective Searchにより物体候補を検出 • CNNで抽出した特徴量をSVMでクラス識別 4つのステップから構成 1)局所領域の切り出し 2)領域の変形 3)CNNによる特徴抽出 4)SVMによる識別 物体検出への応用の難しさ R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 146
  147. 147. R-CNN ステップ1:局所領域の切り出し Selective Searchによる候補領域の抽出 候補数は2000 R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 147
  148. 148. R-CNN ステップ2:領域の変形 全ての候補領域を一定の大きさに正規化 アスペクト比は無視 CNNの入力データサイズに合わせる R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 148
  149. 149. R-CNN ステップ3:CNNによる特徴量抽出 AlexNetの途中結果を特徴量ベクトルとして利用 最終層の手前の全結合層の値:4096次元 ネットワークは検出対象データセットの学習データを利用してチューニング 1)用意するもの:Image netで学習されたAlexNet 2)チューニング用データ:Pascal VOCの学習データセット これにより,検出対象に適したネットワークになる R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 149
  150. 150. R-CNN ステップ4: SVMによる識別 各検出対象のSVMで,物体かどうかを判定する Pascal VOCの場合:20種類の物体のSVMを用意 CNNで抽出した特徴量を用いて判定 SVMの学習 Pascal VOCの学習データセットについて,特徴量を抽出 線形SVMにより,各物体のSVMを学習 R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 150
  151. 151. R-CNN ステップ5: 物体位置の補正 各検出について,座標を回帰により修正する 領域抽出のズレを補正する R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 151
  152. 152. R-CNNの課題 特徴抽出 (CNN) 特徴抽出 (CNN) 特徴抽出 (CNN) 物体識別 (SVM) 物体識別 ( SVM) 物体識別 (SVM) 入力画像 領域切り出し 領域変形 背景 人 馬 領域ごとに実行 座標補正 (回帰) 座標補正 (回帰) 処理時間がかかる 1画像あたり:47秒 (VGGネットを使用時) 学習・検出プロセスが複雑 処理ごとに個別の学習とデータの準備が必要 R. Girshick, Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR2014 152
  153. 153. Fast R-CNN 特徴抽出 (CNN) 特徴座標 識別層・回帰層 (CNN) 入力画像 領域切り出し 領域変形 物体:背景 座標情報 (-1,-1,-1,-1) 物体:人 座標情報 (10,3,40,100) 物体:馬 座標情報 (5,100,80,20) 領域ごとに実行 識別層・回帰層 (CNN) 識別層・回帰層 (CNN) R. Girshick,, Fast RCNN, ICCV2015 特徴抽出処理をまとめて行うことで高速化 R-CNNと比べて10-100倍高速 学習・検出プロセスをシンプルに 領域切り出しの処理をCNNの構成で行う(SVMなし) 153
  154. 154. Fast R-CNNのネットワーク 1つのネットワークで識別と回帰を行う Selective Searchで得られた領域について, ステップ1)画像全体の特徴抽出(特徴マップ) ステップ2)特徴マップから物体の特徴を抽出 ステップ3)特徴をプーリング(ROI Pooling) ステップ4)識別層で物体名を識別・回帰 R. Girshick,, Fast RCNN, ICCV2015 154
  155. 155. Fast R-CNN ステップ1:画像全体の特徴抽出 VGGの最終畳み込み層までの特徴マップを生成 入力画像入力画像 R. Girshick,, Fast RCNN, ICCV2015 特徴マップ 155
  156. 156. 特徴マップ Fast R-CNN ステップ2:物体の特徴抽出 特徴マップから物体の位置の特徴を抽出 入力画像入力画像 領域切り出し R. Girshick,, Fast RCNN, ICCV2015 156
  157. 157. Fast R-CNN ステップ3:物体の特徴抽出 特徴をプーリング 物体領域のサイズを変形していないので, 特徴マップ上でのサイズはバラバラ サイズを揃えるプーリング =ROI プーリング 例)10x15を5x5にプーリングしたい場合, 横10/5=2,縦15/5=3で,2x3の範囲で max poolingを行う. (正規化後/元のサイズで比もとめる) 入力画像 特徴マップ 入力画像 領域切り出し ROI プーリング R. Girshick,, Fast RCNN, ICCV2015 157
  158. 158. Fast R-CNN ステップ4:識別層での識別・回帰 ROIプーリングした結果をVGGの全結合層へ与える 入力画像 特徴マップ 入力画像 領域切り出し ROI プーリング R. Girshick,, Fast RCNN, ICCV2015 158
  159. 159. Fast R-CNN ステップ4:識別層での識別・回帰 softmax層の代わりに識別層・回帰層で結果出力 入力画像 特徴マップ 入力画像 領域切り出し 識別層 回帰層 各クラスの確率を出力 各クラスの座標を出力 出力ユニット数 識別層:K+1 回帰層:4K クラス数=K ROI プーリング R. Girshick,, Fast RCNN, ICCV2015 159
  160. 160. Fast R-CNNの課題 学習・検出プロセスがまだ複雑 Selective Searchによる切り出しが必要 =>この処理が時間かかる 入力画像 特徴マップ 入力画像 領域切り出し 識別層 回帰層 各クラスの確率を出力 各クラスの座標を出力 出力ユニット数 識別層:K+1 回帰層:4K クラス数=K ROI プーリング R. Girshick,, Fast RCNN, ICCV2015 160
  161. 161. Fast R-CNN 特徴抽出 (CNN) 特徴座標 識別層・回帰層 (CNN) 入力画像 領域切り出し 領域変形 物体:背景 座標情報 (-1,-1,-1,-1) 物体:人 座標情報 (10,3,40,100) 物体:馬 座標情報 (5,100,80,20) 領域ごとに実行 識別層・回帰層 (CNN) 識別層・回帰層 (CNN)Selective Searchによる切り出し =>この処理が時間かかる R. Girshick,, Fast RCNN, ICCV2015 特徴抽出処理をまとめて行うことで高速化 R-CNNと比べて10-100倍高速 学習・検出プロセスをシンプルに 領域切り出しの処理をCNNの構成で行う(SVMなし) 161
  162. 162. Faster R-CNN 領域切り出しもCNNで行うことでさらなる高速化 R-CNNと比べて10-100倍高速 学習・検出プロセスをさらにシンプルに すべてをCNNで行う 特徴抽出 (CNN) 検出層 (全結合) 入力画像 回帰層 (全結合) 識別層 (Fast R-CNN) Region Proposal Network S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 162
  163. 163. Region Proposal Network(RPN) 1つのネットワークで検出と回帰を行う ステップ1)画像全体の特徴抽出(特徴マップ) ステップ2)特徴マップを走査して特徴を抽出 ステップ3)特徴を検出層に与えて,物体判別行う ステップ4)特徴を回帰層に与えて,物体の位置を同定する 特徴抽出 (CNN) 入力画像 S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 163
  164. 164. RPNの工夫点 大きさ変化と形状変化に対して同時に対応 各注目点の特徴を入力すると k個のアンカーに対する物体か否か k個のアンカーに対する座標 を2つの全結合層から出力する 特徴抽出 (CNN) 入力画像 形状は1:1,1:2,2:1の3種類 大きさは128, 256, 512の3スケール 物体でない形状の場合は, 座標値として-1などの値が入る アンカー=注目領域の形状と 大きさのパターン S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 164
  165. 165. RPN ステップ1:画像全体の特徴抽出 VGGの最終畳み込み層までの特徴マップを生成 入力画像入力画像 特徴マップ S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 165
  166. 166. RPN ステップ2:領域の特徴抽出 局所領域から256次元の特徴を抽出 入力画像入力画像 特徴マップ 256 全結合層(=1x1の畳み込みで表現) ・入力:3x3領域の中央の値(全特徴マップ) ・出力:256次元 S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 166
  167. 167. RPN ステップ3:検出層による物体検出 局所領域から256次元の特徴を抽出 入力画像入力画像 特徴マップ 256 全結合層 ・入力:256次元 ・出力:2k (kはアンカー数,K=9) 物体の確率 物体でない確率 各 ア ン カ の 確 率 S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 167
  168. 168. RPN ステップ4:回帰層による位置同定 局所領域から256次元の特徴を抽出 入力画像入力画像 特徴マップ 256 全結合層 ・入力:256次元 ・出力:4k (kはアンカー数,K=9) 左上x座標 左上y座標 各 ア ン カ の 座 標 幅 高さ S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 168
  169. 169. Faster R-CNNによる物体検出の速度 特徴マップ作成をVGGで行った場合,selective searchの場合よりも約10倍高速化 ZFを特徴マップ作成に利用するとさらに3倍高速化 S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 169
  170. 170. Faster R-CNNによる物体検出例 S. Ren, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, NIPS2015 170
  171. 171. YOLO GPU上でリアルタイムでの一般物体検出(22ms) 画像全体をCNNに入力 グリッドごとに物体らしさと矩形を算出 各グリッドがどの物体クラスかを判定 NMSでグリッドを選択し,物体矩形として出力 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 171
  172. 172. YOLOの処理の流れ 入力画像 各グリットでの矩形と 物体クラスを算出 CNN 矩形算出結果 各グリッドの代表クラスを算出 各グリッドの代表矩形を選択 NMSで出力矩形を選択 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 172
  173. 173. YOLOのアルゴリズム CNNの出力をSxSグリッドとして考える You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 173
  174. 174. YOLOのアルゴリズム ある注目グリッドに対して You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 174
  175. 175. YOLOのアルゴリズム 複数の物体らしい領域を推定 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 175
  176. 176. YOLOのアルゴリズム 全グリッドで物体領域を推定 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 176
  177. 177. YOLOのアルゴリズム グリッドごとにクラスを予測 Bicycle Dog Car Dining Table You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 177
  178. 178. YOLOのアルゴリズム クラス予測と領域を対応 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 178
  179. 179. YOLOのアルゴリズム スコアの高い領域を検出結果として出力 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 179
  180. 180. YOLOの出力内容 180 You Only Look Once: Unified, Real-Time Object Detection, CVPR2016 各グリッドの出力 矩形(x,y,幅,高さ) 物体らしさ クラスの数だけ出力 各グリッドは, 複数の矩形を出力することも可能 Pascal VOCの場合 グリッド数:7x7 矩形数:2 クラ数数:20 出力ユニット数:1470 (7 x 7 x (2 x 5 + 20) = 7 x 7 x 30 tensor)
  181. 181. YOLOの精度 181 Pascal 2007 mAP Speed DPM v5 33.7 .07 FPS 14 s/img R-CNN 66.0 .05 FPS 20 s/img Fast R-CNN 70.0 .5 FPS 2 s/img Faster R-CNN 73.2 7 FPS 140 ms/img YOLO 63.4 69.0 45 FPS 22 ms/img You Only Look Once: Unified, Real-Time Object Detection, CVPR2016
  182. 182. Single Shot MultiBox Detector 182 複数の特徴マップから物体らしさと矩形を出力 小さな物体から大きな物体まで検出できる SSD: Single Shot MultiBox Detector, ECCV2016
  183. 183. Single Shot MultiBox Detector 複数の特徴マップから物体らしさと矩形を出力 各特徴マップからクラス確率の高い矩形を算出 Default boxの形状を補正するオフセットベクトルを回帰 検出物体にフィットした矩形を出力 183 Ground truth boxes 5 x 5 feature map 3 x 3 feature map SSD: Single Shot MultiBox Detector, ECCV2016
  184. 184. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.04 0.08 0.81 0.03 SSD: Single Shot MultiBox Detector, ECCV2016 184
  185. 185. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.04 0.08 0.81 0.03 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.03 0.93 0.01 SSD: Single Shot MultiBox Detector, ECCV2016 185
  186. 186. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.04 0.08 0.81 0.03 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.03 0.93 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.07 0.88 0.02 SSD: Single Shot MultiBox Detector, ECCV2016 186
  187. 187. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.04 0.08 0.81 0.03 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.03 0.93 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.07 0.88 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.02 0.09 0.82 0.03 SSD: Single Shot MultiBox Detector, ECCV2016 187
  188. 188. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.04 0.08 0.81 0.03 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.03 0.93 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.01 0.07 0.88 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.02 0.09 0.82 0.03 Max SSD: Single Shot MultiBox Detector, ECCV2016 188
  189. 189. Single Shot MultiBox Detector 回帰で推定したオフセットベクトルにより 矩形を補正 (cx, cy, w, h) SSD: Single Shot MultiBox Detector, ECCV2016 189
  190. 190. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 SSD: Single Shot MultiBox Detector, ECCV2016 190
  191. 191. Single Shot MultiBox Detector 191 Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 SSD: Single Shot MultiBox Detector, ECCV2016
  192. 192. Single Shot MultiBox Detector 192 Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.08 0.04 0.02 0.70 0.03 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 SSD: Single Shot MultiBox Detector, ECCV2016
  193. 193. Single Shot MultiBox Detector 193 Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.08 0.04 0.02 0.70 0.03 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.05 0.02 0.01 0.68 0.02 0.02 SSD: Single Shot MultiBox Detector, ECCV2016
  194. 194. Single Shot MultiBox Detector 194 Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.08 0.04 0.02 0.70 0.03 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.05 0.02 0.01 0.68 0.02 0.02 Box5 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.02 0.83 0.03 0.03 SSD: Single Shot MultiBox Detector, ECCV2016
  195. 195. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.08 0.04 0.02 0.70 0.03 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.05 0.02 0.01 0.68 0.02 0.02 Box5 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.02 0.83 0.03 0.03 Box6 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.01 0.84 0.02 0.04 SSD: Single Shot MultiBox Detector, ECCV2016 195
  196. 196. Single Shot MultiBox Detector Box1 : クラス確率 Background Car Boat Dog Cat Parson 0.06 0.05 0.04 0.79 0.05 0.01 Box3 : クラス確率 Background Car Boat Dog Cat Parson 0.08 0.04 0.02 0.70 0.03 0.01 Box2 : クラス確率 Background Car Boat Dog Cat Parson 0.04 0.02 0.02 0.81 0.09 0.02 Box4 : クラス確率 Background Car Boat Dog Cat Parson 0.05 0.02 0.01 0.68 0.02 0.02 Box5 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.01 0.02 0.83 0.03 0.03 Box6 : クラス確率 Background Car Boat Dog Cat Parson 0.01 0.02 0.01 0.84 0.02 0.04 Max SSD: Single Shot MultiBox Detector, ECCV2016 196
  197. 197. Single Shot MultiBox Detector 197 回帰で推定したオフセットベクトルにより Bounding boxを補正 (cx, cy, w, h) SSD: Single Shot MultiBox Detector, ECCV2016
  198. 198. SSDのネットワーク構成 198 Non-Maximum Suppression VGG conv from conv1_1 to conv4_3 VGG conv from conv5_1 to fc7 (replace conv) SDD conv from conv6_1 to conv6_2 SDD conv from conv7_1 to conv7_2 SDD conv from conv8_1 to conv8_2 SDD conv from conv9_1 to conv9_2 Normalization conv4_3_mbox_loc (offset estimator) & conv4_3_mbox_conf (object classifier) fc7_mbox_loc (offset estimator) & fc7_mbox_conf (object classifier) conv6_2_mbox_loc (offset estimator) & conv6_2_mbox_conf (object classifier) conv7_2_mbox_loc (offset estimator) & conv7_2_mbox_conf (object classifier) conv8_2_mbox_loc (offset estimator) & conv8_2_mbox_conf (object classifier) conv9_2_mbox_loc (offset estimator) & conv9_2_mbox_conf (object classifier) Input image 300x300x3 Feature maps 38x38x512 Feature maps 19x19x1024 Feature maps 10x10x512 Feature maps 5x5x256 Feature maps 3x3x256 Feature maps 1x1x256 Localization maps 38x38x16 Confidence maps 38x38x84 Localization maps 19x19x24 Confidence maps 19x19x126 Localization maps 10x10x24 Confidence maps 10x10x126 Localization maps 5x5x24 Confidence maps 5x5x126 Localization maps 3x3x16 Confidence maps 3x3x84 Localization maps 1x1x16 Confidence maps 1x1x84 # Default boxes = 4 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 4 # Classes = 21 # Default boxes = 4 # Classes = 21 Final detections Pre-trained VGG Net (remove fc8) SSD: Single Shot MultiBox Detector, ECCV2016
  199. 199. SSDのネットワーク構成 199 Non-Maximum Suppression VGG conv from conv1_1 to conv4_3 VGG conv from conv5_1 to fc7 (replace conv) SDD conv from conv6_1 to conv6_2 SDD conv from conv7_1 to conv7_2 SDD conv from conv8_1 to conv8_2 SDD conv from conv9_1 to conv9_2 Normalization conv4_3_mbox_loc (offset estimator) & conv4_3_mbox_conf (object classifier) fc7_mbox_loc (offset estimator) & fc7_mbox_conf (object classifier) conv6_2_mbox_loc (offset estimator) & conv6_2_mbox_conf (object classifier) conv7_2_mbox_loc (offset estimator) & conv7_2_mbox_conf (object classifier) conv8_2_mbox_loc (offset estimator) & conv8_2_mbox_conf (object classifier) conv9_2_mbox_loc (offset estimator) & conv9_2_mbox_conf (object classifier) Input image 300x300x3 Feature maps 38x38x512 Feature maps 19x19x1024 Feature maps 10x10x512 Feature maps 5x5x256 Feature maps 3x3x256 Feature maps 1x1x256 Localization maps 38x38x16 Confidence maps 38x38x84 Localization maps 19x19x24 Confidence maps 19x19x126 Localization maps 10x10x24 Confidence maps 10x10x126 Localization maps 5x5x24 Confidence maps 5x5x126 Localization maps 3x3x16 Confidence maps 3x3x84 Localization maps 1x1x16 Confidence maps 1x1x84 # Default boxes = 4 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 6 # Classes = 21 # Default boxes = 4 # Classes = 21 # Default boxes = 4 # Classes = 21 Final detections Pre-trained VGG Net (remove fc8) SSD: Single Shot MultiBox Detector, ECCV2016
  200. 200. オフセットベクトルとクラス分類 200 Feature maps 5x5x256 SDD conv from conv7_1 to conv7_2 Convolutional feature extractor conv7_2_mbox_loc Convolutional offset estimator Convolutional object classifier conv7_2_mbox_conf Default box generator 6 default boxes 5x5x6=150 default boxes Localization maps 5x5x24 Confidence maps 5x5x126 # Offset vector dimensions : 4 # Default boxes : 6 # Classes : 21 # Default boxes : 6 SSD: Single Shot MultiBox Detector, ECCV2016
  201. 201. オフセットベクトルとクラス分類 201 conv7_2_mbox_loc Convolutional offset estimator Convolutional object classifier conv7_2_mbox_conf Default box generator 6 default boxes Localization maps 5x5x24 Confidence maps 5x5x126 5x5x6=150 default boxes Default box 1 5x5x4 Default box 2 5x5x4 Default box 6 5x5x4 Default box 1 5x5x21 Default box 2 5x5x21 Default box 6 5x5x21 Cat Softmax P(Background) = 0.01 P(Dog) = 0.09 P(Cat) = 0.88 P(Person) = 0.01 cx cy w h Default boxの オフセットベクトル Default boxの クラス確率
  202. 202. Non-maximum suppression 同一物体かつJaccard overlapがT %以上であれば 認識スコアが最大の矩形のみを出力 202 物体候補 最終検出結果 SSD: Single Shot MultiBox Detector, ECCV2016
  203. 203. Non-maximum suppression 同一物体かつJaccard overlapがT %以上であれば 認識スコアが最大の矩形のみを出力 203 Overlap = 76.3% Person = 0.98 Person = 0.74 物体候補 最終検出結果 SSD: Single Shot MultiBox Detector, ECCV2016
  204. 204. Non-maximum suppression 同一物体かつJaccard overlapがT %以上であれば 認識スコアが最大の矩形のみを出力 Overlap = 57.2% Person = 0.87 Person = 0.62 物体候補 最終検出結果 SSD: Single Shot MultiBox Detector, ECCV2016 204
  205. 205. Non-maximum suppression 同一物体かつJaccard overlapがT %以上であれば 認識スコアが最大の矩形のみを出力 205 物体候補 最終検出結果 Overlap < T % SSD: Single Shot MultiBox Detector, ECCV2016
  206. 206. SSDの特徴 複数の解像度の特徴マップを用いて物体検出 → 小さな物体から大きな物体まで検出可能 多くのBounding box候補を使用 → 1枚の画像から多くの物体を検出可能 206 YOLO v1の矩形候補数 7 x 7 x 2 = 98 (最新版コードでは 7 x 7 x 3 = 147) SSDの矩形候補数 (38 x 38 x 4) + (19 x 19 x 6) + (10 x 10 x 6) + (5 x 5 x 6) + (3 x 3 x 4) + (1 x 1 x 4) = 8,732 SSD: Single Shot MultiBox Detector, ECCV2016
  207. 207. Pascal VOC 2007での認識結果 207 SSD: Single Shot MultiBox Detector, ECCV2016
  208. 208. Pascal VOC 2007での認識結果 208 SSD: Single Shot MultiBox Detector, ECCV2016
  209. 209. ディープラーニングベース手法の比較 209 SSD: Single Shot MultiBox Detector, ECCV2016
  210. 210. SSDによる検出結果例 210 SSD: Single Shot MultiBox Detector, ECCV2016
  211. 211. Deep Learningの応用先 検出 回帰 人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり 顔器官検出 人の姿勢推定 認識 一般物体認識 (LSVRCトップ) 顔認識(照合) (LFWトップ) 人物属性推定 一般物体検出 (Pascal VOCトップ) 文字認識 セグメンテーション シーンラベリング 手領域抽出 髪領域抽出 顔ラベリング 211
  212. 212. シーン認識 畳み込みニューラルネットワークを利用して,各ピクセルのシーンラベルを付与 画素情報をそのまま入力して,特徴を自動的に学習 Superpixelによるセグメンテーションも併用 畳み込みニューラルネットワークでのシーン認識 212 C.Farabet, “Learning Hierarchical Features for Scene Labeling.”, PAMI2013
  213. 213. 手の形状抽出 畳み込みニューラルネットワークにより手領域を抽出 213 layer type size, # of kernels Input grayscale 40x40 1st convolution 5x5, 32 2nd max pooling 2x2 3rd maxout 4 4th convolution 5x5, 32 5th max pooling 2x2 6th maxout 4 7th fully connected 200 output L2 norm 1600
  214. 214. 手の形状抽出 畳み込みニューラルネットワークにより手領域を抽出 214 更新回数 precision recall F value 0 0.2303 1.0000 0.3742 50000 0.8930 0.9135 0.9032 100000 0.8968 0.9199 0.9082 150000 0.9054 0.9186 0.9120 200000 0.9033 0.9234 0.9133 カーネル precision recall F value 3x3 0.9097 0.9133 0.9115 5x5 0.9033 0.9234 0.9133 7x7 0.9056 0.9039 0.9047
  215. 215. ネットワークの学習過程の可視化(1) updating time : 0 - 50000 215
  216. 216. ネットワークの学習過程の可視化(2) 最上位の隠れ層ー識別層間の重み 216 x1 x2 x3 xi y1 y2 Yj
  217. 217. ネットワークの学習過程の可視化(3) 最上位の隠れ層ー識別層間の重み 217 x1 x2 x3 xi y1 y2 Yj
  218. 218. ネットワークの学習過程の可視化(3) 最上位の隠れ層ー識別層間の重み 218 x1 x2 x3 xi y1 y2 Yj
  219. 219. ネットワークの学習過程の可視化(4) 最上位の隠れ層ー識別層間の重み 219 x1 x2 x3 xi y1 y2 Yj
  220. 220. 顔パーツラベリング マルチクラスセグメンテーションへの応用 220 T. Yamashita, Cost-Alleviative Learning for Deep Convolutional Neural Network-based Facial Part Labeling, CVA2015
  221. 221. シーンラベリング手法 Fully Convolutional Network プーリング層後の特徴マップを拡大し,結合 221 J. Long, Fully Convolutional Networks for Semantic Segmentation, CVPR2015
  222. 222. SegNet エンコーダ・デコーダの構成 Max Poolingを行う時に位置情報を記憶 222 最大値&圧縮前の位置情報を参照 データがない座標には「0」を補完 V. Badrinarayanan, SegNet: A Deep Convolutional Encoder-Decoder Architecture for Robust Semantic Pixel-Wise Labelling, 2015
  223. 223. PSPNet 223 複数の解像度で特徴抽出して統合 ILSVRC2016のScene Parsing 部門で優勝 H. Zhao, Pyramid Scene Parsing Network, 2016
  224. 224. Cityscapes 車載用セグメンテーションのデータセット 224 Dataset URL : https://www.cityscapes-dataset.com/ 50都市で撮影 30クラスのラベリング 評価には19クラスを利用 (頻出頻度の低いクラスは対象外) M. Cordts, The Cityscapes Dataset for Semantic Urban Scene Understanding, CVPR2016
  225. 225. シーンラベリング 225 [Yamashita, 2016]
  226. 226. ゲームを利用したデータ生成 226 S.R. Richter, Playing for Data: Ground Truth from Computer Games, ECCV2016 Grand Theft Auto(GTA)を利用 セグメンテーションをあらかじめ行い,アノテーション時間 を短縮
  227. 227. ゲームを利用したデータ生成 227 G. Ros, The SYNTHIA Dataset: A Large Collection of Synthetic Images for Semantic Segmentation of Urban Scenes, CVPR2016 Virtual cityをCGで作成 様々な国の街の雰囲気,天候,季節を再現 13400フレーム分のデータ,13クラスにラベリング 全周囲のカメラ 距離画像 (未公開) Dataset URL : http://synthia-dataset.net
  228. 228. Deep Learningの応用先 認識 検出 セグメンテーション 一般物体認識 (LSVRCトップ) 一般物体検出 (Pascal VOCトップ) 人検出* (Caltech Pedestrian dataset トップ) *HOG+CSS-SVMでのSliding window処理あり 顔認識(照合) (LFWトップ) シーンラベリング 人物属性推定 手領域抽出 髪領域抽出 顔ラベリング 回帰 顔器官検出 人の姿勢推定 228
  229. 229. 顔器官検出 出力ユニット数=器官点の座標数 229 各器官点の座標を出力 誤差を最小二乗法で算出 ・顔器官点検出  -Deep Convolutional Neural Network を回帰問題に適応  - 出力層で各器官点の座標値を推定 ・シーンラベリング 正解座標 推定座標 0.23 0.42 0.15 0.77 0.58 0.85 ートした ラスの出力値 路上物体 道路 山 草原 対象クラス 左目の左目尻 左目の左目頭 唇の右端入力画像 各器官点の座標値を出力 ●ground truth / ● estimation M.Kimura, Facial Point Detection Based on a Convolutional Neural Network with Optimal Mini-batch Procedure, ICIP2015
  230. 230. 顔輪郭検出 出力ユニット数=輪郭点の座標数 230 画像と正解情報があれば, 検出点数を増やしたネットワーク学習は可能 M.Kimura, Facial Point Detection Based on a Convolutional Neural Network with Optimal Mini-batch Procedure, ICIP2015
  231. 231. 画像認識における学習時の工夫 231
  232. 232. Data augmentationの重要性(1) 背景合成によるデータの自動生成 232 変化項目 範囲1 範囲2 移動 ±3 ±5 拡大縮小 ±5% ±10% 回転 ±5° ±15° 明度 ±10% ±20%
  233. 233. Data augmentationの重要性(2) データの自動生成がある方が性能が良い 233
  234. 234. カリキュラムラーニング(1) 学習過程で難しいサンプルを追加する (= similar with Bootstrap, but different…) 234 x1 x2 x3 xi y1 y2 yj y1 y2 y3 h1 h2 hj 初期の学習(単純なパターン) 学習の後期(複雑なパターン) Y. Bengio, “Curriculum Learning”, ICML2009.
  235. 235. カリキュラムラーニング(2) 認識問題を直接解決するのではなく,中間的な問題 を通して解く 235 T. Yamashita, Hand Posture Recognition Based on Bottom-up Structured Deep Convolutional Neural Network with Curriculum Learning”, “Curriculum Learning, ICIP2014
  236. 236. カリキュラムラーニング(3) 領域抽出に対応したネットワークを学習 236 Convolutional Layer Pooling Layer Convolutional Layer Pooling Layer fully connection Layer Binarization layer Input data : gray scale image ground truth : hand segmented image T. Yamashita, Hand Posture Recognition Based on Bottom-up Structured Deep Convolutional Neural Network with Curriculum Learning”, “Curriculum Learning, ICIP2014
  237. 237. カリキュラムラーニング(4) ネットワークのパラメータを転移する 237 パラメータを初期値として利用 パラメータを更新 Input data : gray scale image ground truth : class label T. Yamashita, Hand Posture Recognition Based on Bottom-up Structured Deep Convolutional Neural Network with Curriculum Learning”, “Curriculum Learning, ICIP2014
  238. 238. カリキュラムラーニング(5) 認識は識別問題に対応したネットワークのみ利用 238 5 Input data : gray scale image output : class label T. Yamashita, Hand Posture Recognition Based on Bottom-up Structured Deep Convolutional Neural Network with Curriculum Learning”, “Curriculum Learning, ICIP2014
  239. 239. カリキュラムラーニング(6) without curriculum learning with curriculum learning Ground Truth class classificationclass Ground Truth class classificationclass 239 T. Yamashita, Hand Posture Recognition Based on Bottom-up Structured Deep Convolutional Neural Network with Curriculum Learning”, “Curriculum Learning, ICIP2014
  240. 240. カリキュラムラーニング(7) カリキュラムラーニングを導入した顔器官検出 240 T. Yamashita, Facial Point Detection Using Convolutional Neural Network Transferred from a Heterogeneous Task, ICIP2015
  241. 241. ヘテロジニアスラーニング(1) 複数の異なる情報を同時に学習 241 年齢と性別の同時推定 Convolution Layer Fully Connection Layer Male or Female input samples Age 加藤, Heterogeneous Learningと重み付き誤差関数の導入による顔画像解析, MIRU2015
  242. 242. ヘテロジニアスラーニング(2) 複数の異なる情報を同時に学習 242 出力情報の種類を増やすことが可能 加藤, Heterogeneous Learningと重み付き誤差関数の導入による顔画像解析, MIRU2015 Convolution Layer Fully Connection Layer Male or Female input samples Age
  243. 243. ヘテロジニアスラーニング(3) 243 加藤, Heterogeneous Learningと重み付き誤差関数の導入による顔画像解析, MIRU2015
  244. 244. ヘテロジニアスラーニング(4) ヘテロジニアスラーニングによる歩行者検出と部位推定 244 1 0.0001 0.001 0.01 0.1 1 10 MissRate False Positive per Image 回帰型DCNN 31.77% 単体のDCNN 38.38%   0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 Daimler Mono-Pedestrian Benchmark Dataset の評価結果 距離[m] 距離推定結果[m] 誤差[%] 5 4.89 2.2 10 9.26 5.3 15 14.12 5.8 T. Yamashita, Pedestrian and Part Position Detection Using a Regression-Based Multiple Task Deep Convolutional Neural Network, ICPR2016
  245. 245. その他の事例:ビデオの認識 時系列での特徴を抽出するネットワーク 245 ・ピクセルレベルで複数フレーム の情報を統合 ・局所的な動き方向と速度の 検出が可能 ・大域的な運動特性を計算可能 ・時間、空間の情報をバランス よく使用 ・空間だけではなく時間的に 畳み込むため大域的な情報が 得られる Single Frame Late Fusion Early Fusion Slow Fusion ・2つのSingle Frameを使用 A.Karpathy, “ Large-scale Video Classification with Convolutional Neural Networks”, CVPR2014
  246. 246. ビデオの認識 Slow Fusion network on the first layer 246 A.Karpathy, “ Large-scale Video Classification with Convolutional Neural Networks”, CVPR2014
  247. 247. ビデオの認識 247 A.Karpathy, “ Large-scale Video Classification with Convolutional Neural Networks”, CVPR2014 Sports-1M Datasetを公開
  248. 248. ネットワークの可視化(1) プーリング層でどこが選ばれたのかを記憶しておく 248 M. D. Zeiler, Visualizing and Understanding Convolutional Networks, ECCV2014
  249. 249. ネットワークの可視化(2) 強く反応した特徴マップの位置を遡って可視化 249 M. D. Zeiler, Visualizing and Understanding Convolutional Networks, ECCV2014
  250. 250. ネットワークの可視化(3) 強く反応した特徴マップの位置を遡って可視化 250 M. D. Zeiler, Visualizing and Understanding Convolutional Networks, ECCV2014
  251. 251. Places CNN(1) シーン認識に特化した大規模データセット 251 250万枚・205クラスのデータ B. Zhou, Learning Deep Features for Scene Recognition using Places Database, NIPS2015
  252. 252. Places CNN(2) 2つのデータセットでそれぞれ学習 252 B. Zhou, Learning Deep Features for Scene Recognition using Places Database, NIPS2015
  253. 253. Places CNN(3) Image netとの違い 253 B. Zhou, Learning Deep Features for Scene Recognition using Places Database, NIPS2015
  254. 254. DrawNet(1) ネットワークのどこを通ってきたかを可視化 • 高い反応をしたユニットを各層で選択 254
  255. 255. DrawNet(2) ネットワークのどこを通ってきたかを可視化 255
  256. 256. DrawNet(3) ネットワークのどこを通ってきたかを可視化 256
  257. 257. DrawNet(4) ネットワークのどこを通ってきたかを可視化 257
  258. 258. 注目領域の検出 特定のユニットの反応をもとに注目領域を可視化 258http://places.csail.mit.edu
  259. 259. ディープラーニングについて ニューラルネットワーク 畳み込みニューラルネットワーク リカレントニューラルネットワーク 生成モデル(オートエンコーダ) ディープラーニングのツール 259
  260. 260. Recurrent Neural Networkとは? Recurrent = 再帰型 系列データを扱うニューラルネットワーク 系列データ=音声,言語,動画像,金融相場・・・ など データの並びに意味や規則性があるもの D1, D2, D3, ・・・, DT 系列データの文脈や関連性を学習する 系列データの要素ごとに推論結果を出力 260
  261. 261. RNNの構造(1) 中間層で自分自身に再帰する経路を持つ 入力層→中間層→出力層の経路は通常のNNと等 しい 261 Elman network その他 Jordan network Time delay network など
  262. 262. RNNの時間軸方向への展開 各時刻の入力が系列データの一つの要素に相当 ある時刻tにおいて時刻0からの全入力を考慮 262
  263. 263. 双方向性RNN 系列データを順方向と逆方向の2方向から入力 順方向のみに比べ出力の精度が高い オンライン学習では使用できない 263
  264. 264. RNNの問題点 -出力に反映されるのは10時刻分程度の入力 理論上は過去全ての系列データ -時刻を遡るほど重みの乗算回数が増加 勾配の値が 消失 または 爆発 する Long Short Term Memory (LSTM) を用いることで解決で きる 264
  265. 265. 順伝播 通常のニューラルネットワークとの違い 1時刻前の中間層の出力を受け取る 265
  266. 266. 𝑡 = 1における順伝播 入力層から中間層の流れ 通常のニューラルネットワークと同様 中間層ユニットの入力 入力:𝑥% & ,重み:𝑤%(の内積 𝑢( & = ∑ 𝑤%( 𝑥% & % 中間層ユニットの出力 活性化関数を通した応答値 𝑧( & = 𝑓 𝑢( & 266 𝑖 : 入力層ユニット 𝑗 : 中間層ユニット
  267. 267. 𝑡 ≧ 2における順伝播 入力層から中間層の流れ 時刻𝑡の中間層ユニット𝑗の入力 二つのユニットからの出力の和 時刻𝑡の入力層ユニットの出力 : 𝑥% & 時刻𝑡 − 1の中間層ユニットの出力 : 𝑧( &34 時刻𝑡の中間層ユニット𝑗の出力 活性化関数を通した応答値 267
  268. 268. 順伝播 中間層から出力層の流れ 出力層ユニットの入力 中間層ユニットの出力:𝑧( & ,重み:𝑤(5の内積 出力層ユニットの出力 活性化関数を通した応答値 268
  269. 269. 誤差逆伝播 誤差逆伝播手法 Back Propagation Through Time (BPTT法) • 一般的な方法 Real Time Recurrent Learning (RTRL法) 269
  270. 270. 誤差関数の算出方法(1) 各時刻の誤差を算出 時刻𝑡 における誤差関数 最小の𝐸 𝑤 を見つけることが目的 → 𝑤 = 𝑎𝑟𝑔𝑚𝑖𝑛> 𝐸 𝑤 E w = − A A 𝑑5 & 5& log 𝑦5 & 𝑥; 𝑤 𝑑5 & = [𝑑4 & , 𝑑J & , ・・・, 𝑑K & ]Mはクラス数と同じ成分数を持つベクトル 270 𝑑 : 教師データ 𝑦 : 出力データ 𝑥 : 入力データ 𝑘 : 識別クラス
  271. 271. 誤差関数の算出方法(2) 確率的勾配降下法により誤差関数を算出 ミニバッチを適用した場合の時刻𝑡 における誤差関 数 最小の𝐸 𝑤 を見つけることが目的 → 𝑤 = 𝑎𝑟𝑔𝑚𝑖𝑛> 𝐸 𝑤 E w = − 1 𝑁 A A A 𝑑P5 & 5&P∈RS log 𝑦5 & 𝑥P; 𝑤 𝑑P5 & = [𝑑P4 & , 𝑑PJ & , ・・・, 𝑑PK & ]M はクラス数と同じ成分数を持つベクトル 271 𝑡 = 1 𝑡 = 2 𝑡 = 3 𝑈4 𝑡 = 1 𝑡 = 2 𝑡 = 3 𝑈J𝑡 = 4 𝑡 = 4 𝑁 : batch size 𝑑 : 教師データ 𝑦 : 出力データ 𝑥 : 入力データ 𝑘 : 識別クラス
  272. 272. 誤差逆伝播 BPTT(1) 時系列を遡るように誤差勾配を伝播 最後の系列データの誤差計算を終えると逆伝播開始 全ての系列データの誤差・経路をメモリに蓄積 時刻Tの出力層から中間層に伝播を最初に行う 272 1 2 2
  273. 273. 誤差逆伝播 BPTT(2) 時刻tの中間層の誤差 「時刻tの誤差」と「時刻t+1の誤差」の和 結合重みの更新式 𝑤&W4 = 𝑤& − 𝜂 YZ Y>[ 273 𝜂 : 学習係数 𝐸 : 誤差関数
  274. 274. 誤差逆伝播 BPTT(3) BPTTの終了時に行うこと 蓄積した誤差・誤差経路の消去 内部状態の初期化 1つ前の学習サンプルの最後の出力が引き継がれてしまう 274
  275. 275. 誤差逆伝播 BPTT(4) 系列データが長い場合、逆伝播を時間幅単位で行う 指定した時間幅分の系列毎にBPTTを実行 蓄積していた誤差を解放 275
  276. 276. 誤差逆伝播 RTRL 誤差を次時刻に伝播 オンライン学習に最適 系列データを入力すると誤差が順次入力層に戻る メモリ効率がBPTTより良い 前時刻でのユニット間の誤差を記憶しておく必要がない 276
  277. 277. LSTM Long Short Term Memory 長・短期記憶と呼ばれる RNNの欠点を解決 勾配の値を意図的に抑制 状態を記憶するメモリセルにより長期の記憶を実現 RNNより長い系列データを扱うことが可能 RNNでは10時刻程度が限界 3種類のゲートによりメモリセルを管理 忘却ゲート 入力ゲート 出力ゲート 277
  278. 278. RNNとLSTMの違い 中間層の構造が異なる 入力・出力層は変わらない LSTMユニットの構造は色々なバリエーションが存 在 278 通常のRNN RNN-LSTM
  279. 279. LSTMユニット LSTMユニットの入出力 𝑐&34 : 1時刻前のメモリセルの値 ℎ&34 : 1時刻前のLSTMユニットから 出力層への出力値 𝑐& : 更新したメモリセルの値 ℎ& : LSTMユニットから出力層への出力値 𝑎& : 時刻𝑡の入力層からの入力値 活性化関数 𝑠𝑖𝑔𝑚 = 𝜎 : ロジスティックシグモイド関数 0~1の値を出力 𝑡𝑎𝑛ℎ : シグモイド関数(双曲線正接関数) -1~1の値を出力 279 𝑓 𝑢 = 1 1 + 𝑒3f 𝑓 𝑢 = tanh ( 𝑢)
  280. 280. LSTMユニット 1時刻前のメモリセルは 忘却ゲート => 入力ゲート => 出力ゲート の順で通過 各ゲートは 0~1の値を持ち,通過する値に対して乗算する ゲート値が0ならば通過する値を0にする(=リセット) ゲート値が1ならば通過する値をそのままの通す メモリセルの入力候補値 入力ゲートを通過してメモリセルに加算(メモリセルの更 新) 時刻t-1の出力層の値と、時刻tの入力層の値より算出 280
  281. 281. 忘却ゲート 1時刻前のメモリセルを忘却するかを制御 メモリセルに0~1の値を乗算 0 : メモリセルの値を忘却(0)にして通過させる 1 : メモリセルの値をそのまま通過させる 𝑓& = 𝑠𝑖𝑔𝑚 𝑊n o 𝑎& + 𝐻n o ℎ&34 + 𝐶n o 𝑐&34 + 𝑏n 281 f : 忘却ゲート i : 入力ゲート o : 出力ゲート a : 入力層からの値 𝑐̃ : メモリセルへの入力候値
  282. 282. 入力ゲート メモリセルに加算する入力候補値を制御 入力候補値に0~1の値を乗算 0 : 入力候補値をメモリセルに加算させない(0を加算) 1 : 入力候補値をそのままメモリセルに加算させる 𝑖& = 𝑠𝑖𝑔𝑚 𝑊% o 𝑎& + 𝐻% o ℎ&34 + 𝐶% o 𝑐&34 + 𝑏% 282 f : 忘却ゲート i : 入力ゲート o : 出力ゲート a : 入力層からの値 𝑐̃ : メモリセルへの入力候値
  283. 283. 出力ゲート メモリセルから出力層に出力する値を制御 出力ゲートではメモリセルへの書き込みはない 入力ゲートで更新されたメモリセルに0~1の値を乗 算 0 : メモリセルの値を出力層に伝播しない(0を出力) 1 : メモリセルの値を出力層にそのまま出力させる 𝑜& = 𝑠𝑖𝑔𝑚 𝑊u o 𝑎& + 𝐻u o ℎ&34 + 𝐶u o 𝑐& + 𝑏u 283 f : 忘却ゲート i : 入力ゲート o : 出力ゲート a : 入力層からの値 𝑐̃ : メモリセルへの入力候値
  284. 284. LSTMユニットの出力 メモリセルの入力候補値 𝑐̃& = tanh ( 𝑊ṽ[ ⋅ 𝑎& + 𝐻ṽ[ ⋅ ℎ&34 + 𝑏ṽ[ ) 1時刻前のメモリセルの更新 𝑐& = 𝑓& ⊚ 𝑐&34 + 𝑖& ⊚ 𝑐̃& LSTMユニットからの出力層への出力 ℎ& = 𝑜& ⊚ 𝑡𝑎𝑛ℎ 𝑐& 284 f : 忘却ゲート i : 入力ゲート o : 出力ゲート a : 入力層からの値 𝑐̃ : メモリセルへの入力候値
  285. 285. LSTMユニットの出力例 1時刻前のメモリセルが各ゲートを通過した後の出力 メモリセルへの入力候補値は1に固定 285 (𝑐&34) (忘却, 入力, 出力) 0 (𝑐&, ℎ&) 1 (𝑐&, ℎ&) (0, 0, 0) (0, 0) (0, 0) (0, 0, 1) (0, 0) (0, 0) (0, 1, 0) (1, 0) (1, 0) (0, 1, 1) (1, 1) (1, 1) (1, 0, 0) (0, 0) (1, 0) (1, 0, 1) (0, 0) (1, 1) (1, 1, 0) (1, 0) (2, 0) (1, 1, 1) (1, 1) (2, 2)
  286. 286. RNNを利用した自然言語処理 Recurrent neural network based language model 286 Word Embedding 入力単語をベクトル表現 ベクトル長:辞書の単語数 入力単語の要素は1 それ以外は0 過去の履歴(文脈)をベクトルとして保持 各単語の確率を出力 ソフトマックスを利用
  287. 287. RNNを利用した機械翻訳 Sequence to Sequence Learning with Neural Networks 287 ソース言語の文章の単語を逐次入力 全て入力後に,ターゲット言語の文章の単語を逐次出力 4層のLSTM層を利用
  288. 288. RNNの画像分野への応用方法 画像においてRNN(LSTM)を使う方法は2種類 なにを系列データとするか? Ø 時系列 : 動画像などの連続したフレーム Ø 系列 : X, Y座標方向の連続した画素・ブロックデータ 288 時刻0 時刻t
  289. 289. RNNを利用した画像要約 Deep Visual-Semantic Alignments for Generating Image Descriptions 289 画像をCNNに入力し,画像特徴を抽出 LSTM層の最初に画像特徴を与える 以降は,単語特徴から次の単語を出力する 学習時の工夫 Infer region-word alignment ・R-CNNにより物体領域の画像ベクトルを抽出 ・BRNNで文章ベクトルを生成 ・画像と文章のベクトルの内積が最大となるものを 学習に利用

×