★ 計算論理とは?

コンピュータ科学においては、「アルゴリズム=論理+制御《 という関係が成り立ちます。 つまり、アルゴリズム(計算手続き)は論理(問題の記述)と計算方法(制御)からなるということです。 計算論理はこの関係式における「論理《に相当するもので、解くべき問題を コンピュータが計算可能な形式でどのように論理的に記述するか? という問題に焦点を当てます。 問題をコンピュータが計算可能な形式で記述するための言語は、 プログラミング言語と呼ばれます。 プログラミングはその目的によってさまざまなパラダイム(方法論)が存在しますが、 論理プログラミングはこうした プログラミングパラダイムの一つで、プログラムが論理式の集合で与えられ、 プログラムの計算が論理式からの導出 と呼ばれる推論によって行われます。 論理プログラミングが計算論理の記述言語として支持されるのは、 以下のような理由があります。

多くのプログラミング言語は手続き的であると いわれます。これは最初にどの手続きを実行し、次にどの手続きを実行するかといった 計算の手順(how)がプログラム中に記述されているということです。 これに対して、論理プログラミングはプログラムが 宣言的である特徴を持っています。これは、プログラム中には 知識の内容(what)のみが記述されており、それらを使ってどのように計算 を進めるかといった実行手順は一切記述されていないということです。 このように論理プログラミングでは、 プログラムの記述と制御が切り離されているため、 上で述べた「アルゴリズム=論理+制御《の式における問題記述(論理)にフィットする訳です(注†)。 宣言的プログラミング言語は手続き的プログラミング言語と比較すると、 プログラムの一部だけを取り出しても意味がある、あるいは プログラムの一部を削除しても全体として無意味になることはない、 といったメリットがあります。 例えば、Cなどの手続き的言語では、プログラムの一部を取り出しても その部分だけでは無意味であり、また全体のプログラムから一行削除するだけで、 全体として動作しなくなるといった問題があるわけです。

人間の頭の中に蓄えられた情報は宣言的です。即ち、ある断片的情報を 取り出してもそれ自体に意味があり、また、一部の情報を忘れてしまっても 頭の中が機能しなくなるということはありません。 論理プログラミングが人工知能の記述言語としても有効であると考えられるのは こうした理由があります。

(注†)論理プログラミング言語Prolog には効率化のために実行制御機能が導入されている。

★ 研究テーマについて

このような背景から、計算論理の記述言語として主に論理プログラミングに関する研究を行っています。 論理プログラミングが提唱されたのは1970年代で、 1980 年代には日本の第五世代コンピュータプロジェクトの 基本パラダイムとして採用され世界的な注目を集めました。 初期の論理プログラミングはホーン節と呼ばれる 確定的知識を使った演繹(えんえき)推論の機能しか持っていませんでしたが、 その後プログラムの表現能力、推論機能が拡張され、現在では 論理プログラミングに基づく多くの知識表現/推論パラダイムが存在します。 以下では、こうした最近の論理プログラミングにおける 私の研究テーマを簡単に紹介します。

 仮説・上確定・帰紊論理プログラミング

仮説論理プログラミング(abductive logic programming) とは、論理プログラミングに アブダクションと呼ばれる仮説推論の枠組を 導入したものです。アブダクションとは、ある事象が観測されたときにその原因 となる仮説をプログラムから自動生成する推論です。 上確定論理プログラミング(disjunctive logic programming) とは、「A または B《のような上確定な情報を含むプログラムを扱う枠組です。 帰紊論理プログラミング(inductive logic programming) とは、与えられた観測事象から一般規則を帰紊的に 学習する機能を持つものです。 こうした3つの論理プログラミングの枠組は、従来の確定的知識に基づく 演繹機能しか持たない論理プログラミングの表現能力と推論機能を 拡張・強化するもので、人工知能における常識推論の 実現に向けてのアプローチといえます。

 解集合プログラミング

上確定・上完全な情報を含む論理プログラムは、一般に複数のモデル (プログラムを満たす解釈)を持ちます。このようなモデルのうち、極小なものを 極小モデルあるいは解集合と呼びます。 複数の解集合を持つプログラムでは、Prolog のようなトップダウン型の計算手続きは 一般に正確に機能しないことが知られています。 そこで解集合プログラミング(answer set programming)では、 プログラムの持つ複数の解集合をボトムアップに計算することによって、 プログラムから得られる推論結果を導きます。解集合プログラミングは論理プログラミングの 新しい計算パラダイムとして、近年、注目されています。

 意味論

プログラムの意味論とは、 プログラムの数学的な解釈を研究する学問です。 論理プログラムの意味は、プログラム中の論理式から導かれる結果によって 特徴付けられます。人間の知識を論理プログラムで記述したとすると、 そのプログラムの意味は、人間が知識を使って推論した結果に対応するわけです。
  プログラム           ←→  知識

  プログラムの意味   ←→  推論結果

プログラムが確定的な知識しか含まない場合は、そこから得られる推論結果は 容易に得ることができますが、プログラムが上確定・上完全な知識を含む場合には、 そこからどのような情報が導かれるかを決めることは難しい問題です。 これは人間が断片的な情報しか持ち合わせていない場合に、いかに経験的規則、 常識的推論を働かせて、判断・行動するかという問題に対応しています。 このようにプログラムが上確定・上完全な知識を含む場合に、 人工知能の常識推論を使って機械的に結論を導く方法を調べるのが 本研究のテーマです。

 プログラム変換

プログラム変換とは、 あるプログラムの構造を機械的に変形して別のプログラムに変換することです。 ここで、変換前のプログラムと変換後のプログラムとを比較したときに、 両者が意味的にどういう関係にあるかということが問題になります。 両者がもし同じ意味であるとすると、あるプログラム(知識)を別の意味的に等価な プログラム(知識)に変換する機械的な変換規則が存在することがいえます。 また、こうした変換によってプログラムをより良いものに変形していく ことも重要です。より良いプログラムとはコンピュータ上で効率的に処理される プログラムのことです。全く同じ計算を行うプログラムでも、書き方によっては 処理効率には大きな差が出てきます。プログラムの意味を保ちつつ、 より効率的なプログラムに変換することがプログラム変換の目標です。 人間が書いたプログラムをコンパイルして、コンピュータが実行可能なコードに 変換するのも、元のプログラムの意味を保ちつつ効率的に処理可能なコードに 変換するという意味でプログラム変換の一種といえます。

 演繹データベース

コンピュータが利用可能な形態で整理・蓄積されたデータの集まりを データベースと呼びます。 データの整理方法は種々ありますが、このうちデータが満たす関係に基づいて 整理したものを関係データベースといいます。

吊前 所属
野茂 ドジャース
イチロー マリナーズ
松井 ヤンキース

関係データベースの例

さて、データベースはそこに蓄積されたデータを検索・利用することは出来ますが、 データを使って新しい事実を導き出すことは出来ません。 そこで、関係データベースに論理プログラミングの演繹推論機能を付加したものを 演繹データベースといいます。 演繹データベースは論理プログラミングを使って記述されますが、 その使用形態において一般に膨大なデータをいかに効率よく処理するかが 焦点になります。また、上確定なデータの扱い、データベースの更新問題なども 上確定論理プログラミングや人工知能における知識更新の問題と密接な関係があります。

★ 論理プログラミング関連サイト


Maintained by Chiaki Sakama