Upgrade to Pro — share decks privately, control downloads, hide ads and more …

uncommon-topics-on-machine-learning

 uncommon-topics-on-machine-learning

ryo nakamaru

May 18, 2017
Tweet

More Decks by ryo nakamaru

Other Decks in Technology

Transcript

  1. あまり本には載っていない機械学習の話
         Meetup #02 @ 2017.05.18

    View Slide

  2. @pottava
    ・機械学習の “サービス化・運用手法” を研究中
    ・AWS Certified SA, DevOps Engineer Pro
    ・Google Certified Professional - Cloud Architect

    View Slide

  3. 株式会社スピンフ

    View Slide

  4. ・クラウドすっごく得意。主に AWS と GCP。
    ・Docker は 3 年前から本番運用してノウハウ豊富
    ・NVIDIA GPU の各種環境構築ならお任せあれ
    受託開発・運用支援してます
    4

    View Slide

  5. GTC 2017 行ってきました
    (最後にお土産じゃんけんしましょう)

    View Slide

  6. 本題

    View Slide

  7.   機械学習でなにが変わるの?
      機械学習のおさらい
    • 機械学習とは
    • 機械学習と深層学習
      学習
    • データの準備
    • 試行錯誤 / POC
    • 学習
      推論
    今日お話しすること
    7

    View Slide

  8. ػցֶशͰͳʹ͕มΘΔͷʁ

    View Slide

  9. ࠓͲΜͳ͜ͱʹԠ༻͞Ε͍ͯΔͷ͔
    9
    https://www.youtube.com/watch?v=SUNPrR4o5ZA

    View Slide

  10. ΄ΜͷҰྫ
    10
    • 医療診断サポート、医薬品の研究・試験の後押し
    • 農産物の収穫量増加、肥料や農薬の抑制
    • 小売業での顧客購入サポート
    • 自動運転、周囲のリアルタイムな状況把握
    • スポーツやゲームでの分析、戦略立案
    • 作曲
    • 自動翻訳、字幕付与

    View Slide

  11. 社内導入

    View Slide

  12. まずは関係者 みんなで 基本 を抑えたい。大切。
    ・何に向いていて、何に向いていないのか
    ・どれだけ投資すれば何が得られるのか
    ・そもそもそれは正しい問い?何を OKR, KPI にするか
    ・これまでの製品開発との違いは何か
    αʔϏεʹಋೖ͢Δʹ͸
    12

    View Slide

  13. 機械学習サービスを提供するための最初の一歩..
    Biz: 基本を押さえ、顧客体験向上への応用を考えてみる
    Ops: これまでと毛色の違う学習・サービス基盤を知る
    Dev: 実際に学習推論を動かしてみる、基礎技術を学ぶ
    ͋ͳͨͷ࢓ࣄ͸ͳΜͰ͔͢ʁ
    13

    View Slide

  14. 今日ここに来ているあなたはきっと、リード役。
    まずはクラウドの API を使ってみたり
    機械学習や数学の本を買って読んでみたり
    実際にコードを書いてみたりしましょう!!
    ͱ͸ݴ͍ͭͭ
    14

    View Slide

  15. ධ൑ͷ͍͍ຊɺ࠷ۙ·ͨͰͨΑ
    15
    Hands-On Machine Learning with Scikit-Learn and TensorFlow
    Concepts, Tools and Techniques to Build ”Intelligent Systems”

    View Slide

  16. 機械学習のおさらい

    View Slide

  17. 機械学習

    View Slide

  18. 何か特定の問題があるとして。
    コンピュータに 客観的事実のみ を与え
    具体的な回答を得る、またはそれを改善すること。
    機械学習とは
    18

    View Slide

  19. y = ax + b
    a, b を 人間が事前に決める のが一般的プログラミング。
    実データから コンピュータに計算させる のが機械学習。
    機械学習とは
    19

    View Slide

  20. y = ax + b
    例)
    x : Pairs で最近見かけたよさげな人の 特徴
    y : このひとと付き合ったら幸せになれるか
    機械学習とは
    20

    View Slide

  21. y = ax + b
    例)
    人間「 y = 0.7 * 性格x + 0.2 * 外見x + 0.1 * 収入x でしょ」
    機械「それでは精度が低い。過去のデータからいえば
    ɹɹɹy = 0.4 * 性格x + 0.1 * 外見x + 0.5 * 収入x が適切」
    機械学習とは
    21

    View Slide

  22. y = ax + b
    a, b を決めるための作業を 学習、
    決まった a, b のことを 学習済みモデル と言う。
    学習済みモデルを使って
    実際に x を投入し y を得るのが 推論。
    学習と推論
    22

    View Slide

  23. y = ax + b
    ビジネス上重要なのは、優れた推論 ができるか。
    優れた推論をするためには、優れたモデルが必要。
    優れた a, b を決めるための 学習 が、腕の見せどころ。
    学習と推論
    23

    View Slide

  24. y = ax + b
    データから a, b を求める方法はたくさんある。
    解きたい問題によって、適切な方法を選ぶ 必要がある。
    学習アルゴリズム
    24

    View Slide

  25. y = ax + b
    データから a, b を帰納的に求める具体的な方法のこと。
    • A / B どっち?問題 → ロジスティック回帰
    • 売上を予測したい → 線形回帰
    • 顧客をセグメント分けしたい → k 平均法
    • レコメンドを出したい → 協調フィルタリング
    • …
    学習アルゴリズム
    25

    View Slide

  26. ユーザ情報が集めやすい(?)恋愛エリア。
    さっきの学習アルゴリズム、使えそうですよね?
    • この人との相性はよさそう?悪そう?
    • この人の 5 年後の収入、どのくらいになりそう?
    • 亭主関白ではなく、かつ家庭を大切にするタイプであってほしい
    • 結局誰とならうまくいきそうなの!?怒
    恋愛 × 機械学習
    26

    View Slide

  27. 深層学習

    View Slide

  28. ディープラーニング。
    多層構造のネットワークを用いた機械学習 のこと。
    例) 4 層のネットワーク例
    深層学習とは
    28

    View Slide

  29. 青丸に値を入力すると、緑丸に答えが出力される。
    例)安い、美味しい → 買うべき 0.9、買わないべき 0.1
    深層学習とは
    29

    View Slide

  30. 2 層目以降の各ノード○が、前の層からの入力を基に
    y = ax + b を使って自分自身の値を計算する。
    深層学習とは
    30

    View Slide

  31. よりもっともらしい答えを返すために
    各ノードの a, b を事前に決めるのが、学習。
    全ノードの a, b が決まれば、それが 学習済みモデル。
    深層学習とは
    31

    View Slide

  32. 機械学習全般、解決したい問題ごとに選択 するのが
    学習アルゴリズム。深層学習であっても同じ。
    例)
    • このきゅうりは S? M? L? → 畳み込みニューラルネットワーク (CNN)
    • 今の発言はポジティブ? → 再帰型ニューラルネットワーク (RNN)
    • 人が飛び出してきた!車を減速!! → あれこれ組み合わせ
    • …
    深層学習アルゴリズム
    32

    View Slide

  33. 美しい組み合わせの例、AlphaGo。
    (論文: http://www.nature.com/nature/journal/v529/n7587/abs/nature16961.html )
    • 4 つのディープニューラルネットワークを利用
    • それぞれ 初級者 pπ / 中級者 pσ / 上級者 pρ / 情勢判断 vθ といった位置付け
    • pπ は人間の 800 万の盤面データを元に学習。精度は低いが高速に解を得る。
    • pσ は 13 層の CNN。3,000 万盤面を 50 GPU で 3.4 億ステップ、3 週間学習。
    プロの指し手を 57.0% の精度で予想できる。
    • pρ は 50 GPU で 1 日かけ128 万回自己対戦。既存ソフトに 85% の圧倒的勝率。
    • vθ は pσ でランダムに 3,000 万盤面を生成し、pρ で 1 億 6,000 万回ロールアウトした勝率を
    教師データに、50 GPU で一週間 5,000 万回確率勾配降下法を実施。
    • 実対戦では1,202 CPU + 176 GPUが使われ、pσ で次の手選択、vθ で盤面評価。
    • 勝率はいいが理詰めの pρ より、人間の癖を学んだ pσ を使ったか。
    • 勝因は pρ の徹底的な強化学習に加え、モンテカルロ木探索と CNN の組合せか。
    深層学習アルゴリズム
    33

    View Slide

  34. 実践的なネットワーク、
    実際にはどれくらいディープなレイヤーなの?
    例) 畳み込みニューラルネットワークの一種、ResNet は 152 層
    深層学習アルゴリズム
    https://research.googleblog.com/2016/08/improving-inception-and-image.html
    34

    View Slide

  35. お、おう・・
    モデルとして決める変数どれだけあるの・・ 

    学習にどれだけ時間かかるの・・
    というか、レイヤー定義するだけで 心折れそう。
    自前で実装?まあ無理ですよね・・
    深層学習アルゴリズム
    35

    View Slide

  36. そこで

    View Slide

  37. 深層学習フレームワーク

    View Slide

  38. 利用者はアルゴリズムの実装をすることなく
    各種パラメタの指定だけで学習・推論ができる。
    例)TensorFlow による畳み込みニューラルネットワーク (CNN)
      どんな順序でどんな層を経由するか、直感的にわかる
    深層学習フレームワーク
    38

    View Slide

  39. アルゴリズムの 実装はその道のプロにお任せ しつつ・・
    私たちはやりたいことだけできる時代。
    例)画像に写っている人が知りたい
    → TensorFlow で CNN を使えばわりと簡単にできる!
    深層学習フレームワーク
    39

    View Slide

  40. TensorFlow、MXNet、CNTK、Caffe2、Chainer・・
    それぞれの特徴を鑑み、選択する。
    • 対応アルゴリズム
    • 動作端末・環境
    • 計算速度 / リソース利用効率
    • 利用可能な言語 / 手続的・宣言的
    • スケーラビリティ / 複数 GPU、並列サーバ対応
    • 情報の豊富さ / エコシステム / 商用サポート
    • …
    深層学習フレームワーク
    40

    View Slide

  41. クイズです

    View Slide

  42. 「今メールしている相手は本当に
    女性なのか、否か・・」
    ※ そもそもこの問いが生まれること自体
     登壇者の経験や人間性を疑うきっかけになり得ますが
     みなさん大人です。あまり深く考えないでください。

    View Slide

  43. 次のどれを使う・・?

    View Slide

  44. ϩδεςΟοΫճؼ
    ઢܗճؼ
    ৞ΈࠐΈχϡʔϥϧωοτϫʔΫ
    Ҩ఻తϓϩάϥϛϯά

    View Slide

  45. ブッブー

    View Slide

  46. そんな心配をしなくてすむ
          を使う、が正解です

    View Slide

  47. さて

    View Slide

  48. 学習の流れを再確認

    View Slide

  49. 機械学習の流れ
    2. データ前処理 3. 学習 4. 推論
    1. データ収集
    49

    View Slide

  50. 以降、この流れに沿って詳細をみていきましょう。
    機械学習の流れ
    2. σʔλલॲཧ 3. ֶश 4. ਪ࿦
    1. σʔλऩू
    50

    View Slide

  51. 学習

    View Slide

  52. データの準備

    View Slide

  53. 1 データの収集
    自社製品に沿ったデータ がなによりも有用!!
    とはいえ、まず機械学習を試してみるだけなら
    一般公開されたデータ を活用するのが簡単です。
    53

    View Slide

  54. 一般公開された画像集
    研究もコンテストも盛んで、たくさんあります。
    • MNIST
      http://yann.lecun.com/exdb/mnist/
    • CIFAR-10 & CIFAR-100
      https://www.cs.toronto.edu/~kriz/cifar.html
    • ImageNet
      http://www.image-net.org/
    • …
    54

    View Slide

  55. AWS Public Datasets
    https://aws.amazon.com/jp/public-datasets/
    55

    View Slide

  56. Public Datasets | Google Cloud Platform
    https://cloud.google.com/public-datasets/
    56

    View Slide

  57. Public data sets for Azure analytics
    https://docs.microsoft.com/en-us/azure/sql-database/sql-database-public-data-sets
    57

    View Slide

  58. Datasets « Deep Learning
    http://deeplearning.net/datasets/
    58

    View Slide

  59. http://www.data.go.jp/data/dataset
    59
    こんなのもある

    View Slide

  60. AWS 関連サービス群

    View Slide

  61. データ収集に便利なサービス
    • AWS IoT
    • Amazon Kinesis Streams
    • Amazon CloudWatch Logs
    • Amazon S3
    • Amazon DynamoDB
    • Amazon Cognito + AWS SDK
    • Amazon API Gateway
    61

    View Slide

  62. 2 データの前処理
    Python だけで済むならそれでいいものの、
    複数のデータソースからメタデータを取得したり
    大規模なファイルからデータを抜き出すなら
    専用ソフトウェア や サービス を使わないとつらい。
    62

    View Slide

  63. AWS 関連サービス群

    View Slide

  64. データ前処理に便利なサービス
    • Amazon Mechanical Turk
    • Amazon Athena
    • AWS Lambda / Step Functions
    • AWS CloudWatch Events
    • Amazon EMR / Batch / EC2
    64

    View Slide

  65. Amazon Mechanical Turk
    65
    アメリカではとても
    流行っているとのこと・・
    メタデータ付与なら・・・!

    View Slide

  66. 試行錯誤 / POC

    View Slide

  67. 試行錯誤に便利なものたち

    View Slide

  68. 超重要ツール。(これに慣れると世界が広がります!)
    主に科学技術計算や機械学習の業界で
    あれこれ 試行錯誤したり、それを誰かと共有するための 

    ツール。多くの研究者やエンジニアに愛用されている。
    git などでバージョン管理するのも容易!
    Jupyter notebook
    68

    View Slide

  69. ֶशʹ͸ͱͯ΋͕͔͔࣌ؒΔ΋ͷɻ
    ߦྻܭࢉ͕ಘҙͳ GPU Λ࢖͑͹͕࣌ؒઅ໿Ͱ͖·͢ʂ
    ࣗ୐ͷ PC ʹ͍ࢗͬͯ͞Δ GPU ͕࢖͑Δ͔΋ɾɾʁ
    (NVIDIA) GPU
    69

    View Slide

  70. (NVIDIA) GPU
    70
    ݱࡏ AWS Ͱ GPU Λ࢖͏ͱ͖ͷ Tips Λ·ͱΊ·ͨ͠
    https://speakerdeck.com/pottava/tesorflow-v1-dot-0-on-ec2

    View Slide

  71. ࢼߦࡨޡ͢Δʹ͸͜Ε΋ͱͯ΋ศརͰ͢ɻ
    ϥΠϒϥϦ͕ͲΜͲΜόʔδϣϯߋ৽ͯ͠΋େৎ෉ʂ
    Ϋϥ΢υ্ʹֶशɾਪ࿦Λ࣋ͬͯߦ͘ͱ͖ʹ΋༗༻ʂ
    docker run -it --rm -p 8888:8888 jupyter/tensorflow-notebook
    Docker
    71

    View Slide

  72. NVIDIA の Docker イメージ
    72
    以下のような継承関係のイメージが公開されています。
    機械学習の動作要件に適したイメージをベースに。
    独自 Docker イメージのビルドもできます。
    cuda:8.0-runtime
    ubuntu:14.04
    cuda:8.0-devel
    cuda:8.0-cudnn5-runtime
    cuda:8.0-cudnn5-devel caffe (v0.15) digits (v5.0)

    View Slide

  73. AWS 関連サービス群

    View Slide

  74. 試行錯誤フェーズに便利なサービス
    • Amazon Machine Learning
    • Amazon EMR / EC2
    ‣ p2 / g2 (GPU) instances
    ‣ Deep Learning AMI
    • Amazon EBS / S3 / ECR
    74

    View Slide

  75. 二項分類、複数クラス分類、線形回帰のマネージドサー
    ビス。データの取り込みから、学習・推論が行えます。
    サーバの管理が不要なため、スケーラビリティや推論
    サービスの可用性は気にせず OK!
    Amazon Machine Learning
    75

    View Slide

  76. GPU インスタンス
    76
    AWS には 2 種類あります(現行世代)
    g2 系: NVIDIA GRID K520
        1,536 CUDA cores / GPU が 2 つで 1 つの K520
        g2 で使える GPU は本来グラフィック・ゲーミング用途
    p2 系: NVIDIA Tesla K80
        倍精度演算最大 2.91 TFLOPS、単精度演算最大 8.74 TFLOPS
        2,496 CUDA cores / GPU が 2 つで 1 つの K80
        p2 の GPU は汎用コンピューティング用途

    View Slide

  77. Amazon DeepLearning AMI
    77
    全部入り AMI、あります!!
    TensorFlow 1.0, MXNet, Caffe2, CNTK, Theano, Torch。
    CUDA 7.5, cuDNN 5.0, Anaconda も。

    View Slide

  78. 学習

    View Slide

  79. 3 学習
    もっとも重要、かつものすごく時間がかかるところ。
    自社のモデルを作るのはとても大変だが
    オリジナルのものができれば貴重な知財に。
    クラウドの様々なサービスがサポートしてくれます。
    79

    View Slide

  80. AWS 関連サービス群

    View Slide

  81. 学習フェーズに便利なサービス
    • Amazon EMR / Batch / EC2
    ‣ p2 / g2 (GPU) instances
    ‣ Deep Learning AMI
    ‣ Spot Fleet / AutoScaling Group
    • Amazon Machine Learning
    • Amazon EFS / EBS / S3 / ECR
    • Amazon SQS
    81

    View Slide

  82. AWS Batch
    82
    https://www.youtube.com/watch?v=UR8BI2Exkbc
    科学技術計算・ハイパフォーマンスコンピューティング
    用途で真価を発揮する、大規模なスケール、ジョブの依
    存定義が可能なマネージド並列分散バッチ処理基盤。

    View Slide

  83. MXNet Λ࢖͍ EC2 Ϋϥελ্Ͱֶश͢Δྫ
    AWS Batch
    https://aws.amazon.com/jp/blogs/news/deep-learning-on-aws-batch/
    83

    View Slide

  84. Google ファミリーなら..
    84
    • Cloud Datalab
    • Cloud Dataprep
    • Cloud ML Engine
    ‣ Managed TensorFlow
    ‣ GPU support
    • Cloud TPU alpha
    private beta

    View Slide

  85. 推論

    View Slide

  86. 4 推論
    ֶशࡁΈͷϞσϧΛ࢖͍ɺਪ࿦͢Δɻ
    Ϗδωεͱ௚݁͢Δ͜ͱ͕ଟ͘ɺՔಇ͸ 24 / 365ɻ
    Մ༻ੑͱϨΠςϯγ͕ॏཁͳͷ͸ҰൠαʔϏεಉ༷ɻ
    ΋͔ͯ͠͠αʔόϨεͰ΋ɾɾ͍͚Δɾɾɾʁ
    86

    View Slide

  87. AWS 関連サービス群

    View Slide

  88. 推論フェーズに便利なサービス
    • Amazon ECS / EC2
    ‣ p2 / g2 (GPU) instances
    ‣ Deep Learning AMI
    ‣ Spot Fleet / AutoScaling Group
    • AWS Lambda / Amazon API Gateway
    • AWS ElasticBeanstalk
    • Amazon EFS / EBS / S3 / ECR
    88

    View Slide

  89. フルマネージドな Docker コンテナクラスタ環境。
    GPU ベース の推論アプリケーションだって動きます!
    Amazon ECS
    89
    https://speakerdeck.com/ayemos/build-image-classification-service-with-amazon-ecs-and-gpu-instances
    クックパッド株式会社 染谷 悠一郎さん

    View Slide

  90. AWS Lambda
    90
    サーバレス で MXNet による推論をする実装例
    http://aws.typepad.com/sajp/2017/01/seamlessly-
    scale-predictions-with-aws-lambda-and-mxnet.html

    View Slide

  91. 機械学習を AWS でやるなら、知って得する機能 No. 1!
    仮想サーバを安く使える起動方法。
    AWS のデータセンタの「余剰分」を
    この金額なら使います!と「入札」して起動。
    Spot Fleet / Spot インスタンス
    91

    View Slide

  92. プリエンプティブ VM で起動しましょう!
    終了(プリエンプト)される可能性があり
    24 時間後には必ず終了するインスタンス。
    10 分以上 1 分単位の使用料ベースの固定料金。
    管理対象インスタンスグループでも利用できます
    GCP なら..
    92

    View Slide

  93. ただし、GPU を使いたい場合は現在 GCP に
    “カスタムアクセラレータによる制約” があるため
    プリエンプティブな起動はまだできません・・
    GCP なら..
    93

    View Slide

  94. クラウドのサービスをあれこれ書いてきましたが。 

    実際、ちょっと試すだけなら
    ローカルに環境を整えれば 十分です・・
    ローカルでも簡単に起動する Docker は便利〜
    というかローカルでも..
    94

    View Slide

  95. Let’s try, anyway!

    View Slide

  96. 帰ったら自分で一連の流れを経験!!実践大事。
    「数字画像判定 with TensorFlow on AWS」
    今日の宿題
    http://qiita.com/pottava/items/2fb2572f7099d432ebd9
    96

    View Slide

  97. ありがとうございました
    参考文献:
    • AWS Batch – 簡単に使えて効率的なバッチコンピューティング機能 – AWS
    https://aws.amazon.com/jp/batch/
    • AWS Black Belt Online Seminar「AWS Batch」の資料およびQA公開
    http://aws.typepad.com/sajp/2017/02/aws-black-belt-online-seminar-
    aws-batch.html#QCPzBdn.twitter_tweet_count_m
    • re:Invent 2016: AWS Big Data & Machine Learning Sessions。
    https://aws.amazon.com/blogs/big-data/reinvent-2016-aws-big-data-
    machine-learning-sessions/
    Spark your ideas with us

    View Slide