Slide 1

Slide 1 text

機械学習どこから 手をつけよう? 2018/9/1 Google DevFest 2018 Tokyo

Slide 2

Slide 2 text

自己紹介 • 上総 虎智 Taketoshi Kazusa • Github: tkazusa / Twitter: @tkazusa • BrainPad Inc. 分析官 • 最近の興味範囲 機械学習システムの継続的デプロイ

Slide 3

Slide 3 text

このセッションで話すこと ✕:機械学習とはなにか ✕:アルゴリズムそのものの話 ✕:機械学習のフレームワークについて ✕:機械学習サービスの使い方について ◯:機械学習使った「手元で動く何か」を作るまでの考え方 ◯:機械学習アプリのプロトタイプを作るために便利なものの整理 ◯:プロトタイプを作った後の話を少し

Slide 4

Slide 4 text

Agenda • 機械学習で今何ができるんだっけ • 実際どこから手をつければいいんだろう • ちゃんとプロダクトに仕上げるために • まとめ

Slide 5

Slide 5 text

機械学習で今何ができるんだっけ

Slide 6

Slide 6 text

Solving problems with AI for everyone

Slide 7

Slide 7 text

自動運転での活用:Waymo

Slide 8

Slide 8 text

目をスキャンして心疾患を予測

Slide 9

Slide 9 text

