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

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

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人京都大学の特許一覧

特開2022-117195論理プログラム推定装置、論理プログラム推定方法、及びプログラム
<>
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図1
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図2
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図3
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図4
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図5
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図6
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図7
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図8
  • 特開-論理プログラム推定装置、論理プログラム推定方法、及びプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022117195
(43)【公開日】2022-08-10
(54)【発明の名称】論理プログラム推定装置、論理プログラム推定方法、及びプログラム
(51)【国際特許分類】
   G06N 5/04 20060101AFI20220803BHJP
   G06N 7/00 20060101ALI20220803BHJP
【FI】
G06N5/04
G06N7/00 150
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021013767
(22)【出願日】2021-01-29
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504132272
【氏名又は名称】国立大学法人京都大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】西野 正彬
(72)【発明者】
【氏名】山本 章博
(72)【発明者】
【氏名】新藤 光
(57)【要約】
【課題】帰納論理プログラミングにおいて、関数記号を含む論理プログラムを訓練例から効率的に学習可能とする。
【解決手段】ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する論理プログラム推定装置において、前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成する生成部と、前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する学習処理部と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する論理プログラム推定装置であって、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成する生成部と、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する学習処理部と、
を備える論理プログラム推定装置。
【請求項2】
前記生成部は、前記訓練例の中の正例のうち、候補確定節により導出できる正例の総数に基づくスコアを用いて候補確定節の絞り込みを行って、前記候補確定節集合を生成する
請求項1に記載の論理プログラム推定装置。
【請求項3】
前記生成部は、前記訓練例を参照して、前記訓練例の導出に必要なグラウンドアトムのみを列挙することにより、前記グラウンドアトム集合を生成する
請求項1又は2に記載の論理プログラム推定装置。
【請求項4】
前記生成部は、指数関数の和の演算を実行することにより、tステップの前向き推論で得られた評価ベクトルから、t+1ステップ目の評価ベクトルを算出する
請求項1ないし3のうちいずれか1項に記載の論理プログラム推定装置。
【請求項5】
前記パラメータ集合において、前記候補確定節集合の要素数次元のベクトルが、求める対象の前記論理プログラムに含まれる確定節の数だけ存在する
請求項1ないし4のうちいずれか1項に記載の論理プログラム推定装置。
【請求項6】
前記パラメータ集合に基づいて、推定結果となる論理プログラムを出力する出力部、
を更に備える請求項1ないし5のうちいずれか1項に記載の論理プログラム推定装置。
【請求項7】
ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する論理プログラム推定装置が実行する論理プログラム推定方法であって、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成する生成ステップと、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する学習処理ステップと、
を備える論理プログラム推定方法。
【請求項8】
コンピュータを、請求項1ないし6のうちいずれか1項に記載の論理プログラム推定装置における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、与えられた正例と負例から、正例を導出できて、かつ負例を導出しないような規則の集合を見つけ出すための機械学習手法である帰納論理プログラミングに関するものである。
【背景技術】
【0002】
一階述語論理を用いて記述された規則の集合のことを論理プログラムと呼ぶ。帰納論理プログラミングとは、訓練データである正例の集合と負例の集合とが与えられたときに、全ての正例が論理的帰結とし、かついずれの負例も論理的帰結としないような規則の集合(論理プログラム)を推定する、機械学習手法の一種である。
【0003】
一般の機械学習手法と比較した際の帰納論理プログラミングの最大の特徴は、推定される機械学習モデルが論理プログラムとして与えられる点にある。論理プログラムは一階述語論理で記述された論理式(確定節)の集合であるため、可読性が高く、また他の論理プログラムと組み合わせたり、人手で学習結果を修正することが容易であるという特徴がある。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Richard Evans and Edward Grefestette,"Learning Explanatory Rules from Noisy Data", Journal of Artificial Intelligence Research, Vol 61, pp 1 - 64, 2018.1
【発明の概要】
【発明が解決しようとする課題】
【0005】
帰納論理プログラミングの欠点として、訓練データに含まれる誤りやノイズに対応できないという点が挙げられる。帰納論理プログラミングは矛盾のない論理プログラムを求める手法であるため、ノイズや誤りがあると正しく論理プログラムを推定することができない。
【0006】
非特許文献1に開示された∂ILPは、このような帰納論理プログラミングの欠点を克服するために考案された機械学習手法である。帰納論理プログラミングにおいて訓練例から論理プログラムを推定する代わりに、∂ILPでは損失関数の値を最小とするような論理プログラムに付与された実数値のパラメータを求めることで、訓練例と適合するような論理プログラムを求める。
【0007】
また、∂ILPにおける学習にはニューラルネットワークの学習で広く用いられている微分に基づくパラメータ推定手法を用いることで、効率的な学習を実現している。∂ILPを用いると、訓練例に誤りやノイズが含まれるような場合であっても、妥当な論理プログラムを推定することが可能である。
【0008】
しかしながら、∂ILPで扱う論理プログラムには関数記号を用いることができないため、学習可能なプログラムの形状が制限されるという課題があった。∂ILPにおいて関数記号を含むようなプログラムを学習させようと考えると、計算モデルのサイズ及びモデルを使った推定の計算量が爆発的に増加するため、現実的な問題において学習を実現できないという課題があった。
【0009】
本発明は上記の点に鑑みてなされたものであり、帰納論理プログラミングにおいて、関数記号を含む論理プログラムを訓練例から効率的に学習可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
開示の技術によれば、ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する論理プログラム推定装置であって、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成する生成部と、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する学習処理部と、
を備える論理プログラム推定装置が提供される。
【発明の効果】
【0011】
開示の技術によれば、帰納論理プログラミングにおいて、関数記号を含む論理プログラムを訓練例から効率的に学習可能とする技術が提供される。
【図面の簡単な説明】
【0012】
図1】本発明の実施の形態における論理プログラム推定装置の構成図である。
図2】論理プログラム推定装置のハードウェア構成例を示す図である。
図3】論理プログラム推定装置の動作を説明するためのフローチャートである。
図4】計算グラフ構築処理を示すフローチャートである。
図5】アルゴリズム1を示す図である。
図6】アルゴリズム1における処理の流れを示すフローチャートである。
図7】アルゴリズム2を示す図である。
図8】アルゴリズム2における処理の流れを示すフローチャートである。
図9】vを算出する処理の流れを示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0014】
(実施の形態の概要)
本実施の形態では、後述する論理プログラム推定装置が、ある概念についての正例と負例からなる訓練例から、当該概念を表す、関数記号を含む論理プログラムをデータから微分操作によって推定する。そのために、本実施の形態では、既存手法である∂ILPに比べて計算を効率化している。具体的には、推定する対象の論理プログラムに含まれ得るdefinite clause(確定節)を探索する際にビーム探索に基づく探索を実行することで、余分な探索の実行を避けて計算量を削減する。また、学習の途中で必要となるGround atomの列挙において、訓練例を参照することによって不必要なatomの列挙を避ける。最後に、訓練例から計算グラフを作成する際に、新たな選択演算(後述するsoftor)を導入することによって、∂ILPにおいて課されていた節の形式に関する制約事項を回避する。
【0015】
以上の三つの処理を含む処理を実行する論理プログラム推定装置により、関数記号を含む論理プログラムを微分操作によって訓練例から効率的に学習可能としている。
【0016】
(記号、用語の説明)
論理プログラム推定装置の構成と動作について説明する前に、まず、本実施の形態の説明で用いる記号や用語について説明する。
【0017】
n個の引数を取る述語pをp/nと表す。同様に、n個の引数を取る関数記号fを、f/nと表す。定数、変数、あるいはn‐引数の関数記号fと項t,...,tを用いて構成される表現f(t,...,t)をterm(項)と呼ぶ。
【0018】
n‐引数の述語記号pとtermt,...,tからなる表現p(t,...,p)をatom(アトム)と呼ぶ。変数を含まないatomをfactもしくはground atom(グラウンドアトム)と呼ぶ。あるatom a、もしくはaに否定演算子
【0019】
【数1】
を作用させて得られる
【0020】
【数2】
をliteral(リテラル)と呼ぶ。atomのみからなるliteralをpositive literalと呼び、atomに否定演算子を作用させたliteralをnegative literalと呼ぶ。有限個のliteral l,...,lを選言記号(∨)で連結した式l∨l∨・・・∨lをcluase(節)と呼ぶ。positive literalを常に1つのみ含むclauseをdefinite clause(節)と呼ぶ。A,B,...,Bがそれぞれatomであるとき、
【0021】
【数3】
はdefinite cluaseである。以下ではdefinite cluaseをA←B1∧・・・Bと書く。definite cluaseのatom Aをhead、B,...,Bをbodyと呼ぶ。
【0022】
上記のA←B1∧・・・Bは、もしも右側の全てのatomがtrueであれば、左側のatomもtrueであることを示す規則(ルール)である。
【0023】
論理プログラムはdefinite cluaseの集合として表現される。例えば、下記のdefinite cluaseの集合(2つのdefinite cluase)は論理プログラムである。
【0024】
connected(X,Y)←edge(X,Y)
connected(X,Y)←edge(X,Z),connected(Z,Y)
上記の論理プログラムにおいて、X、Y、Zは変数であり、edge、connectedは述語記号であり、connected(X,Y)、edge(X,Y)、connected(Z,Y)はatomである。上記の論理プログラムは、「connected」という述語(概念)が、2つのdefinite cluaseで定義されることを示している。
【0025】
真を表す記号としてT(明細書のテキストでは、記載の便宜上、アルファベットの"T"を、真を表す記号として使用している)を用い、偽を表す記号として⊥を用いる。cluase Cに含まれる変数の集合をV(C)とし、Cに含まれる異なる変数のn個の組み合わせの集合をDV(C)とする。述語記号の集合をP、関数記号の集合をF、定数の集合をA、変数の集合をVとしたときに、L=(P,F,A,V)を言語と呼ぶ。
【0026】
θ={x=t,x=t,・・・,x=t}は、変数xをterm tに置き換える代入と呼ぶ。代入θをatom Aに適用することをAθと書く。atom,literal,termの集合A,...,Aと代入θに対して、Aθ=Aθ=・・・Aθであるときに、代入θのことをA,...,Aのunifierと呼ぶ。また、A,...,Aを引数として受け取り、それらに対するunifierが存在するときにunifier θを出力する関数θ=σ(A,...,A)をunification functionと呼ぶ。σ(A,...,A)は、A,...,Aにunifierが存在するときに真、そうでないときに偽を返す関数である。なお、文字の上(頭部)に置かれる""を明細書のテキストでは当該文字の前に記載している。"σ"はその例である。
【0027】
帰納論理プログラミングの問題Qは、集合Q=(ε,ε-,B,L)として表現される。εは正例の集合、ε-は負例の集合、Bは背景知識、Lは言語である。ここで、ε,ε-に使用しているεに関して、本明細書における挿入画像による数式では、"E"の別書体を使用しているが、明細書のテキストでは、記載の便宜上、"ε"を使用している。
【0028】
以下では正例、負例、背景知識はそれぞれground atomの集合として表現されるものと仮定する。帰納論理プログラムの問題Qの解は、言語Lに含まれる述語記号、定数、変数、関数記号からなるdefinite cluaseの集合Hであり、
【0029】
【数4】
【0030】
【数5】
を満たすものとする。式(1)及び式(2)は、与えられた背景知識Bにおいて、definite cluaseの集合Hにより、各正例を導出できて、いずれの負例も導出できないことを意味する。
【0031】
帰納論理プログラムの問題を解く際には精密化演算子が用いられる。精密化演算子ρ(C)は、clauseを引数にとり、それに対して精密化演算を実行して得られるclauseの集合を出力する。なお、一般には精密化演算によって得られるclauseはもとのclauseの特殊系である。すなわち、あるclause Cに対して精密化演算子を適用することで得られるclauseをC´とすると、あるfact Aが
【0032】
【数6】
であるならば、
【0033】
【数7】
である。
【0034】
例えばC=p(x,y)(pは述語記号,x,yは変数)とすると、ρ(p(x,y))={p(0,y),p(x,0),p(x,x),p(f(z),y),p(x,f(z))}は精密化演算子の例である。
【0035】
なお、本明細書における挿入画像及び図面の数式においては、大文字のCはclauseを示し、書体の異なるCはclauseの集合を示しているが、本明細書のテキストにおいては、記載の便宜上、大文字のCはclauseを示し、小文字のcはclauseの集合を示すものとする。
【0036】
同様に、挿入画像及び図面の数式においては、大文字のGはground atomを示し、書体の異なるGはground atomの集合を示しているが、本明細書のテキストにおいては、記載の便宜上、大文字のGはground atomを示し、小文字のgがground atomの集合を示すものとする。
【0037】
(装置構成例)
図1は、本実施の形態における論理プログラム推定装置100の構成図である。図1に示すように、本実施の形態における論理プログラム推定装置100は、入力部110、計算グラフ生成処理部120、学習処理部130、学習結果出力部140、及び記憶部150を有する。なお、計算グラフ生成処理部120を生成部と呼び、学習結果出力部140を出力部と呼んでもよい。各機能部の概要は下記のとおりである。
【0038】
入力部110は、外部から訓練例の集合ε,ε、背景知識B、言語L、及び精密化演算子を受け取る。また、入力部110は、計算グラフ生成処理部120、学習処理部130、及び学習結果出力部140の計算処理において必要な情報(パラメータ、初期データ集合等)も外部から受け取る。計算グラフ生成処理部120は、入力部110から入力された入力情報をもとに、機械学習モデルの計算グラフを生成する処理を実行する。
【0039】
学習処理部130は、計算グラフ生成処理部120によって生成された計算グラフ(具体的には、後述するv=finfer(X,v,W,T))を用いて、訓練例から機械学習モデルのパラメータを推定する処理を実行する。学習結果出力部140は、学習処理部130における計算の結果をもとにして、入力された訓練例と背景知識に対して、帰納論理プログラムの問題の解となるdefinite clauseの集合Hを出力する。記憶部150は、入力情報、各機能部の計算結果等を格納する。各機能部は、記憶部150に格納されている情報を読み出して、当該情報に対して処理を実行する。
【0040】
(ハードウェア構成例)
本実施の形態における論理プログラム推定装置100は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。
【0041】
上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0042】
図2は、上記コンピュータのハードウェア構成例を示す図である。図2のコンピュータは、それぞれバスBSで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。
【0043】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0044】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、論理プログラム推定装置100に係る機能を実現する。インタフェース装置1005は、ネットワークに接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。
【0045】
(論理プログラム推定装置100の全体動作)
論理プログラム推定装置100の全体動作に係る処理の流れについて図3のフローチャートを参照して説明する。
【0046】
S100において、入力部110は、外部から訓練例、背景知識、精密化演算子等の以降の計算に必要な情報を入力し、入力された情報を記憶部150に格納する。
【0047】
次に、S200において、計算グラフ生成処理部120は、記憶部150から入力情報を読み出し、入力情報に基づいて計算グラフの生成処理を行う。生成された計算グラフは記憶部150に格納される。計算グラフの生成のための処理の詳細については後述する。
【0048】
S300において、学習処理部130は、記憶部150から計算グラフを読み出し、当該計算グラフを用いてパラメータ推定処理を行う。処理の詳細については後述する。
【0049】
S400において、学習結果結果出力部140は、学習処理部130による計算結果をもとにして、definite cluaseの集合Hを外部に出力する。
【0050】
(S200:計算グラフ生成処理の詳細)
S200で実行される計算グラフ生成処理部120による計算グラフ生成処理について、図4のフローチャートを参照して説明する。
【0051】
<S201>
S201において、計算グラフ生成処理部120は、解の候補となるdefinite clauseの集合cを構築する。帰納論理プログラムの問題の解はH⊆cを満たすとする。
【0052】
S201で実行する処理に対応するアルゴリズム1を図5に示す。なお、本実施の形態における「アルゴリズム」は、コンピュータにより実現される論理プログラム推定装置100が実行するプログラムに相当する。
【0053】
図5においてRequireとして示されているアルゴリズム1への入力のうち、cは初期状態のclauseの集合であり、Nbeamはビームサーチにおけるビームのサイズを表す非負整数であり、Tbeamはビームサーチのステップ数を表す非負整数である。それぞれの値は予め設定しておく。例えば、実験を行って、適切な値を決定し、それを用いてもよい。
【0054】
計算グラフ生成処理部120は、アルゴリズム1により、ビームサーチによって、初期のClauseの集合cに精密化演算子を適用することによって得られるclauseのうち、εに含まれるfactを論理的帰結として導出可能なものを求める。
【0055】
以下の説明では、図5に示すアルゴリズム1における行番号を「ステップ」として説明する。まず、図6を参照してアルゴリズム1による処理の流れを説明する。アルゴリズム1において、ステップ5、6、8、12は、繰り返しに関する処理であり、図6では、これらのステップに関わる処理を、演算処理を示すブロックの外部に「繰り返し」として示している。
【0056】
ステップ1~4において変数の初期化を行う。ステップ9(score=eval(R,Q)とステップ10(cbeam=insert(R,score))は、ρ{C}の各要素Rに対して繰り返し実行される。
【0057】
ステップ9~10の繰り返しを含むステップ7~10は、cto_openの各要素Cに対して繰り返し実行される。ステップ7~10の繰り返しを含むステップ7~11は、t<Tbeamの間、tをインクリメントしながら繰り返し実行される。ステップ13において、cを返す。
【0058】
図5を参照して、アルゴリズム1をより詳細に説明する。ステップ1において、計算グラフ生成処理部120は、cto_openをcで初期化する。cto_openはclauseの集合であり、この集合に含まれるclauseに対して選択的に精密化演算子を適用することで新しいclauseを得る。ステップ2において、計算グラフ生成処理部120は、cbeamを空集合で初期化する。cbeamはビームサーチの各ステップで新たに生成されたclauseとそのclauseの評点(score)の集合を表す。ステップ3において、計算グラフ生成処理部120は、cを空集合で初期化するcはアルゴリズム1で最終的に出力するclauseの集合を表す。
【0059】
ステップ4において、計算グラフ生成処理部120は、ステップ数を表すパラメータtを0で初期化する。ステップ5において、tがTbeam未満かどうかをチェックし、条件を満たすならばステップ6に移行する。ステップ6では、計算グラフ生成処理部120は、cto_openに含まれるclauseを一つ取り出す。取り出したclauseをCとする。
【0060】
ステップ7において、計算グラフ生成処理部120は、Cをcに追加する。ステップ8において、計算グラフ生成処理部120は、Cに精密化演算子を適用して得られるclauseの集合ρ(C)から、clauseを一つ取り出しRとする。
【0061】
ステップ9において、計算グラフ生成処理部120は、eval(R,Q)を実行することで、clause Rのスコアscoreを計算する。eval(R,Q)は以下のように定義される。
【0062】
【数8】
すなわち、eval(R,Q)は、{R}∪B|=Eとなるような訓練例E∈εの総数を計算することを意味する。つまり、eval(R,Q)はRにより導出できる正例の総数を計算することを意味する。あるEについてB∪{R}|=Eかどうかの判定は、一階述語論理における推定規則を用いることで実行可能である。
【0063】
ステップ10において、計算グラフ生成処理部120は、Rとscoreの組をcbeamに挿入する。計算グラフ生成処理部120は、全てのR∈ρ(C)についてステップ9~10の処理を実行した後、Cを更新してステップ7~10の処理を繰り返す。
【0064】
計算グラフ生成処理部120は、全てのC∈cto_openについて処理を終了したならば、ステップ11でcbeamに含まれるclauseのうち、scoreの値が大きな順にNbeam個取り出したものをcto_openとする。つまり、scoreを用いて候補の絞り込みを行う。
【0065】
計算グラフ生成処理部120は、ステップ12でtをt+1に更新してステップ5に戻り、すべてのt<Tbeamについて計算したら、cを出力して処理を終了する。
【0066】
このclause集合生成手順は、既存の∂ILPで用いられているclauseの集合を生成する手法と比較すると、正例の集合εをeval関数において用いることによって、帰納論理プログラムの解に含まれる可能性が高いdefinite clause(確定節)を優先的に選択している点が既存の∂ILPで用いられている手法と異なる。
【0067】
<S202>
図4のS202において、計算グラフ生成処理部120は、ground atomの集合を作成する。S202で作成されたground atomの集合は、次のS203で計算グラフ生成処理の際に用いられる。S202で実行する処理に対応するアルゴリズム2を図7に示す。
【0068】
計算グラフ生成処理部120は、アルゴリズム2により、問題Q、S201で作成したclauseの集合c、及び非負整数値のパラメータTを入力として受け取り、ground atomの集合gを出力する。
【0069】
以下の説明では、図7に示すアルゴリズム2における行番号を「ステップ」として説明する。まず、図8を参照してアルゴリズム2による処理の流れを説明する。アルゴリズム2において、ステップ2、4、5は、繰り返しに関する処理であり、図8では、これらのステップに関わる処理を、演算処理を示すブロックの外部に「繰り返し」として示している。
【0070】
ステップ1において変数の初期化を行う。ステップ6~7は、gの各要素Gに対して繰り返し実行される。gの各要素Gに対するステップ6~7の繰り返し処理は、cの各要素のdefinite clauseに対して繰り返し実行される。この繰り返しを含むステップ3~8は、T回繰り返される。ステップ9でgを出力する。
【0071】
図7を参照して、アルゴリズム2をより詳細に説明する。計算グラフ生成処理部120は、ステップ1でgを初期化する。ステップ1では、訓練例ε、εを参照している。次に、計算グラフ生成処理部120は、ステップ2でi=0に設定し、ステップ3でSを空集合に初期化する。Sは新たに追加されたground atomの集合を表す。
【0072】
計算グラフ生成処理部120は、ステップ4でcに含まれるdefinite clauseを一つ選択し、ステップ5でgに含まれるground atom Gを一つ取り出す。
【0073】
ステップ6において、計算グラフ生成処理部120は、ステップ4で取り出したdefinite cluaseのhead AとGとのunifierが存在するかを判定し、存在するならば、ステップ7において、θ=σ(A,G)をB,...,Bに適用して得られるBθ,...,Bθを全てSに追加する。
【0074】
計算グラフ生成処理部120は、ステップ4~7を繰り返し、cに含まれる全てのdefinite clauseと、G∈gとの値のunifierを求め、ステップ8においてground atomの集合gを更新する。計算グラフ生成処理部120は、ステップ3~8の処理をT回行って、ステップ9においてgを出力する。
【0075】
既存の∂ILPと比較すると、S202の処理は、訓練例を参照することで、T回以内での訓練例の導出に必要となるground atomのみを列挙するために、gの要素数を少なく保つことができ、結果として次段の計算グラフ生成処理のメモリ使用量及び計算コストを低減することができる。
【0076】
<S203>
計算グラフ生成処理部120は、S203において計算グラフを作成する。計算グラフは、Q、clauseの集合c、及びground atomの集合gをもとに作成されたベクトルv、及びテンソルXを用いて論理推定の過程を表現する、微分可能な数理モデルである。具体的には、計算グラフとして、v=finfer(X,v,W,T)を求める。
【0077】
後述するように、学習処理部130が、このモデルで使用しているパラメータWを、訓練例に対する損失関数の値が最小となるように、勾配法を用いて最適化することによって論理プログラムHを推定する。
【0078】
より具体的には、計算グラフ生成処理部120は、後述する式(6)のfinfer(X,v,W,T)により、Tステップの前向き推論を実行した後のvaluationベクトルvを求める。
【0079】
valuationベクトルv(t=0,1,...,T)は、|g|次元の実数ベクトルである。各次元はあるground atom G∈gに対応し、valuationベクトルvのi番目の成分の値がゼロであれば、gに含まれるi番目のground atomがtステップの推定で論理的帰結として導出されないことを表す。i番目の成分の値が1に近いほど導出される確度が増すことを表す。
【0080】
t=0のときのvは背景知識によって定まり、
【0081】
【数9】
となる。
【0082】
infer(X,v,W,T)におけるXは、符号化テンソルと呼ばれ、大きさが|c|×|g|×bのテンソルであり、各要素は自然数である。bはcに含まれるdefinite clauseのbodyに含まれるliteralの個数の最大値である。X[i,j]は大きさbのベクトルであり、その要素はi番目のclause C=A←B,...,Bのheadとj番目のgrouond atomG∈gとの間にunifierθが存在するときに、grond atom Bθ,...,Bθのインデックスを表す。すなわち、
【0083】
【数10】
としてXの要素が決められる。ここで1≦j≦|g|,θ=σ(A,G)であり、I(x)はground atom xを引数にとり、xのgの中での順序(インデックス)を出力する関数である。
【0084】
パラメータWはm個の実数値の|c|次元ベクトルの集合としてW={w,...,w}として表現される。ここでmは帰納論理プログラミングにおいて求めたい論理プログラムに含まれるdefinite clauseの数であり、ベクトルwは、cに含まれる各clauseが、求める論理プログラムにおけるi番目のclauseとして選択され得る度合いを表現している。この度合いを「重み」と呼んでもよい。
【0085】
以上を用いて、背景知識Bとclauseの集合c,ground atomの集合cをもとにして、Tステップの前向き推論を実行したあとのvaluationベクトルvを求める関数は、前述したように、
【0086】
【数11】
として表現される。この式(6)のfinferは以下に示す関数の組合せによって表現される。
【0087】
まず、各clauseである要素C∈cは以下の関数に変換される。
【0088】
【数12】
上記の式(7)で使用する関数gather:R|g|×N|g|×b→R|g|×bは、
【0089】
【数13】
として定義される関数である。gatherはground atomのインデックスを、vにおけるそのインデックスに対応する要素の値に置き換える関数である。
【0090】
次に、下記の式(9)により、重みベクトルwで重み付けしてclause関数c(v)の重み付き和を計算する。
【0091】
【数14】
ここで
【0092】
【数15】
である。softmax(w)[j]は、要素C∈cが求めたい論理プログラムのi個目のdefinite clauseである確率を表現しているとみなすことができる。
【0093】
計算グラフ生成処理部120は、以上の結果を用いて、vからvt+1を計算する。その手順は以下のとおりである。計算グラフ生成処理部120は、まず、
【0094】
【数16】
を計算する。ここでsoftorγは、論理和関数を微分可能に拡張した関数であり、下記の式(11)に示すとおりである。
【0095】
【数17】
上記の式(11)において、γ>0はスムージングパラメータである。
【0096】
最後に以下の式(12)の演算を実行することでvt+1を計算する。
【0097】
【数18】
このようにして、計算グラフ生成処理部120は、finfer(X,v,W,T)によりvを算出し、vを出力して処理を終了する。
【0098】
から開始してTステップでvを算出する処理を図9のフローチャートを参照して説明する。S211において、計算グラフ生成処理部120は、tを0で初期化する。S212において、式(4)によりvを求める。S213において、計算グラフ生成処理部120は、式(12)(vt+1=softorγ(v,r(v)))により、vからvt+1を算出する。S214においてt+1がTであればvを出力して処理を終了する。t+1がTでなければ、S215においてt=t+1として、S213からの処理を繰り返す。
【0099】
inferの計算に関して、上述した本実施の形態に係る計算方法とδILPとを比べたときの最大の違いは、本実施の形態に係る計算方法では推測する論理プログラムに含まれるclauseの数をmに固定した上で、softorを計算グラフに組み込むことで、それらのclauseの組合せを求められるようにしたことである。δILPではm個のclauseの組合せを探すために、|c|個のパラメータを用意する必要があったが、本実施の形態に係る計算方法ではm|c|個のパラメータしか必要としないため、パラメータの数を大幅に減らすことに成功している。結果として、計算の効率化も達成できる。
【0100】
(S300:パラメータ推定処理)
計算グラフ生成処理部120が計算グラフを構築した後(具体的には、v=finfer(X,v,W,T)を算出した後)、学習処理部130が、S300のパラメータ推定処理を行う。帰納論理プログラミングの問題をQ=(ε,ε-,B,L)としたときに、学習処理部130は、atomとそのラベルyの対を
【0101】
【数19】
として生成する。各ペア(E,y)はatom Eが正例(y=1のとき)であるか負例(y=0のとき)であるかを表している。本実施の形態では、学習処理部130は、計算グラフ(finfer(X,v,W,T))を用いることにより、atom Eにラベルyを付与する確率を以下のように計算することができる。
【0102】
【数20】
学習処理部130は、クロスエントロピーロス
【0103】
【数21】
を最小化するWを、関数の勾配(つまり、微分)を用いた既存の連続最適化法を用いて求めることで解く。これは、訓練例におけるground atomのラベルy(yは、yが正例に属する場合は1、yが負例に属する場合は0)と、式(14)で推定されたラベルyとの間の誤差を示す損失関数(クロスエントロピーロス)が最小になるように、Wを調整することを意味している。
【0104】
(S400:学習結果出力)
最後のS400において、学習結果出力部140は、S300において算出されたWをもとにしてclauseの集合を求めて出力する。具体的には、各w,...,wについて、値が最大となる要素のインデックスを選択し、そのインデックスを、そのインデックスに対応するdefinite clauseの要素C∈cに置き換えたものの集合を出力する。この集合(m個のdefinite clause)が、推定結果となる論理プログラムである。
【0105】
(実施の形態の効果)
本実施の形態に係る技術により、既存の手法である∂ILPでは扱えなかった、関数記号を含む論理プログラムの勾配法による学習を実現することができるため、より複雑な問題に対して論理プログラムを求めることが可能となる。
【0106】
(付記)
【0107】
以上の実施形態に関し、更に以下の付記を開示する。
【0108】
(付記項1)
ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する論理プログラム推定装置であって、
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成し、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する、
論理プログラム推定装置。
(付記項2)
前記プロセッサは、前記訓練例の中の正例のうち、候補確定節により導出できる正例の総数に基づくスコアを用いて候補確定節の絞り込みを行って、前記候補確定節集合を生成する
付記項1に記載の論理プログラム推定装置。
(付記項3)
前記プロセッサは、前記訓練例を参照して、前記訓練例の導出に必要なグラウンドアトムのみを列挙することにより、前記グラウンドアトム集合を生成する
付記項1又は2に記載の論理プログラム推定装置。
(付記項4)
前記プロセッサは、指数関数の和の演算を実行することにより、tステップの前向き推論で得られた評価ベクトルから、t+1ステップ目の評価ベクトルを算出する
付記項1ないし3のうちいずれか1項に記載の論理プログラム推定装置。
(付記項5)
前記パラメータ集合において、前記候補確定節集合の要素数次元のベクトルが、求める対象の前記論理プログラムに含まれる確定節の数だけ存在する
付記項1ないし4のうちいずれか1項に記載の論理プログラム推定装置。
(付記項6)
前記プロセッサは、前記パラメータ集合に基づいて、推定結果となる論理プログラムを出力する、
付記項1ないし5のうちいずれか1項に記載の論理プログラム推定装置。
(付記項7)
ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定する、メモリと、前記メモリに接続された少なくとも1つのプロセッサと、を含む論理プログラム推定装置が実行する論理プログラム推定方法であって、
前記プロセッサが、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成し、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する、
論理プログラム推定方法。
(付記項8)
ある概念についての訓練例に基づいて、当該概念を表す論理プログラムを推定するようにコンピュータによって実行可能なプログラムを記憶した非一時的記憶媒体であって、
前記論理プログラムを推定する処理は、
前記論理プログラムを構成する確定節の候補となる候補確定節集合をビーム探索により生成し、前記候補確定節集合に基づいてグラウンドアトム集合を生成し、前記候補確定節集合における各候補確定節の重みからなるパラメータ集合を用いて、前記グラウンドアトム集合における各グラウンドアトムの導出確度を表す評価ベクトルを生成し、
前記訓練例におけるグラウンドアトムのラベルと、前記評価ベクトルに基づいて推定されたラベルとの間の誤差を示す損失関数が最小になるように、前記パラメータ集合を算出する、
非一時的記憶媒体。
【0109】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0110】
100 論理プログラム推定装置
110 入力部
120 計算グラフ生成処理部
130 学習処理部
140 学習結果出力部
150 記憶部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置
図1
図2
図3
図4
図5
図6
図7
図8
図9