従来プログラミングは前もって完璧なプログラムを作り、その後はそのプログ ラムを繰り返す使うというものであった。しかし我々が扱う実世界の対象が広 がるにつれ、その対象が不正確、不完全もしくは非常に複雑になるために前もっ て完璧なプログラムを作ることが困難になってきている。その解決手段として プログラムの側から実データに合わせて振舞いを変えていく adaptive なプロ グラムの実現が考えられる。不正確または不完全な実データを扱う手段として は確率・統計手法が標準的だろう。
自然界の不完全または不確実な現象に対し確率論の手法を採り入れることによっ て統計モデルとして表現し、そのモデルを工学的に利用する試みが広く行なわ れている。統計モデルは必然的に記号情報と確率(数値)情報の両方を含むこ とになる。
統計モデルを応用した成功例として知られているのが音声認識における隠れマ ルコフモデル(Hidden Markov Model; HMM)である [1,11,18]。学習後のHMMは確率オートマトン として揺れを含んだ入力音素列から単語を確率的に判断する。また人工知能分 野では事象(命題)の確率的因果関係をネットワーク形式で記述するベイジアン ネットワーク [15]や、論理に基づく確率的アブダクション [17]の試みが見られる。自然言語処理においても近年の計算機ハー ドウェア技術の進歩、大規模コーパス(テキストデータベース)の整備を背景 にn-gram や確率文脈自由文法(Probabilistic Context Free Grammar; PCFG) などの統計モデルを用いた確率・統計的手法が注目を集めている [1,5,8,19]。確率コネクショニストモデ ルのボルツマンマシンもパターン認識分野や最適化問題の解決等に用いられて いる [6,7,14]。
このような統計モデルを記号レベルで記述するために高い記述力をもつ一階論 理に確率要素を加えるという研究が試みられてきた [4,12,17]。佐藤が定義した分布意味論 [20]では論理プログラムと確率論がプログラムの意味論レベルで融 合されることが示されている。加えて佐藤はBSプログラムという論理プログラ ムのクラスを定義し、統計分野で広く用いられる最尤推定法の一種であるEMア ルゴリズム [9,21]に基づくBSプログラムの学習アルゴ リズムを提案している。
我々は論理と確率、計算と学習を融合し学習によって振舞いを変えていく adaptive なプログラムの世界を目指している。本委託研究の1年目として分布 意味論とBSプログラムおよびその学習アルゴリズムを理論的基盤とするプログ ラミング言語PRISM (PRogramming In Statistical Modeling)を提案し、その プログラミング処理系の試作版を製作した。
PRISMプログラミング処理系(以下PRISM処理系)は計算と学習を融合した全く新 しいタイプの計算機言語である adaptive な論理プログラム処理系である。こ のシステムでは丁度人間に動脈と静脈があるように実行と学習の2つの系をも つ。実行系では確率論と記号処理プログラム(論理プログラム)の融合を意味論 レベルで実現するユーティリティーとなる。学習系はプログラム内に付与され た確率分布パラメータ(以下パラメータ)の学習機構を内蔵している。
具体的には論理プログラムのファクト集にパラメータを割り当て、実行系では ファクトのパラメータ値を用いて様々な確率計算を行なう。学習系では実世界 の例によりパラメータ値を学習させるものである。これによりプログラムに所 望の振舞いをさせることができる。
ユーザは統計モデルをPRISMプログラムとして書き下し、PRISM処理系に渡す。 するとその統計モデルに対して確率計算、確率的推論やパラメータ学習を記号 処理レベルで行なうことが可能になる。更にPRISMプログラムは統計モデルを 内包し、それをメタレベルで扱うような大規模な応用プログラムも記述可能で ある。
確率計算やパラメータ学習におけるPRISMプログラムの動作を完全に理解する には新しい概念をいくつか導入する必要がある。しかしPRISM処理系をソフト ウェアとして見たときそのプログラミングは容易でなければならない。試作し たプログラミング言語PRISMは一見すると Prolog に幾つかの組み込み述語が 加わった程度に映るはずで、Prolog にある程度親しんだ者ならそのプログラ ミングは容易であることが見込まれる。