平成8年度 委託研究ソフトウェアの提案 |
地上にコンピュータが出現して以来50年余り経ち ENIACを引用す るまでもなくハードに関しては大いなる変化があった。他方プログラ ムについてはある意味で本質的な変化はなかったと言って良いだろう。 今でもプログラムは基本となる命令を積み上げて作るものであり、プ ログラムは最初に書かれた通りにいつまでも動くものである考えられ ている。
しかしながらプログラミングの対象が知能やエージェントなどより 複雑で見通しの困難なものに移るにつれ最初に完璧なプログラムを作 り後はそれを繰り返して使うだけという現在のプログラミング思想で は何時まで経っても「固い」プログラムしか出来ず、実世界の経験か ら学び自ら賢くなる事の出来る adaptive なプログラムの実現は困難 である。現在の記号処理的人工知能の困難の一端はこの「固い」プロ グラム概念に頼ってきた事に起因するではないかという反省がある。 実世界に適用できる adaptive なプログラムを実現させ、知能やエー ジェントの秘密に迫る事が必要である。
さて実世界のデータに目を向けて見ると実データは必然的に誤差を 含み実世界の情報は必然的に不完全である。従って実世界を目指す知 識処理は情報の不確実性を扱う手段を備えていなければならない。
情報の不確実性を扱う手段としては確率・統計的手法が標準的であ る。確率・統計的手法は記号処理と結び付いて様々な手法を生み出し ている。 パターン認識分野のHMM(隠れマルコフモデル) は学習の 後確率オートマトンとして揺れを含んだ入力音素列から単語を確率的 に判断する。 機械学習分野では例えば決定木はデータの属性ベクト ルよりそのカテゴリを判定する木をデータの統計情報から作り出す。 又知識表現分野におけるベイジアンネットワークでは条件付き確率の ネットワークにより命題間の確率的依存関係を表し、確率的因果関係 を推論する。これらの手法は情報の不確実性を確率論の手法を採り入 れることにより吸収し実世界のより良き記号モデルを与えていると言 えよう。
更に実世界のデータを表現・分類するだけではなく積極的に背後の 規則性をルールとして抽出しようとする動きが近年急速な発展を見せ ている。 データマイニングあるいはILP(帰納的論理プログラミング) などがそれである。
このような発散的とも言うべき研究の流れを要約すれば「帰納的な 記号処理」と呼ぶ事が出来よう。帰納的な記号処理は演繹的記号処理 即ち証明や計算と異なり実データからカテゴリや依存関係など隠れた 情報を記号処理により取り出す。帰納的な記号処理は大量のデータを 処理するため計算機パワーを必要とするが、近年の計算機パワーの低 廉化はますますそれを現実的なものとしている。
我々は論理と確率、計算と学習を融合し学習により振舞いを変えて 行く adaptive なプログラミングの世界の実現を目指している。 具 体的には論理プログラムのファクト集合に確率分布を割り当て実世界 の具体例によりその確率分布を学習する事によりプログラムに所望の 振舞いをさせる事を狙う。
adaptive な論理プログラムは不確実な情報も適切に扱う事の出来 る高度な知識処理システムのための知識表現言語となると共にその組 み込みの学習能力を通じてエージェントなど複雑多様なモデルの実現 にも役立つと考えている。また大量のデータを使った学習の結果得ら れる学習済み確率分布からはデータに隠されている規則性をルールと して抽出するチャンスが生まれよう。これは新しいルール発見の道で あり並列処理による効率的処理が望まれる場面でもある。
adaptive な論理プログラムの意味論的な枠組としては確率論と論 理プログラムの最小モデル意味論を融合させた「分布意味論」がある。 分布意味論では最小モデルを成分が0または1の無限次元確率ベクト ルの実現値として捉える。分布意味論は HMMやベイジアンネットワー クなどの既存の確率的システムを包含し、それらの統計的学習法を与 えるだけではなく、学習した分布からのルールの抽出を通じて帰納的 処理(学習、発見)と演繹的処理(計算)を融合させている。我々は 小規模な実験を通じて分布意味論を統計学のEM学習アルゴリズム及び ニューラルネットワークのボルツマンマシンの学習アルゴリズムと組 合せ実際に学習が可能である事を確かめている。
本研究では計算と学習を融合した全く新しいタイプの計算機言語で ある adaptiveな論理プログラミングシステムの研究・開発を行なう。 このシステムは丁度人間に動脈と静脈があるように実行系と学習系の 二つを持ちそれらが協同することによりプログラムの振舞いを環境に 応じて徐々に変えて行くことが特徴である。
[血液型プログラム]
このプログラムは血液型に関する教科書的知識を素直に書き下した ものである。 プログラムは人の血液型 bloodytpe/1 が親の血液型 gene/2 からどの様に決定されるかを記述しているルールの部分と確 率的述語 bsw/3 で表わされているファクトの部分に分かれる。 ファ クトは確率的にのみ真なので assert されていない(assert すると 常に真である事を意味するから)。全てのグランドアトムは真の時値 が1、偽の時値が0となる確率変数と見なされる。
bsw/3 は ON と OFF の状態を取る2値の確率的スイッチを表す。 例えばbsw(sw_1,dat,1)はスイッチ sw_1 が ON である (但しその確 率は表示していない) 時のみ真であり、 bsw(sw_1,dat,0)はスイッ チ sw_1が OFF の時のみ真である。 項 dad と mum の役割は スイッ チ sw_1 及び sw_2 の実行毎の統計的独立性を明示するための引数で ある。
実行すると (後に述べるサンプリング実行である) 確率的に bsw(sw_1,dat,1)又はbsw(sw_1,dat,0)、 及びbsw(sw_2,dat,1)又は bsw(sw_2,dat,0) のいずれかが真となり、 それがルールを伝わって bloodtype(a)、 bloodtype(b)、 bloodtype(o)、bloodtype(ab)のい ずれかを真とする。 逆に言うと :- bloodtype(a)は実行毎に yes と なったり no となったりするが、 yes が返る確率は bloodtype(a)が 真である確率に等しい。
実際の日本人の血液型の分布をサンプリングすれば bloodtype(a)、 bloodtype(o)、bloodtype(b)、bloodtype(ab)がおよそが4:3:2:1とな るはずであるが、 そうなるように bsw/3 の確率をサンプリングデー タから学習するのが我々のプログラミングにおける学習である。
しかしながら上のようなプログラムの一般化を考えると様々な考慮 すべき点があることが分かる。プログラムには再帰があるがそれに伴 う数学的複雑さはさて置き一般的に次のような点を考える必要がある。
(1)論理プログラムのファクト集合に与える確率分布(「基礎分布」 と呼ぶ)の範囲をどうするか。
(2)上と関連して基礎分布を記述する言語をどうするか。
従来確率分布と言うと2項分布やポアソン分布あるいは正規分布な ど既に名前の付いたものを指す事が多く確率分布をどの様に指定 (specify)するかということは殆んど問題にならなかった。 今回値が 0や1に限られるとは言え組織的に分布を指定する方法を考える必要 が出て来た。分布は四則演算により組み合わされ、あるいは関数によ り別の分布を誘導する事が出来る。しかしこのような事情を全て考え ると非常に複雑になるので実働化の容易さを考慮して適当な分布の指 定方法を定める必要がある。
我々の選択としては基礎分布として多項分布だけでも HMMやベイジ アンネットを表すには十分である事を考慮し多項分布とボルツマン分 布を基礎分布とし、それらのパラメータを指定する構文を設計する。
(3)現在考えている方法では元のプログラムを翻訳して実行用と学 習用の二つの特化したプログラムを作り出す必要がある。しかし分布 意味論に照らしてこの翻訳が正しいものである事を保証しなければな らない。
分布意味論はどちらかというとボトムアップな実行に調和するが、 この翻訳は実効上の観点からトップダウン実行を前提としたプログラ ムを作り出す(予定である)。従って翻訳がプログラムの分布意味論 を保存するかどうかが問題になる。そのためプログラムの解析を行な うのであるが、もし元のプログラムに任意の書き方を許すと変換が非 常に困難になる恐れがある。かと言って余り書き方を制限すると応用 範囲が狭くなる。本研究では有用であると同時にプログラムの翻訳が 自明に正しいものとなるようなバランスのとれた制限を探し出す必要 がある。
(4) adaptive な論理プログラムの統計的学習法では翻訳された学 習用プログラムが全解探索を行なう。この全解探索が最も計算機資源 を使う部分なので効率を上げたい。その意味でKLICを使った並列全解 探索望ましい。
しかし実際には(解の精度を気にしなければ)必ずしも全部の解が 必要ではないのでプロセスが相互に通信しつつ有望な解を複数探索し て行くようなより洗練された探索が望ましい(この辺は未知の点が多 く確実な事は言えない)。 現段階では素直に全解探索を Prologで直 列に実現し必要が生じた時点でKLICよる並列探索の実現を検討したい。
(5)学習形態としてはバッチ学習とオンライン学習があるが論理プ ログラムと組み合わせるためには多くの研究が必要である。
前者は範例となるゴール群を与えそれらの likelihood を最大化す ると言うものである。後者は強化学習のように新しい例が与えられる たびに基礎分布を調整するというものである。実装では確実性を優先 し統計学で確立されている likelihood の最大化によるバッチ学習を 組み込む。しかしながらバッチ学習も種々あるのでその選択と実装が 研究課題となる。オンライン学習については学習オートマトンの理論
全体で2年計画の研究を予定している。最初の1年では骨子となる プログラミングシステムを作り2年目に機能拡張やインターフェイス の整備を行なう。1年目ではまず論理プログラムのファクト集合に与 える基礎分布として多項分布を C言語で実装する。これは2値分布の 組合せとして実装する予定であるが組合せの数が数百になる可能性が あるので効率的実装の研究が必要である。
対象言語の仕様を確定する必要があるが大雑把に言ってプログラム は否定、 副作用なしを基本とし若干の組み込み述語を含む事にしそ の範囲内で初年度の言語仕様を確定する。否定の導入、学習用のプロ グラムに含まれる全解探索の効率化は2年目の研究課題とする。
元の論理プログラムを実行用と学習用のプログラムに翻訳する過程 を担う翻訳器が必要である。本研究ではこのプログラム翻訳器の研究・ 開発実装が中心となる。 初年度は取り敢えず Prologを使って実装す るが次年度により効率的な実装を再検討したい。
また1年目では分布意味論に基づいたオンライン学習の理論研究を 進める。 本研究の方向性とは異なるが学習オートタ (learning automata)のオンライン学習や強化学習 (reinforced learning)の 研究が参考になる。
2年目では基礎分布をボルツマン分布まで広げる。ボルツマン分布 は多くのパラメータを含むのでパラメータの指定方法が問題になるだ ろう。アニーリングなどの実行方法も研究する必要がある。
新たな学習方式としてオンライン学習の実装を行なう。
又2年目に本格的なユーザインターフェイスを設計し全体のシステ ムを再実装する。その際実行モードや学習モードのメニュー方式の選 択やボルツマンマシン学習の局面での加速係数や温度の設定などのイ ンタラクティブな設定が出来るようにする。 言語としては ProTcl などのTcl系の言語を使う予定。 また2年目に並列化の準備として全 解探索の並列化の実験まで踏み込みたい。
PRISM は計算と学習をプログラムの意味論レベルで融合した(恐ら く) 初めての計算機言語であり汎用の統計的-記号処理モデルを提供 する。通常の論理プログラミングも勿論可能であるが背景知識をホー ン節として書き情報の不確定性をファクトの確率分布として表現する 事により不確実な知識を表現し、利用し、且つ学習する事が出来る。 本ソフトウェアの有用さは使い方次第と言える。
例えば演繹データベースに適用すれば学習機構を備えた確率的演繹 データベースになる。またベイジアンネットに適用した場合は命題論 理に限定されない一階論理の表現力と(再帰を通じて潜在的に)無限 大のベイジアンネットを表現する能力を手に入れることが出来る。さ らにHMMのような確率的オートマタに適用した場合は、 正則言語に止 まらないより広い言語クラスの表現と学習を可能にする。一方学習結 果に応じ振舞いを変える点に着目すればでエージェントなど複雑多様 なモデルの実現にも役立つ事が期待される。
PRISM は実行モードと学習モードの二つを持ち、実行モードは3つの サブモードを持つ予定である。一つめはサンプリング実行であり、基 礎分布に応じた最小モデルの実現値を求める事に相当する。サンプリ ング実行では同じゴール(グラウンドアトム)に対して実行するたび に異なる結果(実現値、成功/失敗で表される)を返すが、独立に多 数繰り返した時の分布が丁度プログラムが意味する分布となる。多数 のサンプリング(例えば1万個)を短時間に得るには実行の並列化が 不可避であるが、これは将来の課題である。
二つめは答と共に正しさの確率を付けてを返す確率モードである。 ゴールに対し成功した時は例えば確率 0.7など値を付けて返す。これ はサンプリング実行を多数独立に行なえば平均して100回の内70 回成功するという意味である。確率モードを利用して探索の枝狩りを 行なうことが出来よう。
三つめはや答のゴールその正しさの確率を計算する式を付けて返す 数式モードである。式は基礎確率を持つアトムの連言の選言となる。 これと基礎分布を組合せ答のゴールの確率を計算できる。
学習モードでは教師データからの統計的学習を行なう。学習法はユー ザが選択する事になる。学習により教師データを近似する基礎分布を 得るがこの分布からルールを抽出し元のプログラムに加えるか、ある いは元のプログラムの一部を置き換えることにより徐々に自分の構造 を変えて行く自己変容型プログラムの実現も本システムの応用として 考えられる。
システムは以下の部分系からなる。ユーザはプログラムを書き入力 系に読み込ませ、翻訳系を働かせた後実行モードまたは学習モードを 指定しそれぞれの実行に移る。
初年度では(ア)から(オ)まで一通り動かす事を目標とし、2年 目に機能の改良/拡張を行なう。新しい事が多いので既存ソフトは殆 んど使わないことが予想される。
統計的学習機構を備えた一般的知識処理システムとして力学プログ ラミングDP、知識検証支援システムKNOVあるいは適応型電子装置診断 実験システムなどのICOTフリーソフトウェアと関連性を持つと考えて いる。またサンプリング実行や学習モードにおける全解探索では並列 実行が可能であるし又望ましいので KLIC を使った実装が将来的に考 えられる。
システムは当分 SparcStation10 の SUNOS 4.1.3 上の SICStus Prolog と C で組む予定である。いずれ Solaris に移る予定。
1年目では作成するソフトウェアの核の部分のサイズは Prolog で 2000行位だろうと思われる。 2年目ではユーザインターフェイ スが加わるので3000行位になると考えている。
本システムは Prolog を理解するユーザにはすぐに使えるもの思わ れる。 使い方は汎用の統計的-記号処理系であることから制限はない が特に記号処理の能力と統計的学習能力の二つが同時に必要な場面に 適している。本システムの統計的記号処理のモデリング能力はゲーム 理論、意志決定理論、エージェント、ベイジアンネット、自然言語処 理、データマイニング、ILP、 ネットワークなど広い範囲に応用出来 ると予想している。以下希望的観測を交えたコメントを加える。
マルコフ連鎖は内部構造を持たない状態間の確率的遷移の記述であ り広い応用範囲を持つ確率モデルである。音声認識や遺伝子解析で使 われる HMM(隠れマルコフモデル)もマルコフ連鎖の応用例である。 しかしながらマルコフ連鎖を知識表現モデルとして見た時状態に関す る確率的遷移以外の背景知識を扱う手段がなく従来の知識処理との乖 離を生んでいた。本システムによれば状態をアトムにより表現し背景 知識をホーン節により表現することにより状態間の確率的関係と論理 的関係を同時に表現することが可能になる。背景知識により強化され たマルコフモデルは HMMを拡張するだけでなくゲーム理論や意志決定 理論に対し精緻でより現実的なモデルを与え、より正確な予測に繋が る事が期待される。
例えばゲーム理論によく引用されるば囚人のゲームのシミュレーショ ンについて言えば単に利得表に支配されるのではなく互いが相手に関 する論理的推論を行なうようなダイナミックなシミュレーションが可 能になるだろう。関連して複数のエージェント間の相互作用による複 雑な意志決定プロセス(多くは確率的な部分を含むであろう)も本シ ステムを使うことにより良いモデル化が可能であると考えている。
次に述べる自然言語処理でも使われるベイジアンネットは命題間の 確率的依存関係を表すネットワークであり、多くの研究実績が積まれ ているが基本的には命題論理の枠内の話しであり、命題の内部構造を 表現する事が出来ない。本システムによるベイジアンネット表現は論 理変数を使った一階論理の表現力と(再帰を通じて潜在的に)無限大 のベイジアンネットの表現力を持つ。この様な一階論理ベイジアンネッ トの研究はベイジアンネットの研究に新しい局面を開くと思われる。
自然言語処理では統語処理における統計情報の利用が盛んであるが 意味的処理における統計情報の利用はそれほどでもないようである。 本システムの(正規言語に留まらない)プログラミング能力と学習能 力を組み合わせる事により例文から単語の意味カテゴリ関係を学習す るシステムも構築出来るであろうと考えている。また意味処理を越え た語用論的な知識も学習出来ると期待している。
データマイニングへの応用では基礎分布からのルール抽出が主要な 道具になる。本システムではデータのモデルを作る際既知の論理的依 存関係をプログラムで表現し、残りの本当に未知の部分を基礎分布の 分布と置く事によりプログラムの振舞いが現実データに合うように基 礎分布を学習する事が出来る。学習された基礎分布よりルールを抽出 する事が出来るだろう。
ILP(帰納論理プログラミング)では観察されたアトム群を説明する 理論を推論しなければならない。これまで MIS、CIGOL、PROGOL など 様々な方法が提案されているがどれも観察されたアトムの分布の概念 を欠いていた。 上に述べた基礎分布からのルール抽出により従来の ILPにない新しいルール発見の道が開かれると予想している。
最近関心を集めているネットワークへの応用も考えられる。ネット ワークでは時間遅れや事故など伝達には常に不確実性がともなう。従っ て自分から見える相手が複数あった場合最も信頼すべき相手と接続を 行なう事が望ましい。このような場面では相手の記号モデルを本シス テムにより構築し、 実データにより確率的にどの相手と接続すれば (平均的に)よい結果を得ることが出来るかを学習させた後、本モデ ルが予測する最も信頼できる相手と通信すれば最も効率的な通信が実 現出来よう。
我々のアプローチはニューロネットワークと対応する点が多く(ネッ トワーク<->プログラム、 結線の重み<->基礎分布、誤差逆伝搬<->トッ プダウン全解探索を含む統計的学習等)、基礎分布からのルール抽出 に関してもニューロネットワークにおける隠れ層からの情報抽出と似 ている所があるので、ニューロネットワークの研究者との協同研究も 将来の課題である。
またボルツマン分布を前提としたサンプリング実行でSA(シミュレー テドアニーリング)を行なう事により繰り返して実行を行なう内に徐々 に望ましい実行が増えて行くと言った形態が考えられる。これは現在の 計画に含まれていないが、本方式のいわゆるPDP との接点を探る上で重 要な課題である。
初年度では論理プログラムのファクト集合に与える基礎分布として 多項分布を C 言語で実装する。元の論理プログラムから実行用と学 習用のプログラムを作り出す翻訳系を作成する。対象とするプログラ ムは否定なし、 副作用なしを基本とし若干の組み込み述語を許した ものになる予定。簡単なユーザインターフェイスを作りバグ取りを兼 ねたシステムの試用が出来るようにする。試用しつつ統計的記号的モ デルの応用例を探す予定である。
www-admin@icot.or.jp