外国語論文講読III.
Object-Oriented Programming: the CLOS Perspective MIT Press, 1993.

12 Using CLOS to Implement a Hybrid Knowledge Representation Tool

12.1 Introduction

今まで人工知能における知識表現には主にLispが使われてきた. これは主にsymbolの扱いやすさに依る. 最近のframe理論などはオブジェクト化を志向しており、Lispのオブジェクト指向 拡張であるCLOSはこのような用途にぴったりだと言える。

ここでは筆者の専門によりcomputer visionにおける知識表現を扱うが、 この分野では様々なvisionの知識表現が提案されており、それをintegrateして 扱うことのできるようなシステムが望まれる。 このようなツールは従来なかったが、CLOSを、特にMetaobject Protocolを用いて このような目的に拡張することにより、知識表現を統合的に扱うことのできる システムができると期待される。 CLOSを用いれば、新しいオブジェクト指向システムを新たに設計する必要はなく、 CLOSの柔軟な拡張性を基にdomain-specificなツールを生成することができる.

現実的な応用としてはCLOSはexperimentalにすぎるが、そのぶん柔軟で適応性の 高いプログラミングが可能になり、現在のcomputer visionの(発展中の)段階から 言って適切であろう.

この章は次のように構成される。

  1. 2節で知識表現ツールの構成とcomputer visionにおけるその理論的根拠を 示す.
  2. 3節でCLOSを用いた様々な知識表現と推論のimplementationを述べる. その際、実装の基本的な特徴も共に明らかにする.
  3. 4節で上で述べた実装についての議論を行い、結論を述べる.
ただし、computer visionにおける方法論の説明については扱わない。補足のレジュメ を参照されたい.

12.2 The Components of the Tool and Their Use in Computer Vision

人工知能における知識表現がcomputer vision/画像認識においても有用であることが 明らかになっている。それらの形式化としては、 などがある. この他、アプリオリに存在する情報を表現するための手法も開発されて いる. (これはオブジェクトがデフォルトでもつ属性に対応する.) このような構造的な理解の手法として、 がある. これらから、ここでは visual-image knowledge representation として フレーム、ルール、弛緩法、構造プロトタイプマッチングを採用する. これらが統合的に作用して知識表現を形成することになる. (Fig. 12.1)

これを見ると、各componentが知識表現(上)とそれに対するメソッド(下)から 成っていることに注意できる. これらが独立に作用することでイメージ理解が 形成されるのではなく、これらの interation から知識表現が生まれるというのが 本章の主題である.

12.2.1 Frames

フレーム表現とは、各componentがそれぞれフレームを持ち、その中に属性が 格納されているとするもので、属性は他のフレーム(へのポインタ)となっていても よい。この理由から、フレーム表現は必然的に階層構造をなす.

CLOSでは、次のように表現できる.

(class name (superclass)
  (slotname options)
  ..
  (slotname options))
これを見てもわかるように、フレーム表現はそれ自身としてオブジェクト指向となる. 応用的な観点から見ると、フレームのスロットは2つの意味を持つ。
  1. 各ドメインにおける知識を表現する.
  2. プログラムの実行時に、各ドメインにおける知識のテンポラリバッファとなる.

12.2.2 Rules

(この部分、やや不明)
ruleによる推論とは、if-then のようなルールを用いた推論を繰り返す 推論方式のことである.前方推論、後方推論を行うことができる. CLOSによる書式は次のようになる.
(defrule name rulesystem
  (if 左辺
    then 右辺)
  options)

後方推論はPrologと同様目的から原因へ推論し、前方推論は問題となっている 事柄から可能な推論を行う. フレーム表現が基礎となっているので、推論は フレーム->スロット->値 の組によって行われる。 通常の推論に加え、ルール中でどんなLisp関数でも実行することができる.

12.2.3 Relaxation

弛緩法とは、可能な解釈の最大集合を考え、それに部分的な制約を連続して加えること によって適切な解釈を定めていく手法のことである。 例えば図形の各辺にラベルを設定し、その符号を適切に定める、などが行われる.

relaxationは2つの部分から成る。1つは制約の条件であり、他方は制約条件を実行する interpreter部である. 次のようにして制約を生成する.

(make-constraint-set house-interpretation)
;; 可能な最大集合 house-interpretation を生成.
(make-constraint c1 house-interpreation ;; 制約 c1 を生成.
  (valid (within window wall)))
  ;; 窓が壁の中にある、という条件は valid であり、validスロットに入る.
(make-constraint .. 以下略.

適用可能な制約条件がなくなるまで最初の最大集合に制約条件を適用し、 残ったラベルを解釈とする. 実装としては recursion で回す、ということに なるのだろう.

12.2.4 Matching

オブジェクトの構造を認識するには、そのオブジェクトの特徴を抽出し、それと 既存の基本構造(prototype)との類似をもって認識を行う. 特徴抽出はもっと基本的なlow-levelアルゴリズムによって行う. (視覚系の 1次情報処理のようなものであろう.) マッチングを行うには様々なアルゴリズムがあるが、最も一般的で強力なのは 属性つきグラフである.

これでわかるようにこのMatchingは上のRelaxationと似ているが、認識において 後で出るように part-of などの包含関係をも考えるところが違っている. コンストラクタにより、グラフの内部表現は自動生成されて隠される. 現在実装されているアルゴリズムは、画像のグラフ表現をいくつかのプロトタイプに 分類する.

12.2.5 Combining the Components

これまで述べた手法はそれぞれ強力なものであるが、複雑な認識/知識表現に対しては それを組み合わせて適用することが必要となってくる.

3次元物体の認識に際しては、relaxationにより物体のedgeを認識して分離を行い、 プロトタイプへのグラフマッチングを用いて分離された物体の3次元構造を決定する. この物体の処理に当たっては、ルールを基にした判断により適切な処理を行う、などの 複合的な処理がなされうる.

様々はメソッドをこのように組み合わせることにより、開発においてオブジェクト指向 の利点が生かせるとともに、各アルゴリズムにおいても必要に応じて他のアルゴリズムを 呼ぶことが可能になる.

ここでは、どのcomponentもdominantではないという点を強調しておく. どのコンポーネントも、メソッドからの呼び出しやprocedural attachmentにより 他のコンポーネントを呼び出すことができ、必要なデータが不足であれば自動的に procedureが起動されてデータを推論して渡す、というような(Metaobject Protocol を用いた)システムも可能である.


daichi6@dolphin.c.u-tokyo.ac.jp