SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社の本

システムやワークフローに機械学習を組み込むには?『現場で使える!機械学習システム構築実践ガイド』冒頭を公開

  • このエントリーをはてなブックマークに追加

 機械学習を用いてビジネスや生活の課題を解決するには、その課題に機械学習が本当に必要なのか、そのほかにどんな要素や技術を組み合わせればいいのかという課題解決のシナリオを設計することが重要です。澁井雄介さんによる書籍『現場で使える!機械学習システム構築実践ガイド』(翔泳社)では、需要予測などのビジネスで発生する課題のシナリオにもとづいてシステムやワークフローに機械学習を組み込む手法が解説されています。今回は本書から「Chapter 1 課題、チーム、システム」の冒頭部分を公開しますので、書籍内容を知る参考にしていただければと思います。

  • このエントリーをはてなブックマークに追加

 本記事は『現場で使える!機械学習システム構築実践ガイド デザインパターンを利用した最適な設計・構築・運用手法』の「Chapter 1 課題、チーム、システム」から抜粋したものです。掲載にあたって一部を編集しています。

ソフトウェア技術によってビジネス課題を解決するには

 機械学習はビジネスや生活の課題を解決する便利な手段の一つですが、機械学習単体ですべての課題を解決できるとは限りません。機械学習を有効活用するためには機械学習を動かすコンピュータシステムと、そのシステムを開発、運用するチームが必要です。

 機械学習を含むソフトウェア技術によってビジネス課題を解決するためには、そのソフトウェアをシステムやワークフローに組み込む必要があります。システムとはコンピュータに関わるハードウェアやソフトウェア、周辺機器によって構成される仕組みであり、日々の業務で使う勤怠管理等の社内システムや、生活を便利にするE-commerce等のWebシステムを言います。

 ワークフローとは課題を解決するための手順であり、システムや人間の業務によって構成されています。たとえば人事システムを使って社員が有給休暇を申請し、管理職が承認する手順や、E-commerceを使って消費者が商品を選び、カゴに入れ、購入を決め、支払い、倉庫で商品が梱包され、運送業者に発送依頼し、倉庫から発送され、家に届くまでの流れをワークフローと言います(図1.1)。

