Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

これから始める人のためのディープラーニング基礎講座

6 359 vues

Publié le

このスライドは、2018 年 4 月 24 日 (火) にベルサール高田馬場にて開催の NVIDIA Deep Learning Seminar 2018における最初のセッション、ディープラーニング ソリューションアーキテクト 山崎和博による「これから始める人のためのディープラーニング基礎講座」の資料です。

Publié dans : Technologie
  • Visit this site: tinyurl.com/sexinarea and find sex in your area for one night)) You can find me on this site too)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Sex in your area for one night is there tinyurl.com/hotsexinarea Copy and paste link in your browser to visit a site)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Girls for sex are waiting for you https://bit.ly/2TQ8UAY
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Meetings for sex in your area are there: https://bit.ly/2TQ8UAY
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • Best site for flirting and sex in your area you can find there: https://bit.ly/2SlcOnO
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

これから始める人のためのディープラーニング基礎講座

  1. 1. 山崎和博 これから始める人のための ディープラーニング基礎講座 NVIDIA Deep Learning Solution Architect
  2. 2. AGENDA ディープラーニングとは ニューラルネットの基本構造と処理の流れ 性能改善のための考え方・テクニック さまざまなネットワークと応用例 ディープラーニングを実装するために
  3. 3. ディープラーニングとは
  4. 4. 4 様々な分野で活用されるディープラーニング インターネットとクラウド 画像分類 音声認識 言語翻訳 言語処理 感情分析 推薦 メディアとエンターテイメント 字幕 ビデオ検索 リアルタイム翻訳 機械の自動化 歩行者検出 白線のトラッキング 信号機の認識 セキュリティと防衛 顔検出 ビデオ監視 衛星画像 医学と生物学 癌細胞の検出 糖尿病のランク付け 創薬
  5. 5. ディープラーニングは機械学習の一分野 5 人工知能(AI) ディープラーニング (深層学習) マシンラーニング (機械学習)
  6. 6. ディープラーニングの歴史 機械学習の一手法として 6 2012:画像認識コンペでの圧勝 2011:音声認識コンペでの圧勝 2006:事前学習と autoencoderによる 多層ネットワークの学習 1992~:非線形 SVM等の流行 1989:畳み込み ニューラルネットワークの提案 1986:誤差逆伝播法の提案 1980:ネオコグニトロンの提案 1969:(単純)パーセプトロンの 限界が明らかになる 1958:パーセプトロンの発表 1940~50年代: 人工知能の提唱 第一次ブーム: ~1970 第二次ブーム: ~1990 第三次ブーム: ~20??
  7. 7. ディープラーニングとは 多数の層から構成されるニューラルネットワーク 7 入力層 出力層 隠れ層 十分なトレーニングデータを与え学習させることで 複雑な問題を解くことができるようになる
  8. 8. ディープラーニングを加速する3つの要因 8 “Google’s AI engine also reflects how the world of computer hardware is changing. (It) depends on machines equipped with GPUs… And it depends on these chips more than the larger tech universe realizes.” DNN GPUBIG DATA
  9. 9. ニューラルネットワークの基本と処理の流れ
  10. 10. 人工ニューラルネットワーク 人工ニューロンを基本単位とするネットワーク構造 10 w1 w2 w3 x1 x2 x3 y y=w1x1+w2x2+w3x3 人工ニューロン(パーセプトロン) 人工ニューラルネットワーク 人工ニューロンを たくさんの層として並べる 各層にそれぞれ 重みパラメータを持つ
  11. 11. 人工ニューラルネットワーク 活性化関数 11 w1 w2 w3 x1 x2 x3 y=w1x1+w2x2+w3x3 人工ニューロン(パーセプトロン) y F z=F(y) F: activation function 活性化関数 (activation function) z 次の層 tanh ReLU sigmoid
  12. 12. 人工ニューラルネットワーク 基本構造のまとめ 12 各ノードは 入力された値を合計して出力 各ユニット(ノードとも)の出力は、 各層の重みと積算され次の層へ 活性化関数による変換
  13. 13. ディープラーニングの2つのフェーズ 13 モデル 犬 推論(inference): 蜜穴熊 学習(training): モデル 犬 狸 猫 フィードバックにより 重みを調整 学習した結果を用いる 犬 猫
  14. 14. ディープラーニングの学習フロー 14 トレーニングデータ 出力 “dog” “cat” “human” “tiger” 正解ラベル “cat” “dog” “monkey” “lion” 1.入力されたデータに したがい結果を出力 誤差 2.期待結果との違い を誤差として計算 4.誤差が小さくなる まで繰り返す 3.誤差を用いて ネットワークを更新
  15. 15. ディープラーニングの学習フロー 15 トレーニングデータ 1.入力されたデータに したがい結果を出力 4.誤差が小さくなる まで繰り返す 3.誤差を用いて ネットワークを更新 出力 “dog” “cat” “human” “tiger” 正解ラベル “cat” “dog” “monkey” “lion”誤差 2.期待結果との違い を誤差として計算
  16. 16. 誤差の計算 16 出力 “tiger” 出力 “tiger” 80% “lion” 20% “tiger” “lion” 誤差 期待結果との差などを 誤差として計算 出力 80% 20% 正解ラベル 0% 100% トレーニングデータ
  17. 17. ディープラーニングの学習フロー 17 トレーニングデータ 1.入力されたデータに したがい結果を出力 4.誤差が小さくなる まで繰り返す 2.期待結果との違い を誤差として計算 出力 “dog” “cat” “human” “tiger” 正解ラベル “cat” “dog” “monkey” “lion”誤差 3.誤差を用いて ネットワークを更新
  18. 18. 重み更新 勾配法による更新 18重み w 誤差 E 最適解 現在値 誤差を最小化する 重みが最適解 ニューラルネットワークの 内部状態(=重み)に応じて 誤差は変動
  19. 19. 重み更新 勾配法による更新 19重み w 誤差 E 最適解 傾きが正(=右上がり) なら値を減少させる 傾きが負(=右下がり) なら値を増加させる wn wm
  20. 20. 重み更新 勾配法による更新 20重み w 誤差 E 最適解 傾きが正(=右上がり) なら値を減少させる 傾きが負(=右下がり) なら値を増加させる wn wm 傾き(=勾配ベクトル)により 重みを逐次更新
  21. 21. 重み更新 勾配法による更新 21重み w 誤差 E wnwn+1 wn+2 最適解 (ゴール) 少しずつ更新
  22. 22. ディープラーニングの学習フロー 22 トレーニングデータ 1.入力されたデータに したがい結果を出力 4.誤差が小さくなる まで繰り返す 2.期待結果との違い を誤差として計算 出力 “dog” “cat” “human” “tiger” 正解ラベル “cat” “dog” “monkey” “lion”誤差 3.誤差を用いて ネットワークを更新
  23. 23. 誤差逆伝播法 処理のイメージ 23 誤差 誤差を逆方向に伝えて、各層の重み行列を更新する トレーニングデータ
  24. 24. 誤差逆伝播法 24 重み に関する 誤差の傾き を更新したいある層の重み 直接計算することが 容易ではない
  25. 25. 誤差逆伝播法 25 直前の層の出力 に関する誤差の傾き 次の層への出力 重み に関する 誤差の傾き に関する誤差の傾き さらに次の層への出力 を更新したいある層の重み
  26. 26. ディープラーニングの学習フロー 26 トレーニングデータ 1.入力されたデータに したがい結果を出力 2.期待結果との違い を誤差として計算 出力 “dog” “cat” “human” “tiger” 正解ラベル “cat” “dog” “monkey” “lion”誤差 3.誤差を用いて ネットワークを更新 4.誤差が小さくなる まで繰り返す
  27. 27. 学習プロセスの単位: ミニバッチ 27 全トレーニングデータ(バッチ) ミニバッチ#3 ミニバッチ#2 ミニバッチ#1 ミニバッチ#1 誤差 誤差 誤差 誤差 ミニバッチ単位で 誤差を計算し更新
  28. 28. 学習プロセスの単位: エポック 28 全トレーニングデータ(バッチ) ミニバッチ#3 ミニバッチ#2 ミニバッチ#1 ミニバッチ#3 誤差 誤差 誤差 誤差 ミニバッチ#2 誤差 誤差 誤差 誤差 ミニバッチ#1 誤差 誤差 誤差 誤差 全トレーニングデータを使った1サイクルを エポック(epoch)と呼ぶ
  29. 29. 性能改善のための考え方・テクニック
  30. 30. 学習経過の確認 30 トレーニングデータから計算した 誤差の変化量が一定範囲以下になる =「学習が収束」 誤差 エポック training 学習が収束すると、うまく入力に対して予測できるニューラルネットになっている…… とは限らない
  31. 31. 学習結果の妥当性チェック 31 データを訓練データと検証データに分割し、学習結果を評価することが重要 収集したデータ 訓練データ(training data) 重みの更新 (学習)に使用 検証データ(validation data) 汎化性能の 確認に使用
  32. 32. 学習結果の妥当性チェック 32 エポック training validation 誤差 エポック training validation 誤差 学習がうまく進んだ場合 →訓練データ、検証データとも 誤差が下がっていく 学習が失敗した場合 →訓練データのみ誤差が下がり、 検証データは十分な精度が出ない 右の状態は「過学習(overfitting)」などと表現され、汎化性能が低い状態 (汎化性能=訓練データに含まれていないデータへの予測性能)
  33. 33. 学習率 重みの更新量を調整するパラメータ 33重み w 誤差 E wnwn+1 wn+2 学習率が大きすぎると 最適解付近を往復 誤差 E wnwn+1wn+2 学習率が小さすぎると 学習の進みが遅い
  34. 34. 学習率 局所解の存在 34 スタート 重み w 誤差 E 局所解 ゴール? 最適解 真のゴール
  35. 35. 学習率 局所解の存在 35 最適解 3 2 5 6 スタート 重み w 誤差 E 7 8 大きな学習率で 大きく更新 ゴール 途中から学習率を下げ 小さく更新 41
  36. 36. DROPOUT 過学習回避のテクニック 36 z1 z2 z3 x1 x2 x3 y1 y2 y3 y4 y1 y4 隠れ層の一部ノードを ランダムに無効化
  37. 37. BATCH NORMALIZATION 学習を収束しやすくするテクニック 37 x1 x2 x3 y1 y2 y3 y4 z1 z2 z3 bn1 bn2 bn3 bn4 隠れ層などへの入力を ミニバッチ単位で正規化
  38. 38. その他のテクニック • Pretraining • Fine-tuning(Transfer learningを一部含む) • Optimizers(AdaGrad, Adam, etc...) • Learning rate scheduling • など…… 深いネットワークを学習するために 38
  39. 39. さまざまなネットワークと応用例
  40. 40. 基本的なネットワーク 多層ニューラルネットワーク 40 前層の全ノードが次層のノードに 接続されている状態 ↓ 全結合している
  41. 41. 畳み込みニューラルネットワーク (CONVOLUTIONAL NEURAL NETWORK) 画像を扱うことに長けたネットワーク 41 畳み込み層& プーリング層 全結合層
  42. 42. 畳み込みニューラルネットワーク (CONVOLUTIONAL NEURAL NETWORK) 重み共有による局所構造の獲得 42 生データ 低レベルの特徴 中間レベルの特徴 高レベルの特徴 入力 結果
  43. 43. CNN: 畳み込み層 43 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 2 2 1 1 1 0 1 2 2 2 1 1 0 1 2 2 2 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 -4 1 0 -8 入力ピクセル コンボリューション カーネル 出力ピクセル 入力とカーネルとで 要素同士の積を計算し、 全て足したものが出力 カーネルの重みも 学習によって調整される
  44. 44. CNN: 畳み込み層 44 vdumoulin/conv_arithmetic, https://github.com/vdumoulin/conv_arithmetic 入力 コンボリューションカーネル 出力
  45. 45. CNN: 畳み込み層 45 元画像 畳み込みカーネル 出力 畳み込みの計算例
  46. 46. CNNの応用 46 画像分類 物体検出 領域分割/ セマンティックセグメンテーション などなど……
  47. 47. リカレントニューラルネットワーク (RECURRENT NEURAL NETWORK) 系列データを自然に扱うためのネットワーク 47 隠れ層の出力を 隠れ層の入力として戻す 出力層 隠れ層 入力層
  48. 48. リカレントニューラルネットワーク (RECURRENT NEURAL NETWORK) 系列データを自然に扱うためのネットワーク 48 出力層 隠れ層 入力層 展 開 出力層 隠れ層 入力層 出力層 隠れ層 入力層 t = 1 t = 2 前の出力を次の入力に することで、依存関係を考慮 長い系列ほど深い ネットワークになる
  49. 49. LSTM: LONG SHORT-TERM MEMORY RNNの欠点を解消するネットワーク 49 出力層 隠れ層 入力層 RNNの隠れ層を LSTMブロックで置き換え いくつかのゲートによって 長期の依存関係を 学習できるように
  50. 50. RNN/LSTMの応用 50 系列データ予測 次が上がるのか 下がるのかを予測 異常予測 定常的なふるまいと 異なる動作を予測 などなど……
  51. 51. ディープラーニングを実装するために
  52. 52. ディープラーニングフレームワーク GPUで高速化されたフレームワークが、アルゴリズムの実装を強力にサポート 52 ディープラーニング フレームワーク https://developer.nvidia.com/deep-learning-frameworks Mocha.jl
  53. 53. NVIDIA DEEP LEARNING プラットフォーム 53 COMPUTER VISION SPEECH AND AUDIO BEHAVIOR Object Detection Voice Recognition Translation Recommendation Engines Sentiment Analysis DEEP LEARNING cuDNN MATH LIBRARIES cuBLAS cuSPARSE MULTI-GPU NCCL cuFFT Mocha.jl Image Classification ディープラーニング SDK フレームワーク アプリケーション GPU プラットフォーム CLOUD GPU Tesla V100 Tesla P40/P4 Jetson TX2 SERVER DGX-1 TensorRT DRIVEPX2 CUDA
  54. 54. どのフレームワークを使うべきか? 用途などに応じて使い分ける 54 C++? Python? Define-and-run? Define-by-run? Popular? Unpopular? ? ? etc…
  55. 55. 計算グラフによるネットワーク構築 多くのフレームワークに共通する考え方 55 input conv1 h1 pool1 h2 conv2 h3 pool2 h4 fc1 h5 relu1 h6 fc2 h7 softmax prob. loss label error 計算 データ
  56. 56. 計算グラフによるネットワーク構築 多くのフレームワークに共通する考え方 56 input conv1 h1 pool1 h2 conv2 h3 pool2 h4 fc1 h5 relu1 h6 fc2 h7 softmax prob. loss label error 計算 データ 順方向に処理: forward propagation Forward propagationで行われる処理 • ネットワークに入力データ(=input)を渡して、 順番に計算を進める 主に学習時のみの処理 • 教師データ(=label)と、ネットワークの出力 (=prob.)から、目的関数(=loss)を計算し誤 差(=error)として定量化
  57. 57. 計算グラフによるネットワーク構築 多くのフレームワークに共通する考え方 57 input conv1 h1 pool1 h2 conv2 h3 pool2 h4 fc1 h5 relu1 h6 fc2 h7 softmax prob. loss label error 計算 データ Backward propagationで行われる処理 • Forwardで計算した誤差を使って、出力層側 から各層の勾配を計算 (計算完了後に、各層の重みを更新) 逆方向に処理: backward propagation
  58. 58. 計算グラフの構築方法 Define-and-run vs. Define-by-run 58 # Define-and-Run # 計算グラフを構築後に、計算を実行 x = Variable(‘x’) w = Variable(‘w’) y = x * w for xi, wi in data: eval(y, (xi, wi)) # Define-by-Run # 計算グラフの構築と実行が同時 for xi, wi in data: x = Variable(xi) w = Variable(wi) y = x * w この時点では、 何も計算されていない この時点で、 計算結果を出力できる
  59. 59. 計算グラフの構築方法 Define-and-run vs. Define-by-run 59 # Define-and-Run # 計算グラフを構築後に、計算を実行 x = Variable(‘x’) w = Variable(‘w’) y = x * w for xi, wi in data: eval(y, (xi, wi)) # Define-by-Run # 計算グラフの構築と実行が同時 for i, (xi, wi) in enumerate(data): x = Variable(xi) w = Variable(wi) if i % 2 == 0: y = x * w else: y = x + w データに応じた 処理の分岐が楽 処理の分岐には 工夫が必要
  60. 60. 計算グラフの構築方法 Define-and-run vs. Define-by-run 60 # Define-and-Run # 計算グラフを構築後に、計算を実行 x = Variable(‘x’) w = Variable(‘w’) y = x * w for xi, wi in data: eval(y, (xi, wi)) # Define-by-Run # 計算グラフの構築と実行が同時 for i, (xi, wi) in enumerate(data): x = Variable(xi) w = Variable(wi) if i % 2 == 0: y = x * w else: y = x + w
  61. 61. ソフトウェアスタックの管理は大変 例: フレームワークを利用するアプリケーションのソフトウェアスタック 61 OS NVIDIA driver CUDA cuDNN cuBLAS … Applications Frameworks
  62. 62. ソフトウェアスタックの管理は大変 例: フレームワークを利用するアプリケーションのソフトウェアスタック 62 OS NVIDIA driver CUDA cuDNN 7cuBLAS… Applications FrameworkA 1.1 OS NVIDIA driver CUDA cuDNN 6 cuBLAS … Applications FrameworkB 1.1 フレームワークごとにGPUへの 対応状況が異なる場合、 複数バージョンが必要
  63. 63. ソフトウェアスタックの管理は大変 例: フレームワークを利用するアプリケーションのソフトウェアスタック 63 NVIDIA driver OS FrameworkA container CUDA cuDNN 7cuBLAS… FrameworkA 1.1 FrameworkB container CUDA cuDNN 6 cuBLAS … FrameworkB 1.1 うまくまとめられれば、 複数バージョンの 共存を容易にできる
  64. 64. 64 NVIDIA DOCKER コンテナによるポータビリティ コンテナのメリット: GPU 対応アプリケーションの展開を容易に 個々のフレームワークやアプリケーションをコンテナで隔離 同一モジュールの異なるバージョンが混在可能 複数環境でのアプリケーション共有・コラボレーションを促進
  65. 65. SUMMARY
  66. 66. KEY TAKEAWAYS 1. ディープラーニングは、ニューラルネットワークがベースとなる手法 2. ネットワークの学習には、主に勾配法と誤差逆伝播法が用いられる 3. 学習が適切に行われたか、十分に検証することが重要 4. データの構造や特性に応じて、さまざまな構造のネットワークがある 5. フレームワークなどを利用することで、実装を効率化することができる ディープラーニングの実践に向けて 66
  67. 67. www.nvidia.com/dli

×