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.

機械学習システムのアーキテクチャアラカルト

17,224 views

Published on

Developers summit2019用資料

Published in: Data & Analytics

機械学習システムのアーキテクチャアラカルト

  1. 1. 株式会社ブレインパッド 2019年2月15日 @ デブサミ 2019 機械学習システムのアーキテクチャ アラカルト ~ BrainPad における実例を交えて~ 1
  2. 2. 太田 満久 ● Deputy General Manager @ BrainPad Inc. ● Google Developers Expert (ML) ● Organizer of TensorFlow User Group. ● A Steering Committee of MLSE ● A Committee of JDLA
  3. 3. © BrainPad Inc. BrainPad: 最高の価値提供を可能にする3つの力 2004年の創業以来、ブレインパッドがデータ活用をお手伝いした企業は800社を超えま す。幅広い業界を対象として、豊富に積み上げられたナレッジを武器に、お客様の経営課 題を 解決に導きます。 ブレインパッドは、80名を超えるデータサイエンティスト集団を有します。この規模は国内随 一です。技術的な専門分野、得意とする顧客業界、豊富な分析経験など、様々な強みを  持つデータサイエンティストがお客様のニーズに合わせてチームを組成し、最高レベルのア ナリティクスサービスを提供します。 上記の2つの力を、最先端のテクノロジーを用いて、システムやソフトウェアなどの“形”にで きるのが、ブレインパッドが誇るエンジニア力です。その高い技術と先進性は、デジタルマー ケティング領域でのNo.1プロダクト「Rtoaster」を生み出したことでも証明されています。 創業以来、データ活用を支援した企業は 800社以上 80名を超えるデータサイエンティストは国内随一 DMP領域 No.1プロダクトで培ったエンジニアリング力
  4. 4. © BrainPad Inc. 河川のコンクリート護岸を撮影した画像を深層学習で解析し、コンクリートのひび割れ などの劣化の有無を自動判定するアルゴリズムを構築 事例1: コンクリート護岸の劣化検知
  5. 5. © BrainPad Inc. 事例2: 広告運用の支援ツール(自社プロダクト)
  6. 6. © BrainPad Inc. 機械学習を活用したシステムを多数構築 プライベートDMP 要員配置最適化 広告運用ソリューション 自然言語処理 不良品検知 ロボットアーム制御 物件の分類 他多数
  7. 7. よく言われるとおり、 機械学習システムを開発して、 きちんと運用に乗せるのは大変ですし、 ベストプラクティスも多くありません。
  8. 8. そこで、BrainPadの事例をもとに 機械学習システムを簡単に整理してみました。 何某かの参考になれば幸いです。
  9. 9. © BrainPad Inc. 本講演で話すこと - 機械学習システムの大雑把な分類と実例 - 上記について、現場視点で学んだところや気づいたところ 本講演で話さないこと - 具体的な実装の話 - かっこいい話 期待値調整
  10. 10. まず、機械学習システムの基本
  11. 11. © BrainPad Inc. 典型的な機械学習システム: 推論と訓練 データソース ETL 前処理 推論 出力 前処理 訓練 生データ 訓練データ 訓練済モデル “特集 機械学習工学”, 情報処理 Vol.60 No.1 Jan.2019 をもとに作成 正解データ 推論パイプライン 訓練パイプライン ETLデータソース
  12. 12. © BrainPad Inc. 典型的な機械学習システム: 推論フェーズ データソース ETL 前処理 推論 出力 前処理 訓練 生データ 訓練データ “特集 機械学習工学”, 情報処理 Vol.60 No.1 Jan.2019 をもとに作成 正解データ 推論パイプライン 訓練パイプライン ETLデータソース 推論フェーズ: 訓練済モデルを利用する (入力: データと訓練済モデル 出力: 推論結果) 訓練済モデル 訓練済モデルに よって、推論時 の挙動が決まる
  13. 13. © BrainPad Inc. 典型的な機械学習システム: 訓練フェーズ データソース ETL 前処理 推論 出力 前処理 訓練 生データ 訓練データ 訓練済モデル “特集 機械学習工学”, 情報処理 Vol.60 No.1 Jan.2019 をもとに作成 正解データ 推論パイプライン 訓練パイプライン ETLデータソース 訓練フェーズ: データでシステムの挙動を定義する / データによるプログラミング (入力:データ 出力:訓練済モデル) 訓練済モデルに よって、推論時 の挙動が決まる
  14. 14. 機械学習システム特有の難しさは 訓練フェーズの存在にある
  15. 15. 訓練パイプラインを実装する必要はあるか?
  16. 16. APIを利用する
  17. 17. © BrainPad Inc. BrainPadの開発エンジニアが機械学習システムを構築する場合、以下の順番で検討 することが多い 1. やりたいことに機械学習は本当に必要か? 2. 既成のAPI(訓練なし)で実現できないか? 3. 既成のAPI(訓練あり)で実現できないか? 4. 既成の訓練済モデルで実現できないか? 5. 独自のデータを使ってモデルを訓練する 機械学習はじめの一歩
  18. 18. © BrainPad Inc. BrainPadの開発エンジニアが機械学習システムを構築する場合、以下の順番で検討 することが多い 1. やりたいことに機械学習は本当に必要か? 2. 既成のAPI(訓練なし)で実現できないか? 3. 既成のAPI(訓練あり)で実現できないか? 4. 既成の訓練済モデルで実現できないか? 5. 独自のデータを使ってモデルを訓練する 機械学習はじめの一歩 「スゲー!」 とならないかもしれないけど、 とても重要
  19. 19. © BrainPad Inc. BrainPadの開発エンジニアが機械学習システムを構築する場合、以下の順番で検討 することが多い 1. やりたいことに機械学習は本当に必要か? 2. 既成のAPI(訓練なし)で実現できないか? 3. 既成のAPI(訓練あり)で実現できないか? 4. 既成の訓練済モデルで実現できないか? 5. 独自のデータを使ってモデルを訓練する 機械学習はじめの一歩 (BrainPadでは) 分析官が助けてくれる
  20. 20. © BrainPad Inc. 1. 既成のAPI(訓練なし)を利用するパターン 既成の 機械学習API アプリ
  21. 21. © BrainPad Inc. 機械学習のモデル構築は行わず、既成のAPIを利用する 1. 既成のAPI(訓練なし)を利用するパターン 既成の 機械学習API アプリ 内容 既成のAPIの機能をそのまま利用 して推論する 具体例 ● 顔認識 ● OCR ● ポジネガ判定 etc Pros ● 機械学習をブラックボックス として扱える ● 訓練データが不要 ● 構成がシンプル Cons ● 特定のタスクに限定される ● 用途によっては高額 ● ネットへの接続が必要
  22. 22. © BrainPad Inc. BrainPadでは、本格的な解析をするための前処理に利用することが多い 前処理での利用例 既成の 機械学習API アプリ 既成の 機械学習API 顔の検出 ナンバープレート検出 独自で構築した 機械学習API フィルタリング モザイク処理 画像分類 ● すべての前処理がルールベー スで記述できるとは限らない ● 前処理に機械学習を使おうとす ると、訓練データを集める必要 があり、厄介 ● 前処理は定型的な処理が多い
  23. 23. FindYourCandy
  24. 24. © BrainPad Inc. FindYourCandy
  25. 25. © BrainPad Inc. FindYourCandy 機械学習API
  26. 26. © BrainPad Inc. 2. 既成のAPI(訓練あり)を利用するパターン 内容 訓練データを用意して、 APIの訓 練機能を利用する 具体例 ● 部屋の種類の分類 ● Pros ● 独自のデータでモデルを訓 練できる ● モデルの詳細を知る必要が ない Cons ● 利用できるタスクが限定的 ● 用途によっては高額 ● ネットへの接続が必要 推論APIアプリ 訓練API 正解データ (前処理済)データ 訓練済モデル
  27. 27. © BrainPad Inc. BrainPad社内で比較実験を実施 1. 機械学習エンジニアが1週間程度で構築した簡易的な画像分類モデル 2. 開発エンジニアが Cloud AutoML を利用して構築した画像分類モデル 機械学習エンジニアと同程度の精度のモデルを構築できることを確認 Cloud AutoML VS
  28. 28. 推論方法でわける データソース ETL 前処理 推論 出力 訓練済モデル 推論パイプライン
  29. 29. © BrainPad Inc. 訓練済モデルを使って推論機能を提供する推論サーバーを設置 オンライン推論(シンプル) 推論 サーバー アプリ 訓練済モデル
  30. 30. © BrainPad Inc. ロードバランサを挟むことで、訓練済モデルのA/Bテストやデプロイが容易に オンライン推論(ロードバランサ) 推論 サーバー アプリ 訓練済モデル2 推論 サーバー 訓練済モデル1 ロードバランサ
  31. 31. © BrainPad Inc. データの前処理は、基本的に推論サーバーに含むように実装 補足: データの前処理 推論 サーバー アプリ 訓練済モデル2 推論 サーバー 訓練済モデル1 ロードバランサ 前処理 前処理 ● モデルと前処理は密結合( 機 械学習は前処理が命 ) ● 前処理をアプリ側に持たせる と、インターフェースを共通化 できない
  32. 32. © BrainPad Inc. バッチ推論 推論バッチ アプリ 推論結果 推論対象 訓練済モデル
  33. 33. © BrainPad Inc. バッチ推論 推論バッチ アプリ 推論結果 推論対象 訓練済 モデル 内容 推論をバッチ処理で行う 具体例 ● 多数の画像へのタグ付与 ● レコメンデーション Pros ● 複雑な前処理や複雑なモデ ルを使うことができる ● 実装がシンプル ● 非機能要件が比較的ゆるい Cons ● 推論対象が予め決まってい る必要がある ● 直近のデータを使えない
  34. 34. © BrainPad Inc. バッチ推論 推論バッチ アプリ 推論結果 推論対象 訓練済 モデル 内容 推論をバッチ処理で行う 具体例 ● 多数の画像へのタグ付与 ● レコメンデーション Pros ● 複雑な前処理や複雑なモデ ルを使うことができる ● 実装がシンプル ● 非機能要件が比較的ゆるい Cons ● 推論対象が予め決まってい る必要がある ● 直近のデータを使えない モデルの設計をデータサイエンティ ストが行う場合、特に重要
  35. 35. © BrainPad Inc. プライベートDMP: Rtoaster
  36. 36. © BrainPad Inc. プライベートDMP: Rtoaster Conomi バッチ推論なので、Rtoasterの 速度要件が厳しくても高度なア ルゴリズムを利用可能
  37. 37. 訓練方法でわける 前処理 訓練 生データ 訓練データ 訓練済モデル 正解データ 訓練パイプライン ETLデータソース
  38. 38. © BrainPad Inc. 1. 既成のAPIや訓練済モデルを利用するので、訓練は不要 2. PoCで構築した訓練済モデルを利用するので、訓練のシステム化は不要 3. 定期的に訓練しなおすので、モデルの訓練と更新の仕組みが必要 訓練の頻度
  39. 39. © BrainPad Inc. 1. 既成のAPIや訓練済モデルを利用するので、訓練は不要 2. PoCで構築した訓練済モデルを利用するので、訓練のシステム化は不要 3. 定期的に訓練しなおすので、モデルの訓練と更新の仕組みが必要 訓練の頻度 不必要な訓練フェーズのシステム化は避ける
  40. 40. © BrainPad Inc. モデルの訓練機能は実装せずに、更新もアドホックに実施 PoCで構築した訓練済モデルを利用し続けるパターン 推論サーバーアプリ 監視 モデル構築 訓練済モデル デプロイ ログ / 訓練データ
  41. 41. © BrainPad Inc. PoCで構築した訓練済モデルを利用するパターン 推論サーバーアプリ 監視 モデル構築 訓練済モデル デプロイ 内容 ● モデルの自動更新はしない ● 人が精度を監視して、モデ ルの更新の必要性を判断 具体例 ● 音声認識 ● 賃貸物件の分類 etc Pros ● (システムについては)実装 がシンプル Cons ● 新しい商品やユーザーなど に対応できない ● モデルのデプロイの効率化 をさぼりがち ● 精度の監視は必要
  42. 42. © BrainPad Inc. 「いい部屋ネット」への物件登録作業を深層学習で補助。月間3000時間の工数削減 大東建託(PoCのモデルで十分な例)
  43. 43. © BrainPad Inc. トイレはトイレ、居間は居間。今のトイレと1年後のトイレに、そんなに差はないハズ。居 間もキッチンも同じ。であれば、モデルを更新する必要はない。 トイレはトイレ、居間は居間 一年後に画期的ななにかが起こってト イレに関する常識が一変したりしない 限り、既存のモデルを使い続けられる
  44. 44. © BrainPad Inc. 新しい商品が次々と出てくるなど、データの傾向や対象範囲が変わるようなものについ ては、1つのモデルを使い続けることはできない。 PoCのモデルで十分ではない例 例えば、フリマアプリの画像分類機 能の場合、新しいカテゴリや商品が 次々と出てくるので、古いモデルを 使い続けることはできない。
  45. 45. © BrainPad Inc. 精度を監視するには、入力データと正解データと推論結果が必要。 特に正解データについて、どのように入手するか、サービスの設計時にきちんと考えて おく必要がある。 正解データの入手方法の例 1. ユーザーに推論結果を訂正してもらえるように設計する 2. 専門のアノテーターを用意する 3. (厳密には正解データではないが)レコメンドにおけるクリック率やコンバー ジョン率のように、自動的に収集可能な指標を作っておく 補足: 精度の監視 データの傾向が変わっているからこそモデルの更新が必要なので、古 いテストデータだけに頼るのは NG
  46. 46. © BrainPad Inc. 定期的にモデルを更新するパターン 推論サーバーアプリ 監視 モデルを更新 ログ / 訓練データ 訓練バッチ 正解データを自動的に 収集できることが前提
  47. 47. © BrainPad Inc. 定期的にモデルを更新するパターン 推論 サーバー アプリ 監視 ログ / 訓練データ 訓練バッチ 内容 ● 定期的にモデルを自動更新 する。 ● 人が精度を監視 具体例 ● レコメンドエンジン ● フリマ商品の画像分類 ● etc Pros ● データの変化に対応できる ● かっこいい(MLOpsっぽい) Cons ● システムが複雑になりがち ● モデルの評価が大事。評価 指標の設計が間違っている と、諸々見誤る
  48. 48. 推論をクラウドで実施できない場合
  49. 49. © BrainPad Inc. 製造ラインに流れる食品を撮影した動画から、不良品を検出する。 レイテンシ等の理由から、推論をクラウドで行うことはできない。 食品工場における不良品検知(キユーピー株式会社様)
  50. 50. © BrainPad Inc. 推論をクラウドで実施できない場合 推論サーバーアプリ 監視ログ / 訓練データ 訓練バッチ アップロード 訓練済モデル 配布 更新スクリプト ※ キユーピー様の事例ではありません
  51. 51. © BrainPad Inc. BrainPadの事例をもとに 機械学習システムを簡単に整理してみました。 何某かの参考になれば幸いです まとめ
  52. 52. ご清聴ありがとうございました。

×