図1.1 E-commerceのワークフロー
図1.1 E-commerceのワークフロー

 現代の生活や仕事のいたる所にシステムやワークフローが存在します。機械学習によって物事を便利にするとき、機械学習はワークフローの一部を自動化、改善または拡張するためにシステムに組み込まれます。

 たとえば需要予測によって商品の仕入れ数を計画するために機械学習を用いる場合、その商品が将来売れるであろう数量(需要)を機械学習で予測します。人間が需要を予測する場合、担当者が未来(来週、来月等)の販売数や来店客数を予測し、今後の発注や人員配置を計画します。機械学習で需要を予測する場合、担当者が予測する部分を機械学習で代替することになります。機械学習による需要予測はシステムに組み込まれることによって自動化されます。

 またはE-commerceやWeb掲示板等のWebサービスでコンテンツを検索するとき、検索結果の並べ替えに機械学習を用いることが可能です。検索結果の並べ替えと言うと、新しい順や「いいね」の数順のように並べ替え条件が明確なものがある一方、人気順のように条件が不明瞭なものもあります。機械学習によってアクセス数や評判を総合的に評価して「人気順」を予測して並べ替えることができます。

 さらには単語で検索するだけでなく、機械学習を用いることで画像によってコンテンツを検索することができます。画像を検索システムにアップロードして、似ている画像を探すユースケースです。この場合、ユーザの検索方法に画像という選択肢を与え、検索体験を拡張します。機械学習を組み込むことによって便利になるシーンや解決する課題は多々あります。

 機械学習によってワークフローを改善するためには、ワークフローに内在する課題を定義し、その課題が解決または改善されている状態を決める必要があります。ワークフローの課題は、人間が使って不便な箇所や、間違いやすい手順、またはシステムに組み込まれていても頻繁に間違うタスク、自動化されない手間、時間やコストのかかる作業等、多種多様です。これらのうち、コンピュータシステム化されていて(またはコンピュータシステムに置き換えることができて)、しかも機械学習を使うことが可能で、さらには機械学習が役に立つ課題が、機械学習を有効活用できる課題です。

 機械学習を有効活用するためには複数の前提があります。前提には、たとえばデータが用意できる、開発に多少コストがかかっても良い、100%正解しなくても良い(つまり、間違っても良い)といった条件が含まれます。さらには前提をクリアできても機械学習が有効活用できるということでもありません。現状と比較して、機械学習を使った場合には現状よりもコストや工数や品質等が改善されている必要があります。

 昨今の機械学習界隈で言われているジョークの一つに「まともな機械学習エンジニアの重要な仕事は、機械学習が必要ないプロジェクトに『機械学習は必要ない』と進言することだ」というものがあります。機械学習で解決しようとしている課題で、実際には機械学習は不要、または機械学習が役に立たない(さらには逆効果な)課題は数多くあります。機械学習が役に立つ課題を選定し、使うあるいは使わない意思決定をすることがとても重要です。

 業務やプロダクトがシステム化されていない場合、機械学習を導入するためには、その一部または全部にコンピュータシステムを導入する手間とコストが発生します(図1.2)。コンピュータシステムを構築し、運用するコストは多くの場合、機械学習のモデル単体を開発し、リリースして運用するコストよりも高額になります。もちろん、システムを導入せずに機械学習だけを導入することは多くの場合不可能です。システムと機械学習の関係は、システムを作り、その中に機械学習を組み込んでいく順番になります。

 機械学習によって課題を解決するためには、システムを導入するコストを含めて、本当にその課題を解決するメリットがあるのか、今一度考える必要があるのです。昨今のDX(デジタル・トランスフォーメーション)の流行により、人間の作業のシステム化、自動化が進んでいますが、機械学習の導入はさらにその先のステップになります。

図1.2 機械学習が有効でないケース
図1.2 機械学習が有効でないケース

 機械学習を有効活用するためには機械学習を導入するためのシステムを作り、運用する必要があります。そして機械学習とシステムを作って運用するためには、作って運用する人が必要になります(図1.3)。一般的にはソフトウェアエンジニアと呼ばれる職種がその専門家です。ソフトウェアエンジニアは専門性によって細分化されており、たとえば機械学習の専門家であれば機械学習(ML)エンジニアやデータサイエンティスト、スマホアプリの開発者であればフロントエンドエンジニア、AndroidエンジニアやiOSエンジニア、データの専門家であればデータエンジニアやデータ基盤エンジニア等々と呼ばれます。

 こうした職種名は業界や企業によってさまざまです。広大なシステム開発・ソフトウェア開発業界ではソフトウェアエンジニアリングの専門分化が進んでいます。機械学習を用いたシステムを1つ作るにしても、多様なスキルを組み合わせる必要があるのです。言い換えると、機械学習を実用化するためのシステムを作り、運用するためには、そのためのスキルを持ったエンジニアのチームが必要になります。

図1.3 機械学習を有効活用するためには
図1.3 機械学習を有効活用するためには

 本書では、具体的なビジネス課題を機械学習で解決するための手順と実装を説明します。そのために具体的なビジネスシーンを定義し、企業に所属するチームの規模やスキルセットとシステムを想定し、課題解決に繋がるワークフローの再定義とシステム設計を行い、実際にシステムを作り、動かし、機械学習を組み込んだプロダクトを実用化していきます。

 本書の目的は機械学習の理論や方法論を説明することではありません。機械学習を実用化する手順とプロダクトを開発する一例を示し、読者が機械学習を使って世の中を便利にすることを後押しすることです。この目的のために、ビジネスで頻繁に見られる課題として、商品の需要予測、Webサービスの違反検知、そして検索システムの改善を取り上げて、それらのシステムを0から組み上げていきます。そのシステムの中に機械学習を組み込んでいき、日々使われる本番システムの中で機械学習がどう作用し、運用されるのか、具体的な使われ方をプログラムとともに説明します。そしてそのシステムを実現するために必要な技術やチームメンバーのスキルセットを紹介し、機械学習を本当にビジネスに組み込んで実用化していくための方法論と技術を提示します。

