Open sazare opened 5 years ago
NLPrologというのはNLPとPrologを組み合わせた名前だろう。 命題を自然言語を含む一階述語論理の式でかいて、unificationに類似度をもちこむ。これをweak unificationと呼んでいる。類似度はNLPで、でてくるやつで、SENT2VECというのを使っているらしい。 その枠組みの中で、多段の推論を行うという話。
ざっと読んだが、途中で興味を失った。どんな問題を解決しようといているのかNLPという分野の中で人工的に作られた問題を解いているだけのような気もしてきた。
4.1でTriple Extractionというのがでてきて例として
(Socrates, ENT1 was born in ENT2 and his father was Sophronius, Athens) というのがある。このようにリテラルは3項であらわし、真ん中に述語を書くらしい。 ENT1は第一引数で、ここだとSocrates, ENT2は第二引数でAthensに対応する。 4.2にいくと、また書き方が違っているが、どうでもいいか。
証明のsuccess scoreをp(c|R;θ)と定義し、これの-log(p(a|R;θ)) {aは正解)とする。 あとは忘れた。
類似度を使わないvanilla proverの複雑さは、証明のデプスのexponentialのオーダ(Russell and Norig, 2010a)であり、NLPrologだと、与えられるλの値以上の類似度を持つものだけをunificationの対象にするらしい。 unificationの機会をここで切るのだから、効率はよくなると思う。
4.5 Rule Learningでは、あらかじめ学習しておくと、正解率があがるようなことが書かれている。 ルールのテンプレートを与えて、使われるルールを学習させておくような話だろう。
NLPrologではJACK QA Frameworkというものを使っているらしい。 SENT2VECのwiki-unigramsモデルを使用。
5.5 Resultsでは、表1に結果をまとめている。Accuracy scoreの比較。 MedHopと比較すればよくなっているが、NLPrologで83.33というのは正確なのか? 4つの述語についてaccuracyを評価している。
・最初は自然言語表現をPrologに変換するという話で面白ろそうだと思った。 ・Unificationを類似度ベースにすると証明のスピードはあがるかもしれないが、正確性が1でないということは完全性とか無矛盾性無視ということだろう。 ・説明可能性の論文も参照しているが、間違った推論で説明されても意味がなさそう。 ・accuracyもどれくらいの値なら使えるのかの評価がない。
どういう場面で使うのだろうか。
データセットを見れば利用分野と効果が想像できるかもしれないが、まだそこまで見ていない。 こういう使い方をされるという点で、あまり妥当なデータセット=問題という気がしない。
機械学習の技術を自動証明に持ちこむとき、問題がおかしくなっているような気がしてならない。
Factの確率はDLでの確率かもしれない。 ルールの場合は、変数の持つ蓋然性と考えられるのではないか
NLProlog: Reasoning with Weak Unification for Question Answering in Natural Language Leon Weber, Pasquale Minervini, Jannes Münchmeyer, Ulf Leser, Tim Rocktäschel (Submitted on 14 Jun 2019) arXiv:1906.06187