Google Glassでスマートファクトリー AI on Google Glass Drives the Factory to the Future (Cloud Next '18) https://www.youtube.com/watch?v=yL-LXKrpcvE&feature=

Slide 10

Slide 10 text

機械学習どこから手を付けよう

Slide 11

Slide 11 text

さっさと プロトタイプ つくっちゃおう

Slide 12

Slide 12 text

プロトタイプから作っちゃいましょう • 機械学習はどこまでも“やってみないとわからない”がつきまとう • プロトタイプを作る難易度は圧倒的に下がってきている • 実際に使えるプロダクトにするのは結構距離がある プロトタイプ作ってみて、取り組む価値のあるものだと思ったら プロダクトに仕上げて行くので良いのでは?!

Slide 13

Slide 13 text

プロトタイピングするときに考えること • 機械学習モデルの学習・実装 「どれだけ楽できるか」、「どれだけシンプルにできるか」 • 学習済モデルのデプロイ先 どこにあるリソースとデータで推論を実行するか? まずは「いったん動くものを作ってみる」という観点では下記を検 討すれば良いと思います。

Slide 14

Slide 14 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes

Slide 15

Slide 15 text

プロトタイピングするときに考えること 今まで一般的だったのはPythonやRでモデルを作ってWebアプリとして デプロイだったが、様々なサービスの発展でデプロイ先の選択肢も増え てきました

Slide 16

Slide 16 text

プロトタイピングするときに考えること 今まで一般的だったのはPythonやRでモデルを作ってWebアプリとして デプロイだったが、様々なサービスの発展でデプロイ先の選択肢も増え てきました • 遅延が少ない • オフライン環境でも動く • データがデバイス上に留まる • 電力効率が良い • センサーデータを直接扱える

Slide 17

Slide 17 text

プロトタイピングするときに考えること 今まで一般的だったのはPythonやRでモデルを作ってWebアプリとして デプロイだったが、様々なサービスの発展でデプロイ先の選択肢も増え てきました • 遅延が少ない • オフライン環境でも動く • データがデバイス上に留まる • 電力効率が良い • センサーデータを直接扱える

Slide 18

Slide 18 text

プロトタイピングするときに考えること 今まで一般的だったのはPythonやRでモデルを作ってWebアプリとして デプロイだったが、様々なサービスの発展でデプロイ先の選択肢も増え てきました

Slide 19

Slide 19 text

どうやってモデルを実装する? どこにデプロイする? を整理したら あとはアイデアを 形にしていく

Slide 20

Slide 20 text

統計や数学について、 学ばなくて良いんですか?

Slide 21

Slide 21 text

プロトタイプを作る中で、 必要になったタイミングで 学べば良いのでは?

Slide 22

Slide 22 text

機械学習モデル開発に便利なサービス

Slide 23

Slide 23 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes

Slide 24

Slide 24 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes • まずは特定のタスクに対応したAPIサービ スを探す • 機械学習を適用したいデータを入力する と結果が帰ってくる • 手元にモデルはない状態、モデルの変更 もできない

Slide 25

Slide 25 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes • 世界中の研究者やエンジニアが開発した 学習済機械学習モデルを借りてきて使う • 「(タスク名) 有名なモデル」とかでググ ると大体出てくる • 最近はTensorFlow Hubにまとめられつつ ある

Slide 26

Slide 26 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes • 学習済モデルだと作者が想定したタスク& 対象しかしか対応できない • 似たタスクだけど独自の対象に適応したい ような場合は既存モデルに独自のデータ セットを学習させるのが良い • 手元の環境で学習させたり、マネージドな 環境を使うなどから選択する

Slide 27

Slide 27 text

プロトタイピングするときに考えること よく言われる「機械学習は技術的負債になりやすい」は実感としてあり、 なるべく使わない、使うにしてもシンプルにする意識が必要そうです。 機械学習が 本当に必要? 新たなデータの 学習が必要? 手元にモデルが 必要? 新たにモデル作る 必要がある? 論文などから モデルを実装 既存モデルへ 独自データを学習 APIサービス 既存モデルの 推論活用 転移学習 既存モデルの 微調整じゃ無理? ルールベースで対応 データ可視化&人の判断 No Yes • 解決したいタスクに対して独自のアイデアで 挑む場合 • 学習については既存モデルと同様手元の環境 で学習させたり、マネージドな環境を使うな どから選択する • データに併せて独自のモデルを構築してくれ るAutoMLの登場でここも自動化の波が

Slide 28

Slide 28 text

機械学習モデルのデバイスへの デプロイに便利なサービス

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

TensorFlow Lite デバイス上でTensorFlowのモデルを動かすために、モデルを軽量化して保存し、 デバイス上で動かすためのランタイムを提供する仕組み。アプリからのインタ フェースはJava/C/C++/Pythonなどで実装可能。 https://www.youtube.com/watch?v=ByJnpbDd-zc

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

ML Kit for Firebase Firebaseでのアプリ開発に機械学習モデルを便利に組み込むためのの仕 組み。 • iOSとAndroidのSDKがある • Base APIsとカスタムモデルの両方をサポート • On-DeviceとCloud AI inference APIsを使い分けられる

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

TensorFlow.js JavascriptでTensorflowが取り扱えるようになりました。 • JavascriptでTensorflowのモデルを書いたり学習させたりできる • 既存の学習済モデルを簡単にインポートしてくることができる • インポートしたモデルを再学習させることもできる Machine Learning in JavaScript (TensorFlow Dev Summit 2018) https://www.youtube.com/watch?v=YB-kfeNIPCE

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

自作TFモデルを色んなところにデプロイしたい toco TensorFlow.js converter Bonnet Compiler モデル構築 フォーマット 変換 モデルの実行

Slide 38

Slide 38 text

自作TFモデルを色んなところにデプロイしたい toco TensorFlow.js converter Bonnet Compiler モデル構築 フォーマット 変換 モデルの実行

Slide 39

Slide 39 text

Demo

Slide 40

Slide 40 text

Observableとは

Slide 41

Slide 41 text

Observableとは Jupyter notebookのJavascript版みたいなもの

Slide 42

Slide 42 text

Observableとは

Slide 43

Slide 43 text

物体検出をブラウザ上で動かしてみる https://goo.gl/vF2oV4

Slide 44

Slide 44 text

物体検出をブラウザ上で動かしてみる https://goo.gl/vF2oV4

Slide 45

Slide 45 text

プロダクトに仕上げるために

Slide 46

Slide 46 text

プロダクトに仕上げるために • 機械学習モデルは使い続けてこそ価値がある しかし、機械学習モデル(というかデータ)は水物 開発し終わった瞬間からメンテし続けないとだめ • その機械学習モデルは本当に使って良いモデル? 機械学習モデルの公平性 機械学習アプリのプロトタイプを作ることはかなりハードル下がっ て来ましたが、あくまでもプロトタイプ。機械学習モデルを使うと いう観点から考えなければいけないことがたくさんあります。

Slide 47

Slide 47 text

機械学習システムの継続的デプロイ 機械学習は1回学習させて「モデルができました!」となるような ものは少なく、データの傾向の変遷などから定期的に学習をさせて モデルを刷新させなければいけないような場合があります。 • 製品の需要予測、季節の変化や新製品の投入、プロモーションの 変化をモデルに取り込まなければ • ニュース記事についての分析、時代とともに「やばい」の意味が 変わってきているのに対応しなければ

Slide 48

Slide 48 text

機械学習システムの継続的デプロイ • モデルの再学習は定期的?それとも精度の劣化がトリガー? • 再学習させるデータの質はどの程度変化しているのか? • 新しいデータを学習させたモデルは以前のモデルとどのように挙 動が変化しているのか? • データ、機械学習モデル、コンフィグ、学習スクリプトのバー ジョン管理は? • その再学習後のモデル、本番にデプロイしていい?テストどうす る? 機械学習は1回学習させて「モデルができました!」となるような ものは少なく、データの傾向の変遷などから定期的に学習をさせて モデルを刷新させなければいけないような場合があります。

Slide 49

Slide 49 text

機械学習モデルの公平性 機械学習モデルを使うことによって差別を生み出してしまうかもしれない ことに注意を払って置く必要があるのではないでしょうか。 https://developers.google.com/machine-learning/fairness-overview https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing

Slide 50

Slide 50 text

まとめ

Slide 51

Slide 51 text

まとめ • 「機械学習モデルの開発が簡単」はもちろん、機械学習アプリのプ ロトタイプ開発のハードルも下がってきた • 重要な課題を解決するのに、必ずしも難しい手法を使う必要はない 機械学習の応用ではシンプルな方法が継続活用には良いかもしれ ない • 今ある技術で解決できる/すべき課題はなにかを考えて実際に手を 動かすのが大事になってきているのでは

Slide 52

Slide 52 text

ありがとうございました http://www.brainpad.co.jp/recruit/ 株式会社ブレインパッドの採用情報見て下さい