以下の詳細な説明は単なる例示であり、実施形態または実施形態の応用もしくは用途あるいはその組合せを限定することを意図していない。さらに、前述の技術分野もしくは発明の概要のセクションまたは発明を実施するための形態のセクションに示した、いかなる明示または暗示した情報も制約されることを意図していない。
次に、図面を参照して1つまたは複数の実施形態を説明するが、同様の参照番号は、全体を通して同様の要素を指すために使用される。以下の説明では、説明の目的で、1つまたは複数の実施形態のより完全な理解を提供するために、多数の具体的な詳細を記載している。しかしながら、様々な場合において、1つまたは複数の実施形態がこれらの具体的な詳細なしで実施され得ることは明らかである。
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在知られている、または後に開発される他の任意のタイプのコンピューティング環境と組み合わせて実装することが可能である。
いくつかの態様において、「クラス」、「分類」、「決定」、または「推奨」という用語は、特に指定のない限り、本明細書では交換可能に使用され得る。
人工知能(AI)は、人間が発揮する自然知能とは対照的に、機械によって実演される知能を指すことがある。いくつかの態様において、AI技術を実際の状況またはシミュレーションされた状況あるいはその両方で利用して、個人が単独で達成でき得ることを超えて、決定の正確性、一貫性、公平性を高めることができる。しかしながら、固有のバイアス、たとえばAIシステムを訓練するために使用される訓練データにおけるバイアスによって、結果的にそのようなシステムが決定および推奨にバイアスをかける場合がある。さらに、このようなバイアスは、様々なAIアルゴリズム自体によって実施される手順によって増幅されることがある。このようなバイアスは、AIシステムおよびAIシステムの推奨に対するユーザの信頼の低下につながることがある。したがって、AIシステムの推奨および決定についての説明を提供するAIシステムが必要とされている。このような説明は、AIシステムおよびAIシステムの推奨に対するユーザの信頼を高める可能性がある。
いくつかの態様において、説明は人間のコミュニケーションに固有である。さらに、人から人への有効な説明を構成するものに対する正式な定義を作り出すこととは対照的に、システムから人への説明に対する定義を作り出すことは困難である場合がある。たとえば、数学では、説明を正式に提供するために、証明が使用されることがある。このような証明は、合意された論理および形式論を使用して構築される場合があり、したがって、その分野で訓練された人は証明の有効性について合意することができる。しかしながら、数学的フレームワーク以外では、実際の状況において、特に非技術系の対象者に提供される非技術系の説明に対して証明形式論を使用しない場合がある。たとえば、司法制度などの公式の社会的状況においてさえも、被告が法律に違反しているかどうかを判断するために、非専門家の陪審員が利用され得る。このような非専門家は、たとえば、所与の事件における検察および弁護によってなされた非公式の議論を比較検討する際に自分の直感および経験に依存することがある。
いくつかの態様において、説明は、ある人物(A)から別の人物(B)への伝達とすることができ、人物Aによって行われた行動または人物Aによってなされた決定についての正当化理由(justification)を提供することができる。その結果、十分な正当化理由により、人物Bによる人物Aの意思決定能力への信頼が高まる可能性がある。この正当化は非公式に行われる場合があり、繰り返し行われる場合もある。さらに、両方の参加者は、正当化理由を伝える間、たとえば、「理解しているか?」(A)または「理解している(もしくは、理解していない)」(B)の変形であるフレーズを使用して、お互いの理解を確認することができる。いくつかの実施形態において、AIシステムを使用して、個人に加えてまたは個人の代わりに説明を提供することができる。このような場合、本明細書に記載されるように、人物Aを、AIシステムに置き換えるか、またはAIシステムで拡張することができる。
説明を提供する1つの手法は、AIシステムが特定の推奨をどのように構築するかに関する詳細な説明を提供することを含む。このような手法は、AIシステム・ビルダまたは利害関係者あるいはその両方にとって特に有益であり得る。いくつかの態様において、この手法は、デバッガが有効にされた状態でコンピュータ・アプリケーションが実行される、AI以外のコンピュータ・アプリケーションのデバッグに類似している場合がある。このようにして、システムの動作中にシステムを監視して、対象となる様々なシステム応答を検出および観察することができる。しかしながら、AIシステムにおいては、コンピュータ・アプリケーションのモデル・コンポーネントが人間によって記述されず訓練によって作成されるため理解し難い場合があるので、このような手法はより困難である可能性がある。さらに、ニューラル・ネットワークなどの本質的に解釈が難しい機械学習技法に基づくモデルが関係するケースにおいて、推奨プロセスをモデル化するためのこのような解釈可能な手法を開発することは困難である場合がある。さらに、コンピュータ・アプリケーションのモデル・コンポーネントは、より広範なコンピュータ・アプリケーションのコンテキスト内で使用する必要がある場合があり、その内部の対話が、決定および説明にさらに影響を与える可能性がある。したがって、このような手法から生成される説明において、このような決定の影響を考慮する必要がある場合がある。
様々な実施形態において、本開示は、特定の推奨に関する説明を提供するためのシステム、方法、および装置について記載しており、このような説明は、特定の入力から独立したAIシステムの動作の説明とは異なる場合がある。すなわち、説明は、モデルまたはグローバル説明とは異なる場合がある。いくつかの実施形態において、本開示は、エンティティ(たとえば、内容領域専門家(subject matter expert)、または説明のコンシューマ)に、訓練データ内で有効な説明を示すことよってAIシステムを訓練し、この訓練を使用してシステムの推奨についての説明を生成するよう求める方法について記載している。これにより、特定のAIモデルおよびそれが含まれるシステムの詳細を理解しようと試みることの困難さと、この理解を人間が理解できる特定の複雑性レベルおよび分野にマッピングすることの困難さとを回避することができる。したがって、本開示の実施形態は、システムによって提供される説明がユーザの複雑性レベルおよび分野に適合する可能性を高める場合がある。さらに、追加の訓練は、訓練時間に比較的大きな負担を加えず、訓練データの全体的な精度を向上させる可能性がある。
具体的には、本開示は、訓練モードおよびアプリケーション・モードの2つのモードで動作することができるシステムについて記載している。訓練モードでは、システムは、特徴ベクトルに対応する分類および説明に加えて、特徴ベクトルを含む訓練データセットを入力として受け取ることができる。説明は、内容領域専門家によって提供され得る。システムはさらに、分類と説明を組み合わせて、第1の拡張ラベルを作成することができる。さらに、システムは、特徴ベクトルおよび拡張ラベルを含む別の更新済みの訓練データセットを生成する。アプリケーション・モードでは、システムは更新済みの訓練データセットで訓練された分類器を使用して、(訓練されない)実世界の特徴ベクトルを分析し、それにより対応する実世界の拡張ラベルを生成することができる。さらに、システムは、分類器を使用して実世界の拡張ラベルを分解して、実世界の特徴ベクトルに対する分類および説明を生成することができる。このようにして、システムは、所与の特徴ベクトルの実世界の分類についての説明を提供することができる。
いくつかの態様において、本開示の1つまたは複数の実施形態は、複雑性または分野あるいはその両方への適合を含むことができ、システム、方法、および装置によって提供される説明は、その説明が、システムを訓練している分野の専門家によって作成された場合、その分野の複雑性および技術的フレームワークに適合することができる。他の態様において、本開示の1つまたは複数の実施形態は、AIシステムによる説明の精度を向上させることができる。たとえば、訓練データが正確であり、生産データを表す場合、説明の精度は高くなり得る。
いくつかの態様において、本明細書に記載のシステム、方法、および装置は、機械学習分類アルゴリズムから独立していてもよく、ニューラル・ネットワークを含む任意の教師あり学習分類アルゴリズムを使用できるため、この技法を広く展開可能にすることができる。たとえば、使用され得る多クラス機械学習アルゴリズムには、サポート・ベクトル・マシン学習アルゴリズム、最近傍機械学習アルゴリズム、深層学習アルゴリズム、エクストリーム分類アルゴリズム、再帰学習アルゴリズム、階層学習アルゴリズム、ランダム・フォレスト・アルゴリズムなどが含まれるが、これらに限定されない。
いくつかの実施形態において、システム、方法、および装置は、コード化および計算の観点から、実装することが比較的簡単であり、そのため実装の妨げとなり得る計算のバグが生成される可能性を低減する。
別の態様において、システム、方法、および装置は、コンシューマおよびエンド・ユーザを教育することができる。所与の分野に関する適切な説明を提供することの1つの課題には、訓練データセットを作成することが含まれ得る。本開示の実施形態は、AIシステムが現実的にどのような種類の説明を提供できるかに関する期待値を設定する方法を可能にする。たとえば、訓練データセットを利用すると、システムにとって、特定の融資申請が拒否されるのはなぜかを説明することは、特定の写真が猫を表すのはなぜかを説明するよりも簡単な場合がある。したがって、後者の場合の説明と比較して、前者の場合の説明に関しては、顧客に様々な期待レベルを設定することができる。AIシステムに顧客の期待値を正しく設定すると、システムに対する顧客の満足度が向上する可能性がある。
いくつかの実施形態において、システム、方法、および装置は、開示されたAIシステムを使用するエンティティ(たとえば、組織および会社)に審査能力の向上を提供することができる。たとえば、説明を含む訓練データセットを作成した後、内容領域専門家は特定の決定についての可能な説明を効果的に列挙してもよい。可能な説明のこのような列挙は、審査されることに対する防御に有用である。たとえば、説明は、「融資を拒否する理由として考えられるすべてのものは何か?」または「治療Xを処方するのはどのような状況か?」などの質問に答える働きをすることができる。このような質問は、エンティティに対する審査または審査のような手順において使用することができる。
いくつかの実施形態において、本開示の実施形態は、意思決定手順におけるバイアスの低減を可能にすることができる。具体的には、少なくともバイアスされた決定は、内容領域専門家が説明を用いて正当化することがより難しい可能性があるので、説明を提供することにより、訓練データにおけるバイアスを検出する可能性が高くなる。さらに、同じまたは類似の説明を有する訓練データのインスタンスは、対応する特徴空間内で互いに近接してクラスタ化する場合がある。したがって、バイアスを決定するために、このようなクラスタ化の特性に基づいて異常を検出するためのさらなるアルゴリズムが使用されることがあり、AIシステムにより多くの訓練データをさらに入力する必要性を引き起こす可能性がある。
図1は、本明細書に記載の1つまたは複数の実施形態による、AIが作成した推奨を説明と共に提供するための例示的で非限定的なシステム100のブロック図を示す。本開示で説明するシステム(たとえば、システム100など)、装置、またはプロセスの態様は、マシン内に具現化された、たとえば、1つまたは複数のマシンに関連付けられた1つまたは複数のコンピュータ可読媒体に具現化された、マシン実行可能コンポーネントを構成することができる。このようなコンポーネントは、たとえばコンピュータ、コンピューティング・デバイス、仮想マシンなどの1つまたは複数のマシンによって実行されると、記載した動作をマシンに実行させることができる。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。
システム100は、任意選択で、サーバ・デバイス、1つまたは複数のネットワーク、および1つまたは複数のデバイス(図示せず)を含み得る。システム100はまた、メモリ104に記憶されたコンピュータ実行可能コンポーネントを実行する少なくとも1つのプロセッサ102を含み得るか、あるいはそれに関連付けられ得る。システム100は、訓練コンポーネント110、推奨コンポーネント112、組合せコンポーネント114、および分解コンポーネント116を含むがこれらに限定されない様々なコンポーネントを結合することができるシステム・バス106をさらに含み得る。システム100は、デバイスに通信可能に結合され得る任意の適切なコンピューティング・デバイスまたはコンピューティング・デバイスのセットとすることができ、その非限定的な例には、サーバ・コンピュータ、コンピュータ、モバイル・コンピュータ、メインフレーム・コンピュータ、自動化されたテスト・システム、ネットワーク記憶デバイス、通信デバイス、ウェブ・サーバ・デバイス、ネットワーク・スイッチング・デバイス、ネットワーク・ルーティング・デバイス、ゲートウェイ・デバイス、ネットワーク・ハブ・デバイス、ネットワーク・ブリッジ・デバイス、制御システム、または他の任意の適切なコンピューティング・デバイスが含まれ得るが、これらに限定されない。デバイスは、システム100と情報を通信することができる任意のデバイス、またはシステム100によって提供される情報を使用することができる他の任意の適切なデバイスあるいはその両方とすることができる。システム100、コンポーネント、モデル、またはデバイスは、1つまたは複数のネットワークを介してシステム、コンポーネント、モデル、デバイスなどの間の通信を可能にする通信コンポーネント114を備え得ることを理解されたい。
前述のように、説明は、決定または行動に対する正当化理由を、あるエンティティから別のエンティティに伝えることができる。したがって、説明のコンシューマは、説明を理解できる必要がある。したがって、推奨コンポーネント112は、ユーザの複雑性能力に関連するメトリックに適合する、説明の複雑性に関連するメトリックを有する説明を提供するように構成され得る。このような複雑性メトリックは、たとえば、説明の複雑性およびユーザの素養に対応するスコアを含む、任意の適切な形式をとることができる。たとえば、決定の理由を明示する正確で数学的に洗練された方程式は、統計学者には適切であり得るが、非技術系の人には理解可能な説明を提供しない可能性がある。さらに、多くの状況では、より複雑であるが完全な説明よりも、単純で典型的な説明が好ましい場合がある。
いくつかの態様において、本明細書に記載のシステム100の性能品質についてのメトリックは、使用するデータセット内に説明を伴わない、ベースラインの従来のシステムおよび対応する機械学習アルゴリズムによって決定された同様の分類器の精度に関連する性能メトリックと対比して、訓練コンポーネント110または推奨コンポーネント112あるいはその両方によって決定された分類器の精度に関連するメトリックを含むことができる。いくつかの態様において、システム100および関連するアルゴリズムの精度が所与の閾値を下回る場合、システム100の性能を向上させるためにどの程度多くの訓練データが必要であるかを決定するためには、このような説明を使用しない従来のシステムおよび機械学習アルゴリズムに比べて、より大きな訓練データセットが訓練コンポーネント100によって使用され得る。いくつかの態様において、訓練コンポーネント110または推奨コンポーネント112あるいはその両方は、標準的な多クラス分類器と比較して精度を向上させるために、以下で説明する階層多クラス分類器を使用することができる。
いくつかの実施形態において、推奨コンポーネント112は、たとえば関連する用語を組み込むことによって、推奨の分野に合わせた説明を提供するように構成され得る。たとえば、医療の推奨の説明では、推奨を検討している医師または看護師あるいはその両方が理解できる医療用語を使用することを必要とする場合がある。対照的に、所与のAIシステムが生成した、たとえば「X1>0.45」および「X2<43.5」という説明によって特定の治療を推奨することは、X1およびX2がユーザ(たとえば、医師)にとって固有の意味を持たない場合があるので、ユーザの数学的素養に関係なくユーザにとって有用ではない可能性がある。しかしながら、「ブドウ糖の数値が高すぎ、血圧が低すぎる」ことを示す異なる説明は、ユーザにとってより有益である可能性がある。
いくつかの態様において、システム100による複雑性の要件と分野の要件を適合させるという問題にさらに対処するために、機械学習訓練プロセスが、訓練プロセス中に内容領域専門家に有効な説明となるものについてシステム100を訓練するよう求めるように構成され得るように、訓練コンポーネント110を構成することができる。より具体的には、訓練コンポーネント110に提供される訓練データの各インスタンスは、分類または決定に加えて説明を含む必要がある場合がある。いくつかの実施形態において、訓練データで使用される説明を使用して、実世界のデータについての説明を提供することができる。
本開示の特定の実施形態を明確にするために本明細書で参照され得るこのようなシステム100の非限定的で例示的なユースケースには、融資申請の質問に対する回答を受け取り、融資申請を承認または拒否するための推奨を作成するシステム100が含まれ得る。このようなシステム100がその推奨の説明を提供するために、訓練コンポーネント110に提供される訓練データを、内容領域専門家が提供する説明で拡張することができる。たとえば、拒否の場合における訓練の推奨は、「給与が不十分」、「既存債務が多すぎる」、「仕事の安定性が不十分」、「住宅の安定性が不十分」、「申請が不完全」のようなテキストによる説明を含み得る。このような説明は、対象分野(たとえば、銀行の分野)に関連する場合があり、説明を利用するユーザ(たとえば、融資担当者または融資申請者あるいはその両方)の複雑性レベルを満たす場合がある。いくつかの実施形態において、システム100は、内容領域専門家(たとえば、融資担当者または銀行職員)によって提供される訓練の説明を、新しい融資申請に対してなされた決定に関する説明の基礎として使用することができる。
いくつかの実施形態において、システム100は、既存の機械分類技術を容易な方法で活用して、訓練コンポーネント110または推奨コンポーネント112あるいはその両方によって、対応する分類と共に説明を作成する分類器を生成することができる。いくつかの実施形態において、教師あり機械学習分類器を作成するために、2つのコンポーネントを有する訓練データのセットが訓練コンポーネント110に提供される必要があり得る。第1のコンポーネントは、特定のエンティティに対する特徴ベクトルxのセットを含むことができる。このような特徴ベクトルの例には、画像、ビデオ、オーディオ、テキストなどが含まれ得るが、これらに限定されない。たとえば、融資申請の場合、融資に関する情報は、特徴ベクトルの一部としてテキスト形式で記述することができる。第2のコンポーネントは、各特徴ベクトルに対する決定または分類あるいはその両方yを含むことができる。このような決定または分類あるいはその両方の例には、画像、ビデオ、またはオーディオについての説明、テキストの段落についての要約、融資申請に対する融資承認決定などが含まれ得るが、これらに限定されない。
さらに、訓練コンポーネント110は、訓練データ内の各要素(x,y)について第3のコンポーネントをさらに受け取ることができる。具体的には、特徴xがなぜ特定のクラスyを生成したかについての説明zのセットである。いくつかの実施形態において、zは、数字、テキスト文字列、画像、またはビデオ・ファイルなどの任意の適切な形式をとることができる。いくつかの実施形態において、各zは、一意の識別子で表すことができる。以下でさらに記載するように、組合せコンポーネント114は、yとzを組み合わせて、新しいx入力に関するクラス(y)と説明(z)の両方を出力するモデルを訓練することができる。
いくつかの実施形態において、訓練コンポーネント110への入力は、訓練特徴ベクトルxのセットを含むことができる。さらに、訓練コンポーネント110への入力は、各特徴ベクトルxに対する正しいクラスのセットを含み得る分類yを含むことができる。さらに、訓練コンポーネント110への入力は、各特徴ベクトルに対応する説明zのセットを含むことができる。
いくつかの実施形態において、推奨コンポーネント112の出力は、分類するための実際の特徴ベクトルを含むことができ、これはxrealと呼ばれることがある。さらに、推奨コンポーネント112の出力は、各特徴ベクトルの予測されたクラスを含むことができ、これはypredictと呼ばれることがある。最後に、各特徴ベクトルおよびクラス予測についての予測された説明であり、これはzpredictと呼ばれることがある。
いくつかの態様において、組合せコンポーネント114によって、yおよびzの各インスタンスを組み合わせるかまたはマージして、一意の拡張ラベルyzにすることができる。次いで、任意の標準的な教師あり機械学習分類アルゴリズムなど(たとえば、サポート・ベクトル・マシン(SVM)・アルゴリズム、最近傍(NN:nearest neighbor)アルゴリズムなど)のAI技法への訓練入力として、3タプル(x,yz)を使用することができる。AI技法は分類器Cを作成することができ、xは、特徴ベクトルのセットを表すことができ、拡張ラベルyzは、それらの特徴ベクトルに対応するクラスである。分類器Cは、(実世界のデータに対応する)特徴ベクトルxrealとして表され得る新しいデータ・インスタンスを分類し、それによってクラスyoutputを生成するために使用され得る。分解コンポーネント116において、youtputは、予測されたクラスypredictおよび予測された説明zpredictを作成するために、分解コンポーネント116を使用して、かつ上記の組合せコンポーネント114によって使用される逆のプロセスを使用して分解され得る。
いくつかの態様において、将来のx値に対する予測を実行するために、推奨コンポーネント112によって、ベースライン(x,y)分類器(すなわち、説明zのない分類器)を使用することができ、次いで、説明を作成するために、説明を含む(x,yz)分類器を使用することができる。いくつかの態様において、(x,yz)分類器および(x,y)分類器は、異なるy値を予測してもよい。状況によっては、ベースライン分類器を使用すると、より良い分類が可能になる場合があり、訓練コンポーネント110のより多くの訓練データが必要であることを知らせることができる。別の態様において、2つの分類器の不一致は、さらなる調査が必要となり得る場合を示すことがある(より多くの訓練データまたは説明クラスの改善など)。たとえば、このような場合は、同様の訓練x値が2つの異なる説明zにマッピングされていることを示している可能性があり、したがって、ユーザまたは内容領域専門家が、システムに介入するか、またはシステムを再訓練するかあるいはその両方の必要があることを知らせることができる。いくつかの態様において、yz分類器を各クラスyで訓練することができ、次いで、ベースラインxy分類器を使用してクラスyを見いだし、yz分類器を使用して説明zを見いだすことができる。このような実施形態は、分類yと種類zとの間の階層関係を必ずしも必要とせず、階層分類器(たとえば、図2または図4あるいはその両方、および関連する説明を参照)と同様とすることができる。
システム100の様々なコンポーネント(たとえば、訓練コンポーネント110、推奨コンポーネント112、組合せコンポーネント114、分解コンポーネント116または他のコンポーネントあるいはその組合せ)は、直接に、または1つもしくは複数のネットワークを介して接続することができる。このようなネットワークには、セルラー・ネットワーク、ワイド・エリア・ネットワーク(WAN)(たとえば、インターネット)、またはローカル・エリア・ネットワーク(LAN)を含むがこれらに限定されない有線および無線ネットワークが含まれる場合があり、ネットワークの非限定的な例には、セルラー、WAN、ワイヤレス・フィディリティ(Wi-Fi)、Wi-Max、WLAN、無線通信、マイクロ波通信、衛星通信、光通信、音波通信、または他の任意の適切な通信技術が含まれる。さらに、前述のシステムまたはデバイスあるいはその両方は、いくつかのコンポーネント間の対話に関して説明されている。このようなシステムおよびコンポーネントは、これらのコンポーネント、もしくはそのコンポーネントにおいて指定されたサブコンポーネント、指定されたコンポーネントもしくはサブコンポーネントのいくつか、または追加のコンポーネントあるいはその組合せを含み得ることを理解されたい。サブコンポーネントはまた、親コンポーネントの中に含まれず、他のコンポーネントに通信可能に結合されたコンポーネントとして実装することができる。さらに、1つもしくは複数のコンポーネントまたはサブコンポーネントあるいはその両方は、集約機能を実現する単一のコンポーネントに一体化することができる。コンポーネントはまた、簡潔にするために本明細書では特に記載されていないが当業者には知られている、1つまたは複数の他のコンポーネントと対話することもできる。
さらに、実行されるプロセスのいくつかは、その特定のコンテキストで様々なタイプのニューラル・ネットワークに関連する定義されたタスクを実行するための専用コンピュータによって実行することができる。主題のコンピュータ処理システム、方法、装置、またはコンピュータ・プログラム製品あるいはその組合せは、技術、コンピュータ・ネットワーク、インターネットなどの進歩を通じて生じる新しい問題を解決するために使用することができる。
本明細書に記載のデバイスの実施形態は、本明細書に記載の1つまたは複数の機能を自動化しやすくするために、人工知能(AI)を使用することができる。コンポーネントは、本明細書に開示される様々な実施形態/例を実施するために様々なAIベースの方式を使用することができる。本明細書に記載の多数の決定(たとえば、決定する、確認する、推論する、計算する、予測する、予知する、推定する、導出する、予想する、検出する、計算する)を実現または支援するために、本明細書に記載のコンポーネントは、アクセスが許可されているデータの全体またはサブセットを調べることができ、イベントまたはデータあるいはその両方を介して取り込まれた観察結果のセットから、システムの状態、環境などを推論すること、または決定することができる。決定は、たとえば、特定の状況または動作を識別するために使用することができ、あるいは諸状態にわたる確率分布を生成することができる。決定は、確率論的なもの、すなわち、データおよびイベントについての考察に基づいた、対象の諸状態にわたる確率分布の計算とすることができる。決定はまた、イベントまたはデータあるいはその両方のセットからより高いレベルのイベントを構成するために使用される技法を指すこともできる。
このような決定により、イベントが時間的に近接して相関しているかどうか、ならびにイベントおよびデータが1つまたは複数のイベント・ソースおよびデータ・ソースからのものかどうかの観察されたイベントまたは記憶されたイベント・データあるいはその両方のセットから、新しいイベントまたは動作を構築することになり得る。本明細書に開示されたコンポーネントは、特許請求された主題に関連した自動動作または決定された動作あるいはその両方の動作を実行することに関連して、様々な分類((たとえば、訓練データによって)明示的に訓練される、ならびに(たとえば、挙動を観察すること、選好、履歴情報、外部情報を受け取ることなどによって)暗黙的に訓練される)方式またはシステムあるいはその両方(たとえば、サポート・ベクトル・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン信念ネットワーク、ファジー論理、データ・フュージョン・エンジンなど)を使用することができる。したがって、分類方式または分類システムあるいはその両方は、いくつかの機能、動作、または決定あるいはその組合せを自動的に学習および実行するために使用され得る。
分類器は、f(z)=confidence(class)のように、入力属性ベクトルz=(z1、z2、z3、z4、…、zn)を、入力が1つのクラスに属する信頼性にマッピングすることができる。このような分類は、(たとえば、分析の有用性およびコストを要因に入れる)確率論的または統計ベースあるいはその両方の分析を用いて(たとえば、要因として分析有用性およびコストに含める)、自動的に実行されるべき動作を決定することができる。サポート・ベクトル・マシン(SVM)は、使用できる分類器の一例であり得る。SVMは、可能な入力の空間内で超曲面を見つけることによって動作し、超曲面は、トリガ基準を非トリガ・イベントから分離しようとする。直観的に、これは、訓練データに近いが同一ではない試験データを正しく分類する。他の有向および無向モデル分類手法には、たとえば、異なる独立パターンを提供するモデルが使用され得る、ナイーブ・ベイズ、ベイジアン・ネットワーク、決定木、ニューラル・ネットワーク、ファジー論理モデル、または確率的分類モデルあるいはその組合せが含まれる。本明細書で使用されるような分類には、優先順位のモデルを開発するために利用される統計的回帰も含まれる。
図2は、本開示の例示的な実施形態による、所与のデータセットの例示的な分類の図を示す。具体的には、図2は、クラスA202、クラスB204、およびクラスC206の3つの分類を含む第1の図201を示す。図2はさらに、クラスA1 210、クラスA2 212、クラスB3 214、クラスB4 216、およびクラスC5 218の5つの分類を含む第2の図203を示す。いくつかの実施形態において、図203は、図201のさらなる種別を表すことができ、それによって図201は、図203のクラスと比較して、クラスのより高いレベルの階層を表すことができる。具体的には、クラスA1 210およびクラスA2 212は、図201のクラスA202の種類を表すことができる。同様に、クラスB3 214およびクラスB4 216は、クラスB204の種類を表すことができる。
図201および図203について、例を用いてさらに説明する。たとえば、本開示によるシステムは、癌治療を推奨するように訓練され得る。このようなシステムの例示的な訓練セットは、以下のもの、すなわち(P1,TA)、(P2,TA)、(P3,TA)、(P4,TA)、(P5,TB)、(P6,TB)、(P7,TB)、および(P8,TC)を含むことができ、Piは患者iを表す特徴ベクトルであり、Tiは様々な治療の推奨を表す。
したがって、上記のように、開示されたAIシステムおよび対応するアルゴリズムは、以下の(P1,TA,E1)、(P2,TA,E1)、(P3,TA,E2)、(P4,TA,E2)、(P5,TB,E3)、(P6,TB,E3)、(P7,TB,E4)、および(P8,TC,E5)のように、データ訓練セットに追加の説明コンポーネントEiを必要とする場合がある。
いくつかの実施形態において、各Eiは、患者を表す特徴ベクトルがなぜ特定の治療にマッピングされるかを正当化する説明を表すことができる。例が示すように、いくつかの治療は、複数の説明、すなわち、なぜ特定の治療が推奨されるのかに関する複数の説明を有してよい。たとえば、治療TAは、2つの異なる理由E1およびE2で推奨される場合があり、治療TCは、理由E5でのみ推奨される場合がある。
この拡張された訓練データが与えられると、開示された技法は、トリプレットを、任意の所与の機械学習アルゴリズム(たとえば、任意の標準的な教師あり機械学習アルゴリズム)が使用できる形式に変換することができる。具体的には、トリプレットは、機械学習アルゴリズムが通常処理する形式(特徴、クラス)のタプルに変換され得る。この変換は、以下の(P1,T EA1)、(P2,T EA1)、(P3,T EA2)、(P4,T EA2)、(P5,T EB3)、(P6,T EB3)、(P7,T EB4)、および(P8、T EC5)ように、第2のコンポーネントと第3のコンポーネントを組み合わせて一意の新しいクラスすることによって実行することができる。
上記の例を考慮すると、図2は、言及した変換を適用し、開示されたアルゴリズムを使用した後、訓練データセットがどのように変化するかに関する図201および図203を示す。具体的には、図201は、例における8つの訓練インスタンスが3つのクラス(クラスA202、クラスB204、およびクラスC206)にマッピングされ得ることを示す。図203は、訓練データが変更されたとき、すなわち訓練データに説明が追加されたときの分類を示す。具体的には、クラスA202は、クラスA1 210およびA2 212に分解することができ、さらにクラスBは、クラスB3 214およびB4 216に変換することができ、クラスCはクラスC5 218のままである。さらに、図203は、訓練データに説明を追加すると、暗黙的に2レベルの階層が作成されることを示す。すなわち、図203の変換されたクラスは、図201の元のクラスのメンバである。具体的には、クラスA1 210およびA2 212は、元のクラスA 202の分解を表し、クラスBについても同様である。この階層特性は、データを訓練して精度を向上させるときに階層分類アルゴリズムを使用することによって活用されてよい。さらに、説明は、たとえば、ユーザのニーズに応じて、複数のレベルの詳細を含むように拡張されてよい。
図3は、本開示の例示的な実施形態による、AIシステムの推奨の説明を提供するAIシステムの例示的な実装の図を示す。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。具体的には、図301は、システムの訓練コンポーネントを表すことができる。いくつかの実施形態において、訓練データセット302は、システムによって受け取られ得る。訓練データセット302は、(x,y,z)要素を含むことができ、xは特徴ベクトルを表し、yは分類または決定を表し、zは説明を表す。
ブロック304において、システムは、訓練データセット302内のデータ項目ごとに、分類yを説明zと組み合わせ、それによって拡張ラベルyzを生成することができる。いくつかの態様において、拡張ラベルは、yとzの連結とすることができ、またはyとzのより高度化された組合せ(たとえば、ハッシュ化された組合せ)としてもよい。ブロック306において、システムは、拡張ラベルyzに基づいて、更新済みの訓練データセット(x,yz)を生成することができる。
ブロック308において、システムは、更新済みの訓練データセットに機械学習アルゴリズムを適用することができ、それによってモデル(たとえば、多クラス・モデル)の生成につながる。310において、更新済みの訓練データセット(x,yz)に基づくモデルを実世界のデータに適用することができる推奨コンポーネント303に対して、システムの出力が使用され得る。具体的には、システムは、特徴ベクトルx312を含み得る実世界のデータを受け取ることができる。314において、システムは、モデル(たとえば、多クラス・モデル)を適用し、それによって分類yを出力として生成することができる。316において、システムは、生成された分類yに基づいて拡張ラベルyzを決定することができる。318において、システムは、yzを分解し、分類yおよび説明zを生成することができる。
図4は、本開示の例示的な実施形態による、AIシステムの推奨の説明を提供するAIシステムの別の例示的な実装の図を示す。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。具体的には、図401は、システムの訓練コンポーネントを表すことができる。いくつかの実施形態において、訓練データセット402は、システムによって受け取られ得る。訓練データセット402は、(x,y,z)要素を含むことができ、xは特徴ベクトルを表し、yは分類または決定を表し、zは説明を表す。ブロック404において、システムは、訓練データセット402内のデータ項目ごとに、分類yを説明zと組み合わせ、それによって拡張ラベルyzを生成することができる。ブロック406において、システムは、拡張ラベルyzに基づいて、更新済みの訓練データセット(x,yz)を生成することができ、zは、クラスyの特定の例を含む(たとえば、zは、yと階層関係にあり、クラスyの種類を表す)。ブロック408において、システムは、更新済みの訓練データセットに階層機械学習アルゴリズムを適用することができ、それによって、モデル(たとえば、階層多クラス・モデル)の生成につながる。いくつかの態様において、システムによって処理されるべきクラスが多数ある場合に対応するために、1つまたは複数のエクストリーム分類アルゴリズムが使用され得る。410において、更新済みの訓練データセット(x,yz)に基づくモデルを実世界のデータに適用できる推奨コンポーネント403に対して、システムの出力が使用され得る。具体的には、システムは、特徴ベクトルx412を含み得る実世界のデータを受け取ることができる。ブロック414において、システムは、モデル(たとえば、階層多クラス・モデル)を適用し、それによって分類yを出力として生成することができる。ブロック416において、システムは、生成された分類yに基づいて説明zを決定することができる。ブロック418において、システムは、z、およびzとyの間の階層関係に関連する情報を使用して、分類yを生成することができる。
図5は、本開示の例示的な実施形態による、代替の説明を提供するための後処理動作の例示的な図を示す。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。図500は、AIシステム502を含み得る。AIシステム502は、図1、図3、および図4に関連して図示および説明したような様々なコンポーネントを含み得る。具体的には、AIシステム502は、プロセッサ102、メモリ104、訓練コンポーネント110、推奨コンポーネント112、組合せコンポーネント114、または分解コンポーネント116あるいはその組合せを含んでよい。
さらに、AIシステム502は、図3および図4に関連して図示および説明したような動作または手順あるいはその両方を実行するように構成されてよい。具体的には、AIシステム502は、モデル(たとえば、本明細書で述べるような多クラス・モデルまたは階層多クラス・モデル)に基づいて、所与の特徴ベクトルxに説明zを提供することができる。説明zは、ペア(x,y)に関連付けられ得るいくつかの説明のうちの1つとすることができ、たとえば、いくつかの説明は互いの変形であってよい。たとえば、説明は、異なる言語であるか、異なる用語および語彙を使用して記述されるか、または異なるユーザに対する異なるレベルの詳細が与えられ得る。したがって、AIシステム502によって提供される説明を、後処理フィルタ504に提供することができる。504において、後処理フィルタは、たとえば、ユーザ・プロファイル(図示せず)に基づいて所与のユーザ特性を決定することができる。ユーザ・プロファイルは、ユーザによって提供され得るか、またはデータベース、たとえばネットワーク・データベースとの通信を介して提供されてよい。データベースは、クラウド・コンピューティング・プラットフォームに格納またはホストされたデータベースを含むことができる。いくつかの態様において、ユーザ特性には、姓または名、居住地の国、州、郵便番号または市、年齢、生物学的分類、ユーザが通う学校または職場の名前、学歴、給与、職位などが含まれ得るが、これらに限定されない。
具体的には、後処理フィルタ504は、情報のテーブル、たとえば、ルックアップ・テーブル505などのルックアップ・テーブルを含むデータベースにアクセスすることができる。いくつかの実施形態において、ルックアップ・テーブル505は、たとえば特徴ベクトルX1、X2、およびX3を含む、特徴ベクトル506の列を含むことができる。いくつかの実施形態において、ルックアップ・テーブル505は、たとえば分類Y1、Y2、およびY3を含む、分類508の列を含むことができる。いくつかの実施形態において、ルックアップ・テーブル505は、たとえば説明E11、E12、およびE13を含む、第1の説明510の列を含むことができる。一実施形態において、第1の説明は、たとえば訓練または推奨プロセス中に、AIシステムに最初に提供された説明を含むことができる。いくつかの実施形態において、ルックアップ・テーブル505は、第2の説明512(たとえば、説明E21、E22、およびE23)の列、および第3の説明514(たとえば、説明E31、E32、およびE33)の列をさらに含むことができる。一実施形態において、第2の説明512は、第1の説明510の第2の変形を含むことができ、第3の説明514は、第1の説明510または第2の説明512の第3の変形を含むことができる。たとえば、E21は、第1の説明E11の第2の変形を含むことができる。一例において、説明E21および説明E11は、同じまたは類似の内容を有することができるが、異なる言語であるか、異なる用語および語彙を使用して記述されるか、または異なるユーザに対する異なるレベルの詳細が与えられ得る。同様に、説明E31および説明E11、またはE31およびE21は、同じまたは類似の内容を有することができるが、異なる言語であるか、異なる用語および語彙を使用して記述されるか、または異なるユーザに対する異なるレベルの詳細が与えられ得る。いくつかの実施形態において、例示的なルックアップ・テーブル505に示したものよりも多くの説明の列があり得るが、簡潔にするために省略されている。
いくつかの実施形態において、ルックアップ・テーブル505の列、たとえば説明の列の内容は、たとえばハッシュ関数を使用して、短縮またはコード化された形式で提供され得る。さらに、ネットワークに関連付けられているかまたはローカルに設けられた記憶デバイスに格納する必要があるデータの量を削減するために、任意の数の内部マッピングまたはメモリ削減技法およびアルゴリズムを使用することができる。
図6は、本開示の例示的な実施形態による、AIシステムおよびアルゴリズムの態様を動作させるための例示的なフローチャートの図を示す。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。ブロック601において、第1の訓練データセットを受け取ることができ、第1のデータセットは、第1の特徴ベクトル、第1のクラス、および第1の説明を含むことができる。いくつかの態様において、第1の説明は、数字、テキスト文字列、画像ファイル、オーディオ・ファイル、ビデオ・ファイルなどのうちの1つまたは複数を含むことができる。さらに、第1の説明は、処理効率を向上させるためにクラウド・ソーシング・プロセスから少なくとも部分的に提供することができる。たとえば、ユーザが金銭的報奨と引き換えに説明を提供できるように、特徴ベクトルをソーシャル・メディア・プラットフォームに投稿することができる。別の例では、ユーザがたとえば通常の職務の一部として説明を提供できるように、パスワード保護されたネットワーク上のユーザに特徴ベクトルまたは分類あるいはその両方を表示することができる。特徴ベクトルの例には、画像、ビデオ、オーディオ、テキストなどが含まれ得るが、これらに限定されない。決定または分類あるいはその両方の例には、画像、ビデオ、またはオーディオについての説明、テキストの段落についての要約、融資申請に対する融資承認決定などが含まれ得るが、これらに限定されない。第1の説明は、特徴がなぜ特定のクラスを生成したかについての理由を提供することができる。いくつかの実施形態において、説明は、数字、テキスト文字列、画像、またはビデオ・ファイルなどの任意の適切な形式をとることができる。いくつかの実施形態において、各説明は、一意の識別子で表すことができる。
ブロック602において、第1のクラスと第1の説明を組み合わせて、第1の拡張ラベルならびに第1の特徴ベクトルおよび第1の拡張ラベルを含む第2の訓練データセットを生成することができる。いくつかの態様において、拡張ラベルは、第1の説明と第1のクラスの連結を含むことができ、または第1の説明と第1のクラスのより高度化された組合せ(たとえば、ハッシュ化された組合せ)としてもよい。
ブロック604において、第2の訓練データセットで訓練された分類器を使用して、第2の特徴ベクトルを分析し、第2の拡張ラベルを生成することができる。いくつかの態様において、分類器は、多クラス機械学習アルゴリズムを使用して訓練することができる。いくつかの実施形態において、多クラス機械学習アルゴリズムは、サポート・ベクトル・マシン学習アルゴリズム、最近傍機械学習アルゴリズム、深層学習アルゴリズム、エクストリーム分類アルゴリズム、再帰学習アルゴリズム、階層学習アルゴリズム、ランダム・フォレスト・アルゴリズムなどを含む。いくつかの態様において、開示されたAIシステムは、機械学習分類アルゴリズムから独立して動作することができる。別の態様において、本開示は、ニューラル・ネットワークを含む任意の教師あり学習分類アルゴリズムと連携することができ、開示された技術を広く展開可能にすることができる。
ブロック606において、分類器を使用して第2の拡張ラベルを分解して、第2のクラスおよび第2の説明を生成することができる。いくつかの例示的な実施形態において、分解は、拡張ラベルとその対応する分類および説明との連結を解除することによって実行され得る。1つまたは複数の実施形態において、分解は、説明と分類を組み合わせるかまたはマージするために使用された元の関数の逆関数を実行することによって実行され得る。いくつかの態様において、逆関数は、逆ハッシング法、または他の任意の適切な方法もしくは技法の形をとることができる。
ブロック608において、ユーザに推奨を行うことができる。いくつかの態様において、推奨は、たとえばスマートフォン、ラップトップ、コンピュータなどのユーザのデバイスを介してユーザに提示され得る。いくつかの態様において、ユーザは、たとえばデバイスを介してフィードバックを提供することができる。ユーザは、たとえば、推奨が正当化され、十分に説明されたかどうかを特定することができる。たとえば、ユーザは、説明およびそれが所与の状況(たとえば、特徴ベクトルまたは対応する分類/正当化理由あるいはその両方)にどの程度対応しているかをスコア付けすることができる。スコアは、たとえば、1から10の段階でのスコアとすることができ、1は不十分な正当化理由または説明あるいはその両方を表し、10は優れた説明を表す。このようなフィードバックを使用して、たとえば、AIシステムのさらなる最適化のために追加または変更された訓練データセットを提供することによって、AIシステムおよびアルゴリズムの訓練段階を改善することができる。
図7は、本開示の例示的な実施形態による、AIシステムおよびアルゴリズムの態様を動作させるためのさらなる例示的なフローチャートの図を示す。簡潔にするために、本明細書に記載の1つまたは複数の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。ブロック700において、推奨に基づいて、後処理のために1つまたは複数のユーザ特性(年齢、言語など)が決定され得る。いくつかの態様において、推奨は、後処理のための説明と共に後処理フィルタに提供され得る。後処理フィルタは、たとえば、ユーザ・プロファイルに基づいて所与のユーザ特性を決定することができる。ユーザ・プロファイルは、ユーザによって提供され得るか、またはデータベース、たとえばネットワーク・データベースとの通信を介して提供されてよい。データベースは、クラウド・コンピューティング・プラットフォームに格納またはホストされたデータベースを含み得る。
ブロック702において、ユーザ特性および推奨に基づいて、変更された説明を含むデータベースの検索が実行され得る。いくつかの態様において、後処理フィルタは、情報のテーブル、たとえばルックアップ・テーブルを含むデータベースにアクセスすることができる。いくつかの実施形態において、ルックアップ・テーブルは、たとえば、特徴ベクトルX1、X2、およびX3を含む特徴ベクトルの列を含み得る。いくつかの実施形態において、ルックアップ・テーブルは、たとえば、分類Y1、Y2、およびY3を含む分類の列を含み得る。いくつかの実施形態において、ルックアップ・テーブルは、第1の説明の列を含み得る。一実施形態において、第1の説明は、たとえば訓練プロセスまたは推奨プロセス中にAIシステムに最初に提供された説明を含み得る。いくつかの実施形態において、ルックアップ・テーブルは、第2の説明および第3の説明の列をさらに含み得る。一実施形態において、第2の説明は、第1の説明の第2の変形を含むことができ、第3の説明は、第1の説明または第2の説明の第3の変形を含むことができる。一例では、様々な説明が、同じまたは類似の内容を有することができるが、異なる言語であるか、異なる用語および語彙を使用して記述されるか、または異なるユーザに対する異なるレベルの詳細が与えられ得る。
いくつかの実施形態において、ルックアップ・テーブルの列、たとえば説明の列の内容は、たとえばハッシュ関数を使用して、短縮またはコード化された形式で提供され得る。さらに、ネットワークに関連付けられているかまたはローカルに設けられた記憶デバイスに格納する必要があるデータの量を削減するために、任意の数の内部マッピングまたはメモリ削減技法およびアルゴリズムを使用することができる。
ブロック704において、ユーザ特性に基づいて、変更された説明を取得することができる。いくつかの態様において、変更された説明は、任意の適切なアルゴリズムを使用して、データベースまたはルックアップ・テーブル内で説明を検索することによって取得することができる。たとえば、あるデータ構造内に格納された情報を取得するために使用することができる任意の適切な検索アルゴリズムを使用することができる。このような構造の例には、リンク・リスト、配列データ構造、または検索ツリーが含まれるが、これらに限定されない。適切な検索アルゴリズムは、検索されるデータ構造に依存する場合があり、またデータ(たとえば、訓練データセット、ユーザ・プロファイルなど)に関する予備知識を含む場合もある。
ブロック706において、変更された説明がユーザに提示され得る。いくつかの態様において、変更された説明は、たとえばスマートフォン、ラップトップ、コンピュータなどのユーザのデバイスを介してユーザに提示され得る。いくつかの態様において、ユーザは、たとえばデバイスを介してフィードバックを提供することができる。ユーザは、たとえば、変更された説明がユーザにとってより理解しやすかったかどうかを特定することができる。たとえば、ユーザは、変更された説明およびそれがユーザにとってどの程度理解しやすかったかをスコア付けすることができる。スコアは、たとえば、1から10の段階でのスコアとすることができ、1は理解しにくい説明を表し、10は理解しやすい説明を表す。このようなフィードバックを使用して、たとえば、ルックアップ・テーブルまたはデータベースに追加または変更された代替の説明を提供することによって、AIシステムおよびアルゴリズムを改善することができる。
いくつかの実施形態において、図1~図7に関連して説明したAIシステムおよびアルゴリズムによって提供される説明を受け取り、それから利益を得る可能性がある少なくとも3つのエンティティが存在し得る。第1のエンティティには、推奨を使用する人々を含み得るエンド・ユーザ、たとえば医師、裁判官、融資担当者、ソーシャル・ワーカなどが含まれ得る。エンド・ユーザには、推奨によって影響を受ける可能性のある人、たとえば、患者、逮捕者、融資希望者、リスクのある人なども含まれ得る。いくつかの実施形態において、所望の説明は、このようなエンティティが公正に扱われたかどうか、および異なる結果を得るためにどの要素を変更できるかを理解するのに役立つ場合がある。
1つまたは複数の実施形態において、第2のエンティティには、政府機関が含まれることがあり、政府機関は、その市民の権利を保護する責任を負う可能性があり、したがって、差別のない方法で決定が行われることを保証することから利益を得る可能性がある。
一実施形態において、第3のエンティティは、AIシステム・ビルダまたは利害関係者あるいはその両方を含み得る。このようなエンティティには、AIシステムを所有、構築、または展開する技術担当者が含まれ得るので、AIシステムが期待どおりに機能しているかどうか、AIシステムをどのように診断および改善するかを知ること、場合によってはAIシステムの決定から洞察を得ることを必要とする場合がある。
いくつかの実施形態において、説明がエンティティのニーズを確実に満たすようにするために、説明に対する各エンティティのニーズの背景にある動機および期待を使用することができる。たとえば、第3のエンティティは、動作を実行するために、システムの内部構造のより詳細な説明が必要になる場合がある。対照的に、第2のエンティティは、訓練データセットを含むプロセスが公平であり、したがって差別しないというAIシステムによる提示から利益を得る可能性がある。
いくつかの実施形態において、公平性を確保することが説明を求める動機となり得るが、説明を提供することは必ずしもシステムが公平であることを保証するものではなく、説明を作成しない公正なシステムを有することができる。いくつかの実施形態において、決定の影響は大きく変動する可能性があり、したがって、決定の影響は、本明細書に記載の意思決定プロセスの要因となり得る。たとえば、特定のヘルスケア治療の選択、昇進の拒否、または判決の提案は、関与するエンティティに直接的および間接的に影響を及ぼす場合がある。対照的に、表示する広告のタイプ、どのニュース記事を推奨するか、または次にどの映画を視聴するかに関する決定は、関与するエンティティに重要な決定ではない場合がある。したがって、自動化された決定がもたらし得る影響には範囲がある場合があり、決定を特定するために本明細書に記載のアルゴリズムに含めることができる。いくつかの実施形態において、エンティティへの影響が大きいほど、第1および第2のエンティティにとって説明が必要になる可能性が高くなる。さらに、第3のエンティティは、AIシステム、たとえば社会に価値をもたらすAIシステムまたはビジネス・ニーズを満たすAIシステムに強い関心を持つ場合がある。
述べたように、本開示に関連して使用される1つまたは複数のデータベースは、クラウド・コンピューティング・プラットフォーム上に格納またはホストされるデータベースを含み得る。本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される他の任意のタイプのコンピューティング環境と組み合わせて実装することが可能である。
クラウド・コンピューティングは、最小限の管理労力、またはサービス・プロバイダとの最小限の対話で迅速にプロビジョニングおよび解放され得る構成可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便かつオンデマンドのネットワーク・アクセスを可能にするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含み得る。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、サービス・プロバイダとの間で人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを介してアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマにサービス提供するようにプール化され、異なる物理リソースおよび仮想リソースが、要求に応じて動的に割当ておよび再割当てされる。コンシューマは一般に、提供されるリソースの正確な位置に対して制御も知識も有していないが、より高い抽象化レベルでは位置(たとえば、国、州、またはデータセンタ)を特定し得るという点で、位置の独立性があるといえる。
迅速な柔軟性:機能を、迅速かつ柔軟に、場合によっては自動的にプロビジョニングして素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとっては、プロビジョニングに利用可能な機能は、しばしば無制限であるように見え、いつでも任意の数量で購入することができる。
サービスの測定:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適した一定の抽象化レベルでの計量機能を活用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告することができ、利用するサービスのプロバイダとコンシューマの両方に透明性を提供する。
サービス・モデルは、以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定を想定される例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):プロバイダによってサポートされるプログラミング言語およびツールを使用して生成されたコンシューマが生成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージなどの基礎となるクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーション、および場合によってはアプリケーションをホストする環境構成を制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS):オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアをコンシューマが展開および動作させることができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングするために、コンシューマに提供される機能である。コンシューマは、基礎となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては選択されたネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
展開モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運用される。このクラウド・インフラストラクチャは、組織または第三者によって管理されてよく、オンプレミスまたはオフプレミスで存在してよい。
コミュニティ・クラウド:クラウド・インフラストラクチャは複数の組織で共有され、関心事項(たとえば、ミッション、セキュリティ要件、ポリシー、コンプライアンス上の考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、組織または第三者によって管理されてよく、オンプレミスまたはオフプレミスで存在してよい。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーションの移植性(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)を可能にする標準化された技術または専用の技術によって結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図8を参照すると、例示的なクラウド・コンピューティング環境800が示されている。簡潔にするために、本明細書に記載の他の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。図示のように、クラウド・コンピューティング環境800は、たとえば、携帯情報端末(PDA:personal digital assistant)もしくは携帯電話804、デスクトップ・コンピュータ806、ラップトップ・コンピュータ808、または自動車コンピュータ・システム810あるいはその組合せなどのクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード802を含む。ノード802は、互いに通信してよい。ノード802は、本明細書で上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ化されてよい(図示せず)。これにより、クラウド・コンピューティング環境800は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを提供することが可能になる。図8に示すコンピューティング・デバイス804~810のタイプは、例示のみを意図しており、コンピューティング・ノード802およびクラウド・コンピューティング環境800は、(たとえば、ウェブ・ブラウザを使用して)任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
次に図9を参照すると、クラウド・コンピューティング環境800(図8)によって提供される機能抽象化層のセットが示されている。簡潔にするために、本明細書に記載の他の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。図9に示すコンポーネント、層、および機能は、例示のみを意図しており、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示のように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層902は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム904、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ906、サーバ908、ブレード・サーバ910、記憶デバイス912、ならびにネットワークおよびネットワーキング・コンポーネント914が含まれる。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア916およびデータベース・ソフトウェア918を含む。
仮想化層920は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ922、仮想ストレージ924、仮想プライベート・ネットワークを含む仮想ネットワーク926、仮想アプリケーションおよびオペレーティング・システム928、ならびに仮想クライアント930が提供され得る。
一例では、管理層932は、以下に記載の機能を提供することができる。リソース・プロビジョニング934は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計量および価格決定936は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースのための保護に加えて、クラウド・コンシューマおよびタスクのための識別情報の検証を提供する。ユーザ・ポータル983は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理940は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA)の計画および履行942は、SLAに従って将来において要求されることが予想されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
ワークロード層944は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション946、ソフトウェア開発およびライフサイクル管理948、仮想教室教育配信950、データ分析処理952、トランザクション処理954、ならびにエンティティの取扱いサービスに対する感受性の評価956が含まれる。本発明の様々な実施形態は、図8および図9を参照して説明したクラウド・コンピューティング環境を利用して、1つまたは複数のエンティティに関連する信頼傾向値を決定するか、または信頼傾向値に基づいて1つまたは複数のエンティティの1つまたは複数の取扱いサービスに対する感受性を決定するか、あるいはその両方を行うことができる。
本発明は、任意の可能な技術的詳細の統合レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(たとえば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含んでよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行される場合があり。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続される場合があり、または接続は、(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われる場合がある。いくつかの実施形態において、本発明の態様を実行するために、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するための手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表すことがある。いくつかの代替の実装形態において、ブロックに記載された機能は、図に記載された順序とは異なる順序で行われてよい。たとえば、連続して示された2つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
開示された主題の様々な態様についてのコンテキストを提供するために、図10および以下の説明は、開示された主題の様々な態様を実施することができる好適な環境の概要説明を提供することを意図している。図10は、本明細書に記載の1つまたは複数の実施形態を容易にすることができる例示的かつ非限定的な動作環境のブロック図を示す。簡潔にするために、本明細書に記載の他の実施形態で使用されている同様の要素についての繰り返しの説明は省略する。図10を参照すると、本開示の様々な態様を実施するための好適な動作環境1000は、コンピュータ1012を含み得る。コンピュータ1012もまた、処理ユニット1014、システム・メモリ1016、およびシステム・バス1018を含み得る。システム・バス1018は、システム・メモリ1016を含むがこれに限定されないシステム・コンポーネントを、処理ユニット1014に動作可能に結合することができる。処理ユニット1014は、様々な入手可能なプロセッサのうちの任意のものとすることができる。デュアル・マイクロプロセッサおよび他のマルチプロセッサ・アーキテクチャを処理ユニット1014として採用することもできる。システム・バス1018は、業界標準アーキテクチャ(ISA)、マイクロチャネル・アーキテクチャ(MSA)、拡張ISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、VESAローカル・バス(VLB)、周辺機器相互接続(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、アドバンスト・グラフィックス・ポート(AGP)、ファイアーワイヤ、および小型コンピュータ・システム・インターフェース(SCSI)を含むがこれらに限定されない任意の種類の利用可能なバス・アーキテクチャを使用した、メモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バス、またはローカル・バスあるいはその組合せを含む任意のいくつかのタイプのバス構造とすることができる。システム・メモリ1016は、揮発性メモリ1020および不揮発性メモリ1022も含み得る。不揮発性メモリ1022には、起動時などにコンピュータ1012内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム(BIOS)が記憶され得る。限定ではなく例として、不揮発性メモリ1022は、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(たとえば、強誘電体RAM(FeRAM))を含み得る。揮発性メモリ1020もまた、外部キャッシュ・メモリとして機能するランダム・アクセス・メモリ(RAM)を含み得る。限定ではなく例として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスRAM(DRRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバス・ダイナミックRAMなどの多くの形式で利用可能である。
コンピュータ1012は、取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体も含み得る。図10は、たとえば、ディスク・ストレージ1024を示す。ディスク・ストレージ1024には、磁気ディスク・ドライブ、フロッピ・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどのデバイスも含まれるが、これらに限定されない。ディスク・ストレージ1024には、単体での記憶媒体、またはコンパクト・ディスクROMデバイス(CD-ROM)、CD記録可能ドライブ(CD-Rドライブ)、CD書換え可能ドライブ(CD-RWドライブ)、もしくはデジタル多用途ディスクROMドライブ(DVD-ROM)などの光ディスク・ドライブを含むがこれらに限定されない他の記憶媒体と組み合わせた記憶媒体も含まれ得る。システム・バス1018へのディスク・ストレージ1024の接続を容易にするために、インターフェース1026などの取り外し可能または取り外し不可能なインターフェースが使用され得る。図10はまた、ユーザと、好適な動作環境1000に記載している基本的なコンピュータ・リソースとの間の仲介として機能し得るソフトウェアも示している。このようなソフトウェアには、たとえば、オペレーティング・システム1028が含まれ得る。オペレーティング・システム1028は、ディスク・ストレージ1024に記憶することができ、コンピュータ1012のリソースを制御し割り当てるように動作する。システムアプリケーション1030は、システム・メモリ1016内またはディスク・ストレージ1024上などに記憶されたプログラム・コンポーネント1032およびプログラム・データ1034を介してオペレーティング・システム1028によるリソースの管理を利用することができる。本開示は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せを用いて実施され得ることを理解されたい。ユーザは、1つまたは複数の入力デバイス1036を介してコンピュータ1012にコマンドまたは情報を入力する。入力デバイス1036には、マウスなどのポインティング・デバイス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、TVチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウェブ・カメラなどが含まれ得るが、これらに限定されない。これらおよび他の入力デバイスは、1つまたは複数のインターフェース・ポート1038を介してシステム・バス1018を介して処理ユニット1014に接続することができる。1つまたは複数のインターフェース・ポート1038には、たとえば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)が含まれ得る。1つまたは複数の出力デバイス1040は、入力デバイス1036と同じタイプのポートのうちのいくつかを使用することができる。したがって、たとえば、USBポートを使用して、コンピュータ1012に入力を提供し、コンピュータ1012から出力デバイス1040に情報を出力することができる。出力アダプタ1042は、いくつかある出力デバイス1040の中に、特別なアダプタを必要とするモニタ、スピーカ、およびプリンタのような一部の出力デバイス1040が存在することを示すために設けられている。出力アダプタ1042には、限定ではなく例として、出力デバイス1040とシステム・バス1018との間の接続手段を提供するビデオ・カードおよびサウンド・カードが含まれ得る。1つまたは複数のリモート・コンピュータ1044など、他のデバイスまたはデバイスのシステムあるいはその両方が入力と出力の両方の機能を提供することに留意されたい。
コンピュータ1012は、リモート・コンピュータ1044などの1つまたは複数のリモート・コンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモート・コンピュータ1044は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイスまたは他の共通ネットワーク・ノードなどとすることができ、典型的には、コンピュータ1012に関して説明した要素のうちの多くまたはすべても含み得る。簡潔にするために、メモリ・ストレージ・デバイス1046のみをリモート・コンピュータ1044と共に示している。リモート・コンピュータ1044はネットワーク・インターフェース1048を介してコンピュータ1012に論理的に接続され、さらに通信接続1050を介して物理的に接続される。さらに、動作は、複数の(ローカルまたはリモート)システムにわたって分散され得る。ネットワーク・インターフェース1048は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、セルラー・ネットワークなどの有線または無線あるいはその両方の通信ネットワークを包含し得る。LAN技術には、ファイバ分散データ・インターフェース(FDDI)、銅線分散データ・インターフェース(CDDI)、Ethernet(R)、トークン・リングなどが含まれる。WAN技術には、ポイント・ツー・ポイント・リンク、統合サービス・デジタル・ネットワーク(ISDN)およびその変形などの回路交換ネットワーク、パケット交換ネットワーク、ならびにデジタル加入者線(DSL)が含まれるが、これらに限定されない。1つまたは複数の通信接続1050は、ネットワーク・インターフェース1048をシステム・バス1018に接続するために使用されるハードウェア/ソフトウェアを指す。通信接続1050は、説明を明確にするためにコンピュータ1012の内部に示しているが、コンピュータ1012の外部にある場合もある。ネットワーク・インターフェース1048に接続するためのハードウェア/ソフトウェアには、例示のみを目的として、正規電話グレード・モデム、ケーブル・モデムおよびDSLモデムを含むモデム、ISDNアダプタ、ならびにEthernet(R)カードなどの内部技術および外部技術も含まれ得る。
本発明の実施形態は、任意の可能な技術的詳細の統合レベルでのシステム、方法、装置、またはコンピュータ・プログラム製品あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せも含まれ得る。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を介して伝播する電磁波(たとえば、光ファイバ・ケーブルを通る光パルス)、または電線を介して送信される電気信号などの、一過性の信号自体であると解釈されるべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含み得る。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。本発明の様々な態様の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラム言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータ上もしくはサーバ上で実行されてよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は外部コンピュータ(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)に対して行われてもよい。いくつかの実施形態において、本開示の態様を実行するために、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、マシンを作り出すものとすることができる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものとすることもできる。コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作行為を実行させるものとすることもできる。
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、コンポーネント、セグメント、または一部を表すことがある。いくつかの代替の実装形態において、ブロックに記載された機能は、図に記載された順序とは異なる順序で行うことができる。たとえば、連続して示された2つのブロックは、実際には、関与する機能に応じて、実質的に同時に実行することができ、またはそれらのブロックは場合によっては逆の順序で実行することができる。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
本主題について、1つまたは複数のコンピュータ上で動作するコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的なコンテキストで上述したが、当業者には、本開示がまた他のプログラム・モジュールまたはプログラム・コンポーネントと組み合わせて実施され得ることが理解されよう。一般に、プログラム・モジュールまたはプログラム・コンポーネントは、特定のタスクを実行する、または特定の抽象データ型を実装する、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。また、当業者には、本発明のコンピュータ実施方法が、シングル・プロセッサまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、ならびにコンピュータ、ハンドヘルド・コンピューティング・デバイス(たとえば、PDA、電話)、マイクロプロセッサ・ベースのまたはプログラム可能なコンシューマ向けまたは産業用の電子機器などを含む他のコンピュータ・システム構成で実施できることが理解されよう。例示した態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。しかしながら、本開示のすべてではないとしてもいくつかの態様は、スタンドアロン・コンピュータ上で実施することができる。分散コンピューティング環境では、プログラム・モジュールまたはプログラム・コンポーネントは、ローカルおよびリモート両方のメモリ・ストレージ・デバイスに配置することができる。
本出願で使用される場合、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェース」などの用語は、1つまたは複数の特定の機能性を有するコンピュータ関連のエンティティ、または演算マシンに関連するエンティティを指すか、またはそれらを含むか、あるいはその両方である場合がある。本明細書で開示されるエンティティは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかとすることができる。たとえば、コンポーネントは、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、またはコンピュータあるいはその組合せとすることができるが、これらに限定されない。例として、サーバ上で動作するアプリケーションとそのサーバの両方を、コンポーネントとすることができる。1つまたは複数のコンポーネントがプロセスまたは実行スレッドあるいはその両方内に存在することができ、コンポーネントは、1つのコンピュータ上に局在しているか、または2つ以上のコンピュータ間に分散しているか、あるいはその両方である場合がある。別の例では、それぞれのコンポーネントは、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行することができる。コンポーネントは、1つまたは複数のデータ・パケット(たとえば、ローカル・システムまたは分散システム内の別のコンポーネントと、またはインターネットなどのネットワークを経由して他のシステムと、あるいはその両方と信号を介して対話する1つのコンポーネントからのデータ)を有する信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信することができる。別の例として、コンポーネントは、プロセッサによって実行されるソフトウェアまたはファームウェア・アプリケーションによって動作する、電気回路または電子回路によって動作する機械部品によって提供される特定の機能を有する装置とすることができる。そのような場合、プロセッサは装置の内部にあっても外部にあってもよく、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部を実行することができる。さらに別の例として、コンポーネントは、機械部品なしで電子コンポーネントを介して特定の機能を提供する装置とすることができ、ここで電子コンポーネントは、電子コンポーネントの機能を少なくとも部分的に与えるソフトウェアまたはファームウェアを実行するプロセッサまたは他の手段を含み得る。一態様では、1つのコンポーネントが、たとえばクラウド・コンピューティング・システム内の仮想マシンを介して電子コンポーネントをエミュレートすることができる。
加えて、「または」という用語は、排他的な「または」ではなく、包含的な「または」を意味するように意図されている。すなわち、特に指定のない限り、または文脈から明らかでない限り、「XはAまたはBを使用する」は、自然な包括的置換のうちのいずれかを意味するように意図されている。すなわち、XがAを使用するか、XがBを使用するか、またはXがAとBの両方を使用する場合、これらの例はいずれも「XはAまたはBを使用する」を満たしていることになる。さらに、本明細書および添付の図面で使用する冠詞「1つの(a)」および「1つの(an)」は、特に指定のない限り、または文脈から単数形を対象とすることが明らかでない限り、一般に、「1つまたは複数」を意味すると解釈されるべきである。本明細書で使用される場合、「例」という用語または「例示的」という用語あるいはその両方は、例、事例、または例示としての役割を果たすものとして利用される。誤解を避けるために、本明細書に開示されている主題は、そのような例に限定されない。加えて、「例」という用語または「例示的」という用語あるいはその両方として本明細書に記載した任意の態様または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるべきではなく、当業者に知られている同等の例示的な構造および技法を排除することを意味するものでもない。
本明細書で用いられるときに、「プロセッサ」という用語は、シングルコア・プロセッサ、ソフトウェア・マルチスレッド実行能力を有するシングル・プロセッサ、マルチコア・プロセッサ、ソフトウェア・マルチスレッド実行能力を有するマルチコア・プロセッサ、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ、並列プラットフォーム、および分散型共有メモリを有する並列プラットフォームを含むがこれらに限定されない、実質的に任意のコンピューティング処理ユニットまたはデバイスを指すことがある。さらに、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル・シグナル・プロセッサ(DSP)、フィールド・プログラマブル、ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、ディスクリート・ゲートもしくはトランジスタ・ロジック、ディスクリート・ハードウェア・コンポーネント、または本明細書に記載の機能を実行するように設計されたそれらの任意の組合せを指すことがある。また、プロセッサは、ユーザ機器の空間使用を最適化するまたは性能を高めるために、これらには限定されないが、分子および量子ドット・ベースのトランジスタ、スイッチ、およびゲートなどのナノスケール・アーキテクチャを利用することができる。プロセッサは、コンピューティング処理ユニットの組合せとして実装することもできる。本開示では、「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、およびコンポーネントの動作および機能に関連する実質的に他の任意の情報ストレージ・コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」において具体化されたエンティティ、またはメモリを含むコンポーネントを指すために用いられる。本明細書に記載のメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリもしくは不揮発性メモリのいずれかであり得るか、または揮発性メモリと不揮発性メモリの両方を含み得ることを理解されたい。限定ではなく例として、不揮発性メモリは、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(たとえば、強誘電体RAM(FeRAM))を含み得る。揮発性メモリは、たとえば、外部キャッシュ・メモリとして機能し得るRAMを含み得る。限定ではなく例として、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、ダイレクト・ラムバスRAM(DRRAM)、ダイレクト・ラムバス・ダイナミックRAM(DRDRAM)、およびラムバス・ダイナミックRAM(RDRAM)などの多くの形式で利用可能である。さらに、本明細書で開示されているシステムまたはコンピュータ実施方法のメモリ・コンポーネントは、これらを含むことに限定されないが、これらおよび他の任意の適切なタイプのメモリを含むように意図されている。
上記で説明したものは、システム、コンピュータ・プログラム製品、およびコンピュータ実施方法の例を含むにすぎない。当然ながら、本開示を説明するために、コンポーネント、製品、またはコンピュータ実施方法あるいはその組合せの考えられるすべての組合せを説明することは不可能であるが、当業者であれば、本開示の多くのさらなる組合せおよび置換えが可能であると理解することができる。さらに、「含む」、「有する」、「所有する」などの用語は、詳細な説明、特許請求の範囲、添付書類および図面で使用される限り、請求項において「備える」という用語が移行語として用いられるときに解釈されるように、その「備える」という用語と同様に包括的であるように意図されている。様々な実施形態の説明を例示の目的で提示してきたが、網羅的であること、または開示された実施形態に限定されるようには意図されていない。説明した実施形態の範囲から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用例、または市場で見られる技術を超える技術的改良を最もよく説明するために、あるいは、本明細書で開示される実施形態を当業者が理解できるようにするために選択されたものである。