IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

<>
  • 特許-推論装置、推論方法、及び、プログラム 図1
  • 特許-推論装置、推論方法、及び、プログラム 図2
  • 特許-推論装置、推論方法、及び、プログラム 図3
  • 特許-推論装置、推論方法、及び、プログラム 図4
  • 特許-推論装置、推論方法、及び、プログラム 図5
  • 特許-推論装置、推論方法、及び、プログラム 図6
  • 特許-推論装置、推論方法、及び、プログラム 図7
  • 特許-推論装置、推論方法、及び、プログラム 図8
  • 特許-推論装置、推論方法、及び、プログラム 図9
  • 特許-推論装置、推論方法、及び、プログラム 図10
  • 特許-推論装置、推論方法、及び、プログラム 図11
  • 特許-推論装置、推論方法、及び、プログラム 図12
  • 特許-推論装置、推論方法、及び、プログラム 図13
  • 特許-推論装置、推論方法、及び、プログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-01
(45)【発行日】2024-07-09
(54)【発明の名称】推論装置、推論方法、及び、プログラム
(51)【国際特許分類】
   G06N 5/04 20230101AFI20240702BHJP
   G06N 99/00 20190101ALI20240702BHJP
【FI】
G06N5/04
G06N99/00 180
【請求項の数】 7
(21)【出願番号】P 2023501751
(86)(22)【出願日】2021-02-25
(86)【国際出願番号】 JP2021007027
(87)【国際公開番号】W WO2022180729
(87)【国際公開日】2022-09-01
【審査請求日】2023-08-16
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100107331
【弁理士】
【氏名又は名称】中村 聡延
(74)【代理人】
【識別番号】100104765
【弁理士】
【氏名又は名称】江上 達夫
(74)【代理人】
【識別番号】100131015
【弁理士】
【氏名又は名称】三輪 浩誉
(72)【発明者】
【氏名】川田 拓也
(72)【発明者】
【氏名】山本 風人
(72)【発明者】
【氏名】木村 大地
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2015-32159(JP,A)
【文献】国際公開第2020/003585(WO,A1)
【文献】佐々木耀一, 外4名,”充足可能性問題への変換を用いた重み付き仮説推論の高速化”,FIT2018 第17回情報科学技術フォーラム 講演論文集 第1分冊,2018年09月12日,p.69-73
(58)【調査した分野】(Int.Cl.,DB名)
G06N 5/04
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
観測を入力として受け付ける観測入力手段と、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成する仮説候補生成手段と、
前記仮説候補をILP問題又はSAT問題に変換する問題変換手段と、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成する等価問題生成手段と、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解くソルバ並列化手段と、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する最適解出力手段と、
を備える推論装置。
【請求項2】
前記変換されたILP問題又はSAT問題は制約を含み、
前記変数は、前記制約を規定する変数を含む請求項1に記載の推論装置。
【請求項3】
前記等価問題生成手段は、前記制約の順序を入れ替え、入れ替えた制約の順序に従って前記変数の順序を入れ替える請求項2に記載の推論装置。
【請求項4】
前記等価問題生成手段は、前記変数を前記ILPソルバ又は前記SATソルバに入力する順序を入れ替えて前記等価ILP問題又は前記等価SAT問題を生成する請求項1乃至3のいずれか一項に記載の推論装置。
【請求項5】
前記指定数のILPソルバ又はSATソルバのうち、いずれか1つのILPソルバ又はSATソルバが結果を出力したときに、他のILPソルバ又はSATソルバの動作を終了させるソルバ制御手段を備える請求項1乃至4のいずれか一項に記載の推論装置。
【請求項6】
コンピュータにより実行される推論方法であって、
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する推論方法。
【請求項7】
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮説推論の技術に関する。
【背景技術】
【0002】
仮説推論は、論理式で与えられた推論知識(ルール)と、観測された事象とから妥当な仮説を導く手法である。例えば、サイバーセキュリティの分野では、コンピュータシステムにおいて観測された事象がサイバー攻撃によるものであるかを判断する場合に、仮説推論を適用することができる。特許文献1は、仮説推論において、生成された仮説候補を整数計画問題(ILP:Integer Linear Programming Problem)や充足可能性問題(SAT:Satisfiability Problem)に変換することで、最良の仮説を高速に決定する手法を記載している。
【先行技術文献】
【特許文献】
【0003】
【文献】国際公開WO2020/003585号公報
【非特許文献】
【0004】
【文献】Naoya Inoue and Kentaro Inui. ILP-based Reasoning for Weighted Abduction. In Proceedings of AAAI Workshop on Plan, Activity and Intent Recognition, pp. 25-32, August 2011.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、仮説候補をILP問題やSAT問題に変換し、ILPソルバ又はSATソルバに入力して最適解を求める場合、ILPソルバやSATソルバに入力する問題が似たような規模であっても、解を得るまでに要する時間が大きく変動するという問題がある。また、ILPソルバ又はSATソルバを用いてILP問題又はSAT問題を解く場合、基本的に解を得るまでに要する時間を予測することができない。このため、与えられたILP問題又はSAT問題について、常にソルバが最短時間で最適解を出力するとは限らない。最悪のケースでは、ソルバは、最適解を求めるのに必要な最長時間で最適解を出力することもある。
【0006】
本発明の1つの目的は、仮説候補を変換したILP問題又はSAT問題を可能な限り短時間で解くことにより、仮説推論を高速化することにある。
【課題を解決するための手段】
【0007】
本発明の一つの観点では、推論装置は、
観測を入力として受け付ける観測入力手段と、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成する仮説候補生成手段と、
前記仮説候補をILP問題又はSAT問題に変換する問題変換手段と、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成する等価問題生成手段と、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解くソルバ並列化手段と、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する最適解出力手段と、
を備える。
【0008】
本発明の他の観点では、コンピュータにより実行される推論方法は、
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する。
【0009】
本発明の他の観点では、プログラムは、
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する処理をコンピュータに実行させる。
【発明の効果】
【0010】
本発明によれば、仮説候補を変換したILP問題又はSAT問題を可能な限り短時間で解くことにより、仮説推論を高速化することが可能となる。
【図面の簡単な説明】
【0011】
図1】重み付き仮説推論を説明する図である。
図2】第1実施形態に係る推論装置のハードウェア構成を示す。
図3】第1実施形態に係る推論装置の機能構成を示す。
図4】第1実施形態の推論装置による推論処理のフローチャートである。
図5】ある仮説推論に本実施形態の手法を適用した実施例を示す。
図6】SAT問題の生成例及び変換例を示す。
図7】第2実施形態に係る推論装置の機能構成を示す。
図8】第2実施形態の推論装置による推論処理のフローチャートである。
図9】実施形態の推論装置を適用した行動計画推定装置の構成を示す。
図10】行動計画推定装置の動作を示すフローチャートである。
図11図10のステップA1で取得される動作ログ及び文脈情報の例を示す。
図12図10のステップA2で作成されたグループの例を示す。
図13図10のステップA3の仮説推論で推定された行動計画の例を示す。
図14図10のステップA6の実行による行動計画とメッセージの表示例を示す。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の好適な実施形態について説明する。
<原理説明>
(仮説推論)
仮説推論は、論理式で与えられた推論知識(ルール)と、観測された事象(得られた事実)(以下、単に「観測」と呼ぶ。)から妥当な仮説を導く手法である。例えば、「Aが成り立っているならBが成り立つ」(A⇒B)というルールがあり、「Bが成り立っている」ことが観測できたとき、仮説推論は、「Bが成り立っているのは、Aが成り立っているからであろう」と推測して、「Aが成り立っている」という仮説を立てる推論の方法である。仮説推論は、ルールを後ろ向きに見ることから、「後ろ向きの推論」とも呼ばれる。
【0013】
仮説推論における入力は、観測と推論知識(ルール)である。観測は、一階述語論理リテラルの連言であり、例えば「animal(John)∧bark(John)」などと与えられる。animal やbarkの部分は述語と呼ばれる。Johnは述語の項に相当する。ここでは、項が大文字始まりの場合はその項は定数であることを表し、表現したい世界に存在する個々の対象を表す。項が小文字始まりの場合はその項が変数であることを表し、表現したい世界の対象を表すが、具体的に何に対応するかは決まっていない時に用いられる。述語と項を組み合わせた「animal(John)」と「bark(John)」の部分はリテラルと呼ばれる。推論知識(ルール)は、リテラル、もしくはリテラルの連言間の含意関係として表現される。例えば、ルール「dog(x)⇒animal(x)」は、「xが犬であれば、xは動物である。」ことを示す。一方、仮説推論における出力は、複数の仮説候補のうちで、最良の説明となるものであり、「解仮説」、「最良仮説」などと呼ばれる。なお、論理記号において、「∧」は連言と呼ばれ、論理積演算を表す。「∨」は選言と呼ばれ、論理和演算を表す。「¬」は否定を表し、「⇒」は含意を表す。
【0014】
(重み付き仮説推論)
重み付き仮説推論は、仮説推論の手法の1つであり、後ろ向き推論操作と単一化操作を適用していくことで、仮説候補を生成する。重み付き仮説推論では、全体のコストの総和が小さい仮説候補ほど、良い説明であるとされる。
【0015】
図1(A)は、重み付き仮説推論に使用される推論知識(ルール)の例を示す。ルール1「kill(x,y)1.4⇒arrest(z,x)」は、「xがyを殺したならば、zがxを逮捕する」ことを示す。含意の左辺に位置するリテラルを「前件」と呼ぶ。上の例では「kill(x,y)1.4」が前件に相当する。含意の右辺に位置するリテラルを「後件」と呼ぶ。上の例では、「arrest(z,x)」が後件に相当する。前件のリテラルに割り当てられた数値「1.4」は、そのリテラルに割り当てられる重みであり、前件に複数のリテラルが連言で連結されている場合、各リテラルに割り当てられた重みの合計が、前件全体の重みとなる。重みは後件から前件を仮説するに際して、そのルールがどの程度信頼ならないかを表し、重みの値が多ければ多いほど、後件から前件が仮説されにくくなる。同様に、ルール2「kill(x,y)1.2⇒criminal(x)」は、「xがyを殺したならば、xは犯罪者である」ことを示す。
【0016】
図1(B)は、観測の例を示す。「警察官(A)が犯罪者(B)を逮捕した("a police man arrested the criminal.")という事実がある場合、以下の3つのリテラルを含む観測が得られる。
「criminal(A)$10 ∧ police(B)$10 ∧ arrest(B,A)$10
ここで、各観測に含まれる「$10」はコストであり、コストは、どの程度そのリテラルを説明すべきかを表す。
【0017】
図1(C)は、上記の推論知識と観測とを用いて後ろ向き推論操作を行った例を示す。まず、観測のリテラル「criminal(A)$10」にルール2を後ろ向きに適用する。この場合、推論の根拠が持つコストは仮説に全て伝搬するため、観測のリテラル「criminal(A)」のコストは「$0」となり、仮説「kill(A,u1)」のコストは、コスト「$10」と重み「1.2」の積で「$12」となるので、仮説「kill(A,u1)$12」が得られる。同様に、観測のリテラル「arrest(B,A)$10」にルール1を後ろ向きに適用すると、仮説「kill(A,u2)$14」が得られる。
【0018】
図1(D)は、単一化操作の例を示す。単一化操作は、同じ述語を持つリテラル対が互いに同一のものであると仮説する。図1(D)の例では、図1(C)に示す後ろ向き推論操作で得られた2つのリテラル「kill(A,u1)$12」と「kill(A,u2)$14」が同一、即ち、u=uと仮説する。単一化操作では、複数のリテラルのうちコストの高い方がキャンセルされるため、「kill(A,u1)$12」の方が残る。よって、単一化操作で得られた仮説候補のコストは、$10+$12=$22となり、最少となる。つまり、「警察官(B)が犯罪者(A)を逮捕した」という事実を、図1(A)に示す推論知識に基づき仮説推論した結果、以下が尤もらしい(一番コストの低い)仮説として導出される。
(1)Aはある人物を殺した。
(2)BがAを逮捕したのは、Aがその人物を殺したからである。
【0019】
このように、重み付き仮説推論では、推論知識と観測を用いて後ろ向き推論操作と単一化操作を行っていくことで複数の仮説候補を含む仮説候補集合を生成し、得られた仮説候補集合をILP問題又はSAT問題(以下、「ILP/SAT問題」と呼ぶ。)に変換し、ILPソルバ又はSATソルバ(以下、「ILP/SATソルバ」と呼ぶ。)を用いて最適解を求めることにより、最良仮説を決定する。
【0020】
なお、上記では仮説推論の一例として重み付き仮説推論について説明したが、本実施形態は、これ以外の任意の評価関数に基づく仮説推論にも適用可能である。
【0021】
(ソルバによる推論時間)
上記のように、仮説候補集合をILP/SAT問題に変換し、ILP/SATソルバで解く場合、ILP/SATソルバに入力する問題の規模が同程度でも、事例によって推論時間が大きく変動することがある。詳しくは、ILP/SATソルバに与える入力の構成(ILP/SAT問題の変数、及び、制約の個数)が同じでも、ILP/SATソルバに対して変数や制約を入力する順序が異なると、同じ解が得られるものの、解が得られるまでの時間が各試行によって大きく異なってしまう。さらに、一般的に、ソルバの推論時間が最短となるような変数の入力順序を事前に予測することはできない。このため、ILP/SATソルバに対するILP/SAT問題の変数の入力順序によっては、解が得られるまでの推論時間がそのILP/SATソルバによる最長時間となってしまうこともある。
【0022】
そこで、以下の実施形態では、仮説候補集合をILP/SAT問題に変換する際、仮説候補集合を、ILP/SAT問題の構成(変数及び制約の個数)は同じであるが、ILP/SAT問題における変数の順序、即ち、ILP/SATソルバに入力される変数の順序が異なる複数(n個)のILP/SAT問題(以下、「等価ILP/SAT問題」とも呼ぶ。)に変換する。そして、同一のILP/SATソルバを複数個(n個)用意し、n個のILP/SATソルバを用いてn個のILP/SAT問題を並列的に解き、最初に得られた解を最適解として出力する。
【0023】
複数の等価ILP/SAT問題は、変数及び制約の個数が同一であるが、ILP/SATソルバに対する変数の入力順序が異なる。よって、複数の同一のILP/SATソルバを用いて等価ILP/SAT問題を並列的に解いた場合、各ILP/SATソルバは、解を出力するまでの時間は異なるが、同一の解を出力することは保証されている。そこで、複数の同一のILP/SATソルバを用いて並列的に等価ILP/SAT問題を解き、最も早く得られた解を最適解として採用する。これにより、仮説推論を可能な限り高速化することが可能となる。
【0024】
<第1実施形態>
[ハードウェア構成]
図2は、第1実施形態に係る推論装置100のハードウェア構成を示すブロック図である。推論装置100は、インタフェース(IF)11と、プロセッサ12と、メモリ13と、記録媒体14と、データベース(DB)15とを備える。
【0025】
IF11は、外部装置との間でデータの入出力を行う。具体的に、推論に用いられる観測や推論知識は、IF11を通じて入力される。また、推論装置100による推論結果はIF11を通じて外部装置へ出力される。
【0026】
プロセッサ12は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)などのコンピュータであり、予め用意されたプログラムを実行することにより、推論装置100の全体を制御する。なお、プロセッサ12は、GPU(Graphics Processing Unit)またはFPGA(Field-Programmable Gate Array)であってもよい。具体的に、プロセッサ12は、後述する推論処理を実行する。
【0027】
メモリ13は、ROM(Read Only Memory)、RAM(Random Access Memory)などにより構成される。メモリ13には、観測、推論知識、本実施形態の推論処理において生成される仮説候補などが記憶される。また、メモリ13は、プロセッサ12による各種の処理の実行中に作業メモリとしても使用される。
【0028】
記録媒体14は、ディスク状記録媒体、半導体メモリなどの不揮発性で非一時的な記録媒体であり、推論装置100に対して着脱可能に構成される。記録媒体14は、プロセッサ12が実行する各種のプログラムを記録している。推論装置100が各種の処理を実行する際には、記録媒体14に記録されているプログラムがメモリ13にロードされ、プロセッサ12により実行される。データベース15は、IF11を通じて入力された推論知識を知識ベースとして記憶する。なお、推論知識をデータベース15の代わりにメモリ13に記憶してもよい。
【0029】
[機能構成]
図3は、第1実施形態に係る推論装置100の機能構成を示すブロック図である。推論装置100は、知識ベース20と、観測入力部21と、仮説候補生成部22と、ILP/SAT問題変換部23と、等価ILP/SAT問題生成部24と、ILP/SATソルバ並列化部25と、並列化ソルバ制御部26と、最適解出力部27とを備える。
【0030】
知識ベース20は、仮説推論に用いる推論知識(ルール)を記憶している。観測入力部21は、観測された事象である観測を入力として受け取り、仮説候補生成部22へ出力する。なお、観測は、観測された事象を論理式で表した観測論理式として入力される。
【0031】
仮説候補生成部22は、入力された観測に対して、知識ベース20に記憶されている推論知識を後ろ向きに適用して仮説候補を生成する。例えば、前述の重み付き仮説推論を用いる場合、仮説候補生成部22は、観測に対して後ろ向き推論操作と単一化操作を適用していくことで、複数の仮説候補を生成する。仮説候補生成部22は、生成した複数の仮説候補を仮説候補集合としてILP/SAT問題変換部23へ出力する。
【0032】
ILP/SAT問題変換部23は、入力された仮説候補集合をILP問題又はSAT問題に変換し、変数及び制約を含むILP/SAT問題を生成する。ILP/SAT問題は、ILP/SATソルバにより解かれる問題である。生成されたILP/SAT問題は、等価ILP/SAT問題生成部24へ出力される。
【0033】
ILP/SATソルバ並列化部25は、ユーザにより入力された並列数nを受け取る。並列数nは、並列的に使用するILP/SATソルバの数であり、等価ILP/SAT問題生成部24が生成する等価ILP/SAT問題の数でもある。ILP/SATソルバ並列化部25は、入力された並列数nを、等価ILP/SAT問題生成部24へ出力する。なお、並列数は指定数の一例である。
【0034】
等価ILP/SAT問題生成部24は、入力されたILP/SAT問題から、並列数n個の等価ILP/SAT問題を生成する。等価ILP/SAT問題は、入力されたILP/SAT問題に含まれる変数の順序がランダムに変更されているが、論理的には入力されたILP/SAT問題と等価な問題である。ここで、変数の順序とは、ILP/SATソルバを用いてその問題を解く際に、ILP/SATソルバに変数が入力される順序である。よって、例えば入力されたILP/SAT問題がX個の変数を含む場合、等価ILP/SAT問題生成部24は、X個の変数の入力順序をランダムに変えて、n個の等価ILP/SAT問題1~nを生成する。
【0035】
一方、ILP/SATソルバ並列化部25は、並列数nに基づき、n個の同一のILP/SATソルバ1~nを起動し、等価ILP/SAT問題生成部24が生成した等価ILP/SAT問題1~nを解かせる。具体的には、ILP/SATソルバ並列化部25は、ILP/SATソルバ1に等価ILP/SAT問題1を割り当て、ILP/SATソルバ2に等価ILP/SAT問題2を割り当て、という具合に、各SATソルバ1~nに各等価ILP/SAT問題1~nを割り当てて解かせる。各ILP/SATソルバ1~nは、対応するILP/SAT問題の解を求め、並列化ソルバ制御部26へ出力する。
【0036】
ここで、各ILP/SATソルバ1~nが解を出力するまでに要する時間(以下、「解答時間」と呼ぶ。)は異なる。n個のILP/SATソルバ1~nは同一のソルバであるが、各ILP/SATソルバに入力される等価ILP/SAT問題1~nは、前述のように変数の入力順序がランダムに入れ替えられているため、変数の入力順序に起因して各ILP/SATソルバの解答時間には差が生じる。但し、同一のILP/SATソルバを用いて等価なILP/SAT問題を解いているので、各ILP/SATソルバが出力する解は同一となることが保証されている。
【0037】
並列化ソルバ制御部26は、ILP/SATソルバ1~nのうち、最初に、即ち、最も早く解を出力したILP/SATソルバの解を最適解として採用し、最適解出力部27へ出力する。これにより、n個のILP/SATソルバの解答時間のうちの最短時間で解を得ることができる。なお、並列化ソルバ制御部26は、最初に解を出力したILP/SATソルバから解を取得した時点で、他のILP/SATソルバの動作を終了させてもよい。これにより、終了させたILP/SATソルバの計算資源を他の処理に用いることができ、計算資源の有効活用が可能となる。
【0038】
最適解出力部27は、並列化ソルバ制御部26から入力された最適解から、仮説候補集合中の最良仮説を復元し、出力する。
【0039】
[推論処理]
図4は、第1実施形態の推論装置100による推論処理のフローチャートである。この処理は、図2に示すプロセッサ12が予め用意されたプログラムを実行し、図3に示す各要素として動作することにより実現される。なお、処理の前提として、ILP/SATソルバ並列化部25にはユーザにより並列数nが入力されているものとする。
【0040】
まず、観測入力部21は観測の入力を受け取り、仮説候補生成部22は、知識ベース20内の推論知識を用いて仮説候補集合を生成する(ステップS11)。次に、ILP/SAT問題変換部23は、仮説候補集合をILP/SAT問題に変換する(ステップS12)。次に、等価ILP/SAT問題生成部24は、ILP/SATソルバ並列化部25から受け取った並列数nに基づき、入力されたILP/SAT問題からn個の等価ILP/SAT問題を生成する(ステップS13)。
【0041】
次に、ILP/SATソルバ並列化部25は、並列数nに基づき、n個のILP/SATソルバを起動し、並列的に実行して、ステップS13で生成されたn個の等価ILP/SAT問題を解かせる(ステップS14)。次に、並列化ソルバ制御部26は、いずれかのILP/SATソルバから解が得られたか否かを判定し(ステップS15)、いずれかのILP/SATソルバから最初に得られた解を最適解として最適解出力部27に出力する(ステップS16)。
【0042】
そして、最適解出力部27は、最適解に基づいて、仮説候補集合中の最良仮説を決定し、出力する(ステップS17)。こうして、ステップS11で生成された仮説候補集合に含まれる複数の仮説候補から、最良仮説が決定される。なお、並列化ソルバ制御部26は、最初に得られた解を最適解として最適解出力部27に出力した後、他のILP/SATソルバの動作を終了させてもよい。
【0043】
[実施例]
次に、ある仮説推論に本実施形態の手法を適用した実施例を説明する。なお、以下の実施例では、仮説推論をSAT問題に変換するものとする。図5(A)は、本実施例で使用する推論知識(ルール)R1~R3と、観測(クエリ)Q1を示す。なお、推論知識における数値(推論知識R1の「s0.4」の「0.4」など)は重みである。観測における数値(観測Q1の「p$20」の「20」など)はコストである。
【0044】
まず、仮説候補生成部22は、観測Q1に推論知識R1~R3を後ろ向きに適用し、仮説候補を生成する。図5(B)は、仮説候補を生成する手順を示す。観測Q1のリテラル「p$20」に推論知識R1を後ろ向きに適用すると、「s$8∧r$14」が得られる。得られた「s$8∧r$14」のリテラル「r$14」に推論知識R2を後ろ向きに適用すると、リテラル「t $21」が得られる。観測Q1のリテラル「q$10」に推論知識R3を後ろ向きに適用すると、リテラル「t $11」が得られる。ここで、リテラル「t $21」と「t $11」は単一化が可能である。
【0045】
これにより、仮説候補としては、元の観測Q1に対応する(p∧q)に加えて、(s∧r∧q)、(s∧t∧q)、(p∧t)、(s∧r∧t)、(s∧t)が得られ、これら6個の仮説候補により仮説候補集合が構成される。
【0046】
次に、仮説候補集合に含まれる各仮説候補に対して、以下の論理変数を導入する。なお、x、yを仮説候補集合内の任意のリテラルとする。
:リテラルxを仮説に含む場合は、True
:リテラルxがコストを払わない場合は、True
x,y:リテラルxがリテラルyと単一化される場合は、True
【0047】
これにより、図5(B)に示す各リテラルについては、その下側の括弧に示す論理変数が割り当てられる。例えば、リテラル「p$20」に対しては、論理変数(h:r:)が割り当てられる。
【0048】
次に、ILP/SAT問題変換部23は、上記の仮説候補集合をSAT問題に変換する。図6(A)は、SAT問題への変換例を示す。SAT問題への変換では、各リテラルに対する論理変数を変数配列として定義して論理変数Vが作成される。ここで、論理変数Vは、図5(B)に示すように各リテラルに対して割り当てられた論理変数を含む。この論理変数Vにおける順序が、SATソルバへの変数の入力順序となる。
【0049】
また、仮説としての解の性質を満たすための制約群(SAT制約式)が作成される。図6(A)の例では、制約1~nが作成される。例えば、制約1は、
制約1:h、h(観測は仮説を作る上で必ず使う)
であり、この制約1は、実装上は論理変数V[3]、V[4]として表現される。また、制約nは、
制約n:¬r∨h∨h(あるノードがコストを払わなくてよいとき、親が払うという制約の一つ)
であり、この制約nは、実装上は¬V[0]∨V[1]∨V[2]として表現される。こうして、SAT問題として、仮説候補集合に含まれるリテラルに割り当てられた論理変数を規定する変数配列と、制約群とが作成される。
【0050】
次に、等価ILP/SAT問題生成部24は、生成したSAT問題を等価SAT問題に変換する。図6(B)は、等価SAT問題への変換例を示す。等価ILP/SAT問題生成部24は、変数配列における論理変数の順番をシャッフルし、順序は異なるが論理的には等価な等価SAT問題を作成する。図6(B)の例では、図6(A)に示す論理変数Vに含まれる論理変数の順序をシャッフルして論理変数V’を生成している。なお、論理変数の順序が変更されたことにより、制約1~nに含まれる論理変数の変数配列における順序が変わるため、制約1~nを規定する各論理変数も変更される。
【0051】
こうして、等価ILP/SAT問題生成部24は、並列数nと等しい数の等価SAT問題を生成する。生成されたn個の等価SAT問題を各SATソルバにより解くことにより、解が出力され、複数のSATソルバのいずれかにより最初に出力された解が最適解として採用される。
【0052】
なお、仮説候補集合をILP問題に変換する方法は、例えば非特許文献1に記載されている。また、仮説候補集合をSAT問題に変換する方法は、例えば特許文献1に記載されており、特許文献1を本明細書に参照として援用する。
【0053】
[変形例]
なお、上記の例では、等価ILP/SAT問題生成部24は、ILP/SAT問題に含まれる論理変数の入力順序を入れ替えて複数の等価ILP/SAT問題を生成しているが、この変数は、上記のように仮説候補集合に含まれる論理変数と、制約に含まれる論理変数とを含む。即ち、上記の例では、仮説候補集合に含まれる論理変数と、制約に含まれる論理変数をまとめ、ソルバに対する入力順序を入れ替えて等価ILP/SAT問題を生成している。その代わりに、仮説候補集合に含まれる論理変数の入力順序のみを入れ替えて等価ILP/SAT問題を生成することとしてもよい。
【0054】
また、ILP/SAT問題は、論理変数及び制約群により規定されるので、変数のみならず、ILP/SATソルバに対する複数の制約の入力順序を入れ替えて等価ILP/SAT問題を生成してもよい。この場合、制約に含まれる論理変数は、入れ替え後の制約の順序に従った順序でILP/SATソルバに入力すればよい。
【0055】
[本実施形態の効果]
ある仮説推論において、SATソルバとしてOpen-wboを使用して実験を行ったところ、SATソルバを並列化しない場合には推論時間が18000秒程度であった。これに対し、本実施形態の手法を用い、並列数8以上でSATソルバを並列化した場合、推論時間は平均で1000秒程度に短縮された。
【0056】
本実施形態の手法では、実行環境が許す限り並列数nを増やすことにより、仮説推論に要する時間が短くなる可能性が高くなる。但し、並列数nを増やした場合でも、推論時間は、同一のILP/SAT問題に対して、対応するILP/SATソルバが解くことができる最短の解答時間が下限となる。
【0057】
本実施形態の手法では、等価ILP/SAT問題は、変数の順序を入れ替えているものの、問題としては論理的に元のILP/SAT問題と等価であるため、解答時間が長いILP/SATソルバも解答時間が短いILP/SATソルバも同一の解を出力することになる。このため、最初に出力された解を採用することによって推論結果の精度が損なわれることはない。
【0058】
本実施形態では、ソルバの並列化により、近年一般的なマルチコア環境においては、空いている計算資源を効率的に使用することができる。また、推論時間の短縮が期待できるため、メモリ、CPUなどのトータルの消費量を抑えることができる。
【0059】
<第2実施形態>
次に、本発明の第2実施形態について説明する。図7は、第2実施形態に係る推論装置30の機能構成を示すブロック図である。推論装置30は、観測入力手段31と、仮説候補生成手段32と、問題変換手段33と、等価問題生成手段34と、ソルバ並列化手段35と、最適解出力手段36とを備える。
【0060】
図8は、第2実施形態の推論装置30による推論処理のフローチャートである。観測入力手段31は、観測を入力として受け付ける(ステップS31)。仮説候補生成手段32は、観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成する(ステップS32)。問題変換手段33は、仮説候補をILP問題又はSAT問題に変換する(ステップS33)。等価問題生成手段34は、変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成する(ステップS34)。ソルバ並列化手段35は、指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解く(ステップS35)。最適解出力手段36は、指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する(ステップS36)。
【0061】
第2実施形態の推論装置30によれば、複数のILP/SATソルバから最も早く出力された解を最適解として出力するので、仮説推論を可能な限り高速化することができる。
【0062】
<実装例>
次に、上記の推論装置の実装例について説明する。以下の実装例は、上記の実施形態の推論装置を行動計画推定装置に適用したものである。
【0063】
[装置構成]
図9は、本実施形態の推論装置を適用した行動計画推定装置40の具体的構成を示すブロック図である。図9に示すように、行動計画推定装置40は、コンピュータシステム50に接続されている。コンピュータシステム50は、ネットワークを介して接続された多数のコンピュータによって構築されている。行動計画推定装置40は、コンピュータシステム50上で動作するソフトウェア、特には、マルウェア等のコンピュータシステム50を攻撃するソフトウェアによって実行される行動計画を推定する。行動計画推定装置40は、情報取得部41、グループ生成部42、行動計画推定部43、行動計画出力部44、及び、メッセージ作成部45を備えている。なお、この実装例では、上記の第1又は第2実施形態は行動計画推定部43に適用される。
【0064】
情報取得部41は、まず、コンピュータシステム50から動作ログを収集し、収集した動作ログから、それに付随する文脈情報を取得する。文脈情報は、例えば、動作の実行時刻(開始時刻)、実行場所、行為主体、行為対象等を含む情報である。
【0065】
グループ生成部42は、例えば、複数の文脈情報それぞれに含まれる、動作の実行時刻(開始時刻)、実行場所、行為主体、行為対象のうちいずれかが一致している場合に、これらの動作ログは関連していると判断し、これらを同じグループとする。
【0066】
例えば、実行時刻については、2つの動作ログそれぞれの文脈情報中の実行時刻の差が閾値以下(1時間以内、1週間以内等)である場合に一致と判断される。実行場所については、各動作ログが取得されたエリアが同一エリア(同じホストマシン上、同じドメインネットワーク上、感染範囲内等)にある場合に一致と判断される。また、実行場所については、動作が行われた場所間の空間的距離又はネットワーク的距離が閾値以下である場合(動作ログの取得元が同一部門又は連携部門にある等)にも一致と判断される。
【0067】
また、行為主体については、2つの動作ログそれぞれが関連するユーザアカウントが一致している場合、ユーザアカウントの権限レベルが同等である場合に、一致と判断される。更に、行為主体については、動作を行った各ソフトウェアが同一のマルウェアである場合、同じ攻撃に用いられた実績がある一連のマルウェア等である場合も、一致と判断される。更に、行為対象については、2つの動作ログそれぞれで対象となっていたオブジェクトが同一である場合、又は同一ファミリのオブジェクトである場合に、一致と判断される。
【0068】
行動計画推定部43は、上記の第1又は第2実施形態の推論手法を適用したものであり、まず、グループ毎に、各グループに含まれる動作ログに、知識データを適用して仮説推論を実行する。この場合、知識データは、一階述語論理式の含意関係ルールによって表現される。
【0069】
知識データは、例えば、「前状態(前提)∧行為(の達成状態)⇒後状態(帰結)」の形式で表現される。この形式は、前提となる前状態と行為(の達成状態)とが共に真ならば、必然の帰結となる後状態が導かれる、ことを示している。また、この形式では、前状態と行為とは、それぞれ後状態が成り立つための必要条件である。また、「前状態∧行為」は、後状態が成り立つための十分条件である。また、行為は複数の命題の連言で表現することもできる。例えば、知識データは、「前状態∧行為1∧行為2⇒後状態」と表現されていても良い。
【0070】
知識データの具体例としては、「マルウェア侵入(Event1, Mal)∧不正ログオン(Event2, Host, Host1) ⇒ 感染拡大(Plan, Mal, Host1)」が挙げられる。この場合、Event1、Mal、Host等はそれぞれ各述語の「項」と呼ばれる変数である。「項」に具体的な値が入った論理式は、「観測(observation)」と呼ばれる。例として、「不正ログオン(“e1”, “10.23.123.1”)」が挙げられる。
【0071】
具体的に、行動計画推定部43に第1実施形態の推論装置100を適用した場合、仮説候補生成部22は各グループに含まれる動作ログに知識データを適用して仮説候補集合を生成し、ILP/SAT問題変換部23は生成された仮説候補集合をILP/SAT問題に変換する。等価ILP/SAT問題生成部24は、各ILP/SAT問題について複数の等価ILP/SAT問題を生成する。そして、ILP/SATソルバ並列化部25は、複数のILPソルバ又はSATソルバを動作させて複数の等価ILP/SAT問題を並列的に解き、最初に得られた解を最適解として出力する。そして、行動計画推定部43は、最適解に基づく最良仮説を推論結果として出力する。
【0072】
また、行動計画推定部43に第2実施形態の推論装置30を適用した場合、仮説候補生成手段32は各グループに含まれる動作ログに知識データを適用して仮説候補集合を生成し、問題変換手段33は生成された仮説候補集合をILP問題又はSAT問題に変換する。等価問題生成手段34は、変換されたILP問題又はSAT問題について複数の等価ILP問題又は等価SAT問題を生成する。ソルバ並列化手段35は、複数のILPソルバ又はSATソルバを動作させて複数の等価ILP問題又は等価SAT問題を並列的に解き、最初に得られた解を最適解として出力する。そして、行動計画推定部43は、最適解に基づく最良仮説を推論結果として出力する。
【0073】
続いて、行動計画推定部43は、上述したように、仮説推論の結果を用いて、各グループに含まれる動作ログが示す動作から、予め設定された目標状態に至るまでの、動作ログが取得されたソフトウェアによって実行される行動計画を推定する。具体的には、行動計画推定部43は、推論の結果を用いて、動作ログが示す動作が行われてから、目標状態に到達するまでに、ソフトウェアによって行われる行為を推定する。ここで、「目標状態」としては、例えば、機密情報が外部に送信された状態、要求した金額が送金された状態等が挙げられる。
【0074】
メッセージ作成部45は、仮説推論の結果から、動作ログに直接結びついていない要素の成立に必要となる動作を特定する。そして、メッセージ作成部45は、動作ログの文脈情報を用いて、特定した動作の状況を示す文脈情報を推定し、推定した文脈情報を用いて、行動計画についてのメッセージを生成する。
【0075】
行動計画出力部44は、推定された行動計画を、例えば、表示装置、端末装置といった外部の装置に出力する。これにより、表示装置または端末装置の画面上に、行動計画が表示される。また、行動計画出力部44は、メッセージ作成部45によってメッセージが生成された場合は、推定された行動計画に加えて、生成されたメッセージも外部の装置に出力することもできる。
【0076】
[装置動作]
次に、行動計画推定装置40の動作について図10を用いて説明する。図10は、行動計画推定装置の動作を示すフローチャートである。最初に、情報取得部41が、コンピュータシステム50上でソフトウェアが行った動作毎に、その動作を示す動作ログ及びその文脈情報を取得する(ステップA1)。具体的には、情報取得部41は、コンピュータシステム50から、動作ログを収集し、収集した動作ログから、それに付随する文脈情報を取得する。
【0077】
次に、グループ生成部42は、ステップA1で取得した動作ログそれぞれを、文脈情報間の類似性に基づいてグループに分ける(ステップA2)。具体的には、グループ生成部42は、複数の文脈情報それぞれに含まれる、動作の実行時刻(開始時刻)、実行場所、行為主体、行為対象のうちいずれかが一致している場合に、これらの動作ログは関連していると判断し、これらを同じグループとする。
【0078】
次に、行動計画推定部43は、グループ毎に、各グループに含まれる動作ログに、知識データを適用して仮説推論を実行する(ステップA3)。この際、行動計画推定部43は、前述のように、各仮説候補をILP問題又はSAT問題に変換し、変換されたILP問題又はSAT問題から複数の等価ILP問題又は等価SAT問題を生成し、複数のILPソルバ又はSATソルバを用いてそれらを並列的に解く。そして、行動計画推定部43は、複数のILPソルバ又はSATソルバにより最初に得られた解を最適解とし、最適解に基づいて最良仮説を推論結果として出力する。
【0079】
次に、行動計画推定部43は、ステップA3の仮説推論の結果を用いて、各グループに含まれる動作ログが示す動作から、予め設定された目標状態に至るまでの、動作ログが取得されたソフトウェアによって実行される行動計画を推定する(ステップA4)。
【0080】
次に、メッセージ作成部45は、ステップA4で推定された行動計画についてのメッセージを生成する(ステップA5)。具体的には、メッセージ作成部45は、仮説推論の結果から、動作ログに直接結びついていない要素の成立に必要となる動作を特定する。そして、メッセージ作成部45は、動作ログの文脈情報を用いて、特定した動作の状況を示す文脈情報を推定し、推定した文脈情報を用いて、行動計画についてのメッセージを生成する。
【0081】
次に、行動計画出力部44は、ステップA4で推定された行動計画と、ステップA5で生成されたメッセージとを、例えば、表示装置、端末装置といった外部の装置に出力する(ステップA6)。
【0082】
[具体例]
次に、行動計画推定装置40の動作の具体例について、図11図14を用いて説明する。また、具体例の説明は、上述した図10に示す各ステップに沿って行う。
【0083】
(ステップA1)
情報取得部41は、図11に示す動作ログとそれに付随する文脈情報とを取得する。図11は、図10に示したステップA1で取得される動作ログ及び文脈情報の一例を示す図である。図10の例では、動作ログとして、「マルウェア検知」、「不正ログオン1」、及び「不正ログオン2」が取得されている。また、図10では、左側に、動作ログと文脈情報とが模式的に示され、右側にこれらの論理式が示されている。
【0084】
(ステップA2)
グループ生成部42は、図12に示すように、ステップA1で取得した動作ログそれぞれを、文脈情報間の類似性に基づいて、グループに分ける。図12は、図10に示したステップA2で作成されたグループの一例を示す図である。図11に示したように、「マルウェア検知」と「不正ログオン1」とにおいて、行為主体及び実行場所が一致している。このため、図12の例では、これらの動作は同じグループとなる。
【0085】
(ステップA3及びA4)
行動計画推定部43は、図12に示したグループに含まれる動作ログに、知識データを適用して仮説推論を実行する。そして、行動計画推定部43は、図13に示すように、仮説推論の結果から行動計画を推定する。図13は、図10に示したステップA3の仮説推論から推定された行動計画の一例を示す図である。図13の例では、仮説推論により、ステップA2で作成されたグループに含まれる「マルウェア検知」及び「不正ログオン1」を起点として、起点から終点「目標状態」までに、マルウェアによって行われる行為が導出されている。なお、図13において破線で囲まれている「データ外部送信」は、動作ログとして取得された動作ではない。但し、「データ外部送信」も、行動計画推定部43による仮説推論によって推定される。
【0086】
(ステップA5)
メッセージ作成部45は、ステップA3で得られた仮説推論に含まれる「行為」のうち、ステップA1で取得された動作ログに直接結びついていないものを特定する。図13の例では、「データ外部送信」がそれに該当する。続いて、メッセージ作成部45は、知識データを用いて、「データ外部送信」の成立に必要な動作を特定する。具体的には、メッセージ作成部45は、知識データを用いて、「データ外部送信」の成立に必要な動作として、「情報盗取」を特定する。
【0087】
次に、メッセージ作成部45は、ステップA1で取得された動作ログの文脈情報、例えば、成立に必要な動作として特定した「情報盗取」の直前の「感染拡大」の必要条件である「不正ログオン1」の文脈情報から、「データ外部送信」の文脈情報を推定する。具体的には、メッセージ作成部45は、「不正ログオン1」の文脈情報における実行日時(time)、動作主体(agent)、及び実行場所(src, dest)の値をそれぞれ抽出する(図11参照)。
【0088】
次に、メッセージ作成部45は、「データ外部送信」の実行日時を、抽出した日時の後に設定し、行為主体、行為対象及び実行場所を、抽出したものに設定する。そして、メッセージ作成部45は、未確認の動作である「データ外部送信」と、それについて設定した文脈情報とを用いて、メッセージを作成する。メッセージの例としては、「“情報盗取”に関する“データ外部送信”が、“2018/05/31 13:54:28”より後に、“admin01”の権限で、“183.79.40.183”または“183.79.52.210”上で行なわれた可能性があります。」が挙げられる。
【0089】
(ステップA6)
次に、行動計画出力部44は、図14に示すように、ステップA4で推定された行動計画と、ステップA5で生成されたメッセージとを外部の装置に出力する。図14は、図10に示したステップA6の実行により画面に表示された行動計画とメッセージとの一例を示す図である。図14の例では、行動計画とメッセージとが画面上に表示されている。
【0090】
なお、上記の行動計画推定装置は、国際公開WO2020/161780に記載されており、この文献の内容を参照して本出願に取り込む。
【0091】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0092】
(付記1)
観測を入力として受け付ける観測入力手段と、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成する仮説候補生成手段と、
前記仮説候補をILP問題又はSAT問題に変換する問題変換手段と、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成する等価問題生成手段と、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解くソルバ並列化手段と、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する最適解出力手段と、
を備える推論装置。
【0093】
(付記2)
前記変換されたILP問題又はSAT問題は制約を含み、
前記変数は、前記制約を規定する変数を含む付記1に記載の推論装置。
【0094】
(付記3)
前記等価問題生成手段は、前記制約の順序を入れ替え、入れ替えた制約の順序に従って前記変数の順序を入れ替える付記2に記載の推論装置。
【0095】
(付記4)
前記等価問題生成手段は、前記変数を前記ILPソルバ又は前記SATソルバに入力する順序を入れ替えて前記等価ILP問題又は前記等価SAT問題を生成する付記1乃至3のいずれか一項に記載の推論装置。
【0096】
(付記5)
前記指定数のILPソルバ又はSATソルバのうち、いずれか1つのILPソルバ又はSATソルバが結果を出力したときに、他のILPソルバ又はSATソルバの動作を終了させるソルバ制御手段を備える付記1乃至4のいずれか一項に記載の推論装置。
【0097】
(付記6)
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する推論方法。
【0098】
(付記7)
観測を入力として受け付け、
前記観測に対して推論知識を後ろ向き方向に適用して仮説候補を生成し、
前記仮説候補をILP問題又はSAT問題に変換し、
変換されたILP問題又はSAT問題に含まれる変数の順序を入れ替えた等価ILP問題又は等価SAT問題を、指定数だけ生成し、
前記指定数の同一のILPソルバ又はSATソルバを並列的に実行し、生成された等価ILP問題又は等価SAT問題を解き、
前記指定数のILPソルバ又はSATソルバのうち、最も早く結果を出力したILPソルバ又はSATソルバの結果を最適解として出力する処理をコンピュータに実行させるプログラムを記録した記録媒体。
【0099】
以上、実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0100】
12 プロセッサ
20 知識ベース
21 観測入力部
22 仮説候補生成部
23 ILP/SAT問題変換部
24 等価ILP/SAT問題生成部
25 ILP/SATソルバ並列化部
26 並列化ソルバ制御部
27 最適解出力部
100 推論装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14