AutoEncoderで特徴抽出

16,283 views

Published on

AutoEncoderの話

Published in: Engineering
0 Comments
61 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,283
On SlideShare
0
From Embeds
0
Number of Embeds
2,423
Actions
Shares
0
Downloads
0
Comments
0
Likes
61
Embeds 0
No embeds

No notes for slide

AutoEncoderで特徴抽出

  1. 1. AutoEncoderで 特徴抽出 佐々木 海(@Lewuathe)
  2. 2. 自己紹介 • 佐々木 海(@Lewuathe) • データ処理インフラの開発(Hadoop, Spark, Storm) • 最近HHK Pro2 Type-Sを手に入れた
  3. 3. 今日のお話 • AutoEncoderの前に! • 最適化、NeuralNetwork、Backpropagation • AutoEncoderって?! • Denoising AutoEncoder, DropOff • DeepLearningへの応用! • Stacked Denoising AutoEncoder • AutoEncoderの解釈
  4. 4. AutoEncoderの前に
  5. 5. 機械学習でやりたいこと
  6. 6. 機械学習でやりたいこと 何かの最適化
  7. 7. 機械学習でやりたいこと 何かの最適化 正解との誤差 エントロピー データ間の距離
  8. 8. 機械学習でやりたいこと 何かの最適化 勾配法 動的計画法 遺伝的アルゴリズム
  9. 9. 勾配法で計算すること
  10. 10. 勾配法 データ点 目的関数 モデル 最適化したいもの
  11. 11. 勾配法 データ点 目的関数 モデル 最適化 目的関数をパラメタで微分して何度も引くor足す 最適化したいもの
  12. 12. Neural Network
  13. 13. Neural Network 1 2 … n 1 … K 1 2 … n
  14. 14. Neural Network 1 2 … n 1 k K 1 2 … n
  15. 15. Neural Network 1 2 … n 1 k K 1 2 t n
  16. 16. Neural Network 1 2 … n 1 k K 1 2 t n Feed Forward
  17. 17. Neural Network 1 2 … n 1 k K 1 2 t n 入力層 隠れ層 出力層
  18. 18. 入力データ モデルパラメタ
  19. 19. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力
  20. 20. 出力層からの値を 望んでいる答えに近くしたい
  21. 21. Neural Network カエルの画像 カエル イヌ ネコ ヒト
  22. 22. BackPropagation
  23. 23. 目的関数 2
  24. 24. 目的関数 教師データ ネットワークからの 出力 2
  25. 25. 目的関数 教師データ ネットワークからの 出力 この誤差を小さくしたい 2
  26. 26. 最適化
  27. 27. 最適化 偏微分 2
  28. 28. 最適化 隠れ層の出力 偏微分 2
  29. 29. 最適化 隠れ層の出力 出力層の出力 偏微分 2
  30. 30. 最適化 隠れ層の出力 出力層の出力 教師データとの誤差 偏微分 2
  31. 31. これを求めたい
  32. 32. これを求めたい 層ごとに
  33. 33. これを求めたい 層ごとに 重みごとに
  34. 34. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力
  35. 35. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力
  36. 36. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力 隠れ層ベクトルのj番目 出力ベクトルのk番目
  37. 37. 入力データ モデルパラメタ 隠れ層への重み勾配 出力層への重み勾配
  38. 38. 入力データ モデルパラメタ 隠れ層への重み勾配 出力層への重み勾配
  39. 39. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4)
  40. 40. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 とおく (1) (2) (3) (4)
  41. 41. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 とおく なので (1) (2) (3) (4) (1)より (3)は とおける
  42. 42. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 とおく なので (1) (2) (3) (4) (1)より (3)は とおける この式は各層で一般的に適用できる つまり重みにおける各勾配はその
 ユニットの出力側の とそのユニット 自体の値 の積で計算できる
  43. 43. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4)  の値は分かっているので各層での  を求めることができればよい
  44. 44. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) 出力活性化関数を恒等写像とすると なので よって出力層での は  の値は分かっているので各層での  を求めることができればよい
  45. 45. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) 隠れ層での は ,
  46. 46. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) 隠れ層での は , 全体として
  47. 47. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) 隠れ層での は , 全体として FFでわかってる
  48. 48. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) 隠れ層での は , 全体として FFでわかってる 後ろの層の値
  49. 49. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) FFでわかってる 後ろの層の値 つまり各層での勾配を求めるには
  50. 50. 隠れ層への重み勾配 出力層への重み勾配 隠れ層からの出力 出力層からの出力 (1) (2) (3) (4) FFでわかってる 後ろの層の値 つまり各層での勾配を求めるには 1. FFで計算した値を覚えておき 2. 教師データとの誤差を元に上記式で
 勾配を伝播させていく
  51. 51. 誤差が小さくなりました
  52. 52. 望んでいるものに近い ものが得られました 誤差が小さくなりました
  53. 53. 望んでいるものに近い ものが得られました 入力それ自身
  54. 54. AutoEncoder Encode Decode
  55. 55. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力 ←実質同じ
  56. 56. 入力データ モデルパラメタ 隠れ層からの出力 出力層からの出力 ←実質同じ
  57. 57. AutoEncoderの意味 1. 次元圧縮 2. 特徴抽出
  58. 58. DeepLearningに使う
  59. 59. dA Stacked Denoising AutoEncoder
  60. 60. dA Denoising AutoEncoderを! たくさん重ねる Stacked Denoising AutoEncoder
  61. 61. Pre-training Encode Decode
  62. 62. Pre-training Encode Decode ノイズとして
 幾つかdropさせる
  63. 63. Pre-training Encode Decode ノイズが加えられた入力が! オリジナルに近くなるようにBP
  64. 64. Encode Pre-training
  65. 65. Encode Pre-training 出力側を取っ払う
  66. 66. Encode Pre-training 出力側を取っ払う
  67. 67. dA BP SdA
  68. 68. SdA dA BP Fix
  69. 69. SdA dA BP Fix
  70. 70. SdA dA BP Fix
  71. 71. 特徴抽出器が完成
  72. 72. AutoEncoderの解釈
  73. 73. 次元圧縮 • 多様体学習(manifold learning) • 高次元に見えるデータでも低次元の構造しか持っ ていない場合がある • dAは低次元へのマッピングを行う • 隠れ層はマッピング先の座標軸
  74. 74. 特徴抽出 • 前ページの次元圧縮が上手くいっているなら
 各特徴を分けられる空間にマッピングされている • pre-trainingによって得られた層はパラメタそのまま で使いまわせるので特徴抽出器としても使える
  75. 75. tied untied
  76. 76. tied untied 5っぽい 3っぽい
  77. 77. まとめ • AutoEncoderの前に! • 最適化、NeuralNetwork、Backpropagation • AutoEncoder! • Denoising AutoEncoder • DeepLearningへの応用! • Stacked Denoising AutoEncoder • AutoEncoderの解釈! • 次元圧縮、特徴抽出
  78. 78. 参照・リソース - Pascal Vincent, Hugo Larochelle, Yoshua Bengio and Pierre-Antoine Manzagol (2008) Extracting and Composing Robust Features with Denoising Autoencoders - Pascal Vincent, Hugo Larochelle, Isabelle Lajoie, Yoshua Bengio and Pierre-Antoine Manzagol Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion - CM. ビショップ パターン認識と機械学習 (上) - http://scikit-learn.org/stable/modules/manifold.html scikit-learn 2.2 Manifold Learning - https://github.com/Lewuathe/neurallib neurallib is deep learning module running on JVM - http://yann.lecun.com/exdb/mnist/ THE MNIST DATABASE of handwritten digits
  79. 79. ありがとうございました

×