uncommon-topics-on-machine-learning
by
ryo nakamaru
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
あまり本には載っていない機械学習の話 Meetup #02 @ 2017.05.18
Slide 2
Slide 2 text
@pottava ・機械学習の “サービス化・運用手法” を研究中 ・AWS Certified SA, DevOps Engineer Pro ・Google Certified Professional - Cloud Architect
Slide 3
Slide 3 text
株式会社スピンフ
Slide 4
Slide 4 text
・クラウドすっごく得意。主に AWS と GCP。 ・Docker は 3 年前から本番運用してノウハウ豊富 ・NVIDIA GPU の各種環境構築ならお任せあれ 受託開発・運用支援してます 4
Slide 5
Slide 5 text
GTC 2017 行ってきました (最後にお土産じゃんけんしましょう)
Slide 6
Slide 6 text
本題
Slide 7
Slide 7 text
機械学習でなにが変わるの? 機械学習のおさらい • 機械学習とは • 機械学習と深層学習 学習 • データの準備 • 試行錯誤 / POC • 学習 推論 今日お話しすること 7
Slide 8
Slide 8 text
ػցֶशͰͳʹ͕มΘΔͷʁ
Slide 9
Slide 9 text
ࠓͲΜͳ͜ͱʹԠ༻͞Ε͍ͯΔͷ͔ 9 https://www.youtube.com/watch?v=SUNPrR4o5ZA
Slide 10
Slide 10 text
΄ΜͷҰྫ 10 • 医療診断サポート、医薬品の研究・試験の後押し • 農産物の収穫量増加、肥料や農薬の抑制 • 小売業での顧客購入サポート • 自動運転、周囲のリアルタイムな状況把握 • スポーツやゲームでの分析、戦略立案 • 作曲 • 自動翻訳、字幕付与
Slide 11
Slide 11 text
社内導入
Slide 12
Slide 12 text
まずは関係者 みんなで 基本 を抑えたい。大切。 ・何に向いていて、何に向いていないのか ・どれだけ投資すれば何が得られるのか ・そもそもそれは正しい問い?何を OKR, KPI にするか ・これまでの製品開発との違いは何か αʔϏεʹಋೖ͢Δʹ 12
Slide 13
Slide 13 text
機械学習サービスを提供するための最初の一歩.. Biz: 基本を押さえ、顧客体験向上への応用を考えてみる Ops: これまでと毛色の違う学習・サービス基盤を知る Dev: 実際に学習推論を動かしてみる、基礎技術を学ぶ ͋ͳͨͷࣄͳΜͰ͔͢ʁ 13
Slide 14
Slide 14 text
今日ここに来ているあなたはきっと、リード役。 まずはクラウドの API を使ってみたり 機械学習や数学の本を買って読んでみたり 実際にコードを書いてみたりしましょう!! ͱݴ͍ͭͭ 14
Slide 15
Slide 15 text
ධͷ͍͍ຊɺ࠷ۙ·ͨͰͨΑ 15 Hands-On Machine Learning with Scikit-Learn and TensorFlow Concepts, Tools and Techniques to Build ”Intelligent Systems”
Slide 16
Slide 16 text
機械学習のおさらい
Slide 17
Slide 17 text
機械学習
Slide 18
Slide 18 text
何か特定の問題があるとして。 コンピュータに 客観的事実のみ を与え 具体的な回答を得る、またはそれを改善すること。 機械学習とは 18
Slide 19
Slide 19 text
y = ax + b a, b を 人間が事前に決める のが一般的プログラミング。 実データから コンピュータに計算させる のが機械学習。 機械学習とは 19
Slide 20
Slide 20 text
y = ax + b 例) x : Pairs で最近見かけたよさげな人の 特徴 y : このひとと付き合ったら幸せになれるか 機械学習とは 20
Slide 21
Slide 21 text
y = ax + b 例) 人間「 y = 0.7 * 性格x + 0.2 * 外見x + 0.1 * 収入x でしょ」 機械「それでは精度が低い。過去のデータからいえば ɹɹɹy = 0.4 * 性格x + 0.1 * 外見x + 0.5 * 収入x が適切」 機械学習とは 21
Slide 22
Slide 22 text
y = ax + b a, b を決めるための作業を 学習、 決まった a, b のことを 学習済みモデル と言う。 学習済みモデルを使って 実際に x を投入し y を得るのが 推論。 学習と推論 22
Slide 23
Slide 23 text
y = ax + b ビジネス上重要なのは、優れた推論 ができるか。 優れた推論をするためには、優れたモデルが必要。 優れた a, b を決めるための 学習 が、腕の見せどころ。 学習と推論 23
Slide 24
Slide 24 text
y = ax + b データから a, b を求める方法はたくさんある。 解きたい問題によって、適切な方法を選ぶ 必要がある。 学習アルゴリズム 24
Slide 25
Slide 25 text
y = ax + b データから a, b を帰納的に求める具体的な方法のこと。 • A / B どっち?問題 → ロジスティック回帰 • 売上を予測したい → 線形回帰 • 顧客をセグメント分けしたい → k 平均法 • レコメンドを出したい → 協調フィルタリング • … 学習アルゴリズム 25
Slide 26
Slide 26 text
ユーザ情報が集めやすい(?)恋愛エリア。 さっきの学習アルゴリズム、使えそうですよね? • この人との相性はよさそう?悪そう? • この人の 5 年後の収入、どのくらいになりそう? • 亭主関白ではなく、かつ家庭を大切にするタイプであってほしい • 結局誰とならうまくいきそうなの!?怒 恋愛 × 機械学習 26
Slide 27
Slide 27 text
深層学習
Slide 28
Slide 28 text
ディープラーニング。 多層構造のネットワークを用いた機械学習 のこと。 例) 4 層のネットワーク例 深層学習とは 28
Slide 29
Slide 29 text
青丸に値を入力すると、緑丸に答えが出力される。 例)安い、美味しい → 買うべき 0.9、買わないべき 0.1 深層学習とは 29
Slide 30
Slide 30 text
2 層目以降の各ノード○が、前の層からの入力を基に y = ax + b を使って自分自身の値を計算する。 深層学習とは 30
Slide 31
Slide 31 text
よりもっともらしい答えを返すために 各ノードの a, b を事前に決めるのが、学習。 全ノードの a, b が決まれば、それが 学習済みモデル。 深層学習とは 31
Slide 32
Slide 32 text
機械学習全般、解決したい問題ごとに選択 するのが 学習アルゴリズム。深層学習であっても同じ。 例) • このきゅうりは S? M? L? → 畳み込みニューラルネットワーク (CNN) • 今の発言はポジティブ? → 再帰型ニューラルネットワーク (RNN) • 人が飛び出してきた!車を減速!! → あれこれ組み合わせ • … 深層学習アルゴリズム 32
Slide 33
Slide 33 text
美しい組み合わせの例、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
Slide 34
Slide 34 text
実践的なネットワーク、 実際にはどれくらいディープなレイヤーなの? 例) 畳み込みニューラルネットワークの一種、ResNet は 152 層 深層学習アルゴリズム https://research.googleblog.com/2016/08/improving-inception-and-image.html 34
Slide 35
Slide 35 text
お、おう・・ モデルとして決める変数どれだけあるの・・ 学習にどれだけ時間かかるの・・ というか、レイヤー定義するだけで 心折れそう。 自前で実装?まあ無理ですよね・・ 深層学習アルゴリズム 35
Slide 36
Slide 36 text
そこで
Slide 37
Slide 37 text
深層学習フレームワーク
Slide 38
Slide 38 text
利用者はアルゴリズムの実装をすることなく 各種パラメタの指定だけで学習・推論ができる。 例)TensorFlow による畳み込みニューラルネットワーク (CNN) どんな順序でどんな層を経由するか、直感的にわかる 深層学習フレームワーク 38
Slide 39
Slide 39 text
アルゴリズムの 実装はその道のプロにお任せ しつつ・・ 私たちはやりたいことだけできる時代。 例)画像に写っている人が知りたい → TensorFlow で CNN を使えばわりと簡単にできる! 深層学習フレームワーク 39
Slide 40
Slide 40 text
TensorFlow、MXNet、CNTK、Caffe2、Chainer・・ それぞれの特徴を鑑み、選択する。 • 対応アルゴリズム • 動作端末・環境 • 計算速度 / リソース利用効率 • 利用可能な言語 / 手続的・宣言的 • スケーラビリティ / 複数 GPU、並列サーバ対応 • 情報の豊富さ / エコシステム / 商用サポート • … 深層学習フレームワーク 40
Slide 41
Slide 41 text
クイズです
Slide 42
Slide 42 text
「今メールしている相手は本当に 女性なのか、否か・・」 ※ そもそもこの問いが生まれること自体 登壇者の経験や人間性を疑うきっかけになり得ますが みなさん大人です。あまり深く考えないでください。
Slide 43
Slide 43 text
次のどれを使う・・?
Slide 44
Slide 44 text
ϩδεςΟοΫճؼ ઢܗճؼ ΈࠐΈχϡʔϥϧωοτϫʔΫ Ҩతϓϩάϥϛϯά
Slide 45
Slide 45 text
ブッブー
Slide 46
Slide 46 text
そんな心配をしなくてすむ を使う、が正解です
Slide 47
Slide 47 text
さて
Slide 48
Slide 48 text
学習の流れを再確認
Slide 49
Slide 49 text
機械学習の流れ 2. データ前処理 3. 学習 4. 推論 1. データ収集 49
Slide 50
Slide 50 text
以降、この流れに沿って詳細をみていきましょう。 機械学習の流れ 2. σʔλલॲཧ 3. ֶश 4. ਪ 1. σʔλऩू 50
Slide 51
Slide 51 text
学習
Slide 52
Slide 52 text
データの準備
Slide 53
Slide 53 text
1 データの収集 自社製品に沿ったデータ がなによりも有用!! とはいえ、まず機械学習を試してみるだけなら 一般公開されたデータ を活用するのが簡単です。 53
Slide 54
Slide 54 text
一般公開された画像集 研究もコンテストも盛んで、たくさんあります。 • 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
Slide 55
Slide 55 text
AWS Public Datasets https://aws.amazon.com/jp/public-datasets/ 55
Slide 56
Slide 56 text
Public Datasets | Google Cloud Platform https://cloud.google.com/public-datasets/ 56
Slide 57
Slide 57 text
Public data sets for Azure analytics https://docs.microsoft.com/en-us/azure/sql-database/sql-database-public-data-sets 57
Slide 58
Slide 58 text
Datasets « Deep Learning http://deeplearning.net/datasets/ 58
Slide 59
Slide 59 text
http://www.data.go.jp/data/dataset 59 こんなのもある
Slide 60
Slide 60 text
AWS 関連サービス群
Slide 61
Slide 61 text
データ収集に便利なサービス • AWS IoT • Amazon Kinesis Streams • Amazon CloudWatch Logs • Amazon S3 • Amazon DynamoDB • Amazon Cognito + AWS SDK • Amazon API Gateway 61
Slide 62
Slide 62 text
2 データの前処理 Python だけで済むならそれでいいものの、 複数のデータソースからメタデータを取得したり 大規模なファイルからデータを抜き出すなら 専用ソフトウェア や サービス を使わないとつらい。 62
Slide 63
Slide 63 text
AWS 関連サービス群
Slide 64
Slide 64 text
データ前処理に便利なサービス • Amazon Mechanical Turk • Amazon Athena • AWS Lambda / Step Functions • AWS CloudWatch Events • Amazon EMR / Batch / EC2 64
Slide 65
Slide 65 text
Amazon Mechanical Turk 65 アメリカではとても 流行っているとのこと・・ メタデータ付与なら・・・!
Slide 66
Slide 66 text
試行錯誤 / POC
Slide 67
Slide 67 text
試行錯誤に便利なものたち
Slide 68
Slide 68 text
超重要ツール。(これに慣れると世界が広がります!) 主に科学技術計算や機械学習の業界で あれこれ 試行錯誤したり、それを誰かと共有するための ツール。多くの研究者やエンジニアに愛用されている。 git などでバージョン管理するのも容易! Jupyter notebook 68
Slide 69
Slide 69 text
ֶशʹͱ͕͔͔ͯ࣌ؒΔͷɻ ߦྻܭࢉ͕ಘҙͳ GPU Λ͕͑࣌ؒઅͰ͖·͢ʂ ࣗͷ PC ʹ͍ͬͯ͞Δ GPU ͕͑Δ͔ɾɾʁ (NVIDIA) GPU 69
Slide 70
Slide 70 text
(NVIDIA) GPU 70 ݱࡏ AWS Ͱ GPU Λ͏ͱ͖ͷ Tips Λ·ͱΊ·ͨ͠ https://speakerdeck.com/pottava/tesorflow-v1-dot-0-on-ec2
Slide 71
Slide 71 text
ࢼߦࡨޡ͢Δʹ͜ΕͱͯศརͰ͢ɻ ϥΠϒϥϦ͕ͲΜͲΜόʔδϣϯߋ৽ͯ͠େৎʂ Ϋϥυ্ʹֶशɾਪΛ࣋ͬͯߦ͘ͱ͖ʹ༗༻ʂ docker run -it --rm -p 8888:8888 jupyter/tensorflow-notebook Docker 71
Slide 72
Slide 72 text
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)
Slide 73
Slide 73 text
AWS 関連サービス群
Slide 74
Slide 74 text
試行錯誤フェーズに便利なサービス • Amazon Machine Learning • Amazon EMR / EC2 ‣ p2 / g2 (GPU) instances ‣ Deep Learning AMI • Amazon EBS / S3 / ECR 74
Slide 75
Slide 75 text
二項分類、複数クラス分類、線形回帰のマネージドサー ビス。データの取り込みから、学習・推論が行えます。 サーバの管理が不要なため、スケーラビリティや推論 サービスの可用性は気にせず OK! Amazon Machine Learning 75
Slide 76
Slide 76 text
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 は汎用コンピューティング用途
Slide 77
Slide 77 text
Amazon DeepLearning AMI 77 全部入り AMI、あります!! TensorFlow 1.0, MXNet, Caffe2, CNTK, Theano, Torch。 CUDA 7.5, cuDNN 5.0, Anaconda も。
Slide 78
Slide 78 text
学習
Slide 79
Slide 79 text
3 学習 もっとも重要、かつものすごく時間がかかるところ。 自社のモデルを作るのはとても大変だが オリジナルのものができれば貴重な知財に。 クラウドの様々なサービスがサポートしてくれます。 79
Slide 80
Slide 80 text
AWS 関連サービス群
Slide 81
Slide 81 text
学習フェーズに便利なサービス • 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
Slide 82
Slide 82 text
AWS Batch 82 https://www.youtube.com/watch?v=UR8BI2Exkbc 科学技術計算・ハイパフォーマンスコンピューティング 用途で真価を発揮する、大規模なスケール、ジョブの依 存定義が可能なマネージド並列分散バッチ処理基盤。
Slide 83
Slide 83 text
MXNet Λ͍ EC2 Ϋϥελ্Ͱֶश͢Δྫ AWS Batch https://aws.amazon.com/jp/blogs/news/deep-learning-on-aws-batch/ 83
Slide 84
Slide 84 text
Google ファミリーなら.. 84 • Cloud Datalab • Cloud Dataprep • Cloud ML Engine ‣ Managed TensorFlow ‣ GPU support • Cloud TPU alpha private beta
Slide 85
Slide 85 text
推論
Slide 86
Slide 86 text
4 推論 ֶशࡁΈͷϞσϧΛ͍ɺਪ͢Δɻ Ϗδωεͱ݁͢Δ͜ͱ͕ଟ͘ɺՔಇ 24 / 365ɻ Մ༻ੑͱϨΠςϯγ͕ॏཁͳͷҰൠαʔϏεಉ༷ɻ ͔ͯ͠͠αʔόϨεͰɾɾ͍͚Δɾɾɾʁ 86
Slide 87
Slide 87 text
AWS 関連サービス群
Slide 88
Slide 88 text
推論フェーズに便利なサービス • 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
Slide 89
Slide 89 text
フルマネージドな Docker コンテナクラスタ環境。 GPU ベース の推論アプリケーションだって動きます! Amazon ECS 89 https://speakerdeck.com/ayemos/build-image-classification-service-with-amazon-ecs-and-gpu-instances クックパッド株式会社 染谷 悠一郎さん
Slide 90
Slide 90 text
AWS Lambda 90 サーバレス で MXNet による推論をする実装例 http://aws.typepad.com/sajp/2017/01/seamlessly- scale-predictions-with-aws-lambda-and-mxnet.html
Slide 91
Slide 91 text
機械学習を AWS でやるなら、知って得する機能 No. 1! 仮想サーバを安く使える起動方法。 AWS のデータセンタの「余剰分」を この金額なら使います!と「入札」して起動。 Spot Fleet / Spot インスタンス 91
Slide 92
Slide 92 text
プリエンプティブ VM で起動しましょう! 終了(プリエンプト)される可能性があり 24 時間後には必ず終了するインスタンス。 10 分以上 1 分単位の使用料ベースの固定料金。 管理対象インスタンスグループでも利用できます GCP なら.. 92
Slide 93
Slide 93 text
ただし、GPU を使いたい場合は現在 GCP に “カスタムアクセラレータによる制約” があるため プリエンプティブな起動はまだできません・・ GCP なら.. 93
Slide 94
Slide 94 text
クラウドのサービスをあれこれ書いてきましたが。 実際、ちょっと試すだけなら ローカルに環境を整えれば 十分です・・ ローカルでも簡単に起動する Docker は便利〜 というかローカルでも.. 94
Slide 95
Slide 95 text
Let’s try, anyway!
Slide 96
Slide 96 text
帰ったら自分で一連の流れを経験!!実践大事。 「数字画像判定 with TensorFlow on AWS」 今日の宿題 http://qiita.com/pottava/items/2fb2572f7099d432ebd9 96
Slide 97
Slide 97 text
ありがとうございました 参考文献: • 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