狠狠撸

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

More Related Content

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