(57)【特許請求の範囲】
【請求項１】
論理で表わされた知識をもとに推論を実行するための論理推論システムであって、
前記知識を、後ろ向き推論の形式のデータフローグラフであって、複数の演算ノードおよび前記演算ノードの間を各々つなぐ複数のエッジから成るデータフローグラフを用いて表現し、
前記複数の演算ノードは、前記論理の各種演算に対応する演算ノードを含み、
前記演算ノードに対応づけられるシンボルは、前記論理における項に対して予め設定された数値に変換されたものが割り当てられ、
前記データフローグラフ上での各ノードの発火に基づくトークン伝搬により、前記データフローグラフをＡＮＤ／ＯＲグラフへ展開する展開手段と、
前記ＡＮＤ／ＯＲグラフ上での各前記ノードの発火に基づく前記トークン伝搬により、前記論理に対する導出を実行する推論実行部とを備える、論理推論システム。
【請求項２】
前記ＡＮＤ／ＯＲグラフにおける前記推論実行部は、各前記ノードが並列独立に発火し、トークンを生成して必要な事実節の探索を行なう順伝播処理と、補正情報を表わすトークンを逆方向に流し、それに確率的な選択を施すことにより変数間の矛盾を解消する逆伝播処理とを繰返し実行することにより、演繹推論を実行する推論手段を含む、請求項１記載の論理推論システム。
【請求項３】
前記データフローグラフでは、前記論理を表わす前記知識を述語論理で表現し、それをもとに前記演算ノードとその間を各々つなぐ前記複数のエッジにより前記論理の構造を表わす前記データフローグラフを生成する変換手段を備える、請求項１または２に記載の論理推論システム。
【請求項４】
論理で表わされた知識をもとに推論を実行するための論理推論方法であって、
前記知識を、後ろ向き推論の形式のデータフローグラフであって、複数の演算ノードおよび前記演算ノードの間を各々つなぐ複数のエッジから成るデータフローグラフを用いて表現し、
前記複数の演算ノードは、前記論理の各種演算に対応する演算ノードを含み、
前記演算ノードに対応づけられるシンボルは、前記論理における項に対して予め設定された数値に変換されたものが割り当てられ、
前記データフローグラフ上での各ノードの発火に基づくトークン伝搬により、前記データフローグラフをＡＮＤ／ＯＲグラフへ展開するステップと、
前記ＡＮＤ／ＯＲグラフ上での各前記ノードの発火に基づく前記トークン伝搬により、前記論理に対する導出を実行するステップとを備える、論理推論方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人工知能の分野における論理推論システムおよび論理推論方法、ならびに、論理推論、または算術演算および論理演算を実行する計算学習装置に関する。
【背景技術】
【０００２】
これまでに、「人工知能（ＡＩ：Artificial Intelligence）」の技術分野では、（a）知識の表現方法、（b）知織に基づいた演繹推論の方法、また（c）知識を事例などを基に作り上げる帰納推論の方法などが研究されてきた。
【０００３】
ここで、人工知能の研究は、１９５０年代に産声を上げた。以来数十年間、この分野は情報科学において最も活発に研究された分野の一つである。特に、１９８０年代に我が国で進められた第５世代コンピュータ・プロジェクトでは、知識の記述形式として述語論理を、演繹推論の方法としてProlog（述語論理式をプログラムに見立てて処理する言語）を採用し、それに基づいて知識処理を並列化・高速化するための数多くの研究が行なわれた。
【０００４】
しかしながら、上述した第５世代コンピュータ・プロジェクトは、最終的に一定の成果を収めたものの、厳密には、その投資規模に見合った成果、たとえば、社会を変革するような成果を産み出すことまでは成功しなかったといわざるをえない。その理由は、人工知能で真に解決しなければならない課題が、上述した人工知能の研究分野のうち、（c）知識を作るための帰納推論（学習）の方法の開発であるのに、（b）知識に基づいた演繹推論の方法の高速化に的を絞り、巨大なハードウェア計算機を開発することに精力を注いだことに一因があると考えられる。
【０００５】
以上のような従来のアプローチを、記号/シンボルを明示的に扱う”狭義の”ＡＩ（記号処理ＡＩ）とすると、これとは別に”広義の”ＡＩには、記号/シンボルを明示的に扱わない技術（代表的なものに人工ニューラルネットワーク研究がある）も含まれる。これら２つの技術、記号処理ＡＩとニューラルネットは、それぞれが得意とする分野が違うこともあり、これまでなかなか研究の交流や融合は行なわれなかった。
【０００６】
ここで、上述した狭義のＡＩにおいては、記号論理、なかでも、「述語論理」について研究が行なわれてきた。
【０００７】
ここで、「記号論理」は、言葉で表現される意味内容を、記号（シンボル）に変換し、その論理関係によって捉えようとするものであり、論理を数学によって研究するものである。したがって、「数理論理学」とも呼ばれる。
【０００８】
「記号論理」には、「命題論理」と「述語論理」とが含まれる。「述語論理」は、命題論理とは異なり、個々の命題の内容について論じるために、命題の中に変数を用いて、変数の値によって、真・偽をとらえる記号論理である。
【０００９】
すなわち、命題論理は、言明として真か偽かを問うものであり、言明の中で表される内容に関する推論はできない。たとえば、
（ｐ１）すべての人は平和を好む。
【００１０】
（ｐ２）太郎は人である。
ならば
（ｐ３）太郎は平和を好む。
【００１１】
との命題がある場合、命題論理の枠組みでは、命題（ｐ１）、（ｐ２）が真であっても、命題（ｐ３）が常に真であるとは主張できない。これは、命題論理の下では、命題の中に含まれる個体に関しての内容には着目せず、命題そのものの真偽性のみ着目するからである。
【００１２】
それに対して、述語論理では、命題に含まれる個体変数に着目し、その命題における個体変数の性質や状態を述語を用いて推論を行なうことになる。
【００１３】
述語論理を構成する要素としては、たとえば、以下のようなものがある。
・個体定数：特定の個体を表す記号（ａ，ｂ，…などの定数によって表現される）
・個体変数：任意の個体を表す記号（ｘ，ｙ，…などの変数によって表現される）
・述語記号：個体に関する性質や状態を表す記号（ｐ，ｑ，…などの記号によって表現される）
・関数記号：個体間の関係を表す記号（ｆ（ｘ）のｆなどによって表現される）
・論理記号：命題論理の論理記号と同様に否定（¬あるいは〜），論理積（∧），論理和（∨），含意（→）などが用いられる。
【００１４】
・限量記号：対象領域において対象とする固体の範囲を示す記号、全称記号（∀）、存在記号（∃）が用いされる。限量記号により限定される変数を束縛変数とよび、束縛変数でない変数を自由変数と呼ぶ。
【００１５】
述語の引数となる項は、述語論理が対象とする世界である対象領域における要素を表現するものであり、述語に引数に相当する。項には、個体定数、個体変数のほか、関数自体も項となることができる。
【００１６】
述語論理式の定義等は、周知であるので、ここでは、その説明は省略する。
また、恒真性を証明する対象述語論理式は、一般的にその否定形である恒偽式が全称記号と存在記号とが含まれる形となる。しかし、真偽性を保存しながら、形式的に存在記号を消去して、全称記号のみの述語論理式で表現されることが知られており、このような存在記号を取り除いた節形式を「スコーレム標準形」と呼ぶ。
【００１７】
たとえば、述語論理式Ｐ０の否定形〜Ｐ０が、以下のようにスコーレム標準形で表されているとする。
【００１８】
【数１】
0005904525.tif 000002
【００１９】
ここで、素式または素式の否定のことを「リテラル」と呼ぶ。リテラルの論理和のみ、または、リテラルの論理積のみから構成される論理式のことを「節」と呼ぶ。節が、リテラルの論理和のみ、または、リテラルの論理積のみから構成されているとき、節の論理積のみ、または節の論理和のみから構成される論理式のことを「節形式」と呼ぶ。
【００２０】
上述したスコーレム標準形において、すべての個体変数は、全称記号によって、束縛されているため、母式を構成している節からなる集合Ｃ＝｛Ｃ１，…Ｃｎ｝を「節集合」と呼ぶ。節集合が真であるとは、すべてのＣ１，…Ｃｎが同時に真であることをいう。また、節集合が偽であるとは、Ｃ１，…Ｃｎのうちの少なくとも一つが偽であることをいう。
【００２１】
あらゆる解釈に対して節集合が偽となるとき（すなわち、すべてのが同時に真とはならないとき）、節集合は充足不能であるという。節集合Ｃが充足不能ならば、スコーレム標準形は恒偽式であり、対象としている述語論理式Ｐ０が恒真式であることが証明できる。
【００２２】
いま、節集合Ｃ＝｛Ｃ１，…Ｃｎ｝における節Ｃｉ，Ｃｊが、あるリテラルとその否定リテラル〜Ｐを含み、を含み、以下のように表されるとする。
【００２３】
【数２】
0005904525.tif 000003
【００２４】
このような２つの節から以下のような新たな節Ｃｉｊを導く推論を「導出」という。
【００２５】
【数３】
0005904525.tif 000004
【００２６】
このとき、節Ｃｉ，Ｃｊを親節、導出された節を導出節という。
導出は、妥当な推論形式である。
【００２７】
節集合において、導出を行なった後、導出節を節集合に加えることを繰り返すことにより、最終的に「空節」を導くことができれば、その節集合が充足不能であるこを意味し、与えられた述語論理式の恒真性を証明できる。ここで、空節とは、０個のリテラルからなる節を指す。
【００２８】
このような恒偽性の判断手続きを「導出原理」と呼ぶ。
また、述語論理式に対する導出では、述語論理式に含まれる個体変数に予め適切な処置を施さないと導出を行なうことができない。
【００２９】
そこで、個体変数を別の項に置き換える操作を「単一化」と呼ぶ、単一化置換は、一度施されると、以降の導出過程において個体変数は、その項に束縛される。単一化置換が存在しない場合は、導出はできない。単一化置換ｓの元に、導出により最終的に空節が導出された場合は、「単一化置換ｓの下で証明された」という。
【００３０】
後により詳しく説明するように、述語論理と関連する「述語論理と導出」、「Prolog」、「プロダクションシステム」、「意味ネットワーク」、「高レベルペトリネット」等については、非特許文献１〜非特許文献７に記載されている。
【００３１】
一方、ニューラルネットの研究では、知識は記号やシンボルではなく、脳内のニューロ素子を真似て作ったネットワークの繋がり情報として非明示的に表現される。その人工的なネットワ-クを、事例に基づいて所定の学習則に従って改変することで、事例の背後にある知識を帰納的に構成しようとする。この方式に基づき、これまで様々なネットワーク・トポロジーや学習則が提案されており、パターン認識等の分野では実用化例も報告されている（非特許文献８〜非特許文献１１を参照）。
【００３２】
図４４は、述語論理と導出についての別の例を示す概念図である。
図４４においては、以下のような論理式を対象とし、するものとする。
【００３３】
１）太郎は男である。  ：  Ｍａｎ（Ｔａｒｏ）で表す。
２）男は人間である。  ：Ｈｕｍａｎ（ｘ）←Ｍａｎ（ｘ）で表す。
【００３４】
３）人間は誰か？      ：←Ｈｕｍａｎ（q）で表す。
ここで、１）は事実節であり、２）は規則節であり、ここでの論理プログラムの目的は、３）のゴール節の中のクエリ変数（q）が何であるかを決めることにある。
【００３５】
この場合、図４４の右側に示されるように、空節が得られるまで、導出を繰り返すことで、クエリ変数が「Ｔａｒｏ」であることが導かれる。
【００３６】
一方、図４５は、述語論理を扱う論理型プログラミング言語であるＰｒｏｌｏｇにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【００３７】
Ｐｒｏｌｏｇでは、ホーン節とよばれるリテラルを１つしか含まない節について、ＳＬＤ（Selective Linear definite resolution）導出とよばれる手法により、導出が実行される。Ｐｒｏｌｏｇでは、導出の過程において単一化が失敗すると、失敗する直前の節まで戻り、他の親節候補となる節と導出を行い、処理を続けるメカニズムを有している。これを、「バックトラック」と呼ぶ。したがって、Ｐｒｏｌｏｇは、深さ優先探索で後向き推論を実行することになる。
【００３８】
図４６は、述語論理を扱うプロダクション・システムにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【００３９】
プロダクション・システムは、ルールベースにより、作業記憶内の事実に対して、認識行動サイクルが、前向き推論により、答えとなる事実を生成する。
【００４０】
図４７は、述語論理を扱う高レベルペトリネットにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【００４１】
高レベルペトリネットでは、プレースとトランジションと呼ばれる２つのノードがあり、これらをラベル付のアークで結んだ有向グラフで、論理を表現する。そして、発火が前向き推論として実行され、最終的に事実トークンが生成される。
【００４２】
図４８は、述語論理を扱う意味ネットワークにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【００４３】
意味ネットワークは、知識を概念とそれらを結ぶ関係で記述することにより表現する。表現された知識は、概念ノードが属性を示す矢印で値ノードと連結されたラベル付き有向グラフで表現される。意味ネットワークでは、演繹は、グラフ間の構造を照合することで実行される。
【００４４】
さらに、図４９は、述語論理を扱う確率論理プログラミング、特に、ベイジアンネットワークにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【００４５】
ベイジアンネットワークでは、事象間に存在する因果関係を定量的に確率で表現し、有向非循環グラフを使って視覚的にネットワークの形で表現した確率推論モデルである。
【００４６】
因果関係を確率により定量的に表現する際に、ベイズの定理に基づいているため「ベイジアンネットワーク」と呼ばれる。
【００４７】
ベイジアンネットワークでは、重み付けされたルールに基づき確率推論することで、知識の曖昧性を表現することができる。
【００４８】
一方で、本願の発明者らにより、「プログラムを作成する計算処理装置」を実現するために、特許文献１において提案された「ＡＴＮ（Ａｌｇｏｒｉｔｈｍｉｃａｌｌｙ  Ｔｒａｎｓｉｔｉｖｅ  Ｎｅｔｗｏｒｋ；アルゴリズム可変ネットワーク）」の手法がある。この手法では、プログラムをネットワーク型のグラフ表現で処理しつつ、学習によりアルゴリズムを改変していく。
【先行技術文献】
【特許文献】
【００４９】
【特許文献１】国際公開２０１０／０４７３８８号公報
【非特許文献】
【００５０】
【非特許文献１】ロイド著、佐藤、森下訳,論理プログラミングの基礎。産業図書（１９８７）
【非特許文献２】太原育夫著:人工知能の基磁知識。近代科学杜（１９８８）
【非特許文献３】菅原研次著:人工知能（情報工学入門シリーズ）。森北出版（１９９７）
【非特許文献４】古川康一、向井国昭著：数理論理学。コロナ社（２００８）
【非特許文献５】Peterka, C, Murata, T.: Proof procedure and answer extraction in Petri net model of logic programs, IEEE Transactions on Software Engineering V.１５ N.２ （１９８９） ２０９-２１７ DOI: １０.１１０９/３２.２１７４６
【非特許文献６】村田忠夫著：ペトリネットの解析と応用。近代科学社（１９９２）
【非特許文献７】Richardson, M, Domingos, P.: Markov logic networks. Machine Learning V.６２ N.１-２ （２００６） １０７-１３６
【非特許文献８】坂和正敏,田中雅博著：ニューロコンピューティング入門。森北出版（１９９７）
【非特許文献９】熊沢逸夫著：学習とニューラルネットワーク（電子情報通信工学シリーズ）。森北出版（１９９８）
【非特許文献１０】吉富康成著：ニューラルネットワーク（シリーズ非線形科学入門）。朝倉書店（２００２）
【非特許文献１１】Haykin, S.：Neural networks and learning machines. Prentice-Hall. Inc. （２００９）
【発明の概要】
【発明が解決しようとする課題】
【００５１】
図５０は、これまで記号処理ＡＩの分野で提案されてきた代表的なモデルを示す図である。
【００５２】
図５０の第２列には、知識がグラフ表現されているかを示している。また第３、４列には、演繹推論の効率を決めるファクターを示している。
【００５３】
ここで、第２列において、「○」は、演算効率の点から望ましいことを示し、「△」は、グラフ表現はされるものの、演算処理を直接的に導くものではないことを意味し、「×」はグラフ表現が用いられないことを示す。
【００５４】
また、第３，４列においては、「○」は、グラフ表現が演繹処理の過程で、原理的に計算効率が高い処理方法が採用されていることを意味し、「△」は、演繹の原理としては効率的・非効率的とは一概に言えないことを意味し、「×」は、演繹の原理としては、むしろ非効率的であることを示す。
【００５５】
後向き推論が前向き推論より評価が高いのは、後向き推論ではゴールを念頭において探索の絞り込みをするため、事実の爆発的生成がないからである。
【００５６】
一方、ニューラルネットの研究では、知識は記号やシンボルではなく、脳内のニューロ素子を真似て作ったネットワークの繋がり情報として非明示的に表現される。その人工的なネットワ-クを、事例に基づいて所定の学習則に従って改変することで、事例の背後にある知識を帰納的に構成しようとする。この方式に基づき、これまで様々なネットワーク・トポロジーや学習則が提案されており、パターン認識等の分野では実用化例も報告されている。
【００５７】
図５０の記号処理ＡＩのモデルは、（a）知織表現と（b）演繹推論の観点から主としてデザインされたもので、これに（c）学習機能を盛り込むことは難しい技術課題である。
【００５８】
「例からの学習」として行なわれてきた機械学習の研究はそれに挑戦してきたが、記号の持つ離散性と事例情報の持つあいまい性やノイズとの間のギャップを埋めることは多くの方法で実現できていない。
【００５９】
また、図５０の一番下の確率論理プログラミングは、“重み付け“された述語論理を元にペイジアンネットワークを生成し、その上で確率推論を行なうことで、知識のあいまい性を衣現している。ただ、この方法の場合、述語論理からネットワークの変換の段階で変数を消去して命題論理化してしまうため、述語論理特有の汎用な知識表現ができない上、出来上がるグラフの規模も、エルブラン基底の要素すべてをノードとして持つという膨大なものとなる。また学習も、そのように網羅的に用意されたノードの条件付き確率の最適化であり、新しい述語の生成や、論理構造の変更といったことは行なえない。
【００６０】
一方、ニューラルネットは、より（C）学習の機能に特化したシステムである。このモデルの困難性はむしろ出来上がった知識の非明示性にあり、学習によって構築された知識を人間が解釈・抽出できないが故に、人間がそれを修正・活用したり、別のアーキテクチャ上に移植するといったことができないでいる。
【００６１】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、学習機能を盛り込みつつ演繹推論を実行し、構築された知識の構造がグラフにおいて明示されるような論理推論システム、計算学習装置および論理推論方法を提供することである。
【００６２】
この発明の他の目的は、演繹推論のための論理プログラム、または、算術演算および論理演算を実行するプログラムを学習により、ユーザが所望する演算結果を出力するプログラムを作成する計算学習装置を提供することである。
【課題を解決するための手段】
【００６３】
この発明の１つの局面にしたがうと、論理で表わされた知識をもとに推論を実行するための論理推論システムであって、知識を、後ろ向き推論の形式のデータフローグラフであって、複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジから成るデータフローグラフを用いて表現し、複数の演算ノードは、論理の各種演算に対応する演算ノードを含み、演算ノードに対応づけられるシンボルは、論理における項に対して予め設定された数値に変換されたものが割り当てられ、データフローグラフ上での各ノードの発火に基づくトークン伝搬により、データフローグラフをＡＮＤ／ＯＲグラフへ展開する展開手段と、ＡＮＤ／ＯＲグラフ上での各ノードの発火に基づくトークン伝搬により、論理に対する導出を実行する推論実行部とを備える。
【００６４】
好ましくは、ＡＮＤ／ＯＲグラフにおける推論実行部は、各ノードが並列独立に発火し、トークンを生成して必要な事実節の探索を行なう順伝播処理と、補正情報を表わすトークンを逆方向に流し、それに確率的な選択を施すことにより変数間の矛盾を解消する逆伝播処理とを繰返し実行することにより、演繹推論を実行する推論手段を含む。
【００６５】
好ましくは、データフローグラフでは、論理を表わす知識を述語論理で表現し、それをもとに演算ノードとその間を各々つなぐ複数のエッジにより論理の構造を表わすデータフローグラフを生成する変換手段を備える。
【００６６】
好ましくは、推論実行部において、トークンとして逆伝搬される補正情報を元に確率的に数値を補正することによりデータフローグラフ中の定数をより最適な値へと近づける定数学習手段を含む。
【００６７】
好ましくは、データフローグラフにおいて、ランダムに生成された節に対応する部分木の付加を行う第１のトポロジー変更手段をさらに備える。
【００６８】
好ましくは、データフローグラフにおいて、偽枝を生成する節に対応する部分木の削除を行う第２のトポロジー変更手段をさらに備える。
【００６９】
この発明の他の局面に従うと、計算学習装置であって、複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジにより計算手続きを表わすデータフローグラフを用いて順伝播計算を実行する計算実行部を備え、複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、計算実行部の計算結果に基づき外部から与えられる教師値や制約を満足するための補正情報を算出する補正情報算出部と、補正情報に基づきデータフローグラフの中で局所的な補正情報を表わすトークンを逆方向に伝搬し、それらトークンに確率的な選択を施すことにより定数の学習や制約に基づく変数値の算出を行なう処理部とをさらに備える。
【００７０】
好ましくは、計算学習装置において、トークンが持つ局所的な補正情報を、各ノードにおける逆算によって求める。
【００７１】
好ましくは、計算学習装置において、トークンが持つ局所的な補正情報を、各ノードにおける微分係数の伝搬によって求める。
【００７２】
好ましくは、計算手続きは、知識を表す論理プログラムである。
好ましくは、計算手続きは、算術演算および論理演算の処理を実行するためのプログラムである。
【００７３】
好ましくは、計算手続きは、算術演算を組み合わせてできる線形、または非線形の連立方程式である。
【００７４】
この発明のさらに他の局面に従うと、論理で表わされた知識をもとに推論を実行するための論理推論方法であって、知識を、後ろ向き推論の形式のデータフローグラフであって、複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジから成るデータフローグラフを用いて表現し、複数の演算ノードは、論理の各種演算に対応する演算ノードを含み、演算ノードに対応づけられるシンボルは、論理における項に対して予め設定された数値に変換されたものが割り当てられ、データフローグラフ上での各ノードの発火に基づくトークン伝搬により、データフローグラフをＡＮＤ／ＯＲグラフへ展開するステップと、ＡＮＤ／ＯＲグラフ上での各ノードの発火に基づくトークン伝搬により、論理に対する導出を実行するステップとを備える。
【００７５】
好ましくは、論理に対する導出を実行するステップは、各ノードが並列独立に発火し、トークンを生成して必要な事実節の探索を行なう順伝播処理と、補正情報を表わすトークンを逆方向に流し、それに確率的な選択を施すことにより変数間の矛盾を解消する逆伝播処理とを繰返し実行することにより、演繹推論を実行するステップを含む。
【００７６】
好ましくは、データフローグラフでは、論理を表わす知識を述語論理で表現し、それをもとに演算ノードとその間を各々つなぐ複数のエッジにより述語論理の構造を表わすデータフローグラフを生成する変換手段を備える。
【００７７】
この発明のさらに他の局面に従うと、計算学習方法であって、複数の演算ノードおよび演算ノードの間を各々つなぐ複数のエッジにより計算手続きを表わすデータフローグラフを用いて順伝播計算を実行するステップを備え、複数の演算ノードは、プログラムの各種演算に対応する演算ノードを含み、順伝播計算の計算結果に基づき外部から与えられる教師値や制約を満足するための補正情報を算出するステップと、補正情報に基づきデータフローグラフの中で局所的な補正情報を表わすトークンを逆方向に伝搬し、それらトークンに確率的な選択を施すことにより定数の学習や制約に基づく変数値の算出を行なうステップとをさらに備える。
【００７８】
好ましくは、補正情報を算出するステップにおいては、トークンが持つ局所的な補正情報を、各ノードにおける逆算によって求める。
【００７９】
好ましくは、補正情報を算出するステップにおいては、トークンが持つ局所的な補正情報を、各ノードにおける微分係数の伝搬によって求める。
【発明の効果】
【００８０】
この発明によれば、学習機能を盛り込みつつ演繹推論が実行され、構築された知識の構造がグラフにおいて明示される。
【００８１】
また、この発明によれば、演繹推論のための論理プログラム、または、算術演算および論理演算を実行するプログラムを学習により、ユーザが所望する演算結果を出力するプログラムが作成される。
【図面の簡単な説明】
【００８２】
【図１】本実施の形態に係る計算処理装置１００の構成をブロック図形式で表す図である。
【図２】本実施の形態に係る計算処理装置１００の機能的構成をブロック図形式で示す図である。
【図３】ＫＴＮと類似の前向き推論型ネットワークにおける推論と学習の手続きを示す概念図である。
【図４】述語論理を高レベルペトリネットでのグラフ表現に変換した例を示す図である。
【図５】述語論理をＫＴＮでのネットワーク表現に変換した例を示す図である。
【図６】ＫＴＮにおいて、図５で説明した「後向きデータフローグラフ」をさらに、展開・数量化して演繹推論する処理を示す概念図である。
【図７】シンボル／シンボル列を数値化する手続きを示す概念図である。
【図８】ノードに対応付けられる演算（オペレーション）を示す図である。
【図９】論理プログラムの述語論理がＫＴＮにおいて、どのようなグラフに変換されるかを示す第１の図である。
【図１０】論理プログラムの述語論理がＫＴＮにおいて、どのようなグラフに変換されるかを示す第２の図である。
【図１１】ＫＴＮを構築した例を示す図である。
【図１２】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１３】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１４】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１５】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１６】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１７】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１８】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図１９】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２０】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２１】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２２】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２３】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２４】ＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【図２５】このような図１２〜図２４で説明したデータフローグラフを展開して、ＡＮＤ／ＯＲグラフに変換した結果の図である。
【図２６】図２５に示したＡＮＤ／ＯＲグラフを、各節の内部構造を省略しＡＮＤ／ＯＲ木として示す図である。
【図２７】木探索と単一化について、ブランチＢＲ１−１に相当する葉から探索と単一化が可能であるかを判断した結果を示す図である。
【図２８】木探索と単一化について、ブランチＢＲ３−１に相当する葉とブランチＢＲ１−２に相当する葉から探索と単一化が可能であるかを判断した結果を示す図である。
【図２９】木探索と単一化について、ブランチＢＲ３−２に相当する葉とブランチＢＲ１−２に相当する葉から探索と単一化が可能であるかを判断した結果を示す図である。
【図３０】確率近接法の概念を説明するための概念図である。
【図３１】確率近接法により、定数学習をする場合を示す概念図である。
【図３２】上述した式（１）を表すデータフローグラフでの確率近接法の処理を示す図である。
【図３３】このような連立方程式をデータフローグラフ（ＡＮＤ／ＯＲ木に展開したデータフローグラフ）を用いて、解く場合の手続きを説明するための図である。
【図３４】このように、同値ノード３００または３０２で生成されたトークンを逆伝播させた場合の処理を説明する図である。
【図３５】図１２等のデータフローグラフを展開して、ＡＮＤ／ＯＲ木で示したグラフについて、ｑの初期値を０．５、ｚ０の初期値も０．５として順伝播させた場合のトークンのシンボル（ｘ、ｒ）を示す図である。
【図３６】図３５の状態から逆伝播を行なった状態を示す図である。
【図３７】図３６において「拡大図１」で示した部分の拡大した図である。
【図３８】図３６において「拡大図２」で示した部分の拡大した図である。
【図３９】図３６の逆伝播の状態から、初期値を更新した上で、再度、順伝播を行った状態を示す図である。
【図４０】図３９の状態から、さらに、逆伝播を行なった状態を示す図である。
【図４１】教師あり学習について説明するための図である。
【図４２】トポロジーを改変処理する場合の概念を説明する図である。
【図４３】演算部２２０が実行する処理を説明するためのフローチャートである。
【図４４】述語論理と導出についての別の例を示す概念図である。
【図４５】述語論理を扱う論理型プログラミング言語であるＰｒｏｌｏｇにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【図４６】述語論理を扱うプロダクション・システムにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【図４７】述語論理を扱う高レベルペトリネットにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【図４８】述語論理を扱う意味ネットワークにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【図４９】述語論理を扱う確率論理プログラミング、特に、ベイジアンネットワークにより、図４４と同様の事実節、規則節、ゴール節についての導出を実行する内容を示す概念図である。
【図５０】これまで記号処理ＡＩの分野で提案されてきた代表的なモデルを示す図である。
【図５１】微係数を計算する場合の手続きを示す概念図である。
【発明を実施するための形態】
【００８３】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部分には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰り返さない。
【００８４】
（１．概要）
本実施の形態に係る計算処理装置１００は、外部から与えられたプログラム（以下、初期プログラムともよぶ）、特に、「述語論理」に基づく論理プログラムについての導出処理を実行する。
【００８５】
なお、プログラムとしては、このような「述語論理」に基づく論理プログラムだけではなく、上述した特許文献１（国際公開２０１０／０４７３８８号公報）に開示されるような算術演算および論理演算等からなるプログラムでもよい。ただし、以下では、「述語論理」に基づく論理プログラムについての導出処理を中心として説明する。
【００８６】
さらに、本実施の形態に係る計算処理装置１００は、後に説明するように、学習により、初期プログラムを修正し、より適切な演算結果を出力するプログラムを作成する処理を行なうことも可能である。
【００８７】
計算処理装置は、大まかに分けて、次の３つの処理を行なう。
（１）論理プログラムのネットワーク（データフローグラフ）への変換
（２）ネットワークを用いた計算の実行
（３）ネットワークの修正
以下、各処理の概要を説明する。
【００８８】
[（１）プログラムのネットワークへの変換］
計算処理装置１００は、与えられた初期プログラムに基づいて、ネットワーク型のプログラムのグラフ表現、より具体的には、データフローグラフを作成する。すなわち、計算処理装置１００は、論理プログラムである初期プログラムの述語論理の構造を表現するネットワークを作成する。
【００８９】
本実施の形態では、計算処理装置１００が初期プログラムから作成したプログラムのグラフ表現のことを、ＫＴＮ（Knowledge Transitive Network；知識推移ネットワーク）形式のネットワークと呼ぶ。ＫＴＮ形式のネットワークは、各々が演算処理を表わす複数の演算ノードと、複数の演算ノードのうちいずれか２つの演算ノードを各々つなぐ複数のエッジとにより、述語論理の構造を表わす。エッジは、演算順序を表わす方向を持つ。
【００９０】
[（２）ネットワークを用いた計算の実行］
計算処理装置１００は、作成したネットワークを用いて計算を実行する。すなわち、計算処理装置１００は、入力値に対し、エッジで表わされる順序に従って、演算ノードによる演算を施す。
【００９１】
本実施の形態では、計算処理装置１００は、演算に必要な情報を持つシャトルエージェント（以下、単にエージェントとよぶ）に対して、各演算ノードにより演算を施す。演算ノードは、１つまたは複数のエージェントの入力を受け付け、所定の規則に基づいて、エッジから入力されたエージェントに対し演算を行ない、演算後のエージェントをエッジに出力する。演算ノードから出力されたエージェントは、エッジの行き先の演算ノードに入力される。エージェントの詳細、および、エージェントに対する処理規則の詳細については後述する。
【００９２】
[（３）ネットワークの修正］
計算処理装置１００は、学習アルゴリズムを用いて、ネットワークを用いた計算結果に基づいてネットワークを修正する。ネットワークの修正方法については、後述する。
【００９３】
計算処理装置１００は、（２）ネットワークを用いた計算の実行により、述語論理に対する推論（導出）を実行することができる。
【００９４】
さらに、計算処理装置１００は、必要に応じて、（３）ネットワークの修正とを繰り返すことにより、ユーザが所望する値を出力するネットワーク（したがって、論理プログラム）を作成することができる。
【００９５】
（２．ハードウェア構成）
本実施の形態に係る計算処理装置１００のハードウェア構成について、図１を参照して説明する。図１は、本実施の形態に係る計算処理装置１００の構成をブロック図形式で表す図である。
【００９６】
計算処理装置１００は、コンピュータ本体１０２と、表示装置としてのモニタ１０４と、入力装置としてのキーボード１１０およびマウス１１２とを備える。モニタ１０４、キーボード１１０、およびマウス１１２は、コンピュータ本体１０２とバス１０５を介して接続される。
【００９７】
コンピュータ本体１０２は、フレキシブルディスク（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｃ、以下「ＦＤ」と呼ぶ）ドライブ１０６と、光ディスクドライブ１０８と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２０と、メモリ１２２と、直接アクセスメモリ装置、たとえば、ハードディスク１２４と、通信インターフェイス１２８とを含む。これらの部品は、互いにバス１０５で接続されている。
【００９８】
ＦＤドライブ１０６は、ＦＤ１１６に情報を読み書きする。光ディスクドライブ１０８は、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１８等の光ディスク上の情報を読み込む。通信インターフェイス１２８は、外部とデータの授受を行なう。
【００９９】
なお、ＣＤ−ＲＯＭ１１８は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）やメモリーカードなどでもよく、その場合は、コンピュータ本体１０２には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。また、バス１０５には、カセット形式の磁気テープを着脱自在に装着してアクセスする磁気テープ装置が接続されていてもよい。
【０１００】
メモリ１２２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む。
【０１０１】
ハードディスク１２４は、初期プログラム１３１と、ネットワーク作成プログラム１３２と、ネットワーク修正プログラム１３３と、ネットワーク情報１３４と、ノード演算定義１３５と、学習情報１３６とを格納する。
【０１０２】
初期プログラム１３１は、論理プログラムにおける導出（または論理プログラムの初期プログラムからの改変による作成）の基礎となる論理プログラムである。ハードディスク１２４は、ユーザが作成した論理プログラムを初期プログラム１３１として格納することができる。初期プログラム１３１は、ＦＤ１１６またはＣＤ−ＲＯＭ１１８等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス１２８を経由して供給されてもよい。
【０１０３】
ネットワーク作成プログラム１３２は、初期プログラム１３１に基づいて、初期プログラム１３１に対応するネットワーク（データフローグラフ、展開データフローグラフ）を作成する。また、ネットワーク作成プログラム１３２は、作成したネットワークに関するネットワーク情報１３４をハードディスク１２４に格納する。
【０１０４】
ネットワーク修正プログラム１３３は、ネットワーク作成プログラム１３２が作成したネットワークを修正する。
【０１０５】
ネットワーク情報１３４は、ネットワーク作成プログラム１３２が作成したネットワークに関する情報、および、ネットワーク修正プログラム１３３がネットワークによる演算あるいはネットワークの修正の際に作成する情報を含む。
【０１０６】
ノード演算定義１３５は、ネットワークに含まれる演算ノードによる演算の規則を表わす。ノード演算定義１３５は、演算ノードを特定する情報（演算コード）、演算ノードへ入力されるエッジの数（入力数）などを含む。ノード演算定義１３５の詳細については、後述する。
【０１０７】
学習情報１３６は、ネットワークにおける導出処理やネットワークの修正に必要な情報である。学習情報１３６は、例えば、ユーザが計算結果として所望する教師値や、学習途中において更新される定数値、数値トークンの値、トークンに対する補正値、データフローグラフ上での発火と転送の履歴の情報（「トークンファイヤ系図」と呼ぶ）などを含む。
【０１０８】
ここで、ノード演算定義１３５については、ユーザが入力装置を利用して作成したものを用いることができる。ただし、これらは、ＦＤ１１６またはＣＤ−ＲＯＭ１１８等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス１２８を経由して供給されてもよい。
【０１０９】
また、ネットワーク作成プログラム１３２およびネットワーク修正プログラム１３３は、ＦＤ１１６、またはＣＤ−ＲＯＭ１１８等の記憶媒体によって供給されてもよいし、他のコンピュータにより通信インターフェイス１２８を経由して供給されてもよい。
【０１１０】
演算処理装置として機能するＣＰＵ１２０は、メモリ１２２をワーキングメモリとして、上述した各プログラムに対応した処理を実行する。
【０１１１】
ネットワーク作成プログラム１３２およびネットワーク修正プログラム１３３は、上述の通り、ＣＰＵ１２０により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、ＣＤ−ＲＯＭ１１８、ＦＤ１１６等の記憶媒体に格納されて流通し、光ディスクドライブ１０８またはＦＤドライブ１０６等により記憶媒体から読み取られてハードディスク１２４に一旦格納される。または、計算処理装置１００がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク１２４にコピーされる。そうしてさらにハードディスク１２４からメモリ１２２中のＲＡＭに読み出されてＣＰＵ１２０により実行される。なお、ネットワーク接続されている場合には、ハードディスク１２４に格納することなくＲＡＭに直接ロードして実行するようにしてもよい。
【０１１２】
図１に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、ＦＤ１１６、ＣＤ−ＲＯＭ１１８、ハードディスク１２４等の記憶媒体に記憶されたソフトウェアである。
【０１１３】
（３．機能的構成）
図２を参照して、本実施の形態に係る計算処理装置１００の機能的構成について説明する。図２は、本実施の形態に係る計算処理装置１００の機能的構成をブロック図形式で示す図である。
【０１１４】
計算処理装置１００は、外部からデータを受け付ける入力部２１０と、演算部２２０と、演算部２２０の演算結果を外部に出力する出力部２３０と、記憶部２４０とを備える。
【０１１５】
演算部２２０は、記憶部２４０に格納されたデータに対して演算を実行する。演算部２２０は、ネットワーク作成部２２２と、計算実行部２２６と、ネットワーク更新部２２８とを含む。
【０１１６】
ネットワーク作成部２２２は、記憶部２４０に格納されている初期プログラム１３１に基づいて、ネットワーク情報１３４を作成する。ネットワーク作成部２２２は、形式変換部２２４を含む。形式変換部２２４は、後に説明するように、論理プログラムを、後向き演繹を幅優先探索で実行するための展開データフローグラフに変換する。
【０１１７】
計算実行部２２６は、ネットワーク情報１３４と、ノード演算定義１３５とに基づいて、ネットワークを用いた計算を実行する。計算実行部２２６が行なう処理の詳細については、後述する。
【０１１８】
ネットワーク更新部２２８は、学習アルゴリズムを用いて、ネットワーク情報１３４を修正する。より詳しくは、ネットワーク更新部２２８は、トポロジー学習部２２８ａを含む。このほかに、ネットワーク更新部２２８は、学習情報１３６に含まれる誤差に基づいて、ネットワークに含まれる演算ノードの定数値を修正する定数学習部を含んでもよい。トポロジー学習部２２８は、所定の規則に基づいて、随時、演算ノードの生成や削除、エッジの生成や削除などのネットワークの更新処理を実行する。ネットワーク更新部２２８が行なう処理の詳細については後述する。
【０１１９】
なお、以上の説明では、計算処理装置１００は、単一のコンピュータ装置であるものとして説明したが、エージェントを用いて演算処理が実行されることから、計算処理装置１００は、複数のコンピュータにより、分散処理を実行するシステムにより構成されていてもよい。
【０１２０】
本実施の形態の計算処理装置１００では、以下の説明で明らかとなるように、上述した２つの技術、記号処理ＡＩとニューラルネットのギャップを埋める新しいＡＩのモデルを用いて論理プログラムに対する導出処理またはネットワークの修正（すなわち、ネットワークのトポロジ変更による論理プログラムの作成）を実行するものである。
【０１２１】
ネットワークをベースとしたこのモデルは、記号／シンボルを明示的に信頼度とともに扱いながら、ニューラルネットの分野で開発されてきた学習則を動かせるようにしたもので、前述の（a）知識表現、（b）演繹、（c）学習の３つの機種を併せ持つ新たな推論・学習システムを構築できる。このモデルを実行するためのネットワークを、上述のとおり、知識推移ネットワーク（Knowledge Transitive Network; ＫＴＮ）と呼ぶ。このモデルは、以下の説明で明らかとなるように、先に出願済みですでに公開された特許文献１の国際公開２０１０／０４７３８８号公報に開示されたモデルであって、算術演算および論理演算を実行するプログラムのためのアルゴリズム推移ネットワーク（Algorithmically Transtcive Network; ATN）を基礎としつつも、以下に説明するように、述語論理におけるシンボルを扱うための改良を行なうとともに、学習方法についても、「確率近接法」と呼ばれる新しいアルゴリズムを適用するものである。
【０１２２】
図３は、ＫＴＮそのものではないが、ＫＴＮと類似の前向き推論型ネットワークにおける推論と学習の手続きを示す概念図である。
【０１２３】
図３は、一例として、”If x=A then y=B”という論理に対する推論と学習を行なう場合を示す。ここでは、あくまで、推論型ネットワークについての処理の概念を大枠を説明するので、個々の処理についての言及は省略する。
【０１２４】
まず、３つの定数項のノード（図中、ｃ）が同時に発火して、トークンがこれらのノードから出力される。ここで、トークンは、シンボルとそのシンボルの信頼度を示す値との組として表現される。
【０１２５】
各ノードからの複数のトークンが最終ノードに到達した段階で、教師データｔと比較され、信頼度が所定値以上であるトークン、すなわち正解であるトークンについて、このトークンの発火履歴を逆にたどって、補正情報が逆伝播する。
【０１２６】
このような前向き推論型ネットワークでは、矛盾を含む複数の答えが信頼度とともに、順方向に伝播するので、推論の曖昧さを取り込むことが可能であると共に、学習では、信頼度の高いトークンを選択して逆伝播させるので、学習の際に、処理しなければならないトークンの数が爆発的に増加する事態をある程度防ぐことができる。
【０１２７】
（述語論理とネットワークへの変換）
図４は、述語論理を高レベルペトリネットでのグラフ表現に変換した例を示す図である。
【０１２８】
図４においては、以下の述語論理を扱っている。
事実節  ：太郎は男である（Taro is a man.）      Man(Taro)と表現。
【０１２９】
ルール節：男は人間である（A man is a human.）    Human(x)←Man(x)と表現。
ゴール節：人間は誰か？（Who is a human?）        ←Human(q)と表現。
【０１３０】
高レベルペトリネットでは、アークにラベル付の項が付された前向きの有向グラフとして、述語論理が表現される。
【０１３１】
図５は、述語論理をＫＴＮでのネットワーク表現に変換した例を示す図である。
述語論理としては、図４と同様のものを例にとることにする。
【０１３２】
まず、述語論理を前向きデータフローグラフで表す場合を考える。発火を開始する開始ノード（Ｂｅｇｉｎ）から、Ｔａｒｏとのシンボルの付された定数ノードに有向エッジが向かう。次に、定数ノード（Ｔａｒｏ）から、Ｍａｎに相当するマージノードへ有向エッジが向かい、さらに、マージノード（Ｍａｎ）から、Ｈｕｍａｎに相当するマージノードへ有向エッジが向かう。マージノード（Ｈｕｍａｎ）から、クエリ変数ｑに対応するマージノードへ有向エッジが向かい、マージノード（ｑ）から、探索の停止を意味する終端ノードに有向エッジが向かうグラフとなる。
【０１３３】
一方、ＫＴＮでは、ネットワーク作成部２２２の処理により、上述した前向きデータフローグラフを反転した、後向きデータフローグラフとして表現する。まず、発火を開始する開始ノード（Ｂｅｇｉｎ）から、ｑとのシンボルの付された定数ノードに有向エッジが向かう。次に、定数ノード（ｑ）から、Ｈｕｍａｎに相当するマージノードへ有向エッジが向かい、さらに、マージノード（Ｈｕｍａｎ）から、Ｍａｎに相当するマージノードへ有向エッジが向かう。マージノード（Ｍａｎ）からは、１つはＴａｒｏに相当する定数ノードに有向エッジが向かうとともに、２入力が等しいときに真を生成する同値ノードの一方入力へ有向エッジが向かう。一方、定数ノード（Ｔａｒｏ）からは、同値ノードの他方入力へ有向エッジが向かう。同値ノードの結果が、終端ノードに渡される。
【０１３４】
以上のように、ＫＴＮでは、グラフトポロジーで知識（述語論理）が表現されるとともに、高レベルペトリネットとは異なり、定数と未定変数についてのラベルのみがノードに付与される。
【０１３５】
図６は、ＫＴＮにおいて、図５で説明した「後向きデータフローグラフ」をさらに、展開・数量化して演繹推論する処理を示す概念図である。
【０１３６】
図６に示されるように、「後向きデータフローグラフ」は、ネットワーク作成部２２２により、展開され、ＡＮＤ／ＯＲグラフとして表現されるとともに、シンボルトークンを数値トークンとして表現される。
【０１３７】
ここで、Ｔａｒｏが、たとえば、数値”１”で表現されるなら、トークンの逆伝播で、クエリ変数ｑの値が、１となっていることが、最終的に、答えが得られることに相当する。
【０１３８】
トークンの数値化に伴い、Ｍａｎに対応するマージノードの２つの出力は、ＡＮＤで結ばれ、同値ノードは、論理真を与えるための束縛として機能することになる。
【０１３９】
以上のような構成により、ＫＴＮでは、ノードの並列発火により、後向き演繹を幅優先探索で行なう。
【０１４０】
図７は、シンボル／シンボル列を数値化する手続きを示す概念図である。
図７に示すとおり、シンボル／シンボル列は数で表現される。このような数値化は、図７に示されるように、述語論理中の項（個体定数、個体変数、関数）を自然数と予め対応付けておき、これを大域テーブル（グローバルに参照できるテーブル）として予め定義しておく。
【０１４１】
図７に示されるように、Ｔａｒｏが自然数であれば、数値に変換するとテーブルを参照して、１となる。また、関数ｗｉｆｅが７に対応づいていれば、関数ｗｉｆｅ（Ｔａｒｏ）（Ｔａｒｏの妻）は、７１とコードされる。
【０１４２】
同様に、関数childに８が対応付けられていれば、child(wife(Taro))は、８７１とコードされる。
【０１４３】
一般に、項がＮ個存在するのであれば、たとえば、Ｎ進数で、項に対応するシンボルをコードできる。
【０１４４】
このようなシンボルから数値への変換において、Ｎ進数グレー・コードを用いることにすれば、グレー・コードは高い対称性を持つから、演繹・学習による数値の微小な変化で、どの桁も均等に入れ替わりうるという特徴を持たせることができる。
【０１４５】
図８は、ノードに対応付けられる演算（オペレーション）を示す図である。
図８において、「同期／非同期」とあるのは、２つ以上の入力があるときに、同期では全ての入力エッジ上にオペランドとなるトークンが揃うのを待ってからノードが発火し、処理が実行されることを意味する。
【０１４６】
（論理プログラムからＫＴＮへの変換）
図９は、論理プログラムの述語論理がＫＴＮにおいて、どのようなグラフに変換されるかを示す第１の図である。
【０１４７】
図１０は、論理プログラムの述語論理がＫＴＮにおいて、どのようなグラフに変換されるかを示す第２の図である。
【０１４８】
図９、図１０に示されるように、述語の引数が、クエリ変数、個体変数、個体定数のいずれであるか、また、論理の関係、関数に応じて、述語論理がＫＴＮに変換される。
【０１４９】
図１１は、ＫＴＮを構築した例を示す図である。
図１１の例では、以下のような論理プログラムを対象としている。
【０１５０】
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).
図１２〜図２４は、図１１に示したＫＴＮ中での、シンボル・トークンの流れを順次示す図である。
【０１５１】
ＫＴＮに対するトークン伝播処理の実行は、ＡＴＮと同様に、Ｂｅｇｉｎノードの発火から始まる。その後各ノードは、通常のデータフロー計算機と同じように、入力エッジに到着したトークンの持つデータをオペランドとしてコードされた演算を実行し、結果のトークンを出力エッジ上に流すという処理を並列独立に行ない、それにより、ノード発火（ファイヤー）とトークン伝搬がカスケード的にネットワーク中に起こる。
【０１５２】
まず、図１２を参照して、開始ノードが発火して、トークンが定数ノード（シンボルは、それぞれ、２，１，ｑ）に伝播する。
【０１５３】
次に、図１３に示すように、定数ノードを通過したトークンは、それぞれ、シンボル（２），シンボル（１），シンボル（ｑ）が付随する。
【０１５４】
図１４に示すように、引数合成ノードをトークンが通過すると、トークンは１つにまとめられ、これに、シンボル（２，１、ｑ）が付随して、マージノードに伝播する。
【０１５５】
次に、図１５に示すように、マージノードからは、２つの出力として、シンボル（２，１、ｑ）が付随するトークンが出力される。
【０１５６】
さらに、図１６に示すように、マージノードから、第１のブランチＢＲ１の引数分解ノードに伝播したシンボル（２，１、ｑ）は、それぞれ、シンボル（２），シンボル（１），シンボル（ｑ）が付随するトークンに分割されて、出力される。
【０１５７】
一方、第２のブランチＢＲ２の引数分解ノードに伝播したシンボル（２，１、ｑ）も、それぞれ、シンボル（２），シンボル（１），シンボル（ｑ）が付随するトークンに分割されて、出力される。
【０１５８】
図１７に示されるように、第１のブランチＢＲ１では、上側の同値ノードでは、１つの入力が一致しないため、出力は偽（Ｆ：Ｆａｕｌｓｅ）が生成され、下側の同値ノードでは、、ｑ＝１であれば、出力は真（Ｔ：Ｔｒｕｅ）との出力が生成される。
【０１５９】
第２のブランチでは、関数ｆのノードで、トークン２のシンボルはｓに変わり、これが逆関数ノードに伝播する。
【０１６０】
一方、定数ノードをトークン（ｑ）が通過することにより、このトークンのシンボルは、ｚ０となる。そこで、逆関数ノードからのトークンと、トークン（１）とが同値ノードに伝播する。上側の引数合成ノードには、トークン（１）、トークン（ｚ０）、トークン（ｑ）が伝播し、下側の引数合成ノードには、トークン（ｚ０）、トークン（ｑ）が伝播する。
【０１６１】
次に、図１８に示すように、第１のブランチＢＲ１では、論理積ノードの一方入力に偽（Ｆ）が伝播するため、論理積ノードの出力は、偽（Ｆ）となる。
【０１６２】
一方、第２のブランチＢＲ２では、同値ノードへの入力がともに”１”となり、上側引数合成ノードからは、トークン（１、ｚ０、ｑ）が、下側引数合成ノードからは、トークン（ｚ０、ｑ）が、それぞれ伝播する。
【０１６３】
さらに、図１９に示すように、第２のブランチＢＲ２では、同値ノードから上側ゲートノードおよび下側ゲートノードへの出力が真（Ｔ）となる。したがって、上側引数合成ノードからのトークン（１、ｚ０、ｑ）と、下側引数合成ノードからのトークン（ｚ０、ｑ）は、それぞれ上側ゲートノードおよび下側ゲートノードを通過して伝播する。
【０１６４】
図２０に示すように、上側ゲートノードを通過したトークンは、第１および第２ブランチの入力側のマージノードに伝播する。また、下側ゲートノードを通過したトークンは、第３ブランチの入力側のマージノードに伝播する。
【０１６５】
図２１に示すように、第１および第２ブランチの入力側のマージノードからは、２つのトークン（１、ｚ０、ｑ）が出力される。第３ブランチの入力側のマージノードからは、２つのトークン（ｚ０、ｑ）が出力される。
【０１６６】
図２２に示すように、第３ブランチでは、上側の引数分解ノードからは、トークン（ｚ０）、トークン（ｑ）が伝播し、下側の引数分解ノードからも、トークン（ｚ０）、トークン（ｑ）が伝播する。
【０１６７】
一方、第１ブランチＢＲ１では、上側の引数分解ノードからは、トークン（１）、トークン（ｚ０）、トークン（ｑ）が伝播し、下側の引数分解ノードからも、トークン（１）、トークン（ｚ０）、トークン（ｑ）が伝播する。
【０１６８】
図２３に示すように、第１ブランチＢＲ１では、上側の同値ノードからは、”T if z0=1”が出力され、下側の同値ノードからは、”T if ｑ=z0”が出力される。
【０１６９】
第２ブランチＢＲ２では、関数ｆのノードで、トークン１のシンボルはｓに変わり、これが逆関数ノードに伝播する。
【０１７０】
一方、定数ノードをトークン（ｑ）が通過することにより、このトークンのシンボルは、ｚ１となる。そこで、逆関数ノードからのトークンと、トークン（ｚ０）とが同値ノードに伝播する。上側の引数合成ノードには、トークン（ｚ０）、トークン（ｚ１）、トークン（ｑ）が伝播し、下側の引数合成ノードには、トークン（ｚ１）、トークン（ｑ）が伝播する。
【０１７１】
第３ブランチＢＲ３では、上側の同値ノードには、トークン（０）とトークン（ｑ）とが入力し、下側の同値ノードからは、”T if ｑ=0”が出力される。
【０１７２】
図２４に示すように、第１ブランチＢＲ１では、論理積ノードから、”T if z0=1,q=z0”が出力される。さらに、第２ブランチＢＲ２では、上側引数合成ノードからは、トークン（ｚ０、ｚ１、ｑ）が、下側引数合成ノードからは、トークン（ｚ１、ｑ）が、それぞれ上側ゲートノードと下側ゲートノードに伝播する。ゲートノードからは、同値ノードにおいて、”T if z0=0”が成り立ては、トークンが通過することになる。
【０１７３】
図２５は、このような図１２〜図２４で説明したデータフローグラフを展開して、ＡＮＤ／ＯＲグラフで示したグラフである。
【０１７４】
図２５において、節は、点線で囲んであり、引数は、一点鎖線で囲んである。各節では、ＡＮＤ／ＯＲグラフに展開するに当たり、変数／定数ＡＮＤノードを挿入してある。
【０１７５】
図２６は、図２５に示したＡＮＤ／ＯＲグラフを、各節の内部構造を省略しＡＮＤ／ＯＲ木として示す図である。
【０１７６】
ルート節では、クエリ変数ｑが生成され、引数となるマージノードは、ＯＲノードとして機能する。ブランチＢＲ１−１に相当する節は、葉として表現される。ブランチＢＲ２−１に相当するノードは、変数ｚ０を生成するＡＮＤノードとして機能する。
【０１７７】
（ｚ０、ｑ）を引数とする、ブランチＢＲ３−１、ブランチＢＲ３−２に相当する葉では、束縛条件が最終的に存在する（”T if ｑ=0”と、”T if ｑ=z0”）。
【０１７８】
一方、（１、ｚ０、ｑ）を引数とする、ブランチＢＲ１−２に相当する葉では、束縛条件が最終的に存在する（”T if z0=1,q=z0”）。一方、ブランチＢＲ２−２に相当する葉では、葉の上にはない（それ以前の葉において確定している）束縛（”T if z0=0”）が存在する。また、ブランチＢＲ１−２に相当する葉では、変数ｚ１が生成される。
【０１７９】
ここで、以上のような論理プログラム（すなわちＫＴＮ）の目的は、ゴール節が成り立つかどうか、もしくはゴール節の中のクエリ変数（q）が何であるかを決めることにある。このような述語論理が恒真式であるか否かを判断したり、クエリ変数を求める処理は、上述のとおり「導出」と呼ばれる。
【０１８０】
ＫＴＮの場合、この答えの抽出問題は、作られたＡＮＤ／ＯＲグラフから、条件１）変数の束縛条件が無矛盾な解を持ち（つまり単一化可能で）、条件２）木の根を真とするような部分木を求める問題に帰着される。
【０１８１】
図２７は、木探索と単一化について、ブランチＢＲ１−１に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【０１８２】
図２７に示すように、ブランチＢＲ１−１に相当する葉が、偽（Ｆ）であることから、根も、偽（Ｆ）となり、条件２が満たされないため、この部分木は、解とはなりえない。
【０１８３】
図２８は、木探索と単一化について、ブランチＢＲ３−１に相当する葉とブランチＢＲ１−２に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【０１８４】
図２８に示すように、ブランチＢＲ３−１に相当する葉の束縛条件とブランチＢＲ１−２に相当する葉の束縛条件を同時に満たすｑが存在しない、すなわち、これらの２つの葉の束縛（制約式）を連立方程式としたときの解がない（単一化不能である）ことから、条件１が満たされないため、この部分木は、解とはなりえない。
【０１８５】
図２９は、木探索と単一化について、ブランチＢＲ３−２に相当する葉とブランチＢＲ１−２に相当する葉から探索と単一化が可能であるかを判断した結果を示す。
【０１８６】
図２９に示すように、ブランチＢＲ３−２に相当する葉の束縛条件とブランチＢＲ１−２に相当する葉の束縛条件を同時に満たすｑが存在する、すなわち、これらの２つの葉の束縛（制約式）を連立方程式としたときの解が存在する（ｑ＝１）ことから、条件１および条件２が満たされないため、この部分木は、解となる。
【０１８７】
言い換えると、トークンの伝播後に、変数間の連立方程式を解くことにより演繹推論の答えが求まることになる。
【０１８８】
このような問題に対して、本実施の形態の計算処理装置１００では、「確率近接法（Probabilistic Approach 法：ＰＡ法）」という、連立方程式をネットワークを用いて、数値的・分散的に解く方法を適用する。
【０１８９】
確率近接法は求解の途中で、系図内の部分木の論理的な無矛盾性も調べていくので、これに基づき有望な枝の先を成長させるといった処理を行なっていくことにより、系図成長・真偽チェック・変数単一化を有機的に結び付けながら解の探索を行なうことができる。
【０１９０】
図３０は、このような確率近接法の概念を説明するための概念図である。
つまり、確率近接法は、連立方程式を逐次的に解く数値解法であって、「制約式を満たすためのパラメータ補正値を逆算または微分を用いて計算する」との補正値算出と、「パラメータを補正値に、近さに応じて確率的にジャンプさせる」との確率的近接とを繰り返して、逐次的に解を求める。
【０１９１】
確率近接法では、近接性を基準により制約間矛盾が小さい解候補が生き残ることで、パラメータ矛盾が次第にゼロに収束し、解が求まることになる。
【０１９２】
また、以下に説明するように、確率近接法は、逆伝播における学習（定数学習）を実行する際にも使用することができる。
【０１９３】
以下、より簡単化した例で、確率近接法の処理について説明する。
（定数学習を行なう処理）
まず、確率近接法により、定数学習をする場合を例にとって説明する。
【０１９４】
図３１は、確率近接法により、定数学習をする場合を示す概念図である。
【０１９５】
【数４】
0005904525.tif 000005
【０１９６】
ａが答えであり、ｓは、解を求める過程で試行的に代入されるセンサである。
したがって、ここでは、ａとｓとの関係が、最終的な解の関数形となるように、定数ν０およびν１の値を定める手続きを行なう必要がある。
【０１９７】
ここで、教師値セットは定数を未知数とする一群の連立方程式を与えることになる。
図３２は、上述した式（１）を表すデータフローグラフでの確率近接法の処理を示す図である。
【０１９８】
まず、定数ν０およびν１の初期値が、それぞれ、１．５および１．０であるものとする。センサとして、値１．０を用い、教師値が１．０であるものとする。データフローグラフに従って、トークンが伝播すると、解として、２．０が得られることになる。
【０１９９】
しかし、教師値が１．０であるため、まず、プラスノードから逆方向への伝播学習において、プラスがノードの上側の入力のみで、教師値となるように、この入力を調整したとしたときの値を求める。プラスがノードの下側の入力は、１．５であるから、上側の入力は、−０．５となっていれば、教師値と一致することになる。したがって、この−０．５に対して、積ノードの入力がどのようになっていればよいかを計算すると、センサが１．０であるから、定数ν１の値は、−０．５であればよいことになる。
【０２００】
一方、教師値が１．０であるため、プラスノードから逆方向への伝播学習において、プラスがノードの下側の入力のみで、教師値となるように、この入力を調整したとしたときの値も求める。プラスがノードの上側の入力は、０．５であるから、下側の入力は、０．５となっていれば、教師値と一致することになる。したがって、この０．５に対して、定数ν０の値は、ν０´：０．５であればよいことになる。
【０２０１】
この処理の後、各定数ノードでは、逆算により戻ってきた値Vと元の値νから近接性因子r=exp(-κ/4・(v-V)2)を計算しておく。
【０２０２】
以上のようにした後、たとえば定数v0を更新するためには、v0の近接性因子r0を全定数ノードの近接性因子の総和Σjrjで割った商を確率としてv0からV0への変更を行なう。
【０２０３】
定数ν１についても同様である。全ての定数でこのような確率的更新をすることにより、１度の逆伝搬で計算される補正値セットの中で、実際に定数値に反映されるのがネットワーク全体で平均１個となることが保証される。
【０２０４】
更新された定数を用いて、式（１）を書き直し、センサと教師値を用いて、さらに、順伝播と逆伝播とを繰り返す。このような繰り返しにより、最終的には、最終解となるように、定数が更新されていくことになる。
【０２０５】
（連立方程式の解を求める処理）
次に、確率近接法により、連立方程式の解を求める場合を例にとって説明する。
【０２０６】
すなわち、複数の制約を満足するように変数の値を決める問題を、確率近接法により解くことになる。
【０２０７】
例として、以下の連立方程式を解く場合を考える。
ｘ１＝ｘ０＋１    …（２）
ｘ１＝２ｘ０−１  …（３）
図３３は、このような連立方程式をデータフローグラフ（ＡＮＤ／ＯＲグラフ）を用いて、解く場合の手続きを説明するための図である。
【０２０８】
上記のような式（１）と式（２）の連立方程式を解くにあたり、初期値として（ｘ０、ｘ１）＝（０，０）とする。
【０２０９】
まず、データフローグラフで、ノードｘ０の側を通って、上側の同値ノード３００には、”１”と”０”とが入力する。無矛盾とするためには、先ほどの定数学習の場合と同様に、上側の入力の変更だけで無矛盾とするためには、値は”０”に変更する必要があり、下側の入力の変更だけで、無矛盾とするためには、値は”１”としなければならない。そこで、上側の同値ノード３００については、２つの無矛盾なトークンペア（０，１）ａと、（１，１）ｂとが生成される。ここで、トークンについての（ｘ、ｒ）ｙとは、ｘがトークンの値であり、ｒは、この値ｘの信頼度であり、ｙは、このトークンについての識別子である。この場合、識別子は、グラフ中の点ａ，ｂ，ｃ，ｄのいずれの点であるかに相当しているが、実際には、トークンを識別可能な識別子であれば、何でもよい。
【０２１０】
また、同値ノードにおいては、無矛盾なのであるから、信頼度は、１としている。
下側の同値ノード３０２についても、同様である。
【０２１１】
図３４は、このように、同値ノード３００または３０２で生成されたトークンを逆伝播させた場合の処理を説明する図である。
【０２１２】
まず、ｘ０ノードは、ＡＮＤノードであり、このノードに入力する逆伝播したトークンは、それぞれ、（−１，１）ａ，（０，１）ｂ，（０．５，１）ｃ，（０，１）ｄとなる。そこで、このＡＮＤノードまで逆伝播したトークンのＡＮＤノードからの出力数についての組み合わせをすべて考える。つまり、トークンの識別子の組み合わせでは、ａｃ，ａｄ，ｂｃ，ｂｄとなる。このような組合せによって生じるトークンの個数は、規模の大きな連立方程式の場合、変数の個数、制約式の個数とともに発散的に増加することが予想されるが、そのような場合、確率近接法では、後に述べる確率的選択を、組合せを行なう前のトークンに施すことにより、適宜トークン数を抑える処理が行なわれる。
【０２１３】
以上のようにして組み合わせたトークンについて、数値と信頼度は、以下の式にしたがって、計算する。
【０２１４】
【数５】
0005904525.tif 000006
【０２１５】
(Randomly chosen xi)は、組み合わせるｘからランダムに取られた１個を意味する。
Ｖａｒｉは、組み合わせるｘについての分散を意味し、κは所定の定数である。これによって計算される信頼度（近接性因子）は、組み合わせる変数の値が一致していれば、分散は０であって、信頼度は１となる。標準偏差が大きくなるほど、信頼度は小さくなる。
【０２１６】
たとえば、組み合わせａｃについては、（ｘ、ｒ）は、（０．５，０．５５）ａｃとなる。他の組み合わせについても、同様である。
【０２１７】
また、ノードｘ１についても同様に逆伝播したトークンのすべての組み合わせについて、（ｘ、ｒ）を算出できる。
【０２１８】
さらに、ノード（ｘ０，ｘ１）では、ノードｘ０とノードｘ１からの逆伝播として、トークンの各識別子について、最終的な逆伝播した結果のトークンのシンボル（ｘ０，ｘ１，ｒ）を計算できる。ここで、この場合の信頼度ｒは、組み合わせる２つのトークンの信頼度の最小値である。
【０２１９】
結果として、図３４に示すように、４つのトークンが最終的に得られるので、各信頼度を信頼度の総和Σrで割った商r/Σrを確率として選択を行なう。図の例では最も信頼度の高いものの一つである（０，０，０．７７）ｂｃが選択されている。
【０２２０】
次には、このトークン（０，０，０．７７）ｂｃを初期値として、順伝播と逆伝播とを繰り返す。
【０２２１】
このような手続きを繰り返すことで、最終的には、式（２）と式（３）の解が得られる。
【０２２２】
図２９で説明したとおり、ＫＴＮにおいて、葉の束縛条件において、連立方程式の解が存在するような部分木が、ＫＴＮの推論の解なのであるから、より複雑なトポロジーのネットワークであっても、本質的には、同様の手続きにより、解となる部分木を探索することができる。
【０２２３】
図３５は、図１２等のデータフローグラフを展開したＡＮＤ／ＯＲグラフについて、ｑの初期値を０．５、ｚ０の初期値も０．５として順伝播させた場合のトークンのシンボル（ｘ、ｒ）を示す図である。
【０２２４】
図３６は、図３５の状態から逆伝播を行なった状態を示す図である。
ｚ０の値が更新されていることがわかる。
【０２２５】
一方、節が未確定のため正r 値のトークンが来ない枝である「未定枝」が存在することもわかる。
【０２２６】
図３７は、図３６において「拡大図１」で示した部分の拡大した図である。
逆伝播では、以下のことがいえる。
【０２２７】
ｉ）信頼度は、同値ノードを介して継承される。
ｉｉ）同値ノードでは、固有のＩＤを持つ「無矛盾な」トークンペアが生成される。
【０２２８】
ｉｉｉ）論理積ノードでは、図３４で説明したとおり、トークンの組み合わせについての演算を行なう（「トークンを反応させる」という）。
【０２２９】
ｉｖ）定数ノードでは、ｘ値が定数ノードと符合するトークンだけを通過させる。
ｖ）引数分解ノードでは、ＩＤを共有するトークンを組み合わせる。このとき、信頼度は、組み合わせるトークンの信頼度の最小値とする。
【０２３０】
図３８は、図３６において「拡大図２」で示した部分の拡大した図である。
逆伝播では、以下のことがいえる。
【０２３１】
ｖｉ）ＯＲノードはトークンをカンマ記号（ORを意味する）で繋ぎ、通過させる。
ｖｉｉ）ＯＲで繋がれたトークンが多くなり過ぎる場合は、信頼度ｒを用いた確率的選択を行なって、rが小さいトークンを間引く。
【０２３２】
図３９は、図３６の逆伝播の状態から、初期値を更新した上で、再度、順伝播を行った状態を示す図である。
【０２３３】
図４０は、図３９の状態から、さらに、逆伝播を行なった状態を示す図である。
ｑおよびｚ０は、さらに更新されて、ともに１となっている。
【０２３４】
このような処理を繰り返すことにより未定変数に到着するトークンの値は次第にｑ＝ｚ０＝１、ｒ＝１に収束し、単一化が近似的に解けることになる。
【０２３５】
図４１は、教師ありで定数を学習させる方法について説明するための図である。
以上の説明からも明らかなように、確率近接法は、変数決定（演繹）をしながらの定数補正（学習）を可能にする方法である。したがってKTNにおいても、教師値を用いて確率近接し、その途上で算出される補正値を用いて、定数値を改めることにより、根ができるだけ真になるような補正を行なうことができる。この学習処理により、データフローグラフの中に埋め込まれたいくつかの定数についても、問題としてそれが変化することが許されるようなものについては、より最適な値へと近づけることが可能である。
【０２３６】
図４２は、トポロジーを改変処理する場合の概念を説明する図である。
たとえば、順伝播と逆伝播の所定の回数ごとに、または、乱数が所定の値を超える場合など、特定の頻度で、ランダム生成された節をデータフローグラフに加える改変を行なうことができる。
【０２３７】
また、展開されたデータフローグラフ上で、確率近接法の複数の試行において、所定回数以上、偽枝を生成する節については、削除することも可能である。
【０２３８】
このような処理により、初期的な論理プログラムに対して、対応するデータフローグラフのトポロジーを変化させながら、より教師値に近い結果を生成する論理プログラムを生成することができる。
【０２３９】
あるいは、論理推論に必ずしも意義を有さない枝を削除することで、教師値の結果を維持しつつ、より簡単なトポロジーを有するデータフローグラフで表現される論理プログラムを生成することができる。
【０２４０】
図４３は、演算部２２０が実行する処理を説明するためのフローチャートである。
図４３を参照して、演算部２２０の処理がスタートすると、述語論理で表現された初期知識に相当するデータフローグラフ（DFG）を、ネットワーク作成部２２２が用意する（ステップＳ１０２）。
【０２４１】
続いて、ネットワーク作成部２２２が、与えられたクエリ／教師値に相当する部分グラフをDFGに追加する（Ｓ１０４）。
【０２４２】
さらに、計算実行部２２６が、DFG上でシンボル・トークンを順伝搬し、 展開DFGを未定枝の先で１段成長させる（Ｓ１０６）。図１２〜２４に示されたように、シンボル・トークンはたいていの場合DFG上を循環的に回ることになるが、このＳ１０６の処理が最初呼ばれた場合は、Beginの発火から始まるシンボル・トークンの伝搬を循環１回まで実行することに、またそれ以後に呼び出された場合は、未定枝の先で止まっているシンボル・トークンの伝搬をさらに循環１回分進めることになる。
【０２４３】
次に、計算実行部２２６が、変数地を初期化して（Ｓ１０８）、数値トークンを順伝播させる（Ｓ１１０）。
【０２４４】
次に、計算実行部２２６が、数値トークンを逆伝搬させる（Ｓ１１２）。
根にトークンが逆伝播により戻っている場合、続いて、変数の辻褄があっているか、言い換えると、戻ったトークンの信頼度ｒが、信頼度１に対して所定の範囲で一致しているかが計算実行部２２６により判断される（Ｓ１２２）。
【０２４５】
変数の辻褄が合わない場合、計算実行部２２６により、ループ回数が所定の回数をオーバーしたかが判断され、オーバーしていなければ、処理はステップＳ１１０に戻る。
【０２４６】
一方、ループ数が所定回数をオーバーしている場合（Ｓ１１６）、未定枝があるかを計算実行部２２６が、判断し、未定枝があれば、ネットワーク更新部２２８が偽枝を刈り取り（Ｓ１２０）、処理はステップＳ１０６に復帰する。
【０２４７】
一方、Ｓ１１８で見え家だがなければ、演算の答え（偽）を出力し（Ｓ１３０）、ネットワーク更新部２２８がデータフローグラフのトポロジーを、節の生成または削除により改変する（Ｓ１２６）。
【０２４８】
Ｓ１２２で変数の辻褄があっていれば、演算の答え（ｑまたは真）を出力し、処理はステップＳ１２６へ移行する。
【０２４９】
ステップＳ１２６の処理が終了すると、新しいクエリまたは教師値があるかを計算実行部２２６が判断し、存在すれば処理は、処理はステップＳ１０４に復帰し、存在しなければ、処理は終了する（Ｓ１３２）。
【０２５０】
以上のような処理により、ＫＴＮによる論理推論・学習には、以下のような効果がある。
【０２５１】
（i）知識が脳やニューラルネットワークと同じ静的なグラフによって表現される。このこと自体に計算上の優位性が必ずしも存在するとはいえない。しかし、ＡＩの究極的な目標が人間に匹敵するような知能を作ろうとするものであること、また最近進歩が著しい人間の脳の非侵襲計測技術から得られる生理学的なデータとの将来における比較の可能性等を考えた時、脳と数学的に同じアーキテクチャで知識を表現することには大きな意味がある。
【０２５２】
（ii）系図作成、単一化といった一連の演繹・学習処理の素過程が、グラフ上のトークン伝搬によって実現される。従ってこれらを実装するKTNの実行プログラムは、並列／分散マシン上へ移植することにより大きな効率アップが期待できる。
【０２５３】
（iii）演繹では、ゴール節を元に探索を行なう後向き推論を行なう。従って深い推論の場合でも探索の範囲を絞り込むことが可能で、事実を無闇に生成する前向き推諭よりも効率がいい。
【０２５４】
（iv）知識を表わすネットワーク上で、各シンボルは連続実数で表わされ、またそれに加え、最終解が信頼度rとともに提示されることにより、知識のあいまい性が表現されている。これは、確率論理プログラミングで行なわれるルールの重み付けとは異なる方法による知識のあいまい性表現である。
【０２５５】
（v）述語論理中の変数がネットワーク上で識別子を用いて明示的に扱われており、これにより、述語論理を命題論理化してグラフ化する他のアプローチに較べて、コンパクトな規模のグラフによる汎用の知識表現を実現している。またグラフに対するトポロジー変更（知識改変学習）では、新しいノード（述語）の生成や論理構造の変更も行なえる枠組みを提供している。
【０２５６】
なお、以上の説明では、確率近接法のための補正値の算出には、すべて逆算を用いることとした。しかしながら、特許文献１の国際公開２０１０／０４７３８８号公報にも開示されているように、ネットワーク上の逆伝搬を用いると、演算結果＜ｘ＞、正しい結果（教師値）と演算結果との差に基づいて定まるエネルギー誤差Ｅ、エネルギー誤差Ｅの微係数Ｄｘ、Ｄｒを計算することができ、それを用いると、補正値は、テイラー展開の１次の範囲で近似計算することも可能である。
【０２５７】
図５１は、このような微係数を計算する場合の手続きを示す概念図である。
図中のxはある任意のノードの現在の値を示し、ネットワークから出力される答えaはこの関数としてa＝G(x)と書かれるものとする。今このxが仮にxTに補正されることでネットワークの答えが教師値tになって欲しいとすると、その要請はt＝G(xT)のように書ける。この２つの式を辺々引いて、エネルギー誤差の定義式E＝1/2(t-a)2を用いて変形すると、最終的にxTは、現在のノード値x、エネルギー誤差E、微係数Dxを使って、xT＝x-2E/Dxのように書かれる。確率近接法のための補正値は、この式を用いて計算することも可能である。
【０２５８】
また、対象となるプログラムは論理プログラムであるとしたが、特許文献１の国際公開２０１０／０４７３８８号公報にも開示されているように、算術演算および論理演算を行なうプログラムのソースコードをＧＩＭＰＬＥ形式の中間コードへ変換し、中間コードをネットワークに変換することにより得られるＡＴＮに対して、確率近接法による逆伝播学習を行なうことも可能である。
【０２５９】
以上の説明では、概念的な処理を中心として説明したが、本実施の形態の効果が最も発揮される利用例としては、たとえば、受注仕様からの製造条件決定問題などが想定される。
【０２６０】
鉄鋼鋼板の製造の現場では、JTS規格、用途、板厚等の受注仕様データから、適切な製造条件を決めるという問題がある。受注仕様は離散的な記号、もしくは連続的な数値が並んだ数百項目にのぼるリストであり、これをもとに製造条件として、あらかじめ用意された数百の条件（数百個の異なるシンボル）の中から適切なものがただ一つ選ばれる必要がある。現在現場でこの問題は、熟練した作業員が手作業で行なっているが、判定結果が人によって異なる、ルールが精密に明文化できないといった理由のため大雑把なマニュアル（作業書）しか作れず、スキルの伝承が難しく、マニュアル自体の改善も行なえない等の問題を抱えている。
【０２６１】
過去この問題に対しての研究として、 ID３（Iterative Dichotomiser ３）という、仮説に基づき分類決定木を生成する方法が適用された例がある。しかしながら、蓄積された約２９,０００件の判定データから合成された約３千リーフの分類木による判定結果は、熟練者の結果の約８０%を再現するに留まった。これはID３が、前述した機械学習の問題点−記号の持つ離散性と事例情報の持つあいまい性やノイズとの間のギャップの問題−を抱えていることに起因している。別に試した直近のデータに割り当てる方法の方がむしろ正答率は高かったが、この方法ではもちろんマニュアル化には繋げられない。
【０２６２】
この間題は、陰のルールを“if（受注仕様） then （製造条件）”、もしくは（製造条件）←（受注仕様）として書くことができるもので、論理プログラムで知識を表現するのに好適な問題である。論理プログラムで表現された知識を  あいまい性を考慮しながら演繹・学習を行なう方法には、本発明（KTN）とペイジアンネットワークが考えられるが、変数を明示的に扱うKTNで記述する方が出来上がった知識に汎用性があり、マニュアル化も容易である。またグラフの規模自体も、受注仕様の各項目で定数化されたノードを用意しなければならないペイジアンネットワークより小さくできる可能性がある。
【０２６３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２６４】
１００  計算処理装置、１０２  コンピュータ本体、１０４  モニタ、１０５  バス、１０６  ドライブ、１０８  光ディスクドライブ、１１０  キーボード、１１２  マウス、１１８  ＲＯＭ、１２２  メモリ、１２４  ハードディスク、１２８  通信インターフェイス、１３１  初期プログラム、１３２  ネットワーク作成プログラム、１３３  ネットワーク修正プログラム、１３４  ネットワーク情報、１３５  ノード演算定義、１３６  学習情報、２１０  入力部、２２０  演算部、２２２  ネットワーク作成部、２２４  形式変換部、２２６  計算実行部、２２８  ネットワーク更新部、２２８ａ  トポロジー学習部、２３０  出力部、２４０  記憶部、３００，３０２  同値ノード、ＢＲ１  第１ブランチ、ＢＲ２  第２ブランチ、ＢＲ３  第３ブランチ。
【図１】
0005904525.tif 000007
【図２】
0005904525.tif 000008
【図３】
0005904525.tif 000009
【図４】
0005904525.tif 000010
【図５】
0005904525.tif 000011
【図６】
0005904525.tif 000012
【図７】
0005904525.tif 000013
【図８】
0005904525.tif 000014
【図９】
0005904525.tif 000015
【図１０】
0005904525.tif 000016
【図１１】
0005904525.tif 000017
【図１２】
0005904525.tif 000018
【図１３】
0005904525.tif 000019
【図１４】
0005904525.tif 000020
【図１５】
0005904525.tif 000021
【図１６】
0005904525.tif 000022
【図１７】
0005904525.tif 000023
【図１８】
0005904525.tif 000024
【図１９】
0005904525.tif 000025
【図２０】
0005904525.tif 000026
【図２１】
0005904525.tif 000027
【図２２】
0005904525.tif 000028
【図２３】
0005904525.tif 000029
【図２４】
0005904525.tif 000030
【図２５】
0005904525.tif 000031
【図２６】
0005904525.tif 000032
【図２７】
0005904525.tif 000033
【図２８】
0005904525.tif 000034
【図２９】
0005904525.tif 000035
【図３０】
0005904525.tif 000036
【図３１】
0005904525.tif 000037
【図３２】
0005904525.tif 000038
【図３３】
0005904525.tif 000039
【図３４】
0005904525.tif 000040
【図３５】
0005904525.tif 000041
【図３６】
0005904525.tif 000042
【図３７】
0005904525.tif 000043
【図３８】
0005904525.tif 000044
【図３９】
0005904525.tif 000045
【図４０】
0005904525.tif 000046
【図４１】
0005904525.tif 000047
【図４２】
0005904525.tif 000048
【図４３】
0005904525.tif 000049
【図４４】
0005904525.tif 000050
【図４５】
0005904525.tif 000051
【図４６】
0005904525.tif 000052
【図４７】
0005904525.tif 000053
【図４８】
0005904525.tif 000054
【図４９】
0005904525.tif 000055
【図５０】
0005904525.tif 000056
【図５１】
0005904525.tif 000057