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.

機械学習システムを受託開発 する時に気をつけておきたい事

362 views

Published on

「ブレインパッドとエウレカが語る、データ分析と機械学習の活用」資料

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

機械学習システムを受託開発 する時に気をつけておきたい事

  1. 1. 機械学習システムを受託開発 する時に気をつけておきたい事 株式会社ブレインパッド 平木悠太 2018/11/15 ブレインパッド・エウレカ合同勉強会
  2. 2. 自己紹介 名前 平木悠太 職種 エンジニア 所属 アナリティクスサービス本部 開発部 仕事 機械学習システムの開発 他 エディタは emacs + evil, vim シェルは zsh 2
  3. 3. Google Cloud Next 2018 Tokyo で開催されたCloudHeroというイベントで2位になりました。 http://blog.brainpad.co.jp/entry/2018/10/03/112702 謎のマントをかぶらされた… 3
  4. 4. GoganGo というサービスを作りました。http://www.brainpad.co.jp/news/2018/02/15/7122 4
  5. 5. ❖ 機械学習システムを受託開発をする上で直面する課題 ❖ 課題に直面することを想定した立ち回り …を、GoganGoの開発エピソードを踏まえて説明します。 お話すること 5
  6. 6. お話しないこと ❖ 一般的なシステム開発 ➢ 多くの点において機械学習システムは一般的なシステム開発と一緒ですが 今回は特に断りなく一般的な話を割愛することがあります ❖ 機械学習モデルの作成方法 ➢ 数式とか難しいことは一切出てきません*1 ❖ システムの細かい話 ➢ インフラ構築とかアプリケーション設計とか*2 *1: 登壇者は機械学習に詳しいわけではないので… *2: CloudHeroなんだからGCPの話しろよって感じですよねすみません 6
  7. 7. 受託開発? 社内で開発するリソースやノウハウがない場合、システム開発会社に仕 事を依頼します。開発会社が行うのが受託開発です。 機械学習モデルの開発を含めた受託開発は、どこまでの業務をシステム に任せられるかを検証しながら手探りで進めていきます。 7
  8. 8. 受託開発の流れ 1. 企画 ➢ テーマ選定・データ取得 2. PoC ➢ 分析要件定義・検証 3. プロトタイプ開発 ➢ クライアントからのフィードバック 4. システム開発 ➢ 要件定義〜開発 5. 運用 ➢ システム運用・モデル運用 8
  9. 9. 受託開発の流れ 1. 企画 ➢ テーマ選定・データ取得 2. PoC ➢ 分析要件定義・検証 3. プロトタイプ開発 ➢ クライアントからのフィードバック 4. システム開発 ➢ 要件定義〜開発 5. 運用 ➢ システム運用・モデル運用 9 今回お話する範囲
  10. 10. 登場人物紹介 12
  11. 11. BrainPad 13 現場技術者 現場に出向いて検出 対象の写真を撮影し ます。 現場技術者 写真から劣化度合いを 判断します。 企画担当者 機械学習による業務効率 化を企画した人です。 エンジニア システム要件定義や設 計〜開発〜運用をしま す。 データ サイエンティスト 機械学習モデルを作成 したり、データに関す ることをします。 * 実際にはもっと多くの種類や人数の登場人物がいますが、簡略化していることをお許しください… クライアント
  12. 12. 企画 → PoC → プロトタイプ開発 → システ 14
  13. 13. 企画とは 機械学習で何を解決したいのか、具体的に何を自動化したいのか、 実用性を検証可能な形に落とし込みます。 GoganGoの場合 人手で検査している河川のコンクリート護岸の劣化度合いには甚大なコストがかかる。 劣化度合いを機械学習を使用して自動判定することで効率化出来ないか。 15
  14. 14. 受託開発を選択するということ おさらいします。 クライアントが受託開発を選択したということは、 代替のサービスの効果検証は済んでいると考えて良いでしょう。 RPA パッケージソリューション Pepper君 16
  15. 15. 前述のソリューションで太刀打ちできなかったということは、 非常に専門的な領域で、導入に成功すればインパクトは絶大に違いありません。 17
  16. 16. 構想を語る クライアントに構想を語ってもらいましょう。 例えば、教育コストがかかる社内の専門的な作業の自動化を考えてみます。 1. 専門的な作業を機械学習システムで置き換え 2. 社内で積極的にツールを使って工数削減 3. 同業他社に横展開する ちょっと待てよ… 18
  17. 17. 置き換えられた人材はどこへ? 19
  18. 18. 企画と現場 企画 ● 運用コストを削減したい ● 属人化を排除したい ● 教育コストを抑えたい ● ビジネスを継続したい ● 古いツールにセキュリティリスクがある 現場 ● 使い慣れたツールを使い続けたい ● 業務変更の学習コストを払えない ● 人員削減されたくない 20
  19. 19. 納得していただく 我々は企画をする立場なので、現場の皆様に納得してもらいます。 例えば、以下のような説明をします。 ● システムは属人化を排除するためのものなので人員削減はしない ● システムを理解するためのトレーニング講習や学習期間を設ける ● システムを使用することで一部の作業が自動化される 21
  20. 20. 後回しにする? 企画のジレンマを解消していなくても、機械学習の結果が使えるかどうかの実証実験だけなら出来ま す。とにかくビジネス判断したい場合はそれでもいいかもしれません。 ただし、システムを導入する際には必ず解決しておかなければならない問題です。 いわゆるPoC貧乏*1を避けるためにも早めに解決しましょう… * 1: 実証実験ばかりで一向に業務改善できずに終わってしまう予算の無駄遣い 22
  21. 21. PoC → プロトタイプ開発 → システム開発 → 23
  22. 22. PoC (Proof of Concept) PoCとは、Proof of Conceptの略で、「概念実証」という意味です。 新しい概念や理論、原理、アイディアの実証を目的とした、 試作開発の前段階における検証やデモンストレーションを指します。 https://www.keyence.co.jp/ss/general/iot-glossary/poc.jsp 24
  23. 23. つまり 企画段階で業務改善のシナリオがある程度出来た! ● 現場の技術者が普段から撮影している写真を使って ● 作成された教師データを ● 機械学習アルゴリズムに読み込ませてモデルを作る! ➔ 本当にできるかどうか検証してみよう! 25
  24. 24. "できる" とは? 26
  25. 25. 何ができれば良いのか? 27 ● モデルの精度 ● 定性評価 ● 定量評価 ● メトリクス開発 ● 継続的な教師データの作成方法 *クライアント要望やデータの形式、業務内容によってはこの限りではない モデルの精度を追い求める作業は 全体工数の1/3程度なんです!!
  26. 26. モデルの精度 GoganGoの場合の精度は、出力された推論結果と河川技術者が想定する劣化がどれだけ近いかで判断 します。定性評価と定量評価する方法があります。 28 ≒ (例) 80%! モデルが推論した結果 河川技術者が着色
  27. 27. 定性評価 要は、見て確認する。 PoCの初期段階では定性評価をすることもあり ますが… 効率を考えて後述の定量評価と組み合 わせます。 29 赤い箇所がコンクリートの 劣化として検出されている
  28. 28. 定量評価 両画像の検知箇所の類似度を計算で割り出しま す。高速で一定品質の精度評価ができる反面、 ● 良質な教師データ ● パラメータ調整されたモデル …など条件がある程度揃っていないと精度として 使用しにくい弱点もあります。 30
  29. 29. メトリクス開発 業務に沿った評価軸(メトリクス)をちゃんと作りましょう。 GoganGoでは護岸の劣化度合いを数値で表すようにしています。 数値化できれば、以下のようにUI上で一覧表示することも出来ます。 31 ● 劣化度 小 ● ● ● 劣化度 大
  30. 30. データ 一般的に機械学習するために必要なデータ ● 学習データ(教師データ*) ○ GoganGoでは河川技術者が撮影した写真 ○ 護岸の劣化部分に印がつけられたもの ○ これ、誰がどうやって作るか? ● テストデータ ○ 訓練データの一部をテストデータとして使用することが多い *教師あり学習の場合 32
  31. 31. 教師データ 例えば画像データから物体検知する場合、 ● 誰がアノテーション*する? ● アノテーションの精度をどう担保する? しかもこれ、モデルをアップデートする度に必要です 赤く塗られた部分がアノテーション 33 *機械学習プログラムが認識できる形で印をつけること。GoganGoでは画像編集ツールを使って劣化部分を赤色で塗りつぶした
  32. 32. 教師データを作る 34 特に、専門的な業務の場合は教師データを作るためには、貴重な専門技術者の工数を割く必要があり ます。 ● 教師データを河川技術者が毎回作るのは困難、 素人でも学習データを作れるようにするにはどうすれば良い?
  33. 33. ところで 35
  34. 34. クライアントが学習データを… ☞ 持っている ☞ 持っていない 36
  35. 35. クライアントがデータを持っていない そんな事ありえるんでしょうか… 実はありえるんです。 ● 既存のシステムがデータを蓄積する設計になっていない ● 構想の段階。これからビジネスとして成長させたい など、理由はいろいろあります。 教師あり学習・教師なし学習どちらを選択しても学習データは必要です。 では、どうするか? 37
  36. 36. お客さんが学習データを… ☞ 持っている ☞ 持っていない ☞ にげる 38
  37. 37. 学習データがないとき 逃げちゃダメです プラン1 Webからデータを集める 公開データセットを使える場合もあります。自然言語ならWebスクレイピングを使ってある程度集め ることが出来ます。恐るべしGoogle。 プラン2 データを集めるためシステム 業務に直結した機密データを使う場合。大抵、データを蓄積する設計になっていないシステムに問題 があるので、その蓄積システム構築を含め提案しちゃいましょう。長期的な運用をするためにはどう せ必要になるものです。 39
  38. 38. プロトタイプ開発 → システム開発 → 運用 40
  39. 39. PoCの結果いい感じっすね ➔ 出来上がったモデルを早速システムに載せましょうか ➔ じゃあ要件定義しましょうね 41
  40. 40. システム化 データ入力 データ出力 画面設計 データライフサイクル 再学習 モデル監視 モデルアップデート モデルバージョン管理 アノテーション 可用性 保守性 気密性 ユーザー管理 42
  41. 41. なんか思ってたんと違う 43
  42. 42. 長い時間と工数*をかけてPoCをやってきたクライアントは この辺である程度見える形で成果が欲しくなってくるかもしれない。 ※ 長さの感じ方には個人差があります 44
  43. 43. プロトタイプ データ入力 データ出力 画面設計 データライフサイクル 再学習 モデル監視 モデルアップデート モデルバージョン管理 アノテーション 可用性 保守性 気密性 ユーザー管理 45
  44. 44. ソフトウェアプロトタイピングとは、将来完成する予定のソフトウェアの不完全なモデル(プロトタ イプ)を作成することおよびその過程を意味する。プロトタイプは完成品についてのイメージをユー ザーに抱かせ、顧客がそのプログラムを評価することができる。 https://ja.wikipedia.org/wiki/ソフトウェアプロトタイピング 業務フローを置き換えられる最低限の機能のプロトタイプをクライアン トへ提供します。プロトタイプを作成して早めにフィードバックをもら うことは開発会社にとっても重要です。 プロトタイプとは 46
  45. 45. 簡素化していますが、だいたいこんな業務フローです。 1. 技術者が現場で写真を撮ってくる 2. 写真を共有サーバーにアップロードする 3. 写真を1枚づつ確認して劣化がないか確かめる 4. 劣化が見つかった写真だけを抜き出す 5. レポートを作成する 画像から異常を見つけてレポートする人の業務 47
  46. 46. 1. 技術者が現場で写真を撮ってくる 2. 写真をシステムにアップロードして 「開始」ボタンを押すと異常画像だけ出てくる 3. 4. レポートを作成する システムで置き換わる部分 48
  47. 47. フィードバック 開発会社にとって、プロトタイプをクライアントに公開することはフィードバックを得ること で、ここからスタートと言っても過言ではありません。必ずその旨を伝えましょう。 開発会社 「プロトタイプを業務で使ってみてフィードバックをください」 クライアント 「OK♪」 49
  48. 48. 正確に伝えましょう 50
  49. 49. フィードバック 開発会社 「プロトタイプを業務で使ってみてもらいつつ、通常の業務もやってくださ い。 通常業務とプロトタイプの推論結果を比較してください。 プロトタイプを業務フローに載せたときに機能に不足がある かどうか フィードバックをください。」 クライアント 「承知した。」 せっかくプロトタイプを作ったのにフィードバックが適切に行われないと、 システムの要件定義に時間がかかったり開発時に手戻りが発生する可能性があります。 51
  50. 50. システム開発 → 運用 52
  51. 51. ここまでできていれば、システム開発は普通のシステムとさほど変わりません。 システム開発を始めるにあたって まず、クライアントに理解しておいてほしいことがあります 53
  52. 52. プロトタイプは捨てます 54
  53. 53. フィードバックを反映してシステムに プロトタイプを捨てるというのはある意味大げさですが… 目に見える成果が出たことで期待値が上がっているかどうかを確認して、 必要ならばプロトタイプとはなにか?を改めて理解してもらいます。 ● システムの根本的な変更が必要になる場合がある ● 再度PoCが必要と判断される可能性がある 特にUIに関する項目は業務効率に直結するので、フィードバックが多く、プロトタイプとは全く違う ものになる。 55
  54. 54. フィードバック 例えば、こんなフィードバックが考えられます ● 現場の作業PCやネットワークの環境への対応 ● 作業フローの過不足 ● UIの画面遷移、ボタンの配置など など 56
  55. 55. モデルのデプロイ いよいよモデルをシステムにデプロイです! 業務アプリと機械学習アプリは疎結合にしましょう 57 業務アプリ 劣化検知サービス
  56. 56. そして運用へ… 58
  57. 57. まとめ 59
  58. 58. 企画 ● 機械学習で何を解決したいのかを明確に ● 検証可能な形にする ● 企画と現場のジレンマを解消する 60
  59. 59. PoC システムに組み込むモデルを作るために何が必要か ● モデルの精度 ● 定性評価 ● 定量評価 ● メトリクス開発 ● 継続的な教師データの作成方法 ● … 61
  60. 60. プロトタイプ・システム開発 ● 比較のため通常業務も同時にやる ● フィードバック内容によってはプロトタイプを捨てる覚悟 をクライアントに理解してもらうこと 62
  61. 61. システムの話… 運用の話… など ディープな話は懇親会にて… 63
  62. 62. 64 株式会社ブレインパッド アナリティクスサービス本部 開発部 平木悠太 データサイエンティスト/機械学習エンジニア 機械学習システム作りたいエンジニア 積極採用中! https://hrmos.co/pages/brainpad/jobs

×