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.

淺談深度學習

7,107 views

Published on

淺談深度學習

Published in: Technology
  • Be the first to comment

淺談深度學習

  1. 1. 深度學習淺談 By Mark Chang
  2. 2. 大綱 • 深度學習簡介 • 深度學習在各領域的應用 • 深度學習平台及工具
  3. 3. 深度學習簡介 人工智慧與機器學習 機器學習原理 從機器學習到深度學習 模型選擇與參數調整
  4. 4. 人工智慧與機器學習
  5. 5. 近年來,人工智慧的進展, 突飛猛進。
  6. 6. 影像識別 http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf
  7. 7. 藝術創作 http://arxiv.org/abs/1508.06576
  8. 8. 語意理解 https://papers.nips.cc/paper/5021-distributed-representations-of-words- and-phrases-and-their-compositionality.pdf
  9. 9. 詩詞創作 http://emnlp2014.org/papers/pdf/EMNLP2014074.pdf
  10. 10. 打電動 http://arxiv.org/pdf/1312.5602v1.pdf
  11. 11. 下圍棋 http://www.nature.com/nature/journal/v529/n7587/fig_tab/nature16961_F1.html
  12. 12. 這些突破是由什麼造成的? 深度學習 機器學習
  13. 13. 機器學習原理
  14. 14. 機器學習 監督式學習 Supervised Learning 非監督式學習 Unsupervised Learning 增強式學習 Reinforcement Learning
  15. 15. 監督式學習 機器學習模型 機器學習模型 ship ship 資料 人工標記 資料 答案
  16. 16. 非監督式學習 機器學習模型 Beijing is the capital of China. As China's capital, Beijing is a large and vibrant city. Tokyo is the capital of Japan. As Japan’s capital, Tokyo is a large and vibrant city. ……. 資料 結果
  17. 17. 增強式學習 機器學習模型環境 訊息 動作
  18. 18. 機器學習 監督式學習 Supervised Learning 非監督式學習 Unsupervised Learning 增強式學習 Reinforcement Learning 深度學習 Deep Learning
  19. 19. 從機器學習到深度學習
  20. 20. 監督式機器學習 訓練資料 機器學習模型 輸出值 正確答案 對答案 如果答錯了, 要修正模型 機器學習模型測試資料 訓練 完成 輸出值
  21. 21. 符號慣例 訓練資料 全部:X , Y 單筆:x(i), y(i) 機器學習模型 h 模型參數 w 輸出值 h(X) 正確答案 Y 對答案 E(h(X),Y)如果答錯了, 要修正模型 X Y
  22. 22. 邏輯迴歸(Logistic Regression) • 用Sigmoid曲線去逼近資料的分佈情形 x y x y 訓練 完成
  23. 23. 邏輯迴歸(Logistic Regression) • 用Sigmoid曲線去逼近資料的分佈情形 x y
  24. 24. 機器學習模型 Sigmoid function
  25. 25. 修正模型 • Cost Function
  26. 26. w1 w0 修正模型 • 梯度下降:
  27. 27. 學習過程
  28. 28. 神經元與動作電位 • 神經元 • 動作店為 Dendrite Axon Cell Body Time Voltage Threshold
  29. 29. 模擬神經元 nW1 W2 x1 x2 b Wb y nin nout
  30. 30. (0,0) x2 x1 模擬神經元 1 0
  31. 31. 二元分類:AND Gate x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1 (0,0) (0,1) (1,1) (1,0) 0 1 n20 20 b -30 yx1 x2
  32. 32. XOR Gate ? (0,0) (0,1) (1,1) (1,0) 0 0 1 x1 x2 y 0 0 0 0 1 1 1 0 1 1 1 0
  33. 33. 二元分類:XOR Gate n -20 20 b -10 y (0,0) (0,1) (1,1) (1,0) 0 1 (0,0) (0,1) (1,1) (1,0) 1 0 (0,0) (0,1) (1,1) (1,0) 0 0 1 n1 20 20 b -30 x1 x2 n2 20 20 b -10 x1 x2 x1 x2 n1 n2 y 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0
  34. 34. 類神經網路 x y n11 n12 n21 n22W12,y W12,x b W11,y W11,bW12,b b W11,x W21,11 W22,12 W21,12 W22,11 W21,bW22,b z1 z2 Input Layer Hidden Layer Output Layer
  35. 35. 視覺認知 http://www.nature.com/neuro/journal/v8/n8/images/nn0805-975-F1.jpg
  36. 36. 模型選擇與參數調整
  37. 37. 模型種類 • Hidden Layer 較小的Hidden Layer 較大的Hidden Layer 多層Hidden Layer單層Hidden Layer
  38. 38. 模型複雜度 • 模型中的參數個數(weight和bias的個數) 模型複雜度低 高
  39. 39. 訓練不足與過度訓練 Tensorflow Playground http://playground.tensorflow.org/ 資料分佈 訓練適度 訓練不足 訓練過度
  40. 40. 訓練不足(Underfitting) • 原因: – Learning Rate 太大或太 小 – 訓練時間太短 – 模型複雜度不夠 t
  41. 41. 過度訓練(Overfitting) • 原因: – 雜訊太多 – 訓練資料太少 – 訓練時間太長 – 模型複雜度太高 t
  42. 42. 驗證資料(Validation Data) 訓練資料 模型 1 測試資料 最後結果 資料集 驗證資料 模型選擇 參數選擇 時間控制 模型 2 ……
  43. 43. 解決方式 • 訓練不足 – 調整Learning Rate – 增加訓練時間 – 增加模型複雜度 • 訓練過度 – 增加訓練資料 – 減少雜訊 – 減少訓練時間 – 減少模型複雜度
  44. 44. 調整Learning Rate • 調整Learning Rate數值 Learning Rate 適中 Learning Rate 過小 Learning Rate 過大
  45. 45. 調整訓練時間 • Early Stop Validation Loss Training Loss 停止訓練 t
  46. 46. 調整模型複雜度 • 調整Hidden Layer的寬度或層數 • Regularization
  47. 47. Hidden Layer寬度 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0 1 2 3 4 5 6 7 8 9 Validation Loss Training Loss 最適寬度 模型複雜度低 高 Loss 寬度
  48. 48. Regularization • 將weights的平方和加到cost function中 • 可使weights的絕對值不要變得太大 • 可降低模型複雜度 Cost Function: λ越大,則模型複雜度越低
  49. 49. Regularization 最適λ值 模型複雜度 低高 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.01 0.1 1 Validation Loss Training Loss Loss λ
  50. 50. 深度學習在各領域的應用 電腦視覺應用 自然語言處理應用 遊戲對局應用 跨領域整合應用
  51. 51. 電腦視覺應用
  52. 52. 電腦視覺 • 電腦視覺是一門研究如何使機器「看」的科學 • 用電腦代替人眼對目標進行識別、跟蹤和測量 等機器視覺,並進一步做圖像處理。 • https://zh.wikipedia.org/wiki/%E8%AE%A1%E7% AE%97%E6%9C%BA%E8%A7%86%E8%A7%89
  53. 53. 影像識別 http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf
  54. 54. 物件偵測 http://papers.nips.cc/paper/5207-deep-neural-networks-for-object-detection.pdf
  55. 55. 影像生成 http://arxiv.org/abs/1601.06759
  56. 56. 影像識別原理 • 同一個數字可能出現在圖片中的不同部分 • 但這些圖片所代表的數字相同
  57. 57. Local Connectivity 每個神經元只看到圖片中的一小區塊
  58. 58. Parameter Sharing 同一「種類」的神經元具有相同的weights
  59. 59. Parameter Sharing 不同「種類」的神經元具有不同的weights
  60. 60. 卷積神經網路 • Convolutional Layer depth widthwidthdepth weights weights height shared weight
  61. 61. 卷積神經網路 • Pooling Layer 1 3 2 4 5 7 6 8 0 0 4 4 6 6 0 0 4 5 3 2 no overlap no padding no weights depth = 1 7 8 6 4 Maximum Pooling Average Pooling
  62. 62. 卷積神經網路 Convolutional Layer Convolutional Layer Pooling Layer Pooling Layer Receptive Fields Receptive Fields Input Layer
  63. 63. 自然語言處理應用
  64. 64. 自然語言處理 • 自然語言處理是人工智慧和語言學領域的分支 – 探討如何處理及運用自然語言 • 自然語言理解系統 – 把自然語言轉化為電腦易於處理的形式。 • 自然語言生成系統 – 把電腦程式數據轉化為自然語言。 • https://zh.wikipedia.org/wiki/%E8%87%AA%E7%84% B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%8 6
  65. 65. 語意理解 https://papers.nips.cc/paper/5021-distributed-representations-of-words- and-phrases-and-their-compositionality.pdf
  66. 66. 機器翻譯 http://arxiv.org/abs/1409.0473
  67. 67. 問答系統 http://arxiv.org/pdf/1506.07285v5.pdf
  68. 68. 語意理解原理 • 根據所出現的上下文情境,可建構出每個字的語意向量。 山 峰 落 暮 語意相近的向量 夾角較小。 日落群峰西 日落橫峰影 日暮千峰裡 日落眾山昏 日暮西山雨 日暮春山綠
  69. 69. 用類神經網路產生語意向量 • 編碼(One-Hot Encoding) – 把字對應到一個n維度的向量,每個維度代表種個字。 – 每個字的向量中,只有一個維度為1,其餘皆為0。 – 每個字的向量都互相垂直。 山 峰 日 眾 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
  70. 70. 用類神經網路產生語意向量(word2vec) • 如何把One-Hot Encoding轉成語意向量? 語意向量,包含 周圍字的語意。 1. 2 1. 3 0 1 0 0 0 山 隨機取周圍的字, 當成輸出 日 眾山 0 0 1 0 1 0 0 0 0 0 0 1 日落眾山昏 用較小的Hidden Layer, 把向量壓縮。
  71. 71. 處理較長的文字片段:語言模型 • 語言模型(Language Model): – 給一個字串,算出此字串後有可能接續哪些字。 – 給一個字串,算出此字串在語料庫中出現的機率。 • 語言模型可用於產生 – 字詞 – 句子 – 整首詩
  72. 72. 遞歸神經網路語言模型 • 遞歸神經網路(Recurrent Neural Networks) Feedforward Neural Networks Recurrent Neural Networks 輸出值只跟現在時間 的輸入值有關 輸出值跟之前的輸入值 都有關
  73. 73. 遞歸神經網路語言模型 • 短期記憶 – 閱讀句子的時候,會記得此句曾出現過哪些字。 – Ex: 白日依山盡 白 日 依 n(白) n(n(白),日) n(n(n(白),日),依)
  74. 74. 遊戲對局應用
  75. 75. 下圍棋 http://www.nature.com/nature/journal/v529/n7587/fig_tab/nature16961_F1.html
  76. 76. 增強式學習 Reward (Feedback) Reward (Feedback) white win black win 76
  77. 77. 增強式學習 State: Reward (Feedback): Action: • Feedback is delayed. • No supervisor, only a reward signal. • Rules of the game are unknown. • Agent’s actions affect the subsequent state Agent Environment 77
  78. 78. Grid World Example 4 x 4 Grid World Terminal Reward =1 Terminal Reward = -1 Initial position Action Agent 78
  79. 79. Policy Gradient Method 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 One-hot encoding Probabilities of actions Sampling Execute action Neural Networks 79
  80. 80. 跨領域整合應用
  81. 81. 影像標題產生 http://arxiv.org/pdf/1411.4555v2.pdf
  82. 82. 從文字敘述產生影像 https://arxiv.org/pdf/1511.02793v2.pdf
  83. 83. 影像內容問答 http://arxiv.org/pdf/1505.00468v6.pdf
  84. 84. 影像識別&遊戲 http://arxiv.org/pdf/1312.5602v1.pdf
  85. 85. 語意理解&遊戲 https://arxiv.org/abs/1506.08941
  86. 86. 深度學習相關工具 CUDA CuDNN Tensorflow
  87. 87. CPU V.S GPU http://allegroviva.com/gpu-computing/difference-between-gpu-and-cpu/
  88. 88. CUDA CuDNN • 為 Deep Learning基本運算而做的GPU加速套件 • https://developer.nvidia.com/cudnn • 缺點:只有較低階的功能,且無法使用在沒有 GPU的平台上。
  89. 89. Tensorflow • https://www.tensorflow.org/ • TensorFlow 是 Google 開發的開源機器學習工具。 • 透過使用Computational Graph,來進行數值演算。 • 支援程式語言:python、C++ • 系統需求: – 作業系統必須為Mac或Linux – Python 2.7 或 3.3 (含以上)
  90. 90. Computational Graph
  91. 91. Tensorflow 機器學習Library (ex, scikit-learn) TensorFlow 從頭開始寫 彈性 技術門檻 把資料整理好後,剩 下的就直接呼叫API 自行定義 Computational Graph, 並交由TensorFlow計算。 自己推導微分公式, 自己寫整個流程 低 低 高 高
  92. 92. Tensorflow • 彈性 – 只要是可以用Computational Graph來表達的運算, 都可以用Tensorflow來解。 • 自動微分 – 自動計算Computational Graph微分後的結果。 • 平台相容性 – 同樣的程式碼可用CPU執行,亦可用GPU執行。
  93. 93. Example : Binary Classification https://github.com/ckmarkoh/ntc_deeplearning_tensorflow/blob/ master/intro/binaryClassification.ipynb
  94. 94. Example : Binary Classification nw1 w2 1 b y x1 x2 x1 x2 y x_data = np.random.rand(50,2) y_data = ((x_data[:,1] > 0.5)* ( x_data[:,0] > 0.5)) 模型 資料
  95. 95. Example : Binary Classification nw1 w2 1 b y x1 x2 訓練後
  96. 96. Tensorflow x_ = tf.placeholder(tf.float32,[None,2]) y_ = tf.placeholder(tf.float32,[None,1]) w = tf.Variable(tf.random_uniform([2,1], -1.0, 1.0)) b = tf.Variable(tf.zeros([1,1])) y = tf.nn.sigmoid(tf.matmul(x_,w)+b) cross_entropy = -tf.reduce_sum(y_*tf.log(y) + (1- y_) * tf.log(1 - y) ) optimizer = tf.train.GradientDescentOptimizer(0.1) train = optimizer.minimize(cross_entropy) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) for step in xrange(500): sess.run(train,feed_dict={x_:x_data,y_:y_data}) print sess.run(cross_entropy) sess.close() Computational Graph Session
  97. 97. Computation Graph # placeholder x_ = tf.placeholder(tf.float32,[None,2]) y_ = tf.placeholder(tf.float32,[None,1]) # variable w = tf.Variable(tf.random_uniform([2,1], -1.0, 1.0)) b = tf.Variable(tf.zeros([1,1])) # operations y = tf.nn.sigmoid(tf.matmul(x_,w)+b) # error function cross_entropy = -tf.reduce_sum(y_*tf.log(y) + (1- y_) * tf.log(1 - y) ) # trainer optimizer = tf.train.GradientDescentOptimizer(0.1) train = optimizer.minimize(cross_entropy) # initalizer init = tf.initialize_all_variables()
  98. 98. Session sess = tf.Session() sess.run(init) for step in xrange(500): sess.run(train,feed_dict={x_:x_data,y_:y_data}) print sess.run(cross_entropy) sess.close()
  99. 99. Demo • 影像識別:GoogLeNet https://github.com/ckmarkoh/ntc_deeplearning_tensorflow/bl ob/master/intro/googlenet.ipynb
  100. 100. Demo • 電腦作畫:Neural Art https://github.com/ckmarkoh/neuralart_tensorflow
  101. 101. 講師資訊 • Email: ckmarkoh at gmail dot com • Blog: http://cpmarkchang.logdown.com • Github: https://github.com/ckmarkoh Mark Chang • Facebook: https://www.facebook.com/ckmarkoh.chang • Slideshare: http://www.slideshare.net/ckmarkohchang • Linkedin: https://www.linkedin.com/pub/mark-chang/85/25b/847 • Youtube: https://www.youtube.com/channel/UCckNPGDL21aznRhl3EijRQw 101

×