(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
これまでに、「人工知能(AI:Artificial Intelligence)」の技術分野では、(a)知識の表現方法、(b)知織に基づいた演繹推論の方法、また(c)知識を事例などを基に作り上げる帰納推論の方法などが研究されてきた。
【0003】
ここで、人工知能の研究は、1950年代に産声を上げた。以来数十年間、この分野は情報科学において最も活発に研究された分野の一つである。特に、1980年代に我が国で進められた第5世代コンピュータ・プロジェクトでは、知識の記述形式として述語論理を、演繹推論の方法としてProlog(述語論理式をプログラムに見立てて処理する言語)を採用し、それに基づいて知識処理を並列化・高速化するための数多くの研究が行なわれた。
【0004】
しかしながら、上述した第5世代コンピュータ・プロジェクトは、最終的に一定の成果を収めたものの、厳密には、その投資規模に見合った成果、たとえば、社会を変革するような成果を産み出すことまでは成功しなかったといわざるをえない。その理由は、人工知能で真に解決しなければならない課題が、上述した人工知能の研究分野のうち、(c)知
識を作るための帰納推論(学習)の方法の開発であるのに、(b)知識に基づいた演繹推
論の方法の高速化に的を絞り、巨大なハードウェア計算機を開発することに精力を注いだことに一因があると考えられる。
【0005】
以上のような従来のアプローチを、記号/シンボルを明示的に扱う”狭義の”AI(記
号処理AI)とすると、これとは別に”広義の”AIには、記号/シンボルを明示的に扱
わない技術(代表的なものに人工ニューラルネットワーク研究がある)も含まれる。これら2つの技術、記号処理AIとニューラルネットは、それぞれが得意とする分野が違うこともあり、これまでなかなか研究の交流や融合は行なわれなかった。
【0006】
ここで、上述した狭義のAIにおいては、記号論理、なかでも、「述語論理」について研究が行なわれてきた。
【0007】
ここで、「記号論理」は、言葉で表現される意味内容を、記号(シンボル)に変換し、その論理関係によって捉えようとするものであり、論理を数学によって研究するものである。したがって、「数理論理学」とも呼ばれる。
【0008】
「記号論理」には、「命題論理」と「述語論理」とが含まれる。「述語論理」は、命題論理とは異なり、個々の命題の内容について論じるために、命題の中に変数を用いて、変数の値によって、真・偽をとらえる記号論理である。
【0009】
すなわち、命題論理は、言明として真か偽かを問うものであり、言明の中で表される内容に関する推論はできない。たとえば、
(p1)すべての人は平和を好む。
【0010】
(p2)太郎は人である。
ならば
(p3)太郎は平和を好む。
【0011】
との命題がある場合、命題論理の枠組みでは、命題(p1)、(p2)が真であっても、命題(p3)が常に真であるとは主張できない。これは、命題論理の下では、命題の中に含まれる個体に関しての内容には着目せず、命題そのものの真偽性のみ着目するからである。
【0012】
それに対して、述語論理では、命題に含まれる個体変数に着目し、その命題における個体変数の性質や状態を述語を用いて推論を行なうことになる。
【0013】
述語論理を構成する要素としては、たとえば、以下のようなものがある。
・個体定数:特定の個体を表す記号(a,b,…などの定数によって表現される)
・個体変数:任意の個体を表す記号(x,y,…などの変数によって表現される)
・述語記号:個体に関する性質や状態を表す記号(p,q,…などの記号によって表現される)
・関数記号:個体間の関係を表す記号(f(x)のfなどによって表現される)
・論理記号:命題論理の論理記号と同様に否定(¬あるいは〜),論理積(∧),論理和(∨),含意(→)などが用いられる。
【0014】
・限量記号:対象領域において対象とする固体の範囲を示す記号、全称記号(∀)、存在記号(∃)が用いされる。限量記号により限定される変数を束縛変数とよび、束縛変数でない変数を自由変数と呼ぶ。
【0015】
述語の引数となる項は、述語論理が対象とする世界である対象領域における要素を表現するものであり、述語に引数に相当する。項には、個体定数、個体変数のほか、関数自体も項となることができる。
【0016】
述語論理式の定義等は、周知であるので、ここでは、その説明は省略する。
また、恒真性を証明する対象述語論理式は、一般的にその否定形である恒偽式が全称記号と存在記号とが含まれる形となる。しかし、真偽性を保存しながら、形式的に存在記号を消去して、全称記号のみの述語論理式で表現されることが知られており、このような存在記号を取り除いた節形式を「スコーレム標準形」と呼ぶ。
【0017】
たとえば、述語論理式P
0の否定形〜P
0が、以下のようにスコーレム標準形で表されているとする。
【0018】
【数1】
【0019】
ここで、素式または素式の否定のことを「リテラル」と呼ぶ。リテラルの論理和のみ、または、リテラルの論理積のみから構成される論理式のことを「節」と呼ぶ。節が、リテラルの論理和のみ、または、リテラルの論理積のみから構成されているとき、節の論理積のみ、または節の論理和のみから構成される論理式のことを「節形式」と呼ぶ。
【0020】
上述したスコーレム標準形において、すべての個体変数は、全称記号によって、束縛されているため、母式を構成している節からなる集合C={C
1,…C
n}を「節集合」と呼ぶ。節集合が真であるとは、すべてのC
1,…C
nが同時に真であることをいう。また、節集合が偽であるとは、C
1,…C
nのうちの少なくとも一つが偽であることをいう。
【0021】
あらゆる解釈に対して節集合が偽となるとき(すなわち、すべてのが同時に真とはならないとき)、節集合は充足不能であるという。節集合Cが充足不能ならば、スコーレム標準形は恒偽式であり、対象としている述語論理式P0が恒真式であることが証明できる。
【0022】
いま、節集合C={C
1,…C
n}における節C
i,C
jが、あるリテラルとその否定リテラル〜Pを含み、を含み、以下のように表されるとする。
【0023】
【数2】
【0024】
このような2つの節から以下のような新たな節C
ijを導く推論を「導出」という。
【0025】
【数3】
【0026】
このとき、節C
i,C
jを親節、導出された節を導出節という。
導出は、妥当な推論形式である。
【0027】
節集合において、導出を行なった後、導出節を節集合に加えることを繰り返すことにより、最終的に「空節」を導くことができれば、その節集合が充足不能であるこを意味し、与えられた述語論理式の恒真性を証明できる。ここで、空節とは、0個のリテラルからなる節を指す。
【0028】
このような恒偽性の判断手続きを「導出原理」と呼ぶ。
また、述語論理式に対する導出では、述語論理式に含まれる個体変数に予め適切な処置を施さないと導出を行なうことができない。
【0029】
そこで、個体変数を別の項に置き換える操作を「単一化」と呼ぶ、単一化置換は、一度施されると、以降の導出過程において個体変数は、その項に束縛される。単一化置換が存在しない場合は、導出はできない。単一化置換sの元に、導出により最終的に空節が導出された場合は、「単一化置換sの下で証明された」という。
【0030】
後により詳しく説明するように、述語論理と関連する「述語論理と導出」、「Prolog」、「プロダクションシステム」、「意味ネットワーク」、「高レベルペトリネット」等については、非特許文献1〜非特許文献7に記載されている。
【0031】
一方、ニューラルネットの研究では、知識は記号やシンボルではなく、脳内のニューロ素子を真似て作ったネットワークの繋がり情報として非明示的に表現される。その人工的なネットワ-クを、事例に基づいて所定の学習則に従って改変することで、事例の背後に
ある知識を帰納的に構成しようとする。この方式に基づき、これまで様々なネットワーク・トポロジーや学習則が提案されており、パターン認識等の分野では実用化例も報告されている(非特許文献8〜非特許文献11を参照)。
【0032】
図44は、述語論理と導出についての別の例を示す概念図である。
図44においては、以下のような論理式を対象とし、するものとする。
【0033】
1)太郎は男である。 : Man(Taro)で表す。
2)男は人間である。 :Human(x)←Man(x)で表す。
【0034】
3)人間は誰か? :←Human(q)で表す。
ここで、1)は事実節であり、2)は規則節であり、ここでの論理プログラムの目的は、3)のゴール節の中のクエリ変数(q)が何であるかを決めることにある。
【0035】
この場合、
図44の右側に示されるように、空節が得られるまで、導出を繰り返すことで、クエリ変数が「Taro」であることが導かれる。
【0036】
一方、
図45は、述語論理を扱う論理型プログラミング言語であるPrologにより、
図44と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【0037】
Prologでは、ホーン節とよばれるリテラルを1つしか含まない節について、SLD(Selective Linear definite resolution)導出とよばれる手法により、導出が実行される。Prologでは、導出の過程において単一化が失敗すると、失敗する直前の節まで戻り、他の親節候補となる節と導出を行い、処理を続けるメカニズムを有している。これを、「バックトラック」と呼ぶ。したがって、Prologは、深さ優先探索で後向き推論を実行することになる。
【0038】
図46は、述語論理を扱うプロダクション・システムにより、
図44と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【0039】
プロダクション・システムは、ルールベースにより、作業記憶内の事実に対して、認識行動サイクルが、前向き推論により、答えとなる事実を生成する。
【0040】
図47は、述語論理を扱う高レベルペトリネットにより、
図44と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【0041】
高レベルペトリネットでは、プレースとトランジションと呼ばれる2つのノードがあり、これらをラベル付のアークで結んだ有向グラフで、論理を表現する。そして、発火が前向き推論として実行され、最終的に事実トークンが生成される。
【0042】
図48は、述語論理を扱う意味ネットワークにより、
図44と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【0043】
意味ネットワークは、知識を概念とそれらを結ぶ関係で記述することにより表現する。表現された知識は、概念ノードが属性を示す矢印で値ノードと連結されたラベル付き有向グラフで表現される。意味ネットワークでは、演繹は、グラフ間の構造を照合することで実行される。
【0044】
さらに、
図49は、述語論理を扱う確率論理プログラミング、特に、ベイジアンネットワークにより、
図44と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【0045】
ベイジアンネットワークでは、事象間に存在する因果関係を定量的に確率で表現し、有向非循環グラフを使って視覚的にネットワークの形で表現した確率推論モデルである。
【0046】
因果関係を確率により定量的に表現する際に、ベイズの定理に基づいているため「ベイジアンネットワーク」と呼ばれる。
【0047】
ベイジアンネットワークでは、重み付けされたルールに基づき確率推論することで、知識の曖昧性を表現することができる。
【0048】
一方で、本願の発明者らにより、「プログラムを作成する計算処理装置」を実現するために、特許文献1において提案された「ATN(Algorithmically Transitive Network;アルゴリズム可変ネットワーク)」の手法がある。この手法では、プログラムをネットワーク型のグラフ表現で処理しつつ、学習によりアルゴリズムを改変していく。
【発明を実施するための形態】
【0083】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部分には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
【0084】
(1.概要)
本実施の形態に係る計算処理装置100は、外部から与えられたプログラム(以下、初期プログラムともよぶ)、特に、「述語論理」に基づく論理プログラムについての導出処理を実行する。
【0085】
なお、プログラムとしては、このような「述語論理」に基づく論理プログラムだけではなく、上述した特許文献1(国際公開2010/047388号公報)に開示されるような算術演算および論理演算等からなるプログラムでもよい。ただし、以下では、「述語論理」に基づく論理プログラムについての導出処理を中心として説明する。
【0086】
さらに、本実施の形態に係る計算処理装置100は、後に説明するように、学習により、初期プログラムを修正し、より適切な演算結果を出力するプログラムを作成する処理を行なうことも可能である。
【0087】
計算処理装置は、大まかに分けて、次の3つの処理を行なう。
(1)論理プログラムのネットワーク(データフローグラフ)への変換
(2)ネットワークを用いた計算の実行
(3)ネットワークの修正
以下、各処理の概要を説明する。
【0088】
[(1)プログラムのネットワークへの変換]
計算処理装置100は、与えられた初期プログラムに基づいて、ネットワーク型のプログラムのグラフ表現、より具体的には、データフローグラフを作成する。すなわち、計算処理装置100は、論理プログラムである初期プログラムの述語論理の構造を表現するネットワークを作成する。
【0089】
本実施の形態では、計算処理装置100が初期プログラムから作成したプログラムのグラフ表現のことを、KTN(Knowledge Transitive Network;知識推移ネットワーク)形式のネットワークと呼ぶ。KTN形式のネットワークは、各々が演算処理を表わす複数の演算ノードと、複数の演算ノードのうちいずれか2つの演算ノードを各々つなぐ複数のエッジとにより、述語論理の構造を表わす。エッジは、演算順序を表わす方向を持つ。
【0090】
[(2)ネットワークを用いた計算の実行]
計算処理装置100は、作成したネットワークを用いて計算を実行する。すなわち、計算処理装置100は、入力値に対し、エッジで表わされる順序に従って、演算ノードによる演算を施す。
【0091】
本実施の形態では、計算処理装置100は、演算に必要な情報を持つシャトルエージェント(以下、単にエージェントとよぶ)に対して、各演算ノードにより演算を施す。演算ノードは、1つまたは複数のエージェントの入力を受け付け、所定の規則に基づいて、エッジから入力されたエージェントに対し演算を行ない、演算後のエージェントをエッジに出力する。演算ノードから出力されたエージェントは、エッジの行き先の演算ノードに入力される。エージェントの詳細、および、エージェントに対する処理規則の詳細については後述する。
【0092】
[(3)ネットワークの修正]
計算処理装置100は、学習アルゴリズムを用いて、ネットワークを用いた計算結果に基づいてネットワークを修正する。ネットワークの修正方法については、後述する。
【0093】
計算処理装置100は、(2)ネットワークを用いた計算の実行により、述語論理に対する推論(導出)を実行することができる。
【0094】
さらに、計算処理装置100は、必要に応じて、(3)ネットワークの修正とを繰り返すことにより、ユーザが所望する値を出力するネットワーク(したがって、論理プログラム)を作成することができる。
【0095】
(2.ハードウェア構成)
本実施の形態に係る計算処理装置100のハードウェア構成について、
図1を参照して説明する。
図1は、本実施の形態に係る計算処理装置100の構成をブロック図形式で表す図である。
【0096】
計算処理装置100は、コンピュータ本体102と、表示装置としてのモニタ104と、入力装置としてのキーボード110およびマウス112とを備える。モニタ104、キーボード110、およびマウス112は、コンピュータ本体102とバス105を介して接続される。
【0097】
コンピュータ本体102は、フレキシブルディスク(Flexible Disc、以下「FD」と呼ぶ)ドライブ106と、光ディスクドライブ108と、CPU(Central Processing Unit)120と、メモリ122と、直接アクセスメモリ装置、たとえば、ハードディスク124と、通信インターフェイス128とを含む。これらの部品は、互いにバス105で接続されている。
【0098】
FDドライブ106は、FD116に情報を読み書きする。光ディスクドライブ108は、CD−ROM(Compact Disc Read−Only Memory)118等の光ディスク上の情報を読み込む。通信インターフェイス128は、外部とデータの授受を行なう。
【0099】
なお、CD−ROM118は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、DVD−ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ本体102には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。また、バス105には、カセット形式の磁気テープを着脱自在に装着してアクセ
スする磁気テープ装置が接続されていてもよい。
【0100】
メモリ122は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む。
【0101】
ハードディスク124は、初期プログラム131と、ネットワーク作成プログラム132と、ネットワーク修正プログラム133と、ネットワーク情報134と、ノード演算定義135と、学習情報136とを格納する。
【0102】
初期プログラム131は、論理プログラムにおける導出(または論理プログラムの初期プログラムからの改変による作成)の基礎となる論理プログラムである。ハードディスク124は、ユーザが作成した論理プログラムを初期プログラム131として格納することができる。初期プログラム131は、FD116またはCD−ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
【0103】
ネットワーク作成プログラム132は、初期プログラム131に基づいて、初期プログラム131に対応するネットワーク(データフローグラフ、展開データフローグラフ)を作成する。また、ネットワーク作成プログラム132は、作成したネットワークに関するネットワーク情報134をハードディスク124に格納する。
【0104】
ネットワーク修正プログラム133は、ネットワーク作成プログラム132が作成したネットワークを修正する。
【0105】
ネットワーク情報134は、ネットワーク作成プログラム132が作成したネットワークに関する情報、および、ネットワーク修正プログラム133がネットワークによる演算あるいはネットワークの修正の際に作成する情報を含む。
【0106】
ノード演算定義135は、ネットワークに含まれる演算ノードによる演算の規則を表わす。ノード演算定義135は、演算ノードを特定する情報(演算コード)、演算ノードへ入力されるエッジの数(入力数)などを含む。ノード演算定義135の詳細については、後述する。
【0107】
学習情報136は、ネットワークにおける導出処理やネットワークの修正に必要な情報である。学習情報136は、例えば、ユーザが計算結果として所望する教師値や、学習途中において更新される定数値、数値トークンの値、トークンに対する補正値、データフローグラフ上での発火と転送の履歴の情報(「トークンファイヤ系図」と呼ぶ)などを含む。
【0108】
ここで、ノード演算定義135については、ユーザが入力装置を利用して作成したものを用いることができる。ただし、これらは、FD116またはCD−ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
【0109】
また、ネットワーク作成プログラム132およびネットワーク修正プログラム133は、FD116、またはCD−ROM118等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス128を経由して供給されてもよい。
【0110】
演算処理装置として機能するCPU120は、メモリ122をワーキングメモリとして、上述した各プログラムに対応した処理を実行する。
【0111】
ネットワーク作成プログラム132およびネットワーク修正プログラム133は、上述の通り、CPU120により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD−ROM118、FD116等の記憶媒体に格納されて流通し、光ディスクドライブ108またはFDドライブ106等により記憶媒体から読み取られてハードディスク124に一旦格納される。または、計算処理装置100がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク124にコピーされる。そうしてさらにハードディスク124からメモリ122中のRAMに読み出されてCPU120により実行される。なお、ネットワーク接続されている場合には、ハードディスク124に格納することなくRAMに直接ロードして実行するようにしてもよい。
【0112】
図1に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、FD116、CD−ROM118、ハードディスク124等の記憶媒体に記憶されたソフトウェアである。
【0113】
(3.機能的構成)
図2を参照して、本実施の形態に係る計算処理装置100の機能的構成について説明する。
図2は、本実施の形態に係る計算処理装置100の機能的構成をブロック図形式で示す図である。
【0114】
計算処理装置100は、外部からデータを受け付ける入力部210と、演算部220と、演算部220の演算結果を外部に出力する出力部230と、記憶部240とを備える。
【0115】
演算部220は、記憶部240に格納されたデータに対して演算を実行する。演算部220は、ネットワーク作成部222と、計算実行部226と、ネットワーク更新部228とを含む。
【0116】
ネットワーク作成部222は、記憶部240に格納されている初期プログラム131に基づいて、ネットワーク情報134を作成する。ネットワーク作成部222は、形式変換部224を含む。形式変換部224は、後に説明するように、論理プログラムを、後向き演繹を幅優先探索で実行するための展開データフローグラフに変換する。
【0117】
計算実行部226は、ネットワーク情報134と、ノード演算定義135とに基づいて、ネットワークを用いた計算を実行する。計算実行部226が行なう処理の詳細については、後述する。
【0118】
ネットワーク更新部228は、学習アルゴリズムを用いて、ネットワーク情報134を修正する。より詳しくは、ネットワーク更新部228は、トポロジー学習部228aを含む。このほかに、ネットワーク更新部228は、学習情報136に含まれる誤差に基づいて、ネットワークに含まれる演算ノードの定数値を修正する定数学習部を含んでもよい。トポロジー学習部228は、所定の規則に基づいて、随時、演算ノードの生成や削除、エッジの生成や削除などのネットワークの更新処理を実行する。ネットワーク更新部228が行なう処理の詳細については後述する。
【0119】
なお、以上の説明では、計算処理装置100は、単一のコンピュータ装置であるものとして説明したが、エージェントを用いて演算処理が実行されることから、計算処理装置100は、複数のコンピュータにより、分散処理を実行するシステムにより構成されていてもよい。
【0120】
本実施の形態の計算処理装置100では、以下の説明で明らかとなるように、上述した
2つの技術、記号処理AIとニューラルネットのギャップを埋める新しいAIのモデルを用いて論理プログラムに対する導出処理またはネットワークの修正(すなわち、ネットワークのトポロジ変更による論理プログラムの作成)を実行するものである。
【0121】
ネットワークをベースとしたこのモデルは、記号/シンボルを明示的に信頼度とともに扱いながら、ニューラルネットの分野で開発されてきた学習則を動かせるようにしたもので、前述の(a)知識表現、(b)演繹、(c)学習の3つの機種を併せ持つ新たな推論・
学習システムを構築できる。このモデルを実行するためのネットワークを、上述のとおり、知識推移ネットワーク(Knowledge Transitive Network; KTN)と呼ぶ。このモデルは、以下の説明で明らかとなるように、先に出願済みですでに公開された特許文献1の国際公開2010/047388号公報に開示されたモデルであって、算術演算および論理演算を実行するプログラムのためのアルゴリズム推移ネットワーク(Algorithmically Transtcive Network; ATN)を基礎としつつも、以下に説明するように、述語論理における
シンボルを扱うための改良を行なうとともに、学習方法についても、「確率近接法」と呼ばれる新しいアルゴリズムを適用するものである。
【0122】
図3は、KTNそのものではないが、KTNと類似の前向き推論型ネットワークにおける推論と学習の手続きを示す概念図である。
【0123】
図3は、一例として、”If x=A then y=B”という論理に対する推論と学習を行なう場
合を示す。ここでは、あくまで、推論型ネットワークについての処理の概念を大枠を説明するので、個々の処理についての言及は省略する。
【0124】
まず、3つの定数項のノード(図中、c)が同時に発火して、トークンがこれらのノードから出力される。ここで、トークンは、シンボルとそのシンボルの信頼度を示す値との組として表現される。
【0125】
各ノードからの複数のトークンが最終ノードに到達した段階で、教師データtと比較され、信頼度が所定値以上であるトークン、すなわち正解であるトークンについて、このトークンの発火履歴を逆にたどって、補正情報が逆伝播する。
【0126】
このような前向き推論型ネットワークでは、矛盾を含む複数の答えが信頼度とともに、順方向に伝播するので、推論の曖昧さを取り込むことが可能であると共に、学習では、信頼度の高いトークンを選択して逆伝播させるので、学習の際に、処理しなければならないトークンの数が爆発的に増加する事態をある程度防ぐことができる。
【0127】
(述語論理とネットワークへの変換)
図4は、述語論理を高レベルペトリネットでのグラフ表現に変換した例を示す図である。
【0128】
図4においては、以下の述語論理を扱っている。
事実節 :太郎は男である(Taro is a man.) Man(Taro)と表現。
【0129】
ルール節:男は人間である(A man is a human.) Human(x)←Man(x)と表現。
ゴール節:人間は誰か?(Who is a human?) ←Human(q)と表現。
【0130】
高レベルペトリネットでは、アークにラベル付の項が付された前向きの有向グラフとして、述語論理が表現される。
【0131】
図5は、述語論理をKTNでのネットワーク表現に変換した例を示す図である。
述語論理としては、
図4と同様のものを例にとることにする。
【0132】
まず、述語論理を前向きデータフローグラフで表す場合を考える。発火を開始する開始ノード(Begin)から、Taroとのシンボルの付された定数ノードに有向エッジが向かう。次に、定数ノード(Taro)から、Manに相当するマージノードへ有向エッジが向かい、さらに、マージノード(Man)から、Humanに相当するマージノードへ有向エッジが向かう。マージノード(Human)から、クエリ変数qに対応するマージノードへ有向エッジが向かい、マージノード(q)から、探索の停止を意味する終端ノードに有向エッジが向かうグラフとなる。
【0133】
一方、KTNでは、ネットワーク作成部222の処理により、上述した前向きデータフローグラフを反転した、後向きデータフローグラフとして表現する。まず、発火を開始する開始ノード(Begin)から、qとのシンボルの付された定数ノードに有向エッジが向かう。次に、定数ノード(q)から、Humanに相当するマージノードへ有向エッジが向かい、さらに、マージノード(Human)から、Manに相当するマージノードへ有向エッジが向かう。マージノード(Man)からは、1つはTaroに相当する定数ノードに有向エッジが向かうとともに、2入力が等しいときに真を生成する同値ノードの一方入力へ有向エッジが向かう。一方、定数ノード(Taro)からは、同値ノードの他方入力へ有向エッジが向かう。同値ノードの結果が、終端ノードに渡される。
【0134】
以上のように、KTNでは、グラフトポロジーで知識(述語論理)が表現されるとともに、高レベルペトリネットとは異なり、定数と未定変数についてのラベルのみがノードに付与される。
【0135】
図6は、KTNにおいて、
図5で説明した「後向きデータフローグラフ」をさらに、展開・数量化して演繹推論する処理を示す概念図である。
【0136】
図6に示されるように、「後向きデータフローグラフ」は、ネットワーク作成部222により、展開され、AND/ORグラフとして表現されるとともに、シンボルトークンを数値トークンとして表現される。
【0137】
ここで、Taroが、たとえば、数値”1”で表現されるなら、トークンの逆伝播で、クエリ変数qの値が、1となっていることが、最終的に、答えが得られることに相当する。
【0138】
トークンの数値化に伴い、Manに対応するマージノードの2つの出力は、ANDで結ばれ、同値ノードは、論理真を与えるための束縛として機能することになる。
【0139】
以上のような構成により、KTNでは、ノードの並列発火により、後向き演繹を幅優先探索で行なう。
【0140】
図7は、シンボル/シンボル列を数値化する手続きを示す概念図である。
図7に示すとおり、シンボル/シンボル列は数で表現される。このような数値化は、
図7に示されるように、述語論理中の項(個体定数、個体変数、関数)を自然数と予め対応付けておき、これを大域テーブル(グローバルに参照できるテーブル)として予め定義しておく。
【0141】
図7に示されるように、Taroが自然数であれば、数値に変換するとテーブルを参照して、1となる。また、関数wifeが7に対応づいていれば、関数wife(Taro)(Taroの妻)は、71とコードされる。
【0142】
同様に、関数childに8が対応付けられていれば、child(wife(Taro))は、871とコードされる。
【0143】
一般に、項がN個存在するのであれば、たとえば、N進数で、項に対応するシンボルをコードできる。
【0144】
このようなシンボルから数値への変換において、N進数グレー・コードを用いることにすれば、グレー・コードは高い対称性を持つから、演繹・学習による数値の微小な変化で、どの桁も均等に入れ替わりうるという特徴を持たせることができる。
【0145】
図8は、ノードに対応付けられる演算(オペレーション)を示す図である。
図8において、「同期/非同期」とあるのは、2つ以上の入力があるときに、同期では全ての入力エッジ上にオペランドとなるトークンが揃うのを待ってからノードが発火し、処理が実行されることを意味する。
【0146】
(論理プログラムからKTNへの変換)
図9は、論理プログラムの述語論理がKTNにおいて、どのようなグラフに変換されるかを示す第1の図である。
【0147】
図10は、論理プログラムの述語論理がKTNにおいて、どのようなグラフに変換されるかを示す第2の図である。
【0148】
図9、
図10に示されるように、述語の引数が、クエリ変数、個体変数、個体定数のいずれであるか、また、論理の関係、関数に応じて、述語論理がKTNに変換される。
【0149】
図11は、KTNを構築した例を示す図である。
図11の例では、以下のような論理プログラムを対象としている。
【0150】
J(x,0).
J(x,x).
K(x,x,x).
K(s(x),x,y)←J(z,y),K(x,z,y).
←K(2,1,q).
図12〜
図24は、
図11に示したKTN中での、シンボル・トークンの流れを順次示す図である。
【0151】
KTNに対するトークン伝播処理の実行は、ATNと同様に、Beginノードの発火から始まる。その後各ノードは、通常のデータフロー計算機と同じように、入力エッジに到着したトークンの持つデータをオペランドとしてコードされた演算を実行し、結果のトークンを出力エッジ上に流すという処理を並列独立に行ない、それにより、ノード発火(ファイヤー)とトークン伝搬がカスケード的にネットワーク中に起こる。
【0152】
まず、
図12を参照して、開始ノードが発火して、トークンが定数ノード(シンボルは、それぞれ、2,1,q)に伝播する。
【0153】
次に、
図13に示すように、定数ノードを通過したトークンは、それぞれ、シンボル(2),シンボル(1),シンボル(q)が付随する。
【0154】
図14に示すように、引数合成ノードをトークンが通過すると、トークンは1つにまと
められ、これに、シンボル(2,1、q)が付随して、マージノードに伝播する。
【0155】
次に、
図15に示すように、マージノードからは、2つの出力として、シンボル(2,1、q)が付随するトークンが出力される。
【0156】
さらに、
図16に示すように、マージノードから、第1のブランチBR1の引数分解ノードに伝播したシンボル(2,1、q)は、それぞれ、シンボル(2),シンボル(1),シンボル(q)が付随するトークンに分割されて、出力される。
【0157】
一方、第2のブランチBR2の引数分解ノードに伝播したシンボル(2,1、q)も、それぞれ、シンボル(2),シンボル(1),シンボル(q)が付随するトークンに分割されて、出力される。
【0158】
図17に示されるように、第1のブランチBR1では、上側の同値ノードでは、1つの入力が一致しないため、出力は偽(F:Faulse)が生成され、下側の同値ノードでは、、q=1であれば、出力は真(T:True)との出力が生成される。
【0159】
第2のブランチでは、関数fのノードで、トークン2のシンボルはsに変わり、これが逆関数ノードに伝播する。
【0160】
一方、定数ノードをトークン(q)が通過することにより、このトークンのシンボルは、z0となる。そこで、逆関数ノードからのトークンと、トークン(1)とが同値ノードに伝播する。上側の引数合成ノードには、トークン(1)、トークン(z0)、トークン(q)が伝播し、下側の引数合成ノードには、トークン(z0)、トークン(q)が伝播する。
【0161】
次に、
図18に示すように、第1のブランチBR1では、論理積ノードの一方入力に偽(F)が伝播するため、論理積ノードの出力は、偽(F)となる。
【0162】
一方、第2のブランチBR2では、同値ノードへの入力がともに”1”となり、上側引数合成ノードからは、トークン(1、z0、q)が、下側引数合成ノードからは、トークン(z0、q)が、それぞれ伝播する。
【0163】
さらに、
図19に示すように、第2のブランチBR2では、同値ノードから上側ゲートノードおよび下側ゲートノードへの出力が真(T)となる。したがって、上側引数合成ノードからのトークン(1、z0、q)と、下側引数合成ノードからのトークン(z0、q)は、それぞれ上側ゲートノードおよび下側ゲートノードを通過して伝播する。
【0164】
図20に示すように、上側ゲートノードを通過したトークンは、第1および第2ブランチの入力側のマージノードに伝播する。また、下側ゲートノードを通過したトークンは、第3ブランチの入力側のマージノードに伝播する。
【0165】
図21に示すように、第1および第2ブランチの入力側のマージノードからは、2つのトークン(1、z0、q)が出力される。第3ブランチの入力側のマージノードからは、2つのトークン(z0、q)が出力される。
【0166】
図22に示すように、第3ブランチでは、上側の引数分解ノードからは、トークン(z0)、トークン(q)が伝播し、下側の引数分解ノードからも、トークン(z0)、トークン(q)が伝播する。
【0167】
一方、第1ブランチBR1では、上側の引数分解ノードからは、トークン(1)、トークン(z0)、トークン(q)が伝播し、下側の引数分解ノードからも、トークン(1)、トークン(z0)、トークン(q)が伝播する。
【0168】
図23に示すように、第1ブランチBR1では、上側の同値ノードからは、”T if z0=1”が出力され、下側の同値ノードからは、”T if q=z0”が出力される。
【0169】
第2ブランチBR2では、関数fのノードで、トークン1のシンボルはsに変わり、これが逆関数ノードに伝播する。
【0170】
一方、定数ノードをトークン(q)が通過することにより、このトークンのシンボルは、z1となる。そこで、逆関数ノードからのトークンと、トークン(z0)とが同値ノードに伝播する。上側の引数合成ノードには、トークン(z0)、トークン(z1)、トークン(q)が伝播し、下側の引数合成ノードには、トークン(z1)、トークン(q)が伝播する。
【0171】
第3ブランチBR3では、上側の同値ノードには、トークン(0)とトークン(q)とが入力し、下側の同値ノードからは、”T if q=0”が出力される。
【0172】
図24に示すように、第1ブランチBR1では、論理積ノードから、”T if z0=1,q=z0”が出力される。さらに、第2ブランチBR2では、上側引数合成ノードからは、トークン(z0、z1、q)が、下側引数合成ノードからは、トークン(z1、q)が、それぞれ上側ゲートノードと下側ゲートノードに伝播する。ゲートノードからは、同値ノードにおいて、”T if z0=0”が成り立ては、トークンが通過することになる。
【0173】
図25は、このような
図12〜
図24で説明したデータフローグラフを展開して、AND/ORグラフで示したグラフである。
【0174】
図25において、節は、点線で囲んであり、引数は、一点鎖線で囲んである。各節では、AND/ORグラフに展開するに当たり、変数/定数ANDノードを挿入してある。
【0175】
図26は、
図25に示したAND/ORグラフを、各節の内部構造を省略しAND/OR木として示す図である。
【0176】
ルート節では、クエリ変数qが生成され、引数となるマージノードは、ORノードとして機能する。ブランチBR1−1に相当する節は、葉として表現される。ブランチBR2−1に相当するノードは、変数z0を生成するANDノードとして機能する。
【0177】
(z0、q)を引数とする、ブランチBR3−1、ブランチBR3−2に相当する葉では、束縛条件が最終的に存在する(”T if q=0”と、”T if q=z0”)。
【0178】
一方、(1、z0、q)を引数とする、ブランチBR1−2に相当する葉では、束縛条件が最終的に存在する(”T if z0=1,q=z0”)。一方、ブランチBR2−2に相当する葉では、葉の上にはない(それ以前の葉において確定している)束縛(”T if z0=0”)が
存在する。また、ブランチBR1−2に相当する葉では、変数z1が生成される。
【0179】
ここで、以上のような論理プログラム(すなわちKTN)の目的は、ゴール節が成り立つかどうか、もしくはゴール節の中のクエリ変数(q)が何であるかを決めることにある
。このような述語論理が恒真式であるか否かを判断したり、クエリ変数を求める処理は、上述のとおり「導出」と呼ばれる。
【0180】
KTNの場合、この答えの抽出問題は、作られたAND/ORグラフから、条件1)変数の束縛条件が無矛盾な解を持ち(つまり単一化可能で)、条件2)木の根を真とするような部分木を求める問題に帰着される。
【0181】
図27は、木探索と単一化について、ブランチBR1−1に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【0182】
図27に示すように、ブランチBR1−1に相当する葉が、偽(F)であることから、根も、偽(F)となり、条件2が満たされないため、この部分木は、解とはなりえない。
【0183】
図28は、木探索と単一化について、ブランチBR3−1に相当する葉とブランチBR1−2に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【0184】
図28に示すように、ブランチBR3−1に相当する葉の束縛条件とブランチBR1−2に相当する葉の束縛条件を同時に満たすqが存在しない、すなわち、これらの2つの葉の束縛(制約式)を連立方程式としたときの解がない(単一化不能である)ことから、条件1が満たされないため、この部分木は、解とはなりえない。
【0185】
図29は、木探索と単一化について、ブランチBR3−2に相当する葉とブランチBR1−2に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【0186】
図29に示すように、ブランチBR3−2に相当する葉の束縛条件とブランチBR1−2に相当する葉の束縛条件を同時に満たすqが存在する、すなわち、これらの2つの葉の束縛(制約式)を連立方程式としたときの解が存在する(q=1)ことから、条件1および条件2が満たされないため、この部分木は、解となる。
【0187】
言い換えると、トークンの伝播後に、変数間の連立方程式を解くことにより演繹推論の答えが求まることになる。
【0188】
このような問題に対して、本実施の形態の計算処理装置100では、「確率近接法(Probabilistic Approach 法:PA法)」という、連立方程式をネットワークを用いて、数
値的・分散的に解く方法を適用する。
【0189】
確率近接法は求解の途中で、系図内の部分木の論理的な無矛盾性も調べていくので、これに基づき有望な枝の先を成長させるといった処理を行なっていくことにより、系図成長・真偽チェック・変数単一化を有機的に結び付けながら解の探索を行なうことができる。
【0190】
図30は、このような確率近接法の概念を説明するための概念図である。
つまり、確率近接法は、連立方程式を逐次的に解く数値解法であって、「制約式を満たすためのパラメータ補正値を逆算または微分を用いて計算する」との補正値算出と、「パラメータを補正値に、近さに応じて確率的にジャンプさせる」との確率的近接とを繰り返して、逐次的に解を求める。
【0191】
確率近接法では、近接性を基準により制約間矛盾が小さい解候補が生き残ることで、パラメータ矛盾が次第にゼロに収束し、解が求まることになる。
【0192】
また、以下に説明するように、確率近接法は、逆伝播における学習(定数学習)を実行する際にも使用することができる。
【0193】
以下、より簡単化した例で、確率近接法の処理について説明する。
(定数学習を行なう処理)
まず、確率近接法により、定数学習をする場合を例にとって説明する。
【0194】
図31は、確率近接法により、定数学習をする場合を示す概念図である。
【0196】
aが答えであり、sは、解を求める過程で試行的に代入されるセンサである。
したがって、ここでは、aとsとの関係が、最終的な解の関数形となるように、定数ν0およびν1の値を定める手続きを行なう必要がある。
【0197】
ここで、教師値セットは定数を未知数とする一群の連立方程式を与えることになる。
図32は、上述した式(1)を表すデータフローグラフでの確率近接法の処理を示す図である。
【0198】
まず、定数ν0およびν1の初期値が、それぞれ、1.5および1.0であるものとする。センサとして、値1.0を用い、教師値が1.0であるものとする。データフローグラフに従って、トークンが伝播すると、解として、2.0が得られることになる。
【0199】
しかし、教師値が1.0であるため、まず、プラスノードから逆方向への伝播学習において、プラスがノードの上側の入力のみで、教師値となるように、この入力を調整したとしたときの値を求める。プラスがノードの下側の入力は、1.5であるから、上側の入力は、−0.5となっていれば、教師値と一致することになる。したがって、この−0.5に対して、積ノードの入力がどのようになっていればよいかを計算すると、センサが1.0であるから、定数ν1の値は、−0.5であればよいことになる。
【0200】
一方、教師値が1.0であるため、プラスノードから逆方向への伝播学習において、プラスがノードの下側の入力のみで、教師値となるように、この入力を調整したとしたときの値も求める。プラスがノードの上側の入力は、0.5であるから、下側の入力は、0.5となっていれば、教師値と一致することになる。したがって、この0.5に対して、定数ν0の値は、ν0´:0.5であればよいことになる。
【0201】
この処理の後、各定数ノードでは、逆算により戻ってきた値Vと元の値νから近接性因
子r=exp(-κ/4・(v-V)
2)を計算しておく。
【0202】
以上のようにした後、たとえば定数v
0を更新するためには、v
0の近接性因子r
0を全定数ノードの近接性因子の総和Σ
jr
jで割った商を確率としてv
0からV
0への変更を行なう。
【0203】
定数ν1についても同様である。全ての定数でこのような確率的更新をすることにより、1度の逆伝搬で計算される補正値セットの中で、実際に定数値に反映されるのがネットワーク全体で平均1個となることが保証される。
【0204】
更新された定数を用いて、式(1)を書き直し、センサと教師値を用いて、さらに、順伝播と逆伝播とを繰り返す。このような繰り返しにより、最終的には、最終解となるように、定数が更新されていくことになる。
【0205】
(連立方程式の解を求める処理)
次に、確率近接法により、連立方程式の解を求める場合を例にとって説明する。
【0206】
すなわち、複数の制約を満足するように変数の値を決める問題を、確率近接法により解くことになる。
【0207】
例として、以下の連立方程式を解く場合を考える。
x1=x0+1 …(2)
x1=2x0−1 …(3)
図33は、このような連立方程式をデータフローグラフ(AND/ORグラフ)を用いて、解く場合の手続きを説明するための図である。
【0208】
上記のような式(1)と式(2)の連立方程式を解くにあたり、初期値として(x0、x1)=(0,0)とする。
【0209】
まず、データフローグラフで、ノードx0の側を通って、上側の同値ノード300には、”1”と”0”とが入力する。無矛盾とするためには、先ほどの定数学習の場合と同様に、上側の入力の変更だけで無矛盾とするためには、値は”0”に変更する必要があり、下側の入力の変更だけで、無矛盾とするためには、値は”1”としなければならない。そこで、上側の同値ノード300については、2つの無矛盾なトークンペア(0,1)aと、(1,1)bとが生成される。ここで、トークンについての(x、r)yとは、xがトークンの値であり、rは、この値xの信頼度であり、yは、このトークンについての識別子である。この場合、識別子は、グラフ中の点a,b,c,dのいずれの点であるかに相当しているが、実際には、トークンを識別可能な識別子であれば、何でもよい。
【0210】
また、同値ノードにおいては、無矛盾なのであるから、信頼度は、1としている。
下側の同値ノード302についても、同様である。
【0211】
図34は、このように、同値ノード300または302で生成されたトークンを逆伝播させた場合の処理を説明する図である。
【0212】
まず、x0ノードは、ANDノードであり、このノードに入力する逆伝播したトークンは、それぞれ、(−1,1)a,(0,1)b,(0.5,1)c,(0,1)dとなる。そこで、このANDノードまで逆伝播したトークンのANDノードからの出力数についての組み合わせをすべて考える。つまり、トークンの識別子の組み合わせでは、ac,ad,bc,bdとなる。このような組合せによって生じるトークンの個数は、規模の大きな連立方程式の場合、変数の個数、制約式の個数とともに発散的に増加することが予想されるが、そのような場合、確率近接法では、後に述べる確率的選択を、組合せを行なう前のトークンに施すことにより、適宜トークン数を抑える処理が行なわれる。
【0213】
以上のようにして組み合わせたトークンについて、数値と信頼度は、以下の式にしたがって、計算する。
【0215】
(Randomly chosen x
i)は、組み合わせるxからランダムに取られた1個を意味する。
Var
iは、組み合わせるxについての分散を意味し、κは所定の定数である。これによって計算される信頼度(近接性因子)は、組み合わせる変数の値が一致していれば、分
散は0であって、信頼度は1となる。標準偏差が大きくなるほど、信頼度は小さくなる。
【0216】
たとえば、組み合わせacについては、(x、r)は、(0.5,0.55)acとなる。他の組み合わせについても、同様である。
【0217】
また、ノードx1についても同様に逆伝播したトークンのすべての組み合わせについて、(x、r)を算出できる。
【0218】
さらに、ノード(x0,x1)では、ノードx0とノードx1からの逆伝播として、トークンの各識別子について、最終的な逆伝播した結果のトークンのシンボル(x0,x1,r)を計算できる。ここで、この場合の信頼度rは、組み合わせる2つのトークンの信頼度の最小値である。
【0219】
結果として、
図34に示すように、4つのトークンが最終的に得られるので、各信頼度を信頼度の総和Σrで割った商r/Σrを確率として選択を行なう。図の例では最も信頼度の高いものの一つである(0,0,0.77)bcが選択されている。
【0220】
次には、このトークン(0,0,0.77)bcを初期値として、順伝播と逆伝播とを繰り返す。
【0221】
このような手続きを繰り返すことで、最終的には、式(2)と式(3)の解が得られる。
【0222】
図29で説明したとおり、KTNにおいて、葉の束縛条件において、連立方程式の解が存在するような部分木が、KTNの推論の解なのであるから、より複雑なトポロジーのネットワークであっても、本質的には、同様の手続きにより、解となる部分木を探索することができる。
【0223】
図35は、
図12等のデータフローグラフを展開したAND/ORグラフについて、qの初期値を0.5、z0の初期値も0.5として順伝播させた場合のトークンのシンボル(x、r)を示す図である。
【0224】
図36は、
図35の状態から逆伝播を行なった状態を示す図である。
z0の値が更新されていることがわかる。
【0225】
一方、節が未確定のため正r 値のトークンが来ない枝である「未定枝」が存在することもわかる。
【0226】
図37は、
図36において「拡大
図1」で示した部分の拡大した図である。
逆伝播では、以下のことがいえる。
【0227】
i)信頼度は、同値ノードを介して継承される。
ii)同値ノードでは、固有のIDを持つ「無矛盾な」トークンペアが生成される。
【0228】
iii)論理積ノードでは、
図34で説明したとおり、トークンの組み合わせについての演算を行なう(「トークンを反応させる」という)。
【0229】
iv)定数ノードでは、x値が定数ノードと符合するトークンだけを通過させる。
v)引数分解ノードでは、IDを共有するトークンを組み合わせる。このとき、信頼度は、組み合わせるトークンの信頼度の最小値とする。
【0230】
図38は、
図36において「拡大
図2」で示した部分の拡大した図である。
逆伝播では、以下のことがいえる。
【0231】
vi)ORノードはトークンをカンマ記号(ORを意味する)で繋ぎ、通過させる。
vii)ORで繋がれたトークンが多くなり過ぎる場合は、信頼度rを用いた確率的選択を行なって、rが小さいトークンを間引く。
【0232】
図39は、
図36の逆伝播の状態から、初期値を更新した上で、再度、順伝播を行った状態を示す図である。
【0233】
図40は、
図39の状態から、さらに、逆伝播を行なった状態を示す図である。
qおよびz0は、さらに更新されて、ともに1となっている。
【0234】
このような処理を繰り返すことにより未定変数に到着するトークンの値は次第にq=z0=1、r=1に収束し、単一化が近似的に解けることになる。
【0235】
図41は、教師ありで定数を学習させる方法について説明するための図である。
以上の説明からも明らかなように、確率近接法は、変数決定(演繹)をしながらの定数補正(学習)を可能にする方法である。したがってKTNにおいても、教師値を用いて確率
近接し、その途上で算出される補正値を用いて、定数値を改めることにより、根ができるだけ真になるような補正を行なうことができる。この学習処理により、データフローグラフの中に埋め込まれたいくつかの定数についても、問題としてそれが変化することが許されるようなものについては、より最適な値へと近づけることが可能である。
【0236】
図42は、トポロジーを改変処理する場合の概念を説明する図である。
たとえば、順伝播と逆伝播の所定の回数ごとに、または、乱数が所定の値を超える場合など、特定の頻度で、ランダム生成された節をデータフローグラフに加える改変を行なうことができる。
【0237】
また、展開されたデータフローグラフ上で、確率近接法の複数の試行において、所定回数以上、偽枝を生成する節については、削除することも可能である。
【0238】
このような処理により、初期的な論理プログラムに対して、対応するデータフローグラフのトポロジーを変化させながら、より教師値に近い結果を生成する論理プログラムを生成することができる。
【0239】
あるいは、論理推論に必ずしも意義を有さない枝を削除することで、教師値の結果を維持しつつ、より簡単なトポロジーを有するデータフローグラフで表現される論理プログラムを生成することができる。
【0240】
図43は、演算部220が実行する処理を説明するためのフローチャートである。
図43を参照して、演算部220の処理がスタートすると、述語論理で表現された初期知識に相当するデータフローグラフ(DFG)を、ネットワーク作成部222が用意する(
ステップS102)。
【0241】
続いて、ネットワーク作成部222が、与えられたクエリ/教師値に相当する部分グラフをDFGに追加する(S104)。
【0242】
さらに、計算実行部226が、DFG上でシンボル・トークンを順伝搬し、 展開DFGを未
定枝の先で1段成長させる(S106)。
図12〜24に示されたように、シンボル・トークンはたいていの場合DFG上を循環的に回ることになるが、このS106の処理が最初
呼ばれた場合は、Beginの発火から始まるシンボル・トークンの伝搬を循環1回まで実行
することに、またそれ以後に呼び出された場合は、未定枝の先で止まっているシンボル・トークンの伝搬をさらに循環1回分進めることになる。
【0243】
次に、計算実行部226が、変数地を初期化して(S108)、数値トークンを順伝播させる(S110)。
【0244】
次に、計算実行部226が、数値トークンを逆伝搬させる(S112)。
根にトークンが逆伝播により戻っている場合、続いて、変数の辻褄があっているか、言い換えると、戻ったトークンの信頼度rが、信頼度1に対して所定の範囲で一致しているかが計算実行部226により判断される(S122)。
【0245】
変数の辻褄が合わない場合、計算実行部226により、ループ回数が所定の回数をオーバーしたかが判断され、オーバーしていなければ、処理はステップS110に戻る。
【0246】
一方、ループ数が所定回数をオーバーしている場合(S116)、未定枝があるかを計算実行部226が、判断し、未定枝があれば、ネットワーク更新部228が偽枝を刈り取り(S120)、処理はステップS106に復帰する。
【0247】
一方、S118で見え家だがなければ、演算の答え(偽)を出力し(S130)、ネットワーク更新部228がデータフローグラフのトポロジーを、節の生成または削除により改変する(S126)。
【0248】
S122で変数の辻褄があっていれば、演算の答え(qまたは真)を出力し、処理はステップS126へ移行する。
【0249】
ステップS126の処理が終了すると、新しいクエリまたは教師値があるかを計算実行部226が判断し、存在すれば処理は、処理はステップS104に復帰し、存在しなければ、処理は終了する(S132)。
【0250】
以上のような処理により、KTNによる論理推論・学習には、以下のような効果がある。
【0251】
(i)知識が脳やニューラルネットワークと同じ静的なグラフによって表現される。こ
のこと自体に計算上の優位性が必ずしも存在するとはいえない。しかし、AIの究極的な目標が人間に匹敵するような知能を作ろうとするものであること、また最近進歩が著しい人間の脳の非侵襲計測技術から得られる生理学的なデータとの将来における比較の可能性等を考えた時、脳と数学的に同じアーキテクチャで知識を表現することには大きな意味がある。
【0252】
(ii)系図作成、単一化といった一連の演繹・学習処理の素過程が、グラフ上のトークン伝搬によって実現される。従ってこれらを実装するKTNの実行プログラムは、並列/分
散マシン上へ移植することにより大きな効率アップが期待できる。
【0253】
(iii)演繹では、ゴール節を元に探索を行なう後向き推論を行なう。従って深い推論
の場合でも探索の範囲を絞り込むことが可能で、事実を無闇に生成する前向き推諭よりも効率がいい。
【0254】
(iv)知識を表わすネットワーク上で、各シンボルは連続実数で表わされ、またそれに加え、最終解が信頼度rとともに提示されることにより、知識のあいまい性が表現されて
いる。これは、確率論理プログラミングで行なわれるルールの重み付けとは異なる方法による知識のあいまい性表現である。
【0255】
(v)述語論理中の変数がネットワーク上で識別子を用いて明示的に扱われており、こ
れにより、述語論理を命題論理化してグラフ化する他のアプローチに較べて、コンパクトな規模のグラフによる汎用の知識表現を実現している。またグラフに対するトポロジー変更(知識改変学習)では、新しいノード(述語)の生成や論理構造の変更も行なえる枠組みを提供している。
【0256】
なお、以上の説明では、確率近接法のための補正値の算出には、すべて逆算を用いることとした。しかしながら、特許文献1の国際公開2010/047388号公報にも開示されているように、ネットワーク上の逆伝搬を用いると、演算結果<x>、正しい結果(教師値)と演算結果との差に基づいて定まるエネルギー誤差E、エネルギー誤差Eの微係数D
x、D
rを計算することができ、それを用いると、補正値は、テイラー展開の1次の範囲で近似計算することも可能である。
【0257】
図51は、このような微係数を計算する場合の手続きを示す概念図である。
図中のxはある任意のノードの現在の値を示し、ネットワークから出力される答えaはこの関数としてa=G(x)と書かれるものとする。今このxが仮にx
Tに補正されることでネットワークの答えが教師値tになって欲しいとすると、その要請はt=G(x
T)のように書ける。
この2つの式を辺々引いて、エネルギー誤差の定義式E=1/2(t-a)
2を用いて変形すると、最終的にx
Tは、現在のノード値x、エネルギー誤差E、微係数D
xを使って、x
T=x-2E/D
xの
ように書かれる。確率近接法のための補正値は、この式を用いて計算することも可能である。
【0258】
また、対象となるプログラムは論理プログラムであるとしたが、特許文献1の国際公開2010/047388号公報にも開示されているように、算術演算および論理演算を行なうプログラムのソースコードをGIMPLE形式の中間コードへ変換し、中間コードをネットワークに変換することにより得られるATNに対して、確率近接法による逆伝播学習を行なうことも可能である。
【0259】
以上の説明では、概念的な処理を中心として説明したが、本実施の形態の効果が最も発揮される利用例としては、たとえば、受注仕様からの製造条件決定問題などが想定される。
【0260】
鉄鋼鋼板の製造の現場では、JTS規格、用途、板厚等の受注仕様データから、適切な製
造条件を決めるという問題がある。受注仕様は離散的な記号、もしくは連続的な数値が並んだ数百項目にのぼるリストであり、これをもとに製造条件として、あらかじめ用意された数百の条件(数百個の異なるシンボル)の中から適切なものがただ一つ選ばれる必要がある。現在現場でこの問題は、熟練した作業員が手作業で行なっているが、判定結果が人によって異なる、ルールが精密に明文化できないといった理由のため大雑把なマニュアル(作業書)しか作れず、スキルの伝承が難しく、マニュアル自体の改善も行なえない等の問題を抱えている。
【0261】
過去この問題に対しての研究として、 ID3(Iterative Dichotomiser 3)という、仮説に基づき分類決定木を生成する方法が適用された例がある。しかしながら、蓄積された約29,000件の判定データから合成された約3千リーフの分類木による判定結果は、
熟練者の結果の約80%を再現するに留まった。これはID3が、前述した機械学習の問題
点−記号の持つ離散性と事例情報の持つあいまい性やノイズとの間のギャップの問題−を抱えていることに起因している。別に試した直近のデータに割り当てる方法の方がむしろ正答率は高かったが、この方法ではもちろんマニュアル化には繋げられない。
【0262】
この間題は、陰のルールを“if(受注仕様) then (製造条件)”、もしくは(製造条件)←(受注仕様)として書くことができるもので、論理プログラムで知識を表現するのに好適な問題である。論理プログラムで表現された知識を あいまい性を考慮しながら演繹・学習を行なう方法には、本発明(KTN)とペイジアンネットワークが考えられるが、
変数を明示的に扱うKTNで記述する方が出来上がった知識に汎用性があり、マニュアル化
も容易である。またグラフの規模自体も、受注仕様の各項目で定数化されたノードを用意しなければならないペイジアンネットワークより小さくできる可能性がある。
【0263】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。