機械学習で課題を解決するシナリオを決める

 「機械学習で解決する課題を決める」と書くと、社内に機械学習で解決できる課題がすでに存在していて、解決に向けてすぐ開発が進められるように聞こえます。しかし多くのビジネスシーンでは、多様な課題が未解決のまま存在していて、その中で機械学習によって解決可能なものを探し、その課題を機械学習で解決するメリットが機械学習を導入するためのデメリットを凌駕していることを評価する必要があります。

 たとえばWebサイトにチャットボットを導入している企業は多々ありますが、そのチャットボットを機械学習で会話できるようにする必要はあるでしょうか(図1.4)? Webサイトを訪れたユーザが商品の使い方が分からなくてチャットボットを開くことはあるでしょうが、そのチャットボットに機械学習を使うことが合理的とは限りません。チャットボットは手段でしかありません。チャットボットのような手段で解決したい課題は、ユーザの曖昧な悩みをQ&A形式で明確にしつつ、解決策を提示することです。

図1.4 ルールベースで作成したチャットボットと機械学習で作成したチャットボット
図1.4 ルールベースで作成したチャットボットと機械学習で作成したチャットボット

 機械学習を使わなくても、チャットボットを選択肢式のアンケート形式にして、ユーザが選択肢を選んでいくことで解決策に辿り着くワークフローでも、課題解決は可能です。アンケート形式のほうが機械学習を用いるよりも技術的に簡単ですし、ユーザ体験的に優れている場合もあるかもしれません。開発工数にしても、選択肢式のチャットボットであれば、質問と選択肢を用意して、分岐のためのif-else文を組み合わせていけば実現できます。

 チャットボットに機械学習を使う場合、ユーザが商品に対する質問を文章にしてチャットボットに投稿し、その文章を機械学習で理解し、解決策を探してきてチャットボットに投稿するような流れになるでしょう。機械学習による文章理解を用いたチャットボットの場合、まずは質問文を大量に用意し、その解決策と突き合わせて、機械学習モデルを開発し、本番システムに組み込んでいく必要があります。大量で間違いのないデータセットを用意する難しさがあるでしょう。

 さらには商品の使い方が変わったときに、改めてデータセットを用意する必要があるかもしれません。商品の使い方の複雑さや更新頻度次第ですが、おそらく選択肢式の開発、運用は機械学習による開発、運用よりも1/10以下の工数と難易度で済むでしょう。しかも選択肢式であれば、質問文を英語や中国語等に翻訳すれば多言語対応が可能です。機械学習を使う場合、多言語対応のためにはそれぞれの言語の文章を用意し、そのデータを用いて機械学習モデルを別々に作る必要があります。

 チャットボットに機械学習を用いることが絶対に非効率と主張するつもりはないですが、解決しようとしている課題が本当に機械学習を使わなければならないものか、検討する必要があります。

 機械学習で解決しなければならない課題とは、その他の手法で解決することが品質面やコスト面で機械学習に劣っているものです。本書で説明するWeb掲示板の違反検知に画像認識を用いる例はその一つです。昨今の機械学習による画像認識の精度は人間の目を凌駕する品質に達し、自動化も容易になっています。画像認識で解決可能な課題であれば、機械学習を使うことはとても合理的な選択肢となってきています。しかし、画像認識の課題を常に機械学習で解決しなければならないということではありません。

 たとえばWeb掲示板に1日に最多で10件の画像投稿があるとして、人間の顔が写っていたら違反とします。1日に10件程度であれば社員が片手間で確認できるでしょうし、人間の顔が写っているかどうかの判断に30秒もかからないでしょう。10件×30秒=300秒で、この違反検知のために必要な人間の時間は最大で5分/日程度ということになります。1人5分の作業を機械学習で置き換えることが合理的かどうかは会社の状況次第かもしれませんが、多くの場合、その開発工数は他の重要な課題解決に差し向けたほうが有益でしょう。

 それではもし、Web掲示板に毎日100万件の画像が投稿されるとしたらどうでしょうか? 1枚の画像を30秒で見るとしても、100万件を確認するためには100万件×30秒=3,000万秒かかり、これは1人で実施すると約347日間に相当します。1,000人で手分けして確認すれば9時間以内(ただし休憩なし)に完了しますが、画像を確認するために毎日1,000人の社員を雇用することは経営上効率的とは言えないでしょう。この規模であれば、機械学習によって違反検知を自動化することによって、1,000人の人件費を削減できることになり、機械学習で解決することは合理的と言えます。

 機械学習で課題を解決するためには、機械学習によって課題が解決している状態を定義する必要があります。上記の違反検知であれば人件費を削減しつつ、サービスの品質を維持または改善することになるでしょう。人件費の削減とは、機械学習を組み込んだ違反検知を開発し運用する人件費が、人間による違反検知を実行していたときの人件費よりも削減されている状態を言います。

 サービスの品質維持とは、サービスの正常な運営(ユーザが不要な画像や不快なコンテンツを見て、ユーザ離れを助長しないこと)維持に必要な違反検知の抜け漏れ率に対して、機械学習を組み込んだ違反検知の抜け漏れ率が優れている状態を言います。これらの目標を達成するために機械学習を導入することになるのですが、機械学習を使っても、一切のリスクがなくコストがかからないで課題解決できるというものではありません。機械学習を実用化するためにはエンジニアが必要であり、そのエンジニアの人件費が、人間による画像確認の人件費を超えるようであれば、人件費の削減という目標は達成できません。

 または、機械学習による違反検知で、たとえば人間の顔は100%正確に検知できているけど、同時に動物の顔を50%の確率で違反と認識してしまっている場合、違反判定された動物の顔が写った画像を違反ではないように修正する必要があります。この誤検知の課題を改めて解決する(または解決しないと判断する)必要があります。

 機械学習で課題を解決するシナリオとは、ここまで書いてきた課題の選定や解決手法の合理性、解決している状態の定義、そして課題を解決することによって発生する新たな課題への対応を決めることです。何らかの方法論や技術が課題を100%完璧に解決することは稀です。社会や企業、個人が直面している課題はそれだけ複雑で解決が難しく、挑戦的なものばかりです。

 本書では第2章、第3章、第4章のそれぞれで、需要予測、違反検知、検索のビジネス活用で発生する課題のシナリオを定義し、機械学習による解決策を提示していきます。いずれも課題を100%解決し、問題を完全に根絶するものではありませんが、状況を50%くらいは良い方向に向かわせる方法を示すつもりです。読者が全く同じ課題に直面しているとは限りませんが、皆様の困りごとを解決するヒントになれば幸いです。

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

Amazon  SEshop  その他

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

著者:澁井雄介
発売日:2022年11月14日(月)
定価:3,740円(本体3,400円+税10%)

本書について

機械学習システムを構築する上で実際に発生する課題を想定し、動いているシステムやワークフローに機械学習を組み込む方法を解説した書籍です。特にニーズの高い需要予測システムと違反検知システム、検索システムの例を用意しています。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
翔泳社の本連載記事一覧

もっと読む

この記事の著者

澁井 雄介(シブイ ユウスケ)

Launchable Inc所属。MLOpsエンジニア、インフラエンジニア、バックエンドエンジニア、Androidエンジニア、ネコ2 匹の飼い主。家に猫用ハンモックが4台ある。本業でDeveloper ProductivityのためのMLOps・データ基盤を開発しつつ、MLOpsコミュニティの運営や...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

渡部 拓也(ワタナベ タクヤ)

 翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16819 2022/11/21 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング