(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-18
(45)【発行日】2024-07-26
(54)【発明の名称】ハイブリッド推論を用いたグラフ・コンピューティングのための方法およびシステム
(51)【国際特許分類】
G06N 5/04 20230101AFI20240719BHJP
G06N 5/045 20230101ALI20240719BHJP
【FI】
G06N5/04
G06N5/045
(21)【出願番号】P 2022549762
(86)(22)【出願日】2021-01-27
(86)【国際出願番号】 IB2021050602
(87)【国際公開番号】W WO2021181169
(87)【国際公開日】2021-09-16
【審査請求日】2023-06-22
(32)【優先日】2020-03-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】リン、ジューン-レイ
(72)【発明者】
【氏名】ウー、チャーリー
(72)【発明者】
【氏名】リー、チェン-タ
【審査官】多賀 実
(56)【参考文献】
【文献】特許第6567218(JP,B1)
【文献】国際公開第2019/022505(WO,A1)
【文献】中国特許出願公開第110149319(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
プロセッサによるグラフ・コンピューティングのための方法であって、
複数の明示的ノードと少なくとも1つの暗黙的ノードとを含むグラフを生成すること、
演繹的推論を利用して、前記複数の明示的ノードのうちの第1の明示的ノードと、前記複数の明示的ノードのうちの第2の明示的ノードとの間をトラバースすること、および
帰納的推論を利用して前記少なくとも1つの暗黙的ノードを介して、前記複数の明示的ノードのうちの第3の明示的ノードと、前記複数の明示的ノードのうちの第4の明示的ノードとの間をトラバースすること
を含む、グラフ・コンピューティングのための方法。
【請求項2】
前記グラフに関連するクエリを受信すること、ならびに
前記複数の明示的ノードのうちの前記第1の明示的ノードと前記複数の明示的ノードのうちの前記第2の明示的ノードとの間を前記トラバースすること、および前記複数の明示的ノードのうちの前記第3の明示的ノードと前記複数の明示的ノードのうちの前記第4の明示的ノードとの間を前記トラバースすることに基づいて前記クエリに対する応答を生成すること
をさらに含む、請求項1に記載の方法。
【請求項3】
前記少なくとも1つの暗黙的ノードは複数の暗黙的ノードを含む、請求項1に記載の方法。
【請求項4】
前記複数の明示的ノードのうちの前記第3の明示的ノードと前記複数の明示的ノードのうちの前記第4の明示的ノードとの間を前記トラバースすることが、帰納的推論を利用して前記複数の暗黙的ノードのうちの第1の暗黙的ノードを介して前記複数の明示的ノードのうちの前記第3の明示的ノードから前記複数の明示的ノードのうちの前記第4の明示的ノードへ至る第1のトラバーサルと、帰納的推論を利用して前記複数の暗黙的ノードのうちの第2の暗黙的ノードを介して前記複数の明示的ノードのうちの前記第3の明示的ノードから前記複数の明示的ノードのうちの前記第4の明示的ノードへ至る第2のトラバーサルとを含み、前記第1のトラバーサルが前記複数の暗黙的ノードのうちの前記第2の暗黙的ノードの外部であり、前記第2のトラバーサルが前記複数の暗黙的ノードのうちの前記第1の暗黙的ノードの外部である、請求項3に記載の方法。
【請求項5】
前記複数の明示的ノードのうちの前記第3の明示的ノードと前記複数の明示的ノードのうちの前記第4の明示的ノードとの間を前記トラバースすることが、帰納的推論を利用して前記複数の明示的ノードのうちの前記第3の明示的ノードから前記複数の暗黙的ノードのうちの第1の暗黙的ノードを介して前記複数の暗黙的ノードのうちの第2の暗黙的ノードへトラバースすること、および帰納的推論を利用して前記複数の暗黙的ノードのうちの前記第2の暗黙的ノードから前記複数の明示的ノードのうちの前記第4の明示的ノードへトラバースすることを含む、請求項3記載の方法。
【請求項6】
前記グラフを前記生成することが、前記少なくとも1つの暗黙的ノードに関連付けられたユーザ入力を受信し、前記ユーザ入力に基づいて前記少なくとも1つの暗黙的ノードを生成することを含む、請求項1に記載の方法。
【請求項7】
前記複数の明示的ノードのうちの前記第3の明示的ノードと前記複数の明示的ノードのうちの前記第4の明示的ノードとの間を前記少なくとも1つの暗黙的ノードを介して前記トラバースすることが、確率論的帰納的推論を利用して実行される、請求項1に記載の方法。
【請求項8】
方法の請求項1ないし7のいずれかに記載の方法のすべてのステップを実行す
る手段を含むシステム。
【請求項9】
プロセッサに、請求項1ないし7のいずれかに記載の方法のすべてのステップを実行
させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にコンピューティング・システムに関し、より詳細には、ハイブリッド推論を用いたグラフ・コンピューティングのための様々な実施形態に関する。
【背景技術】
【0002】
近年、人工知能(AI)(または機械学習、認知分析など、あるいはその組合せ)の様々な形態が、物体検出、音声認識、言語処理など、ますます多様化する用途に実装されている。そのようなシステムの利点は際限がないように思われるので、この傾向は続く可能性が高い。
【0003】
しかしながら、少なくとも一部のAIシステムに伴う1つの問題は、クエリへの応答、予測など、生成された出力に対する「説明可能性」が不足していることである。すなわち、一部のAIシステムは「ブラック・ボックス」とみなされる。より詳細には、現在のAIシステムは一部の用途において極めて有用(たとえば、高い予測精度)であることを証明しているが、個人(たとえば、ソフトウェア・エンジニア)が、AIシステムはなぜそれが行った出力を生成したのかを正確に理解すること、またはシステムによって利用された推論を別の個人に説明すること、あるいはその両方は、不可能ではないにしても困難な場合が多い。少なくとも、これは、特定の用途のために利用されるとき、一部のAIシステム(たとえば、ディープ・ラーニングまたはニューラル・ネットワーク)に関して事実である。
【0004】
これは、AIが比較的ささいな用途(たとえば、画像処理、文字起こしなど)に利用されるときには重要でないことがあるが、そのようなことは、少なくとも、重要または重大な用途またはシナリオ(たとえば、セキュリティ/軍事行動、医療判断、投資アドバイス、車両制御など)に対しては間違いなく重要である。
【発明の概要】
【0005】
方法が、請求項1に記載されているように提供され、対応するシステムおよびコンピュータ・プログラムがまた、それぞれ請求項8および9に記載されているように提供される。
【0006】
本発明の利点が容易に理解されるように、上記で簡単に説明した本発明のより詳細な説明が、添付の図面に示された特定の実施形態を参照することによって与えられる。これらの図面は本発明の典型的な実施形態のみを示し、したがって本発明の範囲を限定するものとみなされるべきでないことを理解し、添付の図面の使用によって、本発明を追加の特異性および詳細について記述、説明する。
【図面の簡単な説明】
【0007】
【
図1】本発明の実施形態による例示的なコンピューティング・ノードを示すブロック図である。
【
図2】本発明の実施形態による例示的なクラウド・コンピューティング環境を示す追加のブロック図である。
【
図3】本発明の実施形態による抽象化モデル層を示す追加のブロック図である。
【
図4】本発明の実施形態によるグラフ・データベースの概略図である。
【
図5】本発明の実施形態によるグラフ・データベースの概略図である。
【
図6】本発明の実施形態によるグラフ・データベースの概略図である。
【
図7】本発明の実施形態によるグラフ・データベースの概略図である。
【
図8】本発明の実施形態によるグラフ・データベースの概略図である。
【
図9】本発明の実施形態による複数の暗黙的ノードをもつグラフ・データベースの概略図である。
【
図10】本発明の実施形態によるグラフ・コンピューティングのための方法のブロック図である。
【
図11】本発明の実施形態による、ユーザによって入力された一連の推論ステップの手順図である。
【
図12】本発明の実施形態によるグラフ・コンピューティングのための例示的な方法のフローチャート図である。
【発明を実施するための形態】
【0008】
上記で説明したように、近年、人工知能(AI)(または機械学習、認知分析など、あるいはその組合せ)の様々な形態が、物体検出、音声認識、言語処理など、ますます多様化する用途に実装されている。
そのようなシステムの利点は際限がないように思われるので、この傾向は続く可能性が高い。
【0009】
しかしながら、少なくとも一部のAIシステムに伴う1つの問題は、クエリへの応答、予測など、生成された出力に対する「説明可能性」がないことである。すなわち、一部のAIシステムは「ブラック・ボックス」とみなされる。より詳細には、現在のAIシステムは一部の用途において極めて有用(たとえば、高い予測精度)であることを証明しているが、個人(たとえば、ソフトウェア・エンジニア)が、AIシステムはなぜそれが行った出力を生成したのかを正確に理解すること、またはシステムによって利用された推論を別の個人に説明すること、あるいはその両方は、不可能でないにしても困難な場合が多い。
【0010】
少なくとも、これは、特定の用途のために利用されるとき、一部のAIシステムに関して事実である。より詳細には、少数の例として、ディープ・ラーニングおよびニューラル・ネットワークは、一般に、比較的高い予測精度を提供するとみなされているが、生成された出力に対して提供する説明可能性は最も少ないともみなされている。ランダム・フォレストなどのアンサンブル方法およびサポート・ベクター・マシン(SVM)は、通常いくらか改善された説明可能性を提供するが、精度が下がると考えられている。説明可能性は、さらに、グラフィック・モデル(たとえば、ベイジアン・ネットワーク(Bayesian network))、決定木、および分類ルールを用いてある程度改善されるが、精度はさらに低くなる。
【0011】
具体例として、公開された記事に関する特定のウェブ・ページが、「標準」ウェブ・ページ(すなわち、記事全体を含む)かそれとも「抄録」ページ(すなわち、記事の抄録、摘要、要約などのみを含む)かどうかを予測するために決定木の使用を検討する。そのようなシナリオにおいて、決定木を利用するAIシステムは、この予測を行う際にそのウェブ・ページのURLの長さ(すなわち文字数)を利用し得る(たとえば、URLが長いほど、ウェブ・ページが記事全体を含む可能性が高い)。そのような基準を利用することは、ニューラル・ネットワークによって生成された同様の出力と比較して、説明可能性におけるいくらかの改善を提供し得るが、そのような基準の使用それ自体が、ユーザ(たとえば、個人、人間など)によって容易に理解されないことがある。すなわち、ユーザは、URLの長さがどのように、またはなぜウェブ・ページ上のコンテンツに関係するのか、あるいはその両方を理解しないことがある。
【0012】
説明可能性に関するこの問題は、AIが比較的ささいな用途(たとえば、画像処理、文字起こしなど)に利用されるときには重要でないことがあるが、そのようなことは、少なくとも、重要または重大な用途またはシナリオ(たとえば、セキュリティ/軍事行動、医療判断、投資アドバイス、車両制御など)に対しては間違いなく重要である。
【0013】
AIシステムとは対照的に、推論エンジン(またはセマンティック推論器、ルール・エンジンなど)は、比較的明示的、または明らかな説明可能性を提供するような方法において利用され得る。ただし、一般に、推論エンジンは、特に提供された例に基づく学習またはトレーニングあるいはその両方に関し、現代のAIシステムと同じ能力を有さない。
【0014】
推論の用途の一例として、特定のウェブ・ドメインが「悪意のある」(すなわち、何か悪意のある種類のソフトウェアすなわち「マルウェア」を含む)かどうかを決定するため、またはドメインの背後にいるアクターを識別するため、あるいはその両方のために推論(または推論エンジン)が利用されるシナリオを検討する。最初のステップとして、そのドメインに関連付けられた、すべてのインターネット・プロトコル(IP)アドレスが特定され得る。それらのIPアドレスのいずれかと通信するすべてのソフトウェア・ハッシュ(またはソフトウェア・コンポーネント)が、次いで特定され得る。次いで、アンチウィルス・エンジン検出、ストア、データベースなどの、様々なデータ・ソースは、ハッシュ(または関連付けられたソフトウェア・コンポーネントあるいはその両方)のいずれかがリストに記載されているかどうか、またはマルウェアとして分類されているかどうか(またはそのようなものの背後にいるアクターが記載されているかどうか)あるいはその両方を決定するために、検索され得る。しかしながら、従来の推論(または従来の推論エンジン)は、一般に「既知」の事実からの推論(すなわち演繹的推論)を採用することのみが可能である。当業者によって諒解されるように、演繹的議論(または推論)は、結論が必然的に導かれる、または導かれるように見えるものであるか、または、一般的な原理をもって開始することとその一般的な原理を特定の事例に適用することとを含むか、あるいはその両方である。たとえば、「すべての教師は愉快だ」および「カレンは教師である」という事実を与えられたとすると、必然的に、カレンは愉快だということが導かれる。
【0015】
したがって、そのようなシナリオにおいて利用される場合、従来の推論エンジンは、そのような決定が別のエンティティ(たとえば、政府機関、アンチウィルス・エンジンなど)によって事前に行われているときのみ、マルウェアまたは特定のアクターに関連付けられたドメインあるいはその両方を識別し得、上述の通り、推論エンジンは、多くのAIシステムの学習能力またはトレーニング能力あるいはその両方を有しない。
【0016】
これらのニーズまたは従来技術の欠点あるいはその両方に対処するために、本明細書に記載のいくつかの実施形態では、予測などを生成するために、提供される例(たとえば、トレーニング・データ)に基づく学習またはトレーニングあるいはその両方など、現代のAI(または機械学習(ML)、認知分析などの)システムの利点のうちの少なくともいくつかを組み込んだ推論エンジンを提供(または利用あるいはその両方)するとともに、改善された説明可能性も提供する方法またはシステムあるいはその両方が記載されている。特に、いくつかの実施形態では、おそらく演繹的推論と組み合わせられた帰納的推論(または確率論的推論、または確率論的帰納的推論)を利用するグラフ・コンピューティングのための方法またはシステムあるいはその両方が提供される。特に、いくつかの実施形態では、本明細書に記載の方法およびシステムは、識別力の数学関数によって保護または強化されたグラフ知識(またはグラフ・コンピューティング)を利用して帰納的推論を提供するものとみなされ得る。
【0017】
たとえば、上記で説明したサイバー・セキュリティ・シナリオについて、本明細書で説明する方法およびシステムは、上記で説明したものと同様の推論エンジンを利用し得る。ただし、少なくともいくつかの実施形態において、エンジンが予測を生成すること、または帰納的推論を実行すること、あるいはその両方が可能であるように、推論が増強されている。したがって、1つの例として、特定のソフトウェア(またはハッシュ)が、(組織によってマルウェアとして決定的にリストに記載されることと対照的に)1つまたは複数のアンチウィルス・エンジンによって怪しい、または疑わしいとラベル付けまたはマークされているかどうかが、システムによってそのソフトウェアがマルウェアであるかどうかについての予測を生成(またはドメインなどを制御するアクターを予測、あるいはその両方を)するために利用され得る。より詳細には、いくつかの実施形態において、特定の結論(または予測、決定など)は、既知の事実なしでも帰納的(すなわち非演繹的)推論を利用して到達され得る。当業者によって諒解されるように、帰納的議論(または推論)は、結論が「おそらく」導かれる、もしくは導かれるように見えるものであるか、または1つまたは複数の特定の(または特殊な)事例をもって開始することと特定の事例に基づいて一般的な原理を生成しようとすることとを含むか、あるいはその両方である。たとえば、「教師の90%は愉快だ」および「カレンは教師である」という事実を与えられたとすると、(おそらく)カレンは愉快だ(またはより詳細には、カレンが愉快である可能性が90%ある)ということになる。
【0018】
サイバー・セキュリティ・シナリオをより詳細に継続すると、特定のハッシュが識別されるが、マルウェア・ファミリに関連付けられたものとして公式に文書化されていない場合、システムは、そのハッシュに関する何らかの情報または検出を識別するために、複数のアンチウィルス・エンジン・データベースを検索し得る。識別された情報(たとえば、複数のアンチウィルス・エンジンがそのハッシュ/ソフトウェアを怪しいものとしてラベル付けしたこと)に応じて、システムは、そのソフトウェアがマルウェアであるかどうかの予測を生成することが可能であり得る。いくつかの実施形態では、以下により詳細に説明するように、複数の帰納がなされ得るように、帰納的推論は「積み重ねられ」得る。
【0019】
本明細書において提供するいくつかの実施形態は、サイバー・セキュリティ・シナリオに関して説明するが、本明細書で説明する方法またはシステムあるいはその両方は、推論エンジンまたは機械学習技術(またはAI、認知分析など)あるいはその両方が利用され得るすべてのシナリオに適用され得ることを理解されたい。
【0020】
いくつかの実施形態では、本明細書で説明する推論は、当技術分野で一般的に理解されているように、グラフ・コンピューティングを利用して(すなわちグラフ・データベースをトラバースして)実行される。本明細書で説明する機能性の少なくともいくつかの態様によれば、(グラフの)ノード間のトラバーサルは、いくつかの実施形態において演繹的推論と組み合わせられた帰納的推論を含むハイブリッド推論を利用して実行される。いくつかの実施形態では、グラフは、明示的(または第1のタイプの)ノードと、暗黙的または「ビア」の(または第2のタイプの)ノードとの2つのタイプのノードを含むものと理解され得る。明示的ノード間のトラバーサルは、演繹的推論を利用して実行され得る。しかしながら、演繹的推論が2つの明示的ノード間のトラバーサルを可能にすることができない場合、帰納的推論が利用され得、これは、1つまたは複数の暗黙的ノードを介する「間接的」な方法でその2つの明示的ノード間をトラバースすることを含んでいるとみなされ得る。いくつかの実施形態では、帰納的推論は、確率論的帰納的推論を含むか、または利用するか、あるいはその両方を行う。
【0021】
本明細書で説明する機能性の少なくともいくつかの態様は、認知分析を利用して実行され得ることを理解されたい。認知分析は、自然言語処理(NLP)またはNLP技術を含み得、これはたとえば、ユーザもしくはエンティティまたは他の利用可能なデータ・ソースあるいはその両方に送信、またはそれらによって受信、あるいはその両方がなされたコンテンツおよび通信について(たとえば、キーワード、キー・フレーズなどをスキャンして)自然言語を分類し、トーンを分析し、感情を分析する。いくつかの実施形態では、一般的に理解されているように、自然言語処理(NLP)、メル周波数ケプストラル係数(MFCC)(たとえば、オーディオ・コンテンツ用)、または領域ベースの畳み込みニューラル・ネットワーク(R-CNN)ピクセル・マッピング(たとえば、画像/ビデオ中の物体検出/分類用)あるいはその組合せが、使用される。
【0022】
本明細書で説明するプロセスは、ユーザまたはエンティティ(たとえば、クエリの対象、データ・ソースなど)あるいはその両方に関連付けられた、様々な情報もしくはデータ・ソースまたは通信のコンテンツあるいはその両方を利用し得る。データ・ソースは、ユーザまたはエンティティあるいはその両方に関連付けられたすべての利用可能な情報源(またはデータ・ソース)を含み得る。たとえば、いくつかの実施形態では、ユーザ(またはエンティティあるいはその両方)のためのプロファイル(たとえば、認知プロファイル)が生成され得る。認知プロファイルを生成するために使用され得るデータ・ソースは、システムによって(おそらくユーザ/エンティティの許可または承認をもって)アクセス可能なユーザ/エンティティに関連付けられたすべての適切なデータ・ソースを含み得る。そのようなデータ・ソースの例は、それの通信セッションまたは通信コンテンツあるいはその両方(または通信)(たとえば、電話、ビデオ通話、テキスト・メッセージング、電子メール、直接/対面会話など)、ユーザ/エンティティのプロファイル(またはユーザ/エンティティに関する基本情報)(たとえば、役職、勤務地、現ポジション在任期間、家族役割など)、スケジュールまたはカレンダー(すなわち、その上にリストされるアイテム、時間枠など)、プロジェクト(たとえば、過去、現在、または未来の仕事関連のプロジェクト)、場所(たとえば、以前および/または現在の場所および/または他のユーザとの相対的な場所)、ソーシャル・メディア活動(たとえば、投稿、反応、コメント、グループなど)、閲覧履歴(たとえば、訪れられたウェブ・ページ)、およびオンライン買い物を含むが、限定されない。
【0023】
したがって、いくつかの実施形態では、本明細書で説明する方法またはシステムあるいはその両方は、当業者によって一般的に理解されるように、「認知分析」、「認知システム」、「機械学習」、「認知モデリング」、「予測分析」、または「データ分析」、あるいはその組合せを利用し得る。一般に、これらのプロセスは、たとえば、1つまたは複数のシステムの入力の複数のセット、および関連する出力を受信または回収あるいはその両方をすることと、(たとえば、コンピューティング・システムまたはプロセッサあるいはその両方を使用して)データを処理することとを含み得、システム、または本明細書で説明する実施形態に関しては本明細書で説明するグラフ・コンピューティングの動作に対応、管理、または推定、あるいはその組合せをするモデル、ルールなどを生成または抽出する。モデルを利用して、システムの性能(または動作)は(たとえば、新しい入力を利用して/に基づいて)予測されるか、または、入力の変化がどのように出力に影響するかを調査することによってシステムの性能が最適化されるか、あるいはその両方がなされ得る。ユーザまたは管理者あるいはその両方から受信された(または提供された)フィードバックも利用され得ることにより、継続的な使用でシステムの性能がさらに改善することが可能になり得る。
【0024】
本明細書で使用する場合、「コンピューティング・ノード」(または単に「ノード」)という用語は、モバイル電子デバイス、デスクトップ・コンピュータなどのコンピューティング・デバイス、またはチャットボット、電子メール・アプリケーション、ソーシャル・メディア・アプリケーション、ウェブ・ブラウザなどのアプリケーション、あるいはその両方を指し得ることを理解されたい。換言すれば、本明細書で使用する場合、コンピューティング・ノードの例は、たとえば、モバイル・フォン、タブレット・デバイス、デスクトップ・コンピュータなどのコンピューティング・デバイス、または個人(またはユーザ)に所有されるか、またはさもなければ関連付けられたあるいはその両方の電気製品(IoT装置)などの他のデバイス、またはそのようなコンピューティング・デバイス上で個人によって利用される様々なアプリケーション、あるいはその両方を含む。
【0025】
特に、いくつかの実施形態では、グラフ・コンピューティングのための方法は、プロセッサによって提供される。複数の明示的ノードと少なくとも1つの暗黙的ノードとを含むグラフが生成される。複数の明示的ノードのうちの第1のノードと、複数の明示的ノードのうちの第2のノードとは、間を、演繹的推論を利用してトラバースされる。複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとは、間を、帰納的推論を利用して、少なくとも1つの暗黙的ノードを介してトラバースされる。
【0026】
グラフに関連付けられたクエリは受信され得る。クエリへの応答は、複数の明示的ノードのうちの第1のノードと、複数の明示的ノードのうちの第2のノードとの間をトラバースすること、および複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとの間をトラバースすることに基づいて生成され得る。少なくとも1つの暗黙的ノードは、複数の暗黙的ノードを含み得る。
【0027】
複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとの間をトラバースすることは、帰納的推論を利用して、複数の暗黙的ノードのうちの第1のノードを介して、複数の明示的ノードのうちの第3のノードから複数の明示的ノードのうちの第4のノードへ至る第1のトラバーサルと、帰納的推論を利用して、複数の暗黙的ノードのうちの第2のノードを介して、複数の明示的ノードのうちの第3のノードから複数の明示的ノードのうちの第4のノードへ至る第2のトラバーサルとを含み得る。第1のトラバーサルは複数の暗黙的ノードのうちの第2のノードの外部であり得、第2のトラバーサルは複数の暗黙的ノードのうちの第1のノードの外部であり得る。
【0028】
複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとの間をトラバースすることは、帰納的推論を利用して、複数の明示的ノードのうちの第3のノードから、複数の暗黙的ノードのうちの第1のノードを介して、複数の暗黙的ノードのうちの第2のノードへトラバースすることと、帰納的推論を利用して、複数の暗黙的ノードのうちの第2のノードから、複数の明示的ノードのうちの第4のノードへトラバースすることとを含み得る。
【0029】
グラフの生成は、少なくとも1つの暗黙的ノードに関連付けられたユーザ入力を受信することと、ユーザ入力に基づいて少なくとも1つの暗黙的ノードを生成することとを含み得る。少なくとも1つの暗黙的ノードを介して、複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとの間をトラバースすることは、確率論的帰納的推論を利用して実行され得る。
【0030】
本開示はクラウド・コンピューティングに関する詳細な説明を含んでいるが、本明細書で詳述した教示の実装は、クラウド・コンピューティング環境に限定されないことをあらかじめ理解されたい。むしろ、本発明の実施形態は、現在知られる、または後に開発される、セルラー・ネットワークなど、任意の他のタイプのコンピューティング環境と組み合わせて実装されることが可能である。
【0031】
クラウド・コンピューティングは、構成可能なコンピューティング・リソース(たとえばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの、便利でオンデマンドのネットワーク・アクセスを可能にするサービス提供の一モデルであり、サービスのプロバイダとの管理労力または対話を最小限に抑えて、コンピューティング・リソースが迅速にプロビジョニングされ、リリースされ得る。このクラウド・モデルは、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つのデプロイメント・モデルとを含み得る。
【0032】
特徴は以下の通り。
【0033】
オンデマンド・セルフサービス:クラウド・コンシューマは、サービスのプロバイダとの人的対話を要さず、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングし得る。
【0034】
幅広いネットワーク・アクセス:能力はネットワーク経由で利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(たとえば、モバイル・フォン、ラップトップ、およびPDA)による使用を促進する標準的な機構を介してアクセスされる。
【0035】
リソース・プーリング:プロバイダのコンピューティング・リソースは、複数のコンシューマにサービスするために、需要に応じて動的に割り当ておよび再割り当てされる様々な物理リソースおよび仮想リソースをもつマルチテナント・モデルを使用してプールされる。コンシューマは一般に、提供されるリソースの正確な位置に関して制御または知識を有しないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)において位置を指定することが可能であり得るという位置独立の感覚がある。
【0036】
迅速な融通性:能力は、迅速および弾力的にプロビジョニングされ、場合によっては自動的に、速やかにスケールアウトし、速やかにリリースされて速やかにスケールインし得る。コンシューマにとっては、多くの場合、プロビジョニングに利用可能な能力が無制限に見え、いつでも任意の数量を購入し得る。
【0037】
熟慮されたサービス:クラウド・システムは、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に応じた抽象度の計測能力を活用することによって、リソースの使用を自動的に制御し、最適化する。リソースの使用は、監視、制御、および報告され得、利用されるサービスのプロバイダとコンシューマの両方に透明性を提供する。
【0038】
サービス・モデルは以下の通り。
【0039】
サービスとしてのソフトウェア(Software as a Service)(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブベースの電子メール)などのシン・クライアント・インターフェースを介して様々なクライアント・デバイスからアクセス可能である。限定されたユーザ固有のアプリケーション構成設定はあり得る例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個別のアプリケーション能力をも含む基盤となるクラウド・インフラストラクチャを管理も制御もしない。
【0040】
サービスとしてのプラットフォーム(Platform as a Service)(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して生成される、コンシューマ生成または収集のアプリケーションをクラウド・インフラストラクチャ上にデプロイすることである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤となるクラウド・インフラストラクチャを管理も制御もしないが、デプロイされたアプリケーションおよび場合によってはアプリケーション・ホスティングの環境構成を制御する。
【0041】
サービスとしてのインフラストラクチャ(Infrastructure as aService)(IaaS):コンシューマに提供される能力は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを、コンシューマがデプロイおよび実行することが可能である処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては選択されたネットワーキング・コンポーネント(たとえば、ホスト・ファイアウォール)を限定的に制御する。
【0042】
デプロイメント・モデルは以下の通り。
【0043】
プライベート・クラウド:クラウド・インフラストラクチャが一組織のためだけに運用される。その組織またはサード・パーティによって管理され得、オンプレミスにでもオフプレミスにでも存在し得る。
【0044】
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、重要事項(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス考慮事項)を共有している特定のコミュニティをサポートする。その組織またはサード・パーティによって管理され得、オンプレミスにでもオフプレミスにでも存在し得る。
【0045】
パブリック・クラウド:クラウド・インフラストラクチャは、一般市民または大規模な業界団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0046】
ハイブリッド・クラウド:クラウド・インフラストラクチャが、2つまたはそれ以上のクラウド(プライベート、コミュニティ、またはパブリック)で構成され、そのクラウドは固有のエンティティとして存続するが、データおよびアプリケーションのポータビリティ(たとえば、クラウド間の負荷分散のためのクラウド・バースト)を可能にする標準化された技術または独自技術によって一緒に結合されている。
【0047】
クラウド・コンピューティング環境は、ステートレスであること、低結合、モジュール性、およびセマンティック相互運用性に重点を置いたサービス指向のものである。相互接続されたノードのネットワークを備えるインフラストラクチャが、クラウド・コンピューティングの核心にある。
【0048】
次に
図1を参照すると、クラウド・コンピューティング・ノードの一例の概略が示されている。クラウド・コンピューティング・ノード10は、好適なクラウド・コンピューティング・ノードの1つの例に過ぎず、本明細書で説明する本発明の実施形態の使用の範囲または機能性についていかなる限定をも示唆するものではない。それにもかかわらず、クラウド・コンピューティング・ノード10(または本明細書で説明する1つもしくは複数のプロセッサあるいはその両方)は実装されること、または上記に記載されている機能性のいずれかを実行する(または引き起こすか、または可能にする)こと、あるいはその両方が可能である。
【0049】
クラウド・コンピューティング・ノード10には、多くの他の汎用または専用のコンピューティング・システム環境または構成で動作可能なコンピュータ・システム/サーバ12がある。よく知られているコンピューティング・システム、環境、または構成あるいはその組合せの例は、コンピュータ・システム/サーバ12とともに使用するために好適であり得、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスなどのいずれかを含む分散型クラウド・コンピューティング環境を含むが限定されない。
【0050】
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されるプログラム・モジュールなど、コンピュータ・システム実行可能な命令の一般的な文脈中に記載され得る。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーティン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含み得る。コンピュータ・システム/サーバ12は、タスクが通信ネットワークを介してリンクされたリモート処理デバイスによって実行される分散型クラウド・コンピューティング環境中で実行され得る。分散型クラウド・コンピューティング環境中では、プログラム・モジュールがメモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体中に配置され得る。
【0051】
図1に示されているように、クラウド・コンピューティング・ノード10中のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に結合するバス18を含み得るが限定されない。
【0052】
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のいずれかのうちの1つまたは複数を表す。限定ではなく、例として、そのようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture)(ISA(R))バス、マイクロ・チャネル・アーキテクチャ(MCA(R))バス、拡張ISA(Enhanced ISA)(EISA(R))バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association)(VESA(R))ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI(R))バスを含む。
【0053】
コンピュータ・システム/サーバ12は一般に、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であり得、その媒体は、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不可能媒体の両方を含む。
【0054】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性のメモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。例としてのみ、ストレージ・システム34は、取り外し不可能な不揮発性磁気媒体(図示せず、一般に「ハード・ドライブ」と呼ばれる)から読み出し、および媒体への書き込みのために提供され得る。図示しないが、取り外し可能な不揮発性磁気ディスク(たとえば、「フロッピー(R)ディスク」)からの読み出しおよびディスクへの書き込みのための磁気ディスク・ドライブ、およびCD(R)-ROM、DVD(R)-ROMまたは他の光学媒体など取り外し可能な不揮発性光学ディスクからの読み出しおよびディスクへの書き込みのための光学ディスク・ドライブは提供され得る。そのような事例では、それぞれは、1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。以下でさらに示し、説明するように、システム・メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの(たとえば、少なくとも1つの)セットを有する、少なくとも1つのプログラム製品を含み得る。
【0055】
プログラム・モジュール42の(少なくとも1つの)セットを有するプログラム/ユーティリティ40は、限定ではなく、例として、システム・メモリ28、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ中に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらの一部の組合せは、ネットワーキング環境の実装を含み得る。プログラム・モジュール42は一般に、本明細書で説明する本発明の実施形態の機能または方法あるいはその両方を実行する。
【0056】
コンピュータ・システム/サーバ12はまた、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信し得る。そのような通信は、入出力(I/O)インターフェース22経由で行われ得る。なおまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20経由でローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(たとえば、インターネット)あるいはその組合せなど、1つまたは複数のネットワークと通信することができる。示されているように、ネットワーク・アダプタ20は、バス18経由でコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示しないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方は、コンピュータ・システム/サーバ12とともに使用され得ることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含むが限定されない。
【0057】
本発明の文脈において、および当業者は諒解するように、
図1に示されている様々なコンポーネントは、たとえば、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、モバイル・フォン(またはセルラー・フォンまたはスマート・フォンあるいはその両方)、パーソナル・データ・アシスタント(PDA)、タブレット、ウェアラブル・テクノロジ・デバイス、ラップトップ、ハンドヘルド・ゲーム・コンソール、携帯メディア・プレーヤーなどのモバイル電子デバイス、ならびに自動車、航空機、船舶などのビークルにおけるコンピューティング・システム中に配置され得る。しかしながら、いくつかの実施形態では、
図1に示されているコンポーネントのうちのいくつかは、たとえば、全地球側位システム(GPS)衛星などの衛星中のコンピューティング・デバイス中に配置され得る。たとえば、例示された実施形態の仕組みに関連付けられた処理能力およびデータ・ストレージ能力のうちのいくつかは、ローカルの処理コンポーネント経由でローカルに行われ得るが、同じコンポーネントが、ネットワーク経由で遠く離れて配置された分散型コンピューティング・データ処理およびストレージ・コンポーネントに接続され、本発明の様々な目的を達成する。この場合も、当業者によって諒解されるように、本図は、様々な発明の態様を集合的に達成する、分散型コンピューティング・コンポーネントの接続されたネットワーク全体であり得るもののサブセットのみを伝えるものである。
【0058】
次に
図2を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されているように、クラウド・コンピューティング環境50は、たとえば、セルラー(またはモバイル)電話またはPDA54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、および(たとえば、自動車、航空機、船舶などの中に統合される)ビークル・コンピューティング・システム54Nなどの、クラウド・コンシューマによって使用されるローカルのコンピューティング・デバイスが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード10を備える。
【0059】
引き続き
図2を参照すると、ノード10は互いに通信し得る。それらは、上記で説明したように、プライベート、コミュニティ、パブリック、またはハイブリッド・クラウドなど、あるいはそれらの組合せの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカルのコンピューティング・デバイス上でリソースを維持する必要がない、サービスとしてのインフラストラクチャ、プラットフォームまたはソフトウェアあるいはその組合せを提供することが可能になる。
図2に示されるコンピューティング・デバイス54A~54Nの種類は、例示のみを目的としたものであり、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能な接続あるいはその両方を通じて(たとえば、ウェブ・ブラウザを使用して)任意のタイプのコンピュータ化されたデバイスと通信し得ることが理解されよう。
【0060】
次に
図3を参照すると、クラウド・コンピューティング環境50(
図2)によって提供される機能抽象化層の組が示されている。
図3に示されているコンポーネント、層、および機能は、例示のみを目的としたものであり、本発明の実施形態はそれに限定されないことをあらかじめ理解されたい。示されているように、以下の層および対応する機能が提供される。
【0061】
デバイス層55は、クラウド・コンピューティング環境50における様々なタスクを実行するために、電子機器、センサー、アクチュエータ、および他のオブジェクトとともに埋め込まれた、またはスタンドアロンの、あるいはその両方の物理デバイスまたは仮想デバイスあるいはその両方を含む。デバイス層55中のデバイスの各々は、デバイスから得られた情報が他の抽象化層に提供されるか、または他の抽象化層からの情報がデバイスに提供されるか、あるいはその両方がされ得るように、他の機能抽象化層へのネットワーキング能力を組み込んでいる。一実施形態では、デバイス層55を含めて様々なデバイスは、集合的に「モノのインターネット」(IoT)として知られるエンティティのネットワークを組み込み得る。当業者は諒解するように、そのようなエンティティのネットワークにより、データの相互通信、収集、および配布が多種多様な目的を達成することが可能になる。
【0062】
示されているように、デバイス層55は、示されているようにセンサー52、アクチュエータ53、統合された処理、センサー、およびネットワーキング電子機器を備える「学習する」サーモスタット56、カメラ57、制御可能な家庭用コンセント/ソケット58、および制御可能な電気スイッチ59を含む。他の可能なデバイスは、様々な追加のセンサー・デバイス、ネットワーキング・デバイス、電子デバイス(リモート制御デバイスなど)、追加のアクチュエータ・デバイス、冷蔵庫、洗濯機/乾燥機、または空調ユニットなどのいわゆる「スマート」機器、および多種多様な他の可能な相互接続されたデバイス/オブジェクトを含み得るが限定されない。
【0063】
ハードウェアおよびソフトウェア層60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67と、データベース・ソフトウェア68とを含む。
【0064】
仮想化層70は、以下の仮想エンティティの例が提供され得る抽象化層を提供する。仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0065】
一例では、管理層80は、以下で説明する機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を提供する。計量および価格設定82は、リソースがクラウド・コンピューティング環境内で利用されるときのコスト追跡、およびこれらのリソースの消費に対する課金または請求を提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド・コンシューマおよびタスクには本人確認を、ならびにデータおよび他のリソースには保護を与える。ユーザ・ポータル83は、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを与える。サービス・レベル管理84は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を行う。サービス品質保証契約(Service Level Agreement)(SLA)の企画および遂行85は、SLAにしたがって将来の要件が予想されるクラウド・コンピューティング・リソースの事前準備および調達を行う。
【0066】
ワークロード層90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。この層から提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91と、ソフトウェア開発およびライフサイクル管理92と、仮想教室教育配信(virtual classroom education delivery)93と、データ分析処理94と、トランザクション処理95と、本発明の例示された実施形態の文脈における、本明細書で説明するグラフ・コンピューティングのための様々なワークロードおよび機能96とを含む。当業者は、ワークロードおよび機能96がまた、本発明の例示された実施形態の様々な目的を達成するために、ハードウェアおよびソフトウェア60、仮想化70、管理80、および他のワークロード90(たとえば、データ分析処理94など)におけるものなど、様々な抽象化層の他の部分とともに機能し得ることを諒解する。
【0067】
以前に述べたように、いくつかの実施形態では、予測などを生成するために、提供される例(たとえば、トレーニング・データ)に基づく学習またはトレーニングあるいはその両方など、現代のAI(または機械学習(ML)、認知分析などの)システムの利点のうちの少なくともいくつかを組み込んだ推論エンジンを提供(または利用あるいはその両方)するとともに、改善された説明可能性を提供する方法またはシステムあるいはその両方が記載されている。
【0068】
いくつかの実施形態では、本明細書で説明する推論は、当技術分野で一般的に理解されるように、グラフ・コンピューティングを利用して実行される。本明細書で説明する機能性の少なくともいくつかの態様に応じて、いくつかの実施形態では演繹的推論と組み合わせられた帰納的推論を含むハイブリッド推論を利用して、(グラフの)ノード間のトラバーサルが実行される。いくつかの実施形態では、グラフは、2つのタイプのノード、明示的な(または第1のタイプの)ノードおよび暗黙的または「ビア」(または第2のタイプの)ノードを含んでいると理解され得る。明示的ノード間のトラバーサルは、演繹的推論を利用して実行され得る。しかしながら、演繹的推論が2つの明示的ノード間のトラバーサルを可能にすることができない場合、帰納的推論が利用され得、これは、その2つの明示的ノード間を1つまたは複数の暗黙的ノードを介する「間接的」な方法でトラバースすることを含んでいるとみなされ得る。いくつかの実施形態では、帰納的推論は、確率論的帰納的推論を含むかまたは利用するかあるいはその両方を行う。
【0069】
図4は、本発明の実施形態によるグラフ(またはグラフ・データベースまたは推論エンジンまたは方法)400を示す。ただし、
図4は本明細書で説明する方法およびシステムによって実行され得る推論プロセスを単に説明するように理解され得ることを理解されたい。示されている例では、グラフ400は、上記で説明したもの(すなわち、ドメインが悪意のあるものかどうか、またはドメインの背後にいるアクターは誰か、あるいはその両方)など、サイバー・セキュリティ・クエリ(たとえば、ユーザから受信した)に関係する。グラフは(明示的な)ノード402~412を含み、図示しないが、以下に説明するように、グラフ400をトラバースすることは、暗黙的(またはビア)ノードを利用して実行され得る。当業者によって諒解されるように、ノード402は特定のウェブ・ドメインを表し、ノード404はIPアドレスを表し、ノード406はソフトウェア・ハッシュを表し、ノード408は1つまたは複数のアンチウィルス(AV)エンジン(またはエンジン検出)を表し、ノード410はマルウェア・ファミリを表し、ノード412は脅威アクターを表す。
【0070】
複数のエッジ(または接続またはリンク)414~418は、ノードを相互接続して示されており、その各々が、関連する明示的ノード402~412間の少なくとも潜在的な、おそらく暗黙的ノード(図示せず)を利用するトラバーサルを表すとみなされ得る。特に、エッジ414は、既知の情報または演繹的推論あるいはその両方に基づいて実行され得る推論ステップを表す。より詳細には、示される特定の例では、演繹的推論を利用して、特定のIPアドレスがウェブ・ドメインに関連付けられ(すなわち、ノード402からノード404へのトラバーサル)、特定のソフトウェア・ハッシュがIPアドレスに関連付けられ(すなわち、ノード404からノード406へのトラバーサル)、1つまたは複数のAVエンジンがハッシュを「怪しい」としてマークすることによるなど何らかの方法でそのハッシュにラベル付けまたはマークした(すなわち、ノード406からノード408へのトラバーサル)ことを決定し得る。
【0071】
しかしながら、示されているこの例では、追加のトラバーサルは演繹的推論利用して実行されないことがある。たとえば、ソフトウェア・ハッシュが、1つまたは複数のAVエンジンによってラベル付け/マーク/検出されても、マルウェア・ファミリに関連付けられたものとして分類されておらず、ソフトウェア・ハッシュに関連付けられた脅威アクターも(たとえば、適切なサイバー脅威団体、信頼すべき筋などによって)識別されていない。
【0072】
引き続き
図4を参照すると、エッジ416は、2つの関連するノード間のトラバーサルが可能であり得るが、確実でないことを示し得る例に関する情報を表し得る(たとえば、帰納的推論を示唆する実世界の情報は、トラバーサルが起こることを可能にし得る)。たとえば、ノード408とノード410との間のエッジ416は、1つまたは複数のAVエンジンが、ソフトウェア・ハッシュをノード410によって表されるマルウェア・ファミリに潜在的に関連付けられているとしてラベル付けしたことを表し得る。いくつかの実施形態では、そのような情報は、ノード408とノード410との間のエッジ418によって表されるように、ソフトウェア・ハッシュがマルウェア・ファミリに関連付けられているかどうか、帰納的推論(たとえば、確率論的帰納的推論)に基づいて予測(または推定など)するために利用され得る。さらに、ノード410とノード412との間のエッジ416は、特定のマルウェア・ファミリが特定の脅威アクターによって使用されるが、そのようなことは定かでないことを示す情報を表し得る。この場合も、帰納的推論は、(利用可能な情報がそのような推論を可能にするために十分である場合)ノード410とノード412との間のエッジ418によって表されるように、マルウェア・ファミリが特定の脅威アクターに関連付けられるか、または脅威アクターによって使用されることを予測するために利用され得る。いくつかの実施形態では、確率論的帰納法に関するしきい値が利用される(たとえば、推論は、確率が少なくとも80%または何か他のパーセンテージであると決定される場合に許可/実行される)。このようにして、グラフ400のトラバースは、演繹的推論と帰納的推論の両方(すなわち「ハイブリッド推論」)を利用して実行され得る。
【0073】
帰納的推論によってそのような結論に到達する場合、ノード406とノード410および412との間のエッジ420によって表されるように、そのようなことは推論エンジンのためのトレーニング・データとして利用され得るか、または任意の妥当な結論、予測などが(たとえば、クエリへの応答として)ユーザに提供され得るか、あるいはその両方がなされ得る。さらに、利用される推論のステップ(任意の帰納的推論を含む)が、少なくとも大多数のAIシステムと比較して改善された説明可能性を提供するためにユーザに提供され得る。
【0074】
引き続き
図4を参照し、ノード402~408は3つのエッジ416によっても相互接続されている(すなわち、可能な推論の情報/事実を表している)ことに留意されたい。たとえば、ノード402とノード404との間のエッジ416は、多くのIPアドレスが対象のドメインから決定されることを示す情報を表し得、ノード404とノード406との間のエッジ416は、多くのソフトウェア・ハッシュが対象のIPアドレスと通信することを示す情報を表し得る。しかしながら、一例として、そのような情報は推論を可能にするためには十分でないとみなされることがある(ただし、これらの事例では、問題のノード間のトラバーサルに対して演繹的推論が可能であったためにそのような情報が関連しない可能性がある)。
【0075】
図5は、本発明の実施形態によるグラフ500(またはそれの一部)を示す。グラフ500は、ソフトウェア・ハッシュ・ノード502(すなわち、特定のソフトウェア・ハッシュの概念を表すノード)(またはソース・ノード)と、マルウェア・ファミリ・ノード504(すなわち、特定のマルウェア・ファミリの概念を表すノード)(またはターゲット・ノード)とを含む。示されている例では、エッジ506がノード502とノード504とを相互接続(またはリンク)しているところが示されている。例として、それはエッジ506を利用して実行されるトラバーサルは演繹的推論を利用して実行されるとみなされ得る。すなわち、ノード502によって表される特定のソフトウェア・ハッシュ(またはより詳細には、関連するソフトウェア・コンポーネント)が、ノード504によって表される特定のマルウェア・ファミリのメンバーまたはマルウェア一般あるいはその両方であることが(たとえば、適切な組織によって管理されているデータベース中に示されるように)「知られている」可能性がある。したがって、トラバーサルは、演繹的推論を利用して、ノード502から直接ノード504になされ得る。
【0076】
対照的に、
図6に示される同様のソフトウェア・ハッシュ・ノード602とマルウェア・ファミリ・ノード604とを含む例では、演繹的推論が利用されないことがある。より詳細には、この例では、ノード502によって表される特定のソフトウェア・ハッシュが、ノード504によって表される特定のマルウェア・ファミリのメンバーであることが「知られて」いないことがあり、その結果、演繹的推論が、(ソース)ノード602から直接(ターゲット)ノード604へトラバースするために利用されないことがある。したがって、いくつかの実施形態では、本明細書で説明する方法およびシステムは、帰納的推論(たとえば、ノード602からノード604への「間接的な」経路/トラバーサル)を利用して推論が行われることを可能にし得る(または可能にしないことがある)他の情報(または情報/データ・ソース)を本質的に探索する。いくつかの実施形態では、この処理は、1つまたは複数の、AVエンジン検出ノード606など暗黙的(または「ビア」)ノードを利用して実行される。暗黙的(またはビア)ノードの利用(または生成あるいはその両方)は、ユーザ入力に応答して実行され得る。すなわち、演繹的推論が利用され得ない場合、ユーザは、ノード間をトラバースするための代替方法を探す指示をシステムに与え得る。示されている例では、暗黙的ノードが、AVエンジン検出(またはハッシュに関する様々な情報が記憶されたAVエンジン・データベースあるいはその両方)に関連付けられている。ただ1つの暗黙的ノードが
図6に示されているが、複数の暗黙的ノードが、利用(またはグラフ内に生成あるいはその両方)され得ることを理解されたい。
【0077】
引き続き
図6を参照すると、示されている例では、エッジ608がノード602と暗黙的ノード606との間に形成され、ノード602と暗黙的ノード606との間をトラバースするために利用される演繹的推論を表す。より詳細には、ノード606によって表されるAVエンジン検出は、ノード602のソフトウェア・ハッシュに関する情報を含むことが見出されている。したがって、演繹的推論が、暗黙的ノード606にトラバースするために利用され得る。しかしながら、AVエンジン検出は、ハッシュに関する情報を含んでいる(たとえば、AVエンジンがそのハッシュを怪しいものとしてマーク/ラベル付けしているなど)が、関連するソフトウェア・コンポーネントがマルウェアであること、または特定のマルウェア・ファミリからのものであること、あるいはその両方が「既知」であることは決定されていない(すなわち、そのようなことは決定的には知られていない)。したがって、演繹的推論は、暗黙的ノード606からノード604にトラバースするためには利用されないことがある。
【0078】
いくつかの実施形態では、本システムは、そのようなトラバーサルが帰納的推論(たとえば、確率論的帰納的推論)または推論を利用してなされ得るか決定するために、暗黙的ノードを介して利用可能な情報を利用する。このプロセスは、利用可能な情報を利用して確率(またはスコアあるいはその両方)を計算することを含み得る(たとえば、本システムは、ソフトウェア・ハッシュが、マルウェアであるソフトウェア・コンポーネントに関連付けられている確率を計算する)。計算された確率(またはスコア)が所定のしきい値(たとえば、80%)を越える場合、本システムにより、トラバーサルが行われること(またはトラバーサルを実行することあるいはその両方)、それの信号を生成してユーザに通知すること、トレーニングのためにその推論を利用することなどが可能になり得る。本システムは、複数の独立した情報源が適切な推論を示すまで、帰納的推論を利用してそのようなトラバーサルが行われることを許可しないことがあることを理解されたい(たとえば、数十のAVエンジンがハッシュを怪しいものとしてリストに記載している)。生成された推論は、次いで、グラフ(またはグラフ・データベース)の将来の使用のためのトレーニングとして利用され得る。
【0079】
次に
図7を参照すると、この場合も
図6のグラフ600が示されているが、特定の脅威アクターを表す追加の(明示的)ノード612を伴っている。いくつかの実施形態では、暗黙的ノードまたは帰納的推論あるいはその両方の使用は「積み重ねられ」得る。たとえば、帰納的推論により、ソフトウェア・ハッシュは特定のマルウェア・ファミリに関連付けられているという推論が(ビア・ノード606を介して)なされることが可能になる場合、特定の脅威アクター(たとえば、国家、「ハッカー」グループなど)がマルウェアの背後にいるかどうかについて、本システムは、同様の推論を行うことが可能であり得る(たとえば、エッジ614経由で)。たとえば、特定のマルウェア・ファミリが特定の脅威アクターの行為に「通常」関連付けられている、1つまたは複数のビア・ノード(たとえば、AVエンジン検出)を介して、様々なタイプの情報が配置され得る。したがって、
図7では、ノード604が暗黙的ノードであるとみなされ得る(または暗黙的ノードとしてふるまい得る)。上記で説明したものと同様の確率論的帰納的推論プロセスは利用され得る。行われたそのような推論は、次いで任意の好適な方法で利用され得る(たとえば、ユーザに通知するため、システム・トレーニングのためなど)。
【0080】
次に
図8を参照すると、グラフ800(上記で説明したものと同様)が示されている。グラフは、4つの明示的ノード802~808(またはノード802~808を含む明示的部分もしくは明示的グラフあるいはその両方)と、3つの暗黙的(またはビア)ノード810~814(またはノード810~814を含む暗黙的部分もしくは暗黙的グラフあるいはその両方)とを含む。グラフ800またはノード802~814あるいはその両方は、ユーザ入力に応答して生成され得る。示されるように、明示的ノード802~808は、それぞれ、ドメイン、IPアドレス、ソフトウェア・ハッシュ、およびマルウェア・ファミリを表す。暗黙的ノード810~814は、「兄弟」810、ダウンロード812、およびAVエンジン検出814を表す。
【0081】
すなわち、
図8に示されたグラフ800を利用するとき、本システムは、演繹的推論を使用して問題のドメインから特定のIPアドレスを決定することを最初に試みる。そのようなことが可能でない場合、本システムは、兄弟ノード810を介して推論を行う(すなわち演繹的推論を使用する)ことを試み得る(すなわち、別の国において管理されているものなど「兄弟」ドメインに関係するので、そのドメインに決定され得るIPアドレスかどうかを推論することを試みる)。同様に、本システムが、ソフトウェア・ハッシュに関連付けられたソフトウェアがIPアドレスと通信することを演繹することが可能でない場合、その関係するソフトウェアが、ダウンロード・ノード812を介してそのIPアドレスからダウンロードされているので、本システムは、そのソフトウェア・ハッシュはIPアドレスに関係していると推論するための方法を探し得る。AVエンジン検出の暗黙的ノード814は、上記で説明したように利用され得る。
図8に示されたグラフ800において、ユーザが、連続する明示的ノードのペアの各々の間にビア・ノードを定義していることに留意されたい。したがって、暗黙的(またはビア)ノードは、グラフ(またはグラフ・データベース)上の複数の場所で、帰納的推論とともに利用(または定義)され得る(すなわち、利用可能な情報がそのような推論を可能にする場合)ことを理解されたい。
【0082】
図9は、本発明の実施形態によるグラフ900(または少なくともそれの一部)を示す。グラフは、明示的ノード902~906と、暗黙的(すなわちビア)ノード908~920とを含む。明示的ノード902、904、および906は、それぞれ、特定のソフトウェア・ハッシュ、特定のマルウェア・ファミリ、および特定の脅威アクターを表し得、暗黙的ノード908~920の各々は、特定のAVエンジンを表し得る。本システムが、演繹的推論を利用して、ノード902からノード904にトラバースすることが可能でない場合、本システムは次いで暗黙的ノードに問い合わせ得る。例として、ノード908は「Trojan.generic」とラベル付けされたハッシュを有し得、ノード910は「unsafe」とラベル付けされたハッシュを有し得る。ノード912はラベル「マルウェア(AIスコア=100)」などを有し得る。AVエンジンのうちのいくつかは、より怪しい、悪意のあるなど、または、より詳細に、または、他よりも高い確かさで、あるいはその組合せでハッシュをラベル付けすることに留意されたい。そのようなことは、他の実施形態において同じであり得る(すなわち、本明細書で説明した方法/システムが他のシナリオ/分野に適用されるとき)。これは、利用されるビア・ノードに重み付けする仕組みを適用するために利用され得る(たとえば、より高い確かさまたは特定の情報または情報源あるいはその組合せがより大きい重み付けを与えられ得る)。ただし、上記で説明したように、ハッシュがマルウェアに関連付けられていることが「既知」でない場合でも、暗黙的ノードに問い合わせすることによって発見されたハッシュのための様々なラベルなどにより、本システムが、ソフトウェアがマルウェアであること、または特定のマルウェア・ファミリに関するものであること、あるいはその両方であることを推論することが可能になり得る。
【0083】
引き続き
図9を参照し、帰納的推論を利用してノード902とノード904との間をトラバースするために、複数の異なる、独立した経路が利用され得ることに留意されたい。たとえば、第1のトラバーサル(経路)はノード908を通過し得るが、第1のトラバーサル(およびノード908)の外部、外側にある第2のトラバーサルはノード918を通過し得る。
【0084】
確率またはスコアあるいはその両方の計算に関し、演繹的推論を利用して第1のノード(A)から第2のノード(B)にトラバースするとき、その確率は一般にP(AかつB)=P(A)*P(B条件付き(given))と表され得る。P(条件Aの下でのB)はデータベース検索からのものなので(すなわち、既知の事実、100%確実など)、確率は常に1である。数学的な形式では、確率は以下のように表され得る。
P(A∩B)=P(A)×P(B│A)=P(A) (1)
【0085】
ただし、帰納的推論を利用して暗黙的(またはビア)ノード(V)を介して第1のノード(A)と第2のノード(B)との間をトラバースするとき、確率は一般に、P(AかつB)=P(AかつV)*P(B|(AかつV))のように表され得、これはP(A)*P(V|A)*P(B|(AかつV))のように記述され得る。P(V|A)はデータベース検索からのものなので、常に1である。したがって、P(AかつV)=P(A)かつP(AかつB)=P(A)*P(B|V)。Vは集合であり、2つ以上の要素を有し得ることに留意されたい(たとえば、{v
1,v
2,...,v
n})。P(B|V)は識別力をもつノードの数#(v
dp)によって決定され得、以下のように表され得る。
【数1】
【0086】
各ビア(すなわち暗黙的)ノードについて、それの識別力は、以下のように表され得る。
【数2】
【0087】
簡単に言えば、ノードはそれのエッジの数よりも少ないクラスに到達することが望ましい。いくつかの実施形態では、ノードが3つのエッジを介して3つのクラスを「指し示している」場合、そのノードは、特定のクラスを指し示すために十分に判別的ではない。式3において、pは特定のノードから出て行くエッジの数を表し、qは現在のクラスによって到達し得るノード・クラスの数である。一般に、識別力は、以下のように表され得る。
【数3】
【0088】
式4において、X=感度/(1-感度)、およびY=特異度/(1-特異度)。感度は、tp/(tp+fn)のように定義され得、特異度は、tp/(fp+tn)のように定義され得る。いくつかの実施形態では、ノードの識別力は、0と3(または4)との間でスケーリングされ得、約2.5またはそれより大きい(または3.0の)値をもって予測生成に利用されるために十分とみなされる。いくつかの実施形態では、確率は以前のノードに基づいている。たとえば、帰納的推論を利用するとき、ノードBからノードCにトラバースすることに関連付けられた確率は、ノードAからノードBにトラバースすることに関連付けられた確率の影響を受け得る。
【0089】
次に
図10を参照すると、推論(またはグラフ・コンピューティング)のための方法(またはシステムあるいはその両方)1000が示されている。ブロック1002において、ユーザは、1つまたは複数の推論ステップを提供し、これは、いくつかの実施形態では、明示的ノードと暗黙的(またはビア)ノードの両方を含む。換言すれば、いくつかの実施形態では、暗黙的ノード(およびおそらく明示的ノード)は、ユーザ入力に応答して生成される。いくつかの実施形態では、ユーザはまた、ブロック1004などにおいて、ターゲット(またはターゲット・ノード)の集合に確率を与え得る。
【0090】
ブロック1006において、上記で説明したように、本システムは、演繹的推論に基づいて(または利用して)次のターゲットにトラバースすることを試みる。そのようなトラバーサルが可能である場合、ブロック1008において、すでにトラバースされた明示的ノードに関連付けられる暗黙的ノードが生成される(そして将来利用され得る)。次いで、ブロック1010において、ターゲットのうちの少なくともいくつかは(たとえば、高確率、類似性などに基づいて)統合され得、適切な場合、方法1000はブロック1006に戻る。
【0091】
しかしながら、ブロック1012において、演繹的推論を利用して(さらなる)トラバーサルが可能でない場合、上記で説明したように、本システムは、帰納的推論を利用して次のターゲットにトラバースすることを試みる。そのようなことが可能である場合、本方法はブロック1010に進み、次いでブロック1006に戻る。可能でない場合、ブロック1014において、本システムは、追加のトラバーサルが可能であるかどうかを決定する。可能である場合、本システムはブロック1006に戻り得、可能でない場合、ブロック1016において、推論プロセスは終わる。本システムは、次いで、推論プロセス中に行われたトラバーサルに基づいて、改善された説明可能性を提供する情報をおそらく含む、任意の適切な予測、通知などを生成し得る。
【0092】
図11は、ユーザによって入力または定義された(そしてグラフィカル・ユーザ・インターフェースまたはコンピューティング・デバイス上に示される)推論経路1100を示す。示されるように、推論経路は、一連の推論ステップを含み、ステップの各々は少なくともペアのノードに関連付けられる。特に、第1の(すなわち上位の)6つの推論ステップ1102は、演繹的推論を利用して、第1の明示的ノードから第2の明示的ノードに(たとえば、ドメイン・ノードからIPアドレス・ノードに、ドメイン・ノードからマルウェア・ファミリに、など)直接トラバースすることを試みる本システムに関連付けられている。最後の(または下位の)2つの推論ステップ1104は、帰納的推論を利用して、第1の明示的ノードから第2の明示的ノードにビア・ノードを介して(たとえば、ハッシュ・ノードからマルウェア・ファミリ・ノードにAV検出ノードを介して、など)トラバースすることを試みる本システムに関連付けられている。いくつかの実施形態では、上記で説明したように、本システムは、ユーザからそのような入力を受信し、それを使用してグラフを生成し、トラバーサルを実行する。いくつかの実施形態では、本システムは、演繹的推論を利用して、関連する明示的ノードがトラバースされることが可能でない場合のみ、暗黙的ノードの使用(または帰納的推論の使用あるいはその両方)を含む推論ステップを利用する。
【0093】
したがって、いくつかの実施形態では、本明細書で説明する本方法およびシステムにより、グラフ(またはグラフ・データベース)において、「追加の」(または暗黙的すなわちビア)ノードが(たとえば、明示的ノードの各ペアに対して)定義されることが可能になる。暗黙的グラフ(または暗黙的ノードを含むグラフの一部)が、帰納的推論のために自動的に生成され得る。いくつかの実施形態では、暗黙的ノード(または関連する帰納的推論あるいはその両方)は、複雑な推論シナリオに対しては「積み重ねられ」得る。さらに、本明細書で説明する本方法およびシステムにより、演繹的推論と帰納的推論の両方(すなわち「ハイブリッド」推論)を利用して、明示的ノード(またはグラフの明示的な部分)および暗黙的ノード(またはグラフの暗黙的な部分)をトラバースすることが可能になり得る。
【0094】
本明細書で説明する本方法およびシステムは、たとえば、推論ステップ(利用されたすべての帰納的推論を含む)はユーザに提供され得るので、人間によって、検証または(少なくとも、大多数のAIシステムと比較して相対的に)容易な理解あるいはその両方がされ得る「ホワイト・ボックス」推論を提供し得る。換言すれば、本明細書で説明する本方法またはシステムあるいはその両方は、大多数のAIシステムと比較して、改善された説明可能性、責任追跡性、信用度などを提供し得る。さらに、本明細書で説明する本方法およびシステムは、「既知」の事例から漸次学習することおよび未知の事例を分類することが可能である。対照的に、大多数のAIシステムは、利用されるモデルが機能しなくなっていても、トレーニングとデプロイメントとが繰り返される可能性がある。さらに、本明細書で説明する本方法およびシステムは、新しいクラスを予測するために、以前に構築されたグラフ(または知識グラフ)に影響を及ぼすことなく動的に構成され得る。対照的に、大多数のAIシステムは再トレーニングすることを必要とする。
【0095】
図12に目を向けると、グラフ・コンピューティング(または推論)のための例示的な方法1200のフローチャート図が提供されている。方法1200は、(上記で説明したように)たとえば、ユーザから受信される、1つまたは複数の明示的ノードおよび1つまたは複数の暗黙的ノードに関する情報または入力で開始する(ステップ1202)。
【0096】
複数の明示的ノードと少なくとも1つの暗黙的ノードとを含むグラフ(またはグラフ・データベース)が生成される(ステップ1204)。少なくとも1つの暗黙的ノードは複数の暗黙的ノードを含み得る。グラフの生成は、受信されたユーザ入力に基づき得る。
【0097】
複数の明示的ノードのうちの第1の明示的ノードと、複数の明示的ノードのうちの第2の明示的ノードとの間は、演繹的推論を利用してトラバースされる(ステップ1206)。
【0098】
複数の明示的ノードのうちの第3の明示的ノードと、複数の明示的ノードのうちの第4の明示的ノードとの間は、帰納的推論を利用して、少なくとも1つの暗黙的ノードを介してトラバースされる(ステップ1208)。このトラバーサルは、帰納的推論を利用して複数の暗黙的ノードのうちの第1のノードを介して第3の明示的ノードから第4の明示的ノードへ至る第1のトラバーサルと、帰納的推論を利用して複数の暗黙的ノードのうちの第2のノードを介して第3の明示的ノードから第4の明示的ノードへ至る第2のトラバーサルとを含み得る。第1のトラバーサルは複数の暗黙的ノードのうちの第2のノードの外部であり得、第2のトラバーサルは複数の暗黙的ノードのうちの第1のノードの外部であり得る。ある実施形態では、複数の明示的ノードのうちの第3のノードと複数の明示的ノードのうちの第4のノードとの間をトラバースすることは、帰納的推論を利用して複数の明示的ノードのうちの第3のノードから複数の暗黙的ノードのうちの第1のノードを介して複数の暗黙的ノードのうちの第2のノードへトラバースすることと、帰納的推論を利用して複数の暗黙的ノードのうちの第2のノードから複数の明示的ノードのうちの第4のノードへトラバースすることとを含み得る。複数の明示的ノードのうちの第3のノードと、複数の明示的ノードのうちの第4のノードとの間を、少なくとも1つの暗黙的ノードを介してトラバースすることは、確率論的帰納的推論を利用して実行され得る。
【0099】
いくつかの実施形態では、グラフに関連付けられたクエリが受信され得る。クエリ(またはそれの代表的な信号あるいはその両方)に対する応答は、複数の明示的ノードのうちの第1のノードと複数の明示的ノードのうちの第2のノードとの間をトラバースすることと、複数の明示的ノードのうちの第3のノードと複数の明示的ノードのうちの第4のノードとの間をトラバースすることとに基づいて生成され得る。
【0100】
方法1200は、たとえば、上記で説明したように、グラフが演繹的推論と帰納的推論とを利用してできるだけ多くトラバースされて終了する(ステップ1210)。いくつかの実施形態では、ユーザからのフィードバックも、時間とともに本システムの性能を改善するために利用され得る。
【0101】
本発明は、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラムをその上に有するコンピュータ可読記憶媒体を含み得る。
【0102】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶することができる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の好適な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは以下を含む。携帯コンピュータ・ディスケット(R)、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ(R)メモリ)、静的ランダム・アクセス・メモリ(SRAM)、携帯コンパクトディスク(R)読取り専用メモリ(CD(R)-ROM)、デジタル・バーサタイル・ディスク(DVD(R))、メモリースティック(R)、フロッピー(R)ディスク、パンチカードまたはその上に記録された命令を有する溝の中の隆起した構造など機械的にエンコードされたデバイス、および上記の任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の送信媒体を介して伝播する電磁波(たとえば光ファイバー・ケーブルを通過する光パルス)、または電線を介して送信される電気信号など、一時的信号それ自体であると解釈されるべきでない。
【0103】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または外部コンピュータまたは外部記憶デバイスに、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワークあるいはその組合せのネットワーク経由でダウンロードされ得る。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、ワイヤレス伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含み得る。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0104】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++(R)などのオブジェクト指向プログラミング言語と、「C(R)」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む、1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェア・パッケージとして、完全にユーザのコンピュータ上、部分的にユーザのコンピュータ上、部分的にユーザのコンピュータ上かつ部分的にリモートのコンピュータ上、または完全にリモートのコンピュータもしくはサーバ上で実行し得る。後者のシナリオでは、リモートのコンピュータが、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、あるいは接続が外部コンピュータに(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)なされ得る。いくつかの実施形態では、本発明の態様を実行するために、たとえば、プログラマブルなロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し、電子回路をパーソナライズし得る。
【0105】
本発明の態様を、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
【0106】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供され、コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックにおいて指定される機能/行為を実装するための手段を生成するように機械を製造し得る。フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックにおいて指定される機能/行為の態様を実行する命令を含む製造品を、その中に記憶された命令を有するコンピュータ可読記憶媒体が含むように、これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルなデータ処理装置、または他のデバイスあるいはその組合せが特定の方法で機能するように命令し得るコンピュータ可読記憶媒体中にも記憶され得る。
【0107】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルな装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックにおいて指定された機能/行為を実行するように、コンピュータ、他のプログラマブルなデータ処理装置、または他のデバイス上にもロードされ得、コンピュータ実行プロセスを生成するために、コンピュータ、他のプログラマブルな装置、または他のデバイス上で一連の動作可能なステップを実行させる。
【0108】
図中のフローチャート図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。これに関して、フローチャート図またはブロック図中の各ブロックは、モジュール、セグメント、または命令の一部を表し得、それは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を含む。いくつかの代替の実装では、ブロック中に示される機能は、図中に示される順序と異なって行われ得る。たとえば、連続して示される2つのブロックは、実際には実質的に同時に実行され得、またはそれらのブロックは、時には関係している機能性によって逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、特定の機能または行為を実行する、または専用のハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェアベースのシステムによって実装され得ることにも留意されたい。