次の方法で共有



2019 年 4 月

Volume 34 Number 4

[機械学習]

クローズドループのインテリジェンス:機械学習の設計パターン

Geoff Hulten 氏 | 2019 年 4 月

モデルを構築し配置するために機械学習を使用する方法については、多くの優れた記事があります。これらは、重要なコア スキルについて詳細に説明しているという点で、プログラミング手法を説明する記事と似ています。しかし、簡単な例を構築する以上のことをするには、一連の別なスキルが必要です。従来のシステムでは、これらのスキルは "ソフトウェア エンジニアリング"、"ソフトウェア アーキテクチャ"、"設計パターン" などと呼ばれています。大規模なソフトウェア システムと、それらを構築して目的の効果を実現するチームを編成するためのアプローチです。

この記事では、従来のソフトウェア エンジニアリング プロセスに機械学習を加える場合に考慮する必要のある事柄をいくつかご紹介します。これには、次の点が含まれます。

機械学習とユーザーを結び付ける:ユーザーと機械学習の間のループを閉じることの意味を説明します。

適切な目標の選択:システムのどの部分を機械学習で処理すべきか、および時間と共にこれを進化させる方法を説明します。

機械学習を伴う実装:長期的に使用する機械学習ベースのソリューションをサポートするために構築する必要があるシステムについて説明します。これは、従来のシステムでは構築する必要のないものです。

機械学習システムの運用:機械学習ベースのシステムを長期間運用する際に予期すべき事柄を説明します。

もちろん、最初に問題になるのは、機械学習を使用すべき状況を判断することです。判断するにあたって重要な要素の 1 つは、どれほど頻繁に更新すればアプリケーションが適切に機能するようになると考えられるかです。5 回や 10 回など、その回数が少ないなら、機械学習は適切ではないでしょう。一方、システムが存在する限り 1 時間ごとに更新するなど、その回数が多い場合は機械学習が必要かもしれません。

何回も更新しないと明らかにうまくいかない状況が 4 つあります。

  • 大きな問題:問題が大きいという場合があります。この種の問題は、検討すべき変数や条件があまりにも多いため、一度に処理しきることは不可能です。
  • オープンエンドの問題:多くの問題には 1 つの決まった解決策が存在せず、長期間にわたって成長し続ける種々のサービスが必要です。
  • 時間的に変化する問題:徹底的で予測不能な変化が頻繁に生じる分野の場合、機械学習を検討する価値があるかもしれません。
  • 本質的に難しい問題:音声認識、天候シミュレーション、気象予測などの難題に機械学習は役立ちますが、それには、トレーニング データの収集、問題の理解、インテリジェンスの開発のために何年もの努力が必要です。

対処すべき問題にこれらの特性のどれかが当てはまるなら、機械学習が役に立つ可能性があります。そうでないなら、従来のアプローチで取り組む方がおそらく良いでしょう。従来のアプローチで目標を達成できるのであれば、大抵の場合、その方が低コストでシンプルです。

機械学習とユーザーを結び付ける

ループを閉じるとは、システムのインテリジェンスとシステムを使用する側の間に好循環を作ることです。インテリジェンスが向上すればするほど、ユーザーがシステムから得る利点は増え (おそらく使用頻度も増え)、システムを利用するユーザーが増えれば増えるほど、ユーザーが生成するデータが増えて、インテリジェンスが向上します。

検索エンジンを考えてみましょう。あるユーザーがクエリを入力し、いくつかの答えが表示されます。どれかが役立つと思えば、ユーザーはそれをクリックし、満足します。しかし、このやり取りは検索エンジンにも役立っています。ユーザーが答えをクリックすると、どんなクエリに対してどのページがクリックされたかがわかり、検索エンジンはこの情報を利用して適応と向上ができるのです。システムを利用するユーザーが増えれば増えるほど、改善のチャンスが増えることになります。

しかし、正しいクローズド ループは偶然の産物ではありません。ループが機能するには、ユーザーとインテリジェンスの間の対話を形成する UX を設計する必要があります。そのようにして初めて、有用なトレーニング データが生成されるのです。良い対話には次の特性があります。

対話のコンポーネントが明確で、結び付けやすい。良い対話では、ユーザーとアプリケーションが対話したときのコンテキスト、ユーザーが実行したアクション、対話の結果を把握できます。たとえば、本のレコメンド機能は、ユーザーがどんな本を持っていてどれくらいその本が好きか (コンテキスト)、どんな本が以前にユーザーにレコメンドされて、ユーザーがそのどれかを購入したか (アクション)、ユーザーがその本を購入して満足したかどうか (結果) を理解する必要があります。

結果が暗黙的かつ直接的である。エクスペリエンスが良好なら、ユーザーが自然にシステムを使っている様子を見れば (評価やフィードバックを求めなくても)、やり取りの結果を暗黙のうちに解釈できます。また、ユーザーがアクションを実行してから結果を得るまでの間に長く時間がかかり過ぎたり、無関係な対話が続いたりするようなことはありません。

バイアスがまったく (またはほとんど) ない。良好なエクスペリエンスは、考え得るさまざまな結果をユーザーがどのように体験するかを考慮したものになっており、組織的にであれ、無意識的にであれ、ユーザーによる結果のカテゴリの報告が過小または過大になるよう働きかけることはありません。たとえば、電子メール プログラムの受信ボックスを見ないユーザーはいませんが、迷惑メール フォルダーを見ないユーザーはたくさんいます。したがって、受信トレイにスパム メッセージが入っていたという悪い結果が報告される割合は、迷惑メール フォルダーに正当なメッセージが入っていたという悪い結果に比べてはるかに大きくなります。

フィードバック ループを含まない。クローズド ループではフィードバックのせいで誤りが倍加することがあります。たとえば、よく利用されるアクションを抑制するという誤りをモデルが犯すとします。それが抑制されているせいでユーザーはそのアクションを選択しなくなりますが、ユーザーがそれを使用しなくなったのを見て、モデルは、そのアクションを抑制したのは正しかったと学習することがあり得ます。フィードバック ループに対処するには、抑制されたアクションに到達する別な方法をエクスペリエンスが提供することと、モデルの出力をいくらかランダムにすることを検討することが必要になります。

これらは、機械学習とユーザーを結び付ける際の基本の一部です。UX と機械学習が相互にサポートするように設計されていると、機械学習の効力はほぼ確実に増します。これをうまく行えば、他の方法で構築しようとすると法外なコストがかかるさまざまな種類のシステムを実現できます。

適切な目標の選択

機械学習で構築されるシステムの興味深い特性の 1 つは、運用初日はパフォーマンスが最低だということです。ユーザーとモデルの間のループを閉じれば、時間の経過とともにシステムは徐々に改善されます。つまり、簡単な目標から始めて、システムが改善するにつれてより困難な目標に向けて再調整できるということです。

自律走行車の設計を考えてみましょう。それがあらゆる点で完全になるまで開発に取り組んでから、出荷することもできます。あるいは、それより単純な下位の問題 (前面衝突回避など) から始めることもできます。前面衝突回避でも、完全自律運転でも、実際に製造する自動車は、制御装置やセンサーなどのすべてにわたってまったく同じかもしれません。しかし、完全な自動化という極度に難しい目標を設定するのではなく、衝突軽減という比較的対処しやすい目標を設定したとしましょう。

衝突回避それ自体にも価値があるので、その車を買って使用する人もいるでしょう。その結果、機械学習に利用できるデータが生成され、さらに良いモデルが構築されます。用意ができたら、レーン追従など、前より少し難しい目標を設定できます。これが、ユーザーにさらなる価値を提供するものとなって、最終的に自律走行車を目指すための好循環が確立されます。

そのプロセスには数か月かかるでしょう。何年もかかるかもしれません。それでも、ユーザーと機械学習の間のクローズド ループなしで自律走行車を製造しようとするよりも、ほぼ間違いなくコストを抑えられるはずです。

モデルが向上するにつれて、次にどんな目標を設定すべきかが大抵わかるものです。たとえば、最初はスパム メッセージを迷惑メール フォルダーに移動していたスパム フィルターが、後にスパム メッセージをすぐ削除できるように改善されることがあります。また、製造欠陥検出システムも、詳細な検査が必要な対象に目印を付けるという最初の目標から、モデルが改良されるにつれて、欠陥品を自動的に破棄できるようになるかもしれません。

今構築できるモデルで達成可能な目標を設定することが重要です。機械学習プロセスが成長を遂げて、時間の経過に伴ってますます興味深い目標を達成できるようになるなら、すばらしいことです。

機械学習を伴う実装

大きな問題、オープンエンドの問題、時間的に変化する問題、本質的に難しい問題に対処するために構築されるシステムの場合、その有効期間中に何度も更新が必要になります。システムの実装次第で、低コストで安全に更新できる場合もあれば、コストがかさみ危険になる場合もあります。機械学習ベースのシステムを、時間の経過とともに一層柔軟で効率的なものにするオプションは数多くあります。一般的な投資には次のものがあります。

インテリジェンス ランタイム 機械学習を使用するには、ランタイムを実装するなどの基本的なことを行わなければなりません。ランタイムにより、モデルを読み込んで実行し、アプリケーションのコンテキストを特徴付け、モデルの指示する内容に従って正しいエクスペリエンスをユーザーに提供します。ライブラリをクライアントにリンクするなどの単純なランタイムもあれば、次のような事柄をサポートする複雑なものもあります。

  • 時間の経過に伴い、使用するモデルの種類に変更を加える。単純なルールから始め、問題に関する理解が深まるにつれて、より複雑な機械学習のアプローチに移行します。
  • クライアント、サービス、バックエンドで動作する各モデルを組み合わせる。コストとパフォーマンスのニーズに基づき、時間の経過とともにモデルがこれらの場所の間で移行できるようにします。
  • 配置がうまくいかなかったときに元に戻すことをサポートする。さらに、機械学習ではほぼ不可避である、多くの損害を伴う特定の誤りを迅速にオーバーライドする方法をサポートします。

インテリジェンス管理 使用可能になった新しいモデルを取り込んで、必要な場所に配布する必要があります。たとえば、本社のラボで作成されたモデルを、世界中のクライアント上で実行しなければならない場合が考えられます。あるいは、モデルの一部はバックエンドで実行し、一部はサービスで実行する場合もあり得ます。モデルの作成者たちに配置、検証、同期の維持を全部任せることもできますが、これをサポートするシステムを構築することもできます。

インテリジェンス テレメトリ 機械学習用の効果的なテレメトリ システムは、データを収集して、時間の経過とともにさらに一層優れたモデルを作り上げます。インテリジェンス実装では、インテリジェンスの作成ができるよう、観察する対象、サンプリングする対象、情報の整理方法や要約方法を決定する必要があります。さらに、そのプロセスでユーザーのプライバシーを保護する方法も決定する必要があります。テレメトリは非常にコストがかかる場合があり、テレメトリのニーズは機械学習ベースのシステムの有効期間中に変化するものです。したがって、コスト管理と適応性を同時に実現できるツールを実装するのが合理的な場合が少なくありません。

インテリジェンス作成環境 機械学習ベースのシステムが成功するには、モデルの実行、配布、監視、作成のそれぞれ間で、非常に多くの調整が必要になります。たとえば、正確なモデルを生成するには、実行時に生じることをモデル作成者が正確に再現できる必要があります。とはいえ、モデル作成者のデータはテレメトリからのもので、ラボで実行されるのに対し、実行時のデータはアプリケーションからのもので、アプリケーションのコンテキストで実行されるものです。

モデル作成と実行時の不一致はバグの一般的な原因であり、機械学習の専門家はこれらの問題を追跡することに長けているとはあまり言えません。このため、より一貫性のあるインテリジェンス作成エクスペリエンスが提供されれば、実装において機械学習の専門家の生産性は大いに向上する可能性があります。

これらのコンポーネント (ランタイム、インテリジェンス管理、インテリジェンス テレメトリ、インテリジェンス作成) すべてについて、最小限のものを実装することもできます。これらのコンポーネントは基本処理を実行し、時間の経過に伴う適応についてはエンジニアリング面の継続的な投資に頼ることになります。あるいは、非エンジニアのユーザー向けに、優れたツールを備えた柔軟性のあるコンポーネントを作成することもできます。そうすれば、それらのユーザーは、低コストで迅速に、失敗しないという自信をもって、新しい目標に向けた再調整ができるようになります。

インテリジェンス オーケストレーション

インテリジェンス オーケストレーションはカー レースにいくらか似ています。チーム全体で車を製造し、そこに最新のテクノロジすべてを注ぎ込み、空気力学的に優れたウィング、バラスト、ギア比、吸気弁すべてを完璧に仕上げます。他のマシンでは不可能なことを可能にする見事なマシンを作り上げるのです。

ここで、誰かがハンドルを握り、コースを走り、勝利を勝ち取らなければなりません。

インテリジェンス オーケストレーターは、そのドライバーのような存在です。インテリジェント システムを制御し、その目標達成に必要な事柄を行います。インテリジェンス作成システムとインテリジェンス管理システムを使用して、適切なインテリジェンスを適切なタイミングで作り出し、最も役立つ方法でそれを組み合わせます。テレメトリ システムを制御し、モデルを改良するのに必要なデータを収集します。さらに、誤りや問題すべてに対処し、アプリケーションがユーザーにとっても会社にとっても考え得る最大の価値を生み出すように、すべてのバランスを取ります。

"システムの調整は、そのライフサイクルを通じて機械学習がやってくれるんだと思っていた。どういうこと?何かの冗談?" と思われたかもしれません。 残念ながら、冗談ではありません。人工知能と機械学習には限界があるのです。オーケストレーションとは、時間の経過とともに生じる変化に対応しつつ、これらのツールの長所を活かし短所をカバーして、ツールが価値を生み出せる最高の条件で使用できるようにすることです。オーケストレーションは、次の理由で必要になることがあります。

目標の変化:何かに取り組み続けていると、理解は深まるものです。当初の目標設定が間違いだったことに気付き、調整が必要になることがあります。あるいは、ユーザーとモデルの間のクローズド ループが非常にうまくいって、さらに高い目標を設定する場合もあるでしょう。

ユーザーの変化:新しいユーザーがやって来て嬉しくなることも、昔からのユーザーが去ってしまって悲しくなることもあります。このようなユーザーにより、モデルが順応する必要のある新しいコンテキスト、新しい動作、新しい機会が作り出されます。

問題の変化:以前のアプローチや以前に下した決定が、将来も役に立つとは限りません。あるときは、ある問題がたやすく処理できるかもしれません (スパム送信者が全員休暇中など)。時が変わると、その問題が非常に困難になることがあります (祝日が近いときなど)。問題が変化するとき、ほとんどどんな場合でも、オーケストレーションでそれに適応し、より良い結果を実現するチャンスがあります。

モデルの質の変化:データは可能性の扉を開きます。最も強力な機械学習テクニックの一部は、データが少ないと効果がありませんが、ユーザーがシステムを利用し、データが集まれば集まるほど効果を増します。このような変化により、新しいエクスペリエンスを試したりさらに積極的な目標を目指したりするためのさまざまな可能性の扉が開くことがあります。

システム運用コストの変化:大規模なシステムでは、常にコストと価値のバランスを取る必要があります。コストを大幅に節約しつつ、ユーザーやビジネスにとっての価値は少ししか減らない方法で、エクスペリエンスやモデルを変更できる場合があります。

システムを悪用しようとするユーザー:残念なことに、インターネットの至るところで荒らしが横行しています。ただ楽しみのためにサービスを悪用しようとする人がいます。大半は、金銭的利益を得るため、またはあなたが金銭的利益を得るのを邪魔しようとして、サービスやサービスの利用者に不正を働こうとします。対応しないでいると、悪用によってシステムが損なわれ、スパムだらけになって、ユーザーが離れてしまう危険があります。

これらのいくつかは、機械学習ベース システムのライフサイクル中にほぼ確実に生じます。これらを識別して適応できるようになれば、これらの潜在的問題をチャンスに変えることができます。

機械学習ベースのシステムを実装することと、それらをオーケストレーションすることは、まった違うアクティビティです。それらには、まったく違う考え方が求められます。その上、成功するには両方ともきわめて重要です。優れたオーケストレーターには次の特徴があります。

  • システムのビジネス分野の専門家で、ユーザーの目標を直感的に理解できます。
  • エクスペリエンスを理解し、対話を見て、モデルの出力がユーザーにどのように表示されるかに関して効果的な適応を施す能力があります。
  • その実装を理解しているので、問題のトレース方法がわかっていて、小さな改善を加えることができます。
  • データに質問して、その結果を理解して説明することができます。
  • 応用機械学習を理解しており、モデル作成プロセスを制御し、システムに新しいモデルを導入することができます。
  • 毎日、システムを効率的に実行することから満足を得ることができます。

まとめ

機械学習はすばらしいツールです。しかし、機械学習を最大限に活用するには、モデルを構築して、いくらかの予測をする以上のことが求められます。そのためには、大規模なソフトウェア システムとそれを構築する人々から成るチームを組織するために使用する他の手法に、機械学習のスキルを加えなければなりません。

この記事では、大規模に機械学習を使用するための設計パターンの 1 つである、クローズドループ インテリジェンス システムというパターンを手短に概観しました。これに含まれる知識としては、機械学習を使用すべき状況、ユーザーと機械学習の間のループを閉じることの意味、時間の経過に伴ってさらに有意義な目標を達成するためにシステムを再調整する方法、より効率的かつ安全な適応を可能にする実装方法、システムを長期間実行するときに生じ得る事柄があります。

人工知能と機械学習は世界を変えつつあり、今はそれに関わることができるすばらしい時代です。


Geoff Hulten 氏は、「Building Intelligent Systems (インテリジェント システムの構築)」(intelligentsystem.io/book/) の著者です。10 年以上にわたって応用機械学習プロジェクトを統率し、ワシントン大学で修士課程の機械学習コースを指導してきました。その研究内容は、最も権威ある国際会議で取り上げられ、何千回も引用されてきており、データ マイニングに関する研究者コミュニティに対して時の試練に耐える大きな貢献をしたことを称えて SIGKDD Test of Time 賞が贈られました。

この記事のレビューに協力してくれたマイクロソフト技術スタッフのDr.James McCaffrey に心より感謝いたします。