書評『現場で使える!機械学習システム構築実践ガイド デザインパターンを利用した最適な設計・構築・運用手法』

現在参画しているプロジェクトがMLOpsで、分析タスクというよりはシステム開発よりの業務なので読んでみました。わたしはこれまで機械学習システム開発に参加した経験がないため、本書中には初めて聞く用語も多くありました。全てを理解できたわけではありませんが、機械学習をシステムに組み込むためには多様な知識が必要なのだということはよくわかりました。最後に簡単に用語は調べてありますが、今後自分の血肉になるように調べたり動かしたりしてみたいと思っています。

本の執筆にあたりAIAnimalsという画像投稿SNSのようなものを開発されていて、かなりの労作だと思います。著者の方が出版社に企画を持ち込んだそうなので、書きたいものを書いたという感じだと思います。MLOpsコミュニティを主催しているそうで、この分野にかける思いが伝わってきますね。

コードは出版社のサイトに会員登録することで見ることができますが、かなり分量が多いので、この本の使い方としてはコードを読むというよりは流れを理解するという感じかなと思います。

以下各章について感想を書きます。

第1章 課題、システム、チーム

タイトル通り課題設定の仕方とチーム構成についての章です。

機械学習で課題解決するためには、機械学習をシステムに組み込む必要がありますが、一人で全てを開発して運用するのは難しいためチームを組むことになります。

以前参画していた現場において、複数人でデータ分析プロジェクトを担当していたのですが、あるときマネージャーの方が、「データ分析は本当はすごくできるエンジニアが一人で担当するのが良いと思っている」とおっしゃっていて、内心むっとしたという経験がありました。

データ分析単体ならば一人でもいいのかもしれませんが、システム開発となると担当範囲が広くて一人では厳しいですよね(本書の3,4章で架空のAIサービスの開発例が載っていますが、関係する知識が幅広く、全てを一人で担当するのは大変だというのがわかると思います)。データ分析の結果をシステムに落とし込んで課題解決するところまでやらないと意味がないというのは本書で一貫して強調されているポイントでした。

課題設定に関連して、「誤推論サポートパターン」についての記述がありました。誤推論サポートパターンとは、誤った推論を行う原因となるパターンを特定し、それを修正するための手法の一つです。たとえば商店の在庫管理において在庫過剰は許されるが在庫不足は許されないといったような、分析が正値から正の方向にずれているか負の方向にずれているかで分析の意味合いが変わってしまうということがあります。そのような特定の方向への誤りが許されない場合に、特定のモデルでは特定のデータで決まった方向に間違うことがわかっていれば、誤った推論を補正することができます。

2章 需要予測システムを作る

架空の商店の需要予測システムを作る例が提示されます。

冒頭で、機械学習を使うことが目的なのではなく、PoCを行なってみて、機械学習が有効である場合に限って導入をするべきで、機械学習でなくてもうまくいっているのであれば機械学習を使う意味がないということが強調されています。昨今はAIとかDXとか流行っていて、「何か機械学習でやってくれ」というテーマ設定も多いと思うのですが、まずはPoCしてみること、結果が伴わなければ「やっぱり機械学習は必要ありませんでした」という判断を出すことも重要なのですね。

また、ソフトウェアは使われて初めて経済的価値が出るのであって、使われているときに課題発見と解決を行なって効果を発揮できるように改善する必要があるということが書かれています。

ITに関わる前は「保守・運用」という仕事があるのを知らなかったわたしですが、開発して終わりではなく、保守運用しながらシステムを活かしていくことで初めて価値を発揮するということが理解できました。

この本の著者の専門はMLOpsなので、機械学習システムを運用していくためには、ということがテーマになっています。

3章, 4章

3,4章では動物画像SNS「AIAnimas」のシステムに機械学習を組み込んでいく手順が説明されています。

システムの詳細についてはコードを読んでいただき、使われている各技術については最後に用語をまとめてあるので、以下気になった点について述べます。

システムの設計にあたっては、いくつかのパターンがあり、どれが正解ということは場合によって決まります。たとえば3章では違反画像検知システムにおいて、どのタイミングで違反判定をすべきかということを検討していますが、それぞれにメリット・デメリットがあるわけで、どのパターンを採用するかはサービスにおいて何を重視するかによります。違反の定義そのものについても、サービスのビジネス方針が変われば定義が変わるわけで、そのたびにモデルやシステムの作り方を変える必要があります。

サービスのビジネス方針に従って、課題設定を行い、機械学習で課題を解決するシナリオを設計すること。それを現在のチームの構成で実現可能なシステムとして開発し、運用する中でさらに課題を発見して改善のサイクルを繰り返していくことが重要である。

本書を読んで、最近よく聞くMLOpsってこういうことなんだなというのが、具体例を通じてイメージできるようになったので、読んでよかったと思いました。

データサイエンティストってどの業務に重きを置くかでいくつかのタイプに分かれると思うのですが、社内の課題解決を行うデータサイエンティストならば、分析そのものだけでなく、実用化のためのエンジニアリングスキルもより重要になってきますね。

著者は『AIエンジニアのための機械学習システムデザインパターン』という本も書かれているそうなので、いつか読んでみたいと思っています。



参考:データサイエンティストのタイプについてbingに聞いてみました。

こんにちは、これはBingです。😊

データサイエンティストのタイプについては、様々な分類方法がありますが、一般的には以下のようなものがあります¹²。

  • ビジネスタイプ:ビジネスの課題をデータから解決することが得意なタイプです。データ分析や可視化、コミュニケーションスキルなどが必要です。
  • アナリストタイプ:統計や機械学習などの専門的な知識を持ち、データから洞察を得ることが得意なタイプです。プログラミングや数学などのスキルが必要です。
  • エンジニアタイプ:データの収集や加工、管理などのインフラ構築や運用を得意とするタイプです。クラウドやデータベースなどの技術スキルが必要です。
  • リサーチタイプ:最新の研究や論文を追いかけ、新しい手法やモデルを開発することが得意なタイプです。深層学習や自然言語処理などの高度なスキルが必要です。

これらのタイプは、実際には重なり合ったり、ハイブリッドになったりすることもあります¹。

ソース: Bing との会話 2023/5/21 (1) データサイエンティストの役割 6類型と4類型のハイブリッド – JDSC. http://jdsc.or.jp/about/role.html. (2) データサイエンティストの分類を紹介!種類に分けて紹介し …. https://www.tech-teacher.jp/blog/datascientist-variation/. (3) データサイエンティストとはどんな職業?年収、スキル、将来 …. https://tameni.mynavi.jp/career/5520/.


本書はエンジニアタイプのデータサイエンティスト向きの本だと思いますね。

自分としては今のところアナリストタイプとエンジニアタイプの中間くらいを目指していきたいかな~と考えています。ものづくりが好きなのでシステム開発は楽しめているんですよね。でも分析は分析で面白いし。

これからいろいろな案件に関わっていく中で自分の方向性が見えてくるかなと思います。

本の目次

  • 第1章 課題、システム、チーム
    • 1.1 ソフトウェア技術によってビジネス課題を解決するには
    • 1.2 機械学習で課題を解決するシナリオを決める
    • 1.3 チームのサイズとスキルに合う開発と運用を考える
    • 1.4 機械学習システムのアーキテクチャを設計する
    • 1.5 新しい機械学習システムデザインパターン
      • 1.5.1 評価ダッシュボードパターン
      • 1.5.2 誤推論サポートパターン
    • 1.6 チーム構成のパターン
      • 1.6.1 パイオニアパターン
      • 1.6.2 スモールチームパターン
      • 1.6.3 ミックスドチームパターン
    • 1.7 まとめ
  • 第2章 需要予測システムを作る
    • 2.1 需要予測の目的
    • 2.2 機械学習チームとソフトウェア開発チームの構成例
      • 2.2.1 社内初の機械学習プロジェクトチームの場合
      • 2.2.2 実績のある機械学習チームの場合
      • 2.2.3 マトリックス型チームの場合
    • 2.3 機械学習で需要を予測する
      • 2.3.1 課題設定
      • 2.3.2 データ
      • 2.3.3 開発環境の構成
      • 2.3.4 データの前処理
      • 2.3.5 学習
      • 2.3.6 推論の活用と評価
    • 2.4 農業試験場システムと業務のワークフロー
      • 2.4.1 プロジェクト初期のチーム、システム、ワークフロー(2021年1月~2021年6月)
      • 2.4.2 プロジェクト展開期のチーム、システム、ワークフロー(2021年7月以降)
    • 2.5 まとめ
  • 第3章 動物画像アプリで違反検知システムを作る
    • 3.1 動物画像アプリの概要
      • 3.1.1 AIAnimals
      • 3.1.2 動物画像アプリとシステム
      • 3.1.3 AIAnimalsを動かす
      • 3.1.4 動物画像アプリに違反検知が必要になった
    • 3.2 違反検知の目的
      • 3.2.1 機械学習で検知する違反を決める
    • 3.3 違反検知に必要なデータを定義する
    • 3.4 位半検知システムとワークフローの設計
    • 3.5 違反検知モデルを開発する
      • 3.5.1 データを決める
      • 3.5.2 モデルを作る
      • 3.5.3 ジョブの実行
    • 3.6 違反検知システムを実用化する
      • 3.6.1 非同期推論パターンで作る違反検知システム
      • 3.6.2 違反検知をモニタリングする
    • 3.7 まとめ
  • 第4章 動物画像アプリの検索で機械学習を活用する
    • 4.1 動物画像アプリの検索
      • 4.1.1 絞り込みと並べ替え
    • 4.2 機械学習で検索を改善する
    • 4.3 類似語辞書の作成
      • 4.3.1 アクセスログと頻繁に検索される単語
      • 4.3.2 単語ベクトルを用いた類似語辞書作成
      • 4.3.3 類似語辞書を検索に活用する
    • 4.4 ランク学習による検索結果の並べ替え
      • 4.4.1 データを作る
      • 4.4.2 ランク学習モデルを学習する
      • 4.4.3 ランク学習を用いて検索結果を並べ替える
      • 4.4.4 ランク学習のワークフロー
    • 4.5 A/Bテストを構築する
      • 4.5.1 2つのモデルの学習
    • 4.6 画像による検索
      • 4.6.1 MobileNet v3による特徴量抽出とScaNNによるインデックス作成
      • 4.6.2 MobileNet v3とScaNNの推論器
      • 4.6.4 類似画像検索の自動更新
    • 4.7 ユーザに使ってもらえる機械学習を目指して

この本で学んだ用語

コメント

タイトルとURLをコピーしました