犬 童 健 良
関東学園大学経済学部
1.はじめに
20世紀が残した知的遺産の一つは、統計的データ分析、経済学的な効率性評価や最適化の数理、コンピュータによるシミュレーションなどによる合理性の処方としての経営科学・オペレーションズリサーチ(OR)である。ただしその手段としては、今日利用できるあらゆる科学的分析の諸手段を駆使することと置き換えてもよいだろう。
もちろん、これらの手法を適用し、合理的な解を算出・検討するためには、それに先立って、現実の対象問題をきちんと定式化しなければならない。またこのとき問題認識から合理的な解決を意図するまでの知的作業は、広い意味で対象問題のモデリングあるいはデザイン活動と呼べるだろう。本論文で言うモデリングとは、現実の対象問題、その解法、あるいは問題解決者の思考を、数学的言語、プログラム言語、最適化やシミュレーション用のソフトウェアのモデル設定、あるいは情報システムの論理的デザイン[1]によって記述することである。
上の意味での典型的なモデリング技術としては、数理計画法の手順がお手本となる(例えば Williams(1993))。つまり分析者は、まず現実の対象問題について観察できる事実やデータを集め、その目的関数といくつかの制約条件からなる最適化問題として定式化した「モデル」を作る。[2] 次に最適解ないし近似解を見つけるための適切な解法をこのモデルに対して適用し、合理的な解(ソリューション)を求める。最後に、こうして得られた解に感度分析やシミュレーションなど、さまざまな吟味を加えた上、結果を表やグラフや文章にまとめ、説得的に、意思決定者に対しこれを推奨する。
制約条件 x≦ 5, y + z ≦ 10, z ≧ 3, x + y = 10
非負条件 x, y, z ≧0.
例えば上のような数理計画モデルは、製造業の物流部門における輸送計画問題を表していると考えることができ、その解釈は以下のようである。図1に示されるように2つの工場から2つの消費地に向かう3つの輸送ルートがある。
図1.例題の輸送ルート
計画輸送数量ベクトルを(x, y, z)とする。それらの単位当たり輸送費はそれぞれ1万円、1万円、2万円であり、総輸送費用をできるだけ節約したい。ただし、最初のルートは工場Aから出荷されるがその上限は5単位までである。後の2つのルートは共通の工場B
から出荷されるが、出荷能力は10単位であり、よってyとzの合計はこれを超えられない。最初の2つのルートでは同じ消費地に至り、合計10単位の需要をぴったり満たす必要があり、また最後のルートで3単位以上の需要を満たす必要がある。
図2.表計算ソフトウェアによる輸送計画の例題についてのモデリング
上の例は平易な線形計画問題であり、このタイプの問題はもっと規模が大きくても輸送解法や線形計画法の標準的解法で解ける。例えば表計算でもソルバーと呼ばれる追加的機能を用いて計算することができる(図2参照)。実際に図2に示した表計算シート上の「モデル」[3]を作成し、ソルバーで解いたところ、最適計画(x,
y, z)=(5, 5, 3)、最小輸送コスト16という解が求まった。
この例題ではたまたま整数解だが、しかし単位が整数値に限定されるときは、組み合わせ最適化問題となり、きれいに解けないこともある。またたまたま解けたとしても、多くの局所最適解を数え上げるといた動作は苦手である。論理プログラミング言語Prologは、人工知能(AI)の研究でよく知られているが、論理式として読むことのできるプログラムをきちんと宣言的に書くと、それを満足する変数集合への値代入組を、自動的に探索するバックトラックと呼ばれる制御機構が組み込まれている。そこで、いくぶん算術的な用途ではあるけれども、上の例題のモデリングに対してPrologを使ってみることにしよう。すると、例えば以下のようなプログラムになる。
feasible_plan([X,Y,Z],Cost):-
member(X,[0,1,2,3,4,5]),
Y is
10 - X,
member(W,[0,1,2,3,4,5,6,7,8,9,10]),
Z is
W - Y,
Z
>= 3,
Cost
is X + Y + 2 * Z.
optimal_cost(Plan,Cost):-
feasible_plan(Plan,Cost),
\+ (
feasible_plan(_P,C),
C < Cost
).
この実行結果は次のように3通りの解が求まる(セミコロン+Enterでバックトラックする)。
?- optimal_cost(A,B).
A = [3, 7, 3]
B = 16 ;
A = [4, 6, 3]
B = 16 ;
A = [5, 5, 3]
B = 16 ;
No
Prologについては後で詳しく述べるが、そのモデリング能力は、どうやら合理的な意思決定の技法にもある程度向いているといえる。この例からだけで断言することは控えたいが、BasicやCなど他のプログラミング言語とちがい、データの定義や制御構造にとらわれずに、対象問題とその合理的な解法のロジックに専念できる利点は察しうる。(またそれは必ずしも数値的解法の精確性や効率性の追求を諦める代償にはならないと思われる。)
一方、認知科学、数理心理学、および経営情報学における意思決定研究、あるいは、経営学が伝統的にそうであったが、現実の人間は、必ずしも合理的ではないことを前提[4]としており、その上で人間の判断・行動の特質とそれに至るプロセス、そしてその合理性の限界を克服するための技術が研究されている。一言で言えば、これらの分野では限界合理性のモデルが研究されているが、従来から言われてきたヒューリスティックな問題解決や自然言語処理とともに、Prologの能力が発揮される領域ではないかと思われる。
ところで人工知能研究を核とした認知科学(cognitive science)は、経済・経営科学と並び、もう一つの大きな知的遺産でもある。Herbert A. Simonは、これらの分野を、コンピュータサイエンスを媒介として橋渡しした研究者であった。彼の提唱した、限界合理性[5]や満足化原理の概念は、経済学を学ぶ者にとって、一種の風刺(satire)として、よく引用される言葉になった。一方、Simonは人工物のデザイン(design
of artificials)についての独自の見解をその著作で披瀝しているが、これらの概念ほどには人口に膾炙していないようだ。Simonの考えは次のように要約できる。人工物はユーザあるいは人工物自体がそのデザイン上の所定の目標を遂行するために使用するものだが、またそれを境界にして内部環境と外部環境を隔てるインタフェースとして捉えることができる。コンピュータはその抽象的な構成や機能(つまりプログラム)に注目するだけで、その挙動についての完全な記述が得られる特殊な人工物である。[6] またこれを利用すれば、他のあらゆる人工物の動作を模倣できるため、理解不十分な複雑な対象のふるまいをモデリングし、シミュレーションを通じて理解を深め、そのデザインに役立てることができる。
また、30年以上前にSimonがその論文中で示唆したように、限界合理性は大規模な企業組織における分権的情報処理と形式的なアナロジーをなす。関心や興味は枯渇しやすい資源であり、その上手な配分と管理が、現実の知性を特徴付けている。今日まで注意を持続している研究者は少なくない。例えば経営組織の経済分析(メカニズムデザイン)の分野で著名な研究者の一人であるRoy
Radnerは、マネージャの分権的意思決定 を効率的に処理する組織構造としての階層に注目し、その数理構造を分析している。この分野ではゲーム理論、動的計画法、ニューラルネットなどの数理モデルを用いた分権的経営システムのデザインが研究されてきた。
つまり人工物とは、人工知能(artificial intelligence)にヒントを経て敷衍されたものだが、社会的あるいは経済的制度を含む、広い意味での情報処理を行うシステムのことである。実際、人間社会はその多くが人工物であり、また会社の業務の多くは記号システム、つまり情報処理によって占められている。簡単なソフトウェアの製作から、社会・企業で使われる巨大な情報システムの開発にわたって、人工物をデザインする知的作業の例になるだろう。
経営科学に代表される合理性を処方するための語り口[7] は、お互いに尊敬できる見識や技術をもった専門家たちによる問題解決志向をその特徴する。それ自体はどの時代においてもつねに学ぶべきものがあると思われる。すなわち、たんにお互いの利害を対立させたり、十分な検討や討議を経ず、政治的な妥協を図ったりするのでなく、合理的かつ批判的に現実の対象問題を検討し、ときには白熱した議論になったとしても、しかし基本的には一つのチームとして、協調的に、それを解決しようとするミッションを共有して遂行する姿勢である。[8]
しかし多くの場合、人工物のユーザは、そしてデザイナー自身もそうであるが、必ずしも合理的でない現実の意思決定者や問題解決者である。また彼の提唱するデザインのカリキュラム[9]とは、そうした情報システムがどのように、探索的にあるいは果断に、ふるまうのかを探求し、またそれをデザインする人たちをどのように制度的な枠組みの下で教育すべきかを論じたものである。Simonはこの目的に対して従来の自然科学や工学は不十分だと考えた。ただし、いうまでもなく現実の教育制度は非常に複雑な問題であり、本稿の範囲を超えている。
人工物のデザインという観点から、情報技術者のミッションを改めて考えると、それは現実の業務における意思決定や問題解決に携わる人々を、そのしくみを通じて支援する機能をもつ情報システム[10]、別の表現を用いれば「メカニズム」[11]を実現することだと考えられる。また、そこでは規範的な解法だけでなく、限界合理性についてのモデリング、およびモデリングそのものが限界合理性の下での問題解決プロセスであることを考慮に入れた方法論が必須であると考えられる。本論文では論理プログラミング言語Prologを用いた、知識表現や合理的選択のモデリングを題材に、現実の人間のことばの理解や限界合理性とのギャップをどう埋めたらよいかについて、具体的なPrologによるモデリング事例を通じて考察してみたい。[12]
以降の部分では、次の第2節で、まず合理性を処方する理論としての合理的選択や経営科学の考え方と、コンピュータ利用技術との関連、人工知能(AI)とその研究の中で生まれてきた論理プログラミング言語Prologについてそれぞれ概観する。第3節ではPrologとそれを用いた知識や行動のモデリングの基礎について説明する。第4節ではモデリングにともなう知的作業自体を論じる。第5節ではことばの理解に基づきルール型知識のモデリングを行う場合の問題点と対処法を、条件文を実質含意に翻訳する場合に絞って、いくつか述べる。第6節では基本的な日本語文における、主語を示す助詞のびみょうな言い回しの問題を論じる。第7節では論理学を社会におけるとりきめとして論じ、ゲーム理論の応用モデルを示す。第8節では前節のゲーム理論モデルに対して、いくつかのゲーム分析(ナッシュ均衡、混合均衡、および相関均衡)をモデリングする。最後に、第9節で、心理学的な意思決定モデルとしての属性による消去(EBA)をモデリングする。
合理的選択とリスク管理の研究は18世紀の確率論の研究に遡るが、現代的な定式化は、von NeumannとMorgenstern、Arrow、Hurwicz、Debreu、Savageといった、数学者たちの手で1950年代にその基礎の部分が概ね整備された。期待効用理論、ゲーム理論、社会選択論、一般均衡理論などである。
同時期に、今日の計量経済学や経営科学・OR(management science/opereations research)分野が立ち上がり、数理分析を基礎に、コンピュータの計算力を利用して、現実のさまざまな問題解決に向かっていった。Danzig、Bellmanらによる数理計画法やLeontiefの産業連関分析、Kleinのマクロ計量経済分析、von
Neumannのモンテカルロ法(乱数シミュレーション)といった手法は、産業経済への実用性があり、かつコンピュータの高い計算能力を要求した。この種の語り口の変種は、現在まで繰り返し用いられている。例えばMRP、BPR、ERP、サプライチェーンマネジメント、データマイニングなど。
1930年代までに形式的システムの証明能力とその限界(原理的計算可能性、決定問題)を解明した数学者たちの末裔であるvon
Neumannは、応用数学分野で顕著な業績を残している。ゲーム理論や期待効用理論のような経済学的手法を整備し、またプログラム内臓方式や自己増殖オートマトンといったコンピュータ科学の基礎となる理論・技術に貢献した。期待効用理論では、合理的選択を基礎付けるために公理アプローチを採用したが、これは出自の分野のお家芸でもあり、少数の精選された仮定、つまり公理から矛盾なくすべての可能な定理を証明する。[13]
ただし、合理的選択理論は、意思決定者の心の動きには言及していない。常識的にいえば、合理性はそれを実現するための一定のインテリジェンスを要求するが、合理的選択の考え方はむしろ光が最適性原理にしたがって進むという物理法則に似ている。これに同調するかのように、もし極端に行動主義的な見方をとるならば、結果的には同じであるなら、中身も同じだというべきだろう。[14] より穏健な批判としても、同じデータから同じ結論を導くなら、できるだけ簡潔な言葉を選ぶこと、いわゆる「オッカムの髭剃り」が推奨される。
1950年代にAIの研究が組織化され始め、認知心理学的において知的主体の情報処理に注目した分析手法が開拓されると、様相は徐々に、しかし確実に変化し始めた。1970年代になるとまず心理学や言語学の一部で、認知革命と呼ばれる大きな変化が起きた。また1980年代半ば以降の意思決定論やゲーム理論において、限界合理性の研究が活発化した。
一方、意思決定を支援するための情報システム(DSS、MIS、EIS、DWHなど)の研究は合理的選択に比べればさほど長い歴史はないが、コンピュータの黎明期から続いている。従来は主に分析業務担当者が対象ユーザであり、規範的理論を実装し、統計分析、動的システムや乱数発生を用いたシミュレーション実験、GUIを用いたモデリングやレポート・グラフの自動生成など、使いやすくすることに重点が置かれてきた。
おそらく限界合理性の観点を組み込んだ情報システムには、知的CAI (intelligent Computer Aided Instructions)と呼ばれた学習者向け情報システムのそれと共通するインタフェース機能が必要だろう。すなわち現実の意思決定者をモデリングし、統計データを通じて実証的にユーザの目的や意図や信念を把握し、モデリングエラーを診断・アドバイスできる機能である。代替案の評価選択問題に特化した技法としては、AHP(分析的階層プロセス)やDEA(データ法絡分析)のような経営科学・OR手法が利用可能であり、合理性に限界のあるユーザの知能との間のギャップを埋めるための指針が具体的に得られるが、情報システムデザインに対する応用方法は明らかではない。[15]
AI研究の基礎分野でもある計算理論は、形式言語学やコンピュータの技術とともに発展していった。この流れの中で、その成果物の一つとして、ColmerauerやKowalskiのPrologシステムが生まれた。Prologは論理プログラミング言語、知識処理言語、あるいはAI言語などとも呼ばれることがある。論理プログラミングと呼ばれる所以は、そのプログラム構文が第1階述語論理学の論理式として解釈でき、またその動作原理が導出原理(と単一化)と呼ばれる、コンピュータによる自動定理証明技術に基づくためである。導出原理と単一化(resolution
principle with unification algorithm)は1965年にR.A. Robinsonによって提唱された(Robinson,
1965)。また、PrologはAI的システムを効率よく作成するために向いているとされ、1980年代には、日本の第5世代コンピュータプロジェクトにおける基幹技術の一つとして注目され、制約論理言語に発展されたが、その後、研究対象としてのPrologに対する関心は枯渇した。
筆者はPrologを、従来宣伝されてきた知識処理プログラムとしてだけでなく、合理的意思決定や限界合理性のモデリングに活用したいと考えている。非公式的な理由は自在にプログラミングできる言語が今のところそれしかないからである。これを除外して、主な理由は2つある。
まず、最初に述べたように、意思決定やゲーム理論の分野のモデル自体が複雑である。Prologは内部データベースに節形式のプログラムを登録し、それを基礎として問い合わせに答えるため、パタン照合によるゴール推論(導出原理)を駆動する。これによってAI的ないし芸術的なプログラミングよりも、むしろ情報工学的なモデリングの概念に近い開発に向く可能性がある。それは対象モデルのデザインの透明性にも貢献するだろう。例えば差分リストを用いるテクニックはプログラムを短くできるが、直観的にはプログラムの意味を分かりにくくなる。ユーティリティとしてならよいだろうが、対象領域の基本的モデリングには使えない。
もう一つがより重要であるが、限界合理性は、意思決定者の用いるメカニズムと意思決定者の知識処理の両方を明示することによって、はじめて適切にモデリングできると考えられる。ここは上で述べたモデリングツールとしての利点とともに、本来の知識処理言語としての特質が生かされるだろう。しかしここでも過度なAI的技巧によって現実の意思決定者の理解から遠ざからないように注意すべきだ。蛇足ながら、例えば最適化用パッケージソフトや、優れたゲーム理論シミュレータとして知られるフリーウェアGambitは、この目的には必ずしも適していない。その浅い理由は明らかである。メカニズムとして、あるいは知識処理として、デザインの透明性に欠けているからである。より深い理由として、私たちは、探求の出発点として、すでに解き方が分かっているクラスの問題を扱うが、そうした問題の答えを計算できるようになることを最終的な目的としてはいないからである。
Prologシステムでは述語論理学(predicate logic)[16]に基づく知識表現を扱い、またその推論動作はコンピュータによる自動定理証明技術の研究に基づく(これらの分野のコンパクトな入門書としては、例えば有川・原口(1988)や復刻されたChan
and Lee(1997)を参照)。本節ではPrologを用いた論理に基づくモデリングがどのような知的作業であるのかを、簡単な例でもって示そう。例として、日常の言葉で表現された知識を、Prologを用いてプログラム化する場合を考えてみよう。
この種の工学的技術は知識ベースシステム(KBS)と呼ばれ、その代表的手法はルールベースシステム(RBS)である。RBSはルールを中心にしたKBSであり、その基本要素であるルール型知識の規範的解釈は論理学における実質含意によって与えられる。実質含意(p→q)の真理値は、4通りあるpとqの真理値の可能な組み合わせに対し、p=Trueかつq=Flaseの場合がFalseでそれ以外はすべてTtrueである。[17]
Prologのプログラムは節(clause)と呼ばれる特殊な論理式に対応する形式に統一される。これによって事実やルールといった知識表現を直接プログラムとして書くことができる。例えば、「20万円あれば、激安パソコンが3台買える」ということは、次のように表すことができる。[18]
‘買える’(‘激安パソコン’(3,’台’)):- ‘可処分所得’(Y,’万円’), Y > 20 .
‘可処分所得’(40,’万円’).
‘可処分所得’(40,’万円’)は一つの述語 ‘可処分所得’/2からなる事実(fact)を表す節である。また最初の節のように、記号:-で区切られた形式は、ルール節と呼ばれる。ルール節は、区切り記号の左側に一つだけ述語を持ち、これをルールの頭部と呼ぶ。区切り記号から右側は、その本体と呼ばれ、一つの述語か、あるいは2つ以上の述語がカンマで区切られて並ぶ。これらは頭部がtrueになるための十分条件をなすものと解釈される。
ところで標準的な論理学の記法では、最初の例でのルール節は以下のように表せることに注意する。
(∃y) 可処分所得(y)
∧ y > 20 → 買える(‘激安パソコン’,3,’台’)
これは以下の論理式と論理的に等しいことに注意する(選言標準形と呼ばれる)。
(∀y) ¬可処分所得(y) ∨ ¬(y > 20) ∨ 買える(‘激安パソコン’,3,’台’)
すなわちPrologのルール節は、高々一つの肯定リテラルを含むことができる選言標準形である。これをホーン節という。標準形での肯定成分はルール節ではその頭部である。それ以外の否定成分はルールの本体を構成しているが、これらは頭部が成立するための十分条件である。事実節は無条件にtrueである。よってルール節
goal:-true. と同じ意味をもつ。Prologデータベースは節形式の集合である。[19]
このプログラム例を、Prologシステムの内部データベースに登録[20]した後、次のような問い合わせを入力すると、Prologシステムがその答えを推論によって見つけて回答してくれる。[21]
?- ‘買える’(‘激安パソコン’(X,’台’)).
X = 3
Yes
このような問い合わせのための入力形式は、ゴール節と呼ばれ、カンマで複数の条件を連ねることもできる。Prologシステムは、節形式のプログラムを内部データベースに登録した後、ゴール節を入力することによって推論を開始する。手続き的に言うと、Prologシステムは再帰的にゴールのパタン照合を行う。ゴール節に一致する事実が見つかれば頭部はtrueとなり、ゴールが成功、Yesが表示される。直接ゴールと一致する事実がなくても、頭部が照合した節の本体部分があればよいが、ただしその本体のすべての条件を派生的ゴールとして実行し、成功しなければならない。また、Prologシステムは、ゴール追及を再帰的に繰り返しながら、途中のゴールで失敗すると自動的に代替する証明ルートを縦型探索するバックトラック制御を内蔵している。
より厳密に言うと、Prologシステムの動作原理は、SLD導出にしたがってゴール節を証明することある。その原理は、おおむね3段論法と背理法を組み合わせたものであり、ゴール節の否定をホーン節データベースに追加して空節を導く。同時に、述語の引数に含まれる変数部分を、単一化
(unification)手続きにしたがって整合的に代入する。[22]
最終的に、もしゴールが成功すると、事実の組と、それまでに単一化によって代入された引数の値の矛盾のない組が得られる。矛盾しない値割り当ての組のことを、本論文では解と呼ぶことがある。成功の場合、これも同時に出力される。しかし、バックトラックしても解が見つからないときは、Noと表示される。
また2つ目の事実を次のように置き換えることによって、より複雑な事情をモデリングすることもできよう。
‘買える’(‘激安パソコン’(3,’台’)):- ‘可処分所得’(Y,’万円’), Y > 20 .
‘可処分所得’(X,’万円’):- ‘今月の給料’(Y,’万円’), Kozukai is 0.1 * Y,
‘へそくり’(Z,’万円’), X is Kozukai + 0.7 * Z.
‘今月の給料’(30,’万円’).
‘へそくり’(10,’万円’).
数式の右辺の評価は中置演算子is/2を用いていることに注意する。この修正モデルの解釈は、月給の1割を小遣いとして自由に使える他に、へそくりとして蓄えた金額の7割までを支出に回しても構わないという支出行動基準、および現在の給料が30万円であり、へそくりが10万円であるという2つの事実を表す。上の例で可処分所得は10万円になるから、‘買える’/1を実行すれば、気の毒な結果が推論される。しかし、最初の節を次のように変えれば、何台なら買えるのかが分かる。
‘買える’(‘激安パソコン’(X,’台’)):- ‘激安パソコンの価格’(Z,’万円/台’),
‘可処分所得’(Y,’万円’), member(X,[0,1,2,3,4,5]), Y >= Z * X .
‘激安パソコンの価格’(5,’万円/台’).
標準述語findall/3を用いて可能な台数を枚挙してみよう。実行例は次のようになる。
?- findall(X, ‘買える’(‘激安パソコン’(X,’台’)), Z).
Z = [0, 1, 2]
Yes
最大2台まで買えることが分かった。ところで、上で
member(X,[0,1,2,3,4,5])という2引数の述語は、Xがリスト[0,1,2,3,4,5]のいずれかの要素であることを表す。リストはPrologで扱うことができる便利なデータ構造であり、縦棒
| によってその左端の要素と残りの要素に区分する。したがってリストは再帰的にその要素をパーティションする2進木とみなせる。また述語member/2は次のような別のプログラムとして登録されている。[23]
member(X,[X|Y]).
member(X,[_|Y]):- member(X,Y).
さらに次のような応用も考えられる。観察された行動と、既知の事実から、その行為者だけが知る隠れた情報を推理するためのルールをモデリングしてみよう。ただしこの推論者は行為者を実際よりもケチだと考えており、へそくりからの支出性向の上限が少なくて30%、多くて50%だろうと予想し、その金額を少なくとも5万円、5万円刻みで最大20万円までと推定すものとする。
'へそくりの推定'(Q,'万円',[X,C]):-
'買える'('激安パソコン'(X,'台')),
'激安パソコンの価格'(Z,'万円/台'),
'今月の給料'(Y,'万円'),
Kozukai= 0.1 * Y,
Sagaku is max(0, Z * X - Kozukai),
'推定支出性向上限候補'(C),
'へそくりの推定値候補'(Q),
Sagaku =< Q * C.
'へそくりの推定値候補'(Q):- member(Q,[5,10,15,20]).
'推定支出性向上限候補'(C):- member(C,[0.3,0.4,0.5]).
これはいわば前のPrologのプログラムの逆像を、その論理的解釈に基づいて人智と手作業によって求めたものである。上記のプログラムをkiyo.plという名のファイルに作成し、Prologから読み込んで実行した結果を以下に示そう。ただし、コマンドプロンプトでは日本語入力できないため、次のような読み替え用述語estimate/1を追加してある。
estimate(hidden(Q,X,C)):-G='へそくりの推定'(Q,'万円',[X,C]),G.
?- [kiyo].
% kiyo compiled 0.01 sec, 52 bytes
Yes
?- estimate(hidden(X,Y,Z)),Y>0,\+
(estimate(hidden(_X1,Y,Z)),_X1 <X).
X = 10
Y = 1
Z = 0.3 ;
X = 5
Y = 1
Z = 0.4 ;
X = 5
Y = 1
Z = 0.5 ;
X = 20
Y = 2
Z = 0.4 ;
X = 15
Y = 2
Z = 0.5 ;
No
?-
上で実行されたゴールは、同じ観察データと推定されるケチの程度モデルの組(X,C)の下で、少なくともいくらのへそくりがあるかを推定したものである。この結果から次のようなことが読み取れる。1台買ったときはけちの程度が高くてもへそくりは高々10万円と推論されるが、2台買うと、どれほど気前がよかろうと少なくと15万円のへそくりを隠しており、かつ思ったよりケチでない(支出性向
> 0.3)ということが分かる。またもしこのような推定ルールを購買者が知っているなら、無駄を覚悟で、激安パソコンを2台買うことによって、推定者に対し、「自分はそんなにケチじゃない」と分からせることができるかもしれない。
この例だけからでも目的、欲求、信念、意図、計画などの各種エージェントモデリングへの潜在的応用の想像はつく。しかしここで注意したいことは、上のようなモデリング例に含まれる、(逆像の)モデリングという知的作業自体が興味深いことである。実際、もし推定者がこのモデリングの主体であったならば、上のような推論結果を見て、推定者の購買者についてのメンタルモデルを改訂する可能性があるだろう。つまりへそくりの上限がもっと多かったとか、あるいはもっと浪費的であったという可能性が考えられる。それゆえに、出血覚悟の購買行為には、より深い誤解を招く危険が潜むのである。
本論文ではこれ以上、心理的なゲームのモデリングに立ち入らないことにする。しかし一言付け加えれば、このような知的モデリングないしメタモデリングも、やはりモデリングの基本的手順にしたがって行えるであろう。すなわち、まずその入出力のデータ対の例を作ることから出発し、次いでそれを実現する処理を作成する。もう少し簡単な別例でその変換のポイントだけ確認しよう。
‘買える’(X):- ‘価格’(X,P), ‘可処分所得’(Y,’万円’), Y >= P.
‘価格’(‘パソコン’,15).
‘価格’(‘車’,50).
‘価格’(‘プラズマハイビジョン’,80).
‘可処分所得’(35,’万円’).
出力したいプログラムは、上でモデル化された消費者が3種類の商品のうちどれを購入したかを観察し、その可処分所得を0〜100万円の間の20万円刻みの上限値で推定するものだ。ただし推定者のプログラムは、可処分所得そのものについて直接問い合わせできないものとする。
‘可処分所得の推定’(Y,’万円’):-
member(Z,[0,1,2,3,4,5]), Y is Z * 20,
‘買える’(X), ‘価格’(X,P), Y >= P.
上のプログラムをよく見れば、元の述語 ‘買える’/1 の本体にあった ‘可処分所得’/1 の推定物をその頭部に持つ。ちなみに、これは助詞ハを用いて、文中の要素だったものをとりたてて、主題化する言語的操作に、よく似ていることに読者は気づかれたかもしれない。
哺乳動物でもっとも大きいクジラ。(事実)
クジラは、もっとも大きな哺乳動物です。(クジラを主題化)
哺乳動物(の中で)は、クジラがもっとも大きい。(哺乳動物を主題化)
これらはその充足例が同じ論理形式(冠頭標準形)で表される事実となるが、後で紹介するように、Prologのプログラムとしての証明能力には差異がある。[24] 何を主題化するか、つまり何を頭部に持っていくかというユーザの視点・目的によって、ルール節として表現の仕方が変わり、それによって推論と情報の流れ(変数への値代入)が制御される。またその差異を用いて、素朴な論理式への翻訳ではできない、日常のことばの用法に見られる意味的な区別をつけることが可能になる。おそらく、この発想は、Prologが制約論理プログラミングに発展されていった背景にあるものと一致している。
典型的な条件文「もしAであればBである。」を、素朴に論理式に翻訳すると、実質含意A→Cになり、その論理的意味は¬A∨Cに等しい。ところが以下のようなごくありふれた例文で、直観的理解と論理によるモデリングが不一致を起こす。
「徳川家康には息子が4人いる。」
「(ということは)彼には5人以上の息子はいない。」(*)
「もし20万円あったら5万円のパソコンは何台買えますか?」
「20万円あれば5万円のパソコンは2台買えます。」(**)
直観的理解では、もし最初の例文が正しければ、文*の意味を自然に想定できるが、実質含意ではこれは成り立たない。一方、後の問答文のペアで**は算数の問題で不正解とされかねない。前出のPrologのプログラム例で、可処分所得がもっと多いか、価格が安い場合を実行すれば確かめられるように、**は論理的に間違った答えではないが、*は誤りである。こうした言外の意味は言語学では誘導推論(invited
reasoning)と呼ばれている(坂原, 1985)。また数理論理学では言外の項目に対する否定の意味を追加することを完備化と呼ぶ。
こうした現象の再現性から、言語研究者は、現実の会話において文が伝えると期待される内容について、暗に何らかの最小性(情報量の最大化)が要請されていると考えるようになった。それは、Paul Griceの言う協調原則やFrank Ramseyの合理的な信念更新に通じるものであり、次のように述べることができる。
複数の真なる回答が可能であり、かつそれが自然にランキングできるなら、そのうち
偽になる直前の答えを一つだけ示せ。(最小性の原理)
しかし限界付きコンテクストでは最大情報量が要求され、誘導推論が生じるが、完全提示コンテクストでは情報量が影響せず、誘導推論が生じないことも観察されている(坂原, 1985, p.108)。[25]
「宿題は何科目済んだ?」「算数と国語の2教科は終わりました。」 (限界付きコンテクスト)
「算数と国語の宿題は済んだかな?」「はい。」 (完全提示コンテクスト)
また、これは次の節で述べる対比のハ(および総記のガ)の緩和の場合とも類似している。
条件文の「隠れた前提」も日常言語を論理式へ単純に翻訳する企てを阻む。隠れた条件¬Rをもつ条件文A→Cの論理式への適切な翻訳は、(¬R→(A→C))&(R→¬C)であるとされる(坂原(1985), pp.126-8)。次に、通常の条件文と隠れた前提のある条件文の例をそれぞれ挙げて、そこからの推論の仕方のちがいを説明しよう(cf., 坂原(1985), 例文(62)と(63))。
(魚泥棒の犯人推理)
「もし魚泥棒がタマなら、犯人は赤い首輪をしている。」(H→¬B)
「犯人は青い首輪をしていたわ。」(B)
「じゃあタマは、魚泥棒ではない。」(∴¬H)
ここで用いられた推論は、通常の論理学のルールに反しないものであり、H→¬B=¬H∨¬Bに注意すると、B&(¬H∨¬B)/∴¬Hというスキーマとして表せる。ところが、これと形の上では同じように見える次の例文では、このスキーマは明らかに直観に反する結論を導く。
(ディベート大会参加者の予測)
「ディベート大会は来月30日に催されます。」(B)
「ただし、もし参加申込者が少なかったら、大会は中止です。」(H→¬B)
「したがって参加申込者は少ない?!」(¬H)
言語学者は次のように説明する。後の例では、Hの否定は含意が成立つための隠れた前提なのであり、論理式への翻訳としては、B&(H→¬B)ではなく、(¬H→B)&(H→¬B)が直観的な意味にあう。こうした2種類の論理式への翻訳は、どのようにモデリングできるだろうか?
A→B=¬B→¬Aということに注意すると、最初の例題は、次のようにPrologに翻訳できる。
fact(‘犯人は青い首輪をしている’).
fact(‘犯人は赤い首輪をしていない’) :- fact(‘犯人は青い首輪をしている’).
fact(‘魚泥棒はタマでない’) :- fact(‘犯人は赤い首輪をしていない’).
これは次の2つのゴールをともに成功させる。
?- fact(‘犯人は青い首輪をしている’).
Yes
?- fact(‘魚泥棒はタマでない’).
Yes
上のプログラムに対して、たとえfact(‘さかな泥棒はタマである’) を追加しても、上の結果は覆らないということに注意する。仮に「さかな泥棒はタマでない」が隠れた前提だとすれば、fact(‘さかな泥棒はタマである’)は阻止条件となり、これを追加することによって、結果が覆るはずであろう。一方、一方、後の例文における隠れた前提は、以下のように一種のデフォールト推論としてモデリングできる。[26]
fact(‘ディベート大会は来月30日に催される’):- \+ fact(‘ディベート大会は中止される’) .
fact(‘ディベート大会は中止される’) :- fact(‘参加申込者が少ない’).
これに阻止条件
fact(‘参加申込者が少ない’).
を加える前と後のそれぞれの実行例は以下のようになる。
(阻止条件の登録前)
?- fact(‘ディベート大会は来月30日に催される’).
Yes
?- fact(‘ディベート大会は中止される’).
No
(阻止条件の登録後)
?- fact(‘ディベート大会は来月30日に催される’).
No
?- fact(‘ディベート大会は中止される’).
Yes
条件文は正しい推論(3段論法)の基礎でもあり、知識モデリングの要である。また日本語では、条件文になっていない場合も、主語と述語の関係が、たんに事実を述べているのか、ある程度一般性のあるルールを述べているのかが区別されることがある。つまり助詞ハとガの使い分けである。例えば、日本語では「雨が降っている。」(中立記述のガ)は自然な表現だが、「雨は降っている。」(対比のハ)はどうも不自然な印象を受ける。「この人形は紙で作られている。」(主題のハ)は正しいが「この人形が紙で作られている。」(総記のガ)はおかしいと感じられる。
上に上げた2つの例文ペアは、いずれも文の主語を示す助詞を交換しただけだが、論理的にはpredicate(x)という形式を持つ2つの事実節、すなわち
‘紙製である’(‘この人形’)
あるいは
‘降っている(‘雨’)
に帰着できそうだ。おそらく、論理的意味は同じでも、その表現の仕方や伝え方の差異によって、聞き手の側での知識状態の変化が生まれているのではないかと思われるが、それはどのようなものかは、にわかには答えにくい。一方、「さかなは泳げる。」も事実として表してもよいが、さかなにもいろいろ種類があり、ほぼ一般的に成り立つことであり、話し手が、当面考えているさかなの種類については正しいと主張したい(したがってここで挙げていないものについては否定したい)と考えていると解釈すれば、ルール節を使って次のように表せるだろう。
‘泳げる’(X):- ‘さかな’(X).
‘さかな’(‘鮭’).
‘さかな’(‘鰯’).
‘さかな’(‘メロ’).
‘さかな’(X):- ‘さかなの別名’(X, Y), ‘さかな’(Y).
‘さかなの別名’(‘銀ムツ’, ‘メロ’).
同様に「熱いお茶を飲むには急須と茶碗とお茶の葉と沸かしたお湯があるか、または近くのコンビ二か自販機でお茶のペットボトルか缶を買えばよい。」なら次のような節集合によってモデリングできそうだ。
‘飲む’(‘熱いお茶’):- ‘急須がある’, ‘茶碗がある’, ‘お湯が沸いている’(‘温度’(Y)), Y > 90.
‘飲む’(‘熱いお茶’):- ‘コンビ二’(_Y, ‘近い’), ‘可処分所得(X), X>150.
‘飲む’(‘熱いお茶’):- ‘自販機’(Y, ‘近い’), ‘商品(Y, ‘熱いお茶’), ‘可処分所得(X), X>150.
ルールを使う利点は、例えば次のように、同じような事実節を繰り返し書かなくて済むことであろう。また対象が無限個ある場合は、それは不可能である。また「AはBである」を「AがBである」よりも選好して使う発話者は、これと同じように、思考の節約方法を、新しい情報として、聞き手にサービスしていると考えられる。
‘泳げる’(‘鮭’).
‘泳げる’(‘鰯’).
‘泳げる’( ‘メロ).
‘泳げる’( ‘銀ムツ’).
実は、ハは古い情報、ガは新しい情報をそれぞれ示すという観察も、古くから内外の日本語研究者の関心を引いてきたようである。素朴に考えると、既に知っている事、文脈指示、照応される語が「古い情報」で、そうでないものが新しい情報のように思われる。ところが、言語学者は、これを洗練し、新しい情報とは、語が文中に占める意味的機能で「先行文脈からは予測できない」もの、また旧い情報は、その意味的機能が文脈から予測できるものであるとした。だが、意味的機能とは何なのか? どう予測するのだろうか? また既に知っていることとは、話し手と聞き手の共通知識なのだろうが、直接には相手の考えていることは分からない。それは正確にはどういうことなのか?どのように共通知識が推理されるのか?
例えば、トマトは果物だと思っている人に、「トマトは野菜ですよ。」と教えたとすると、「トマト」の意味は既に知っている、つまり実際にトマトを見ればトマトだと識別できるが、それが野菜であるという意味的機能、つまり両者を関係付ける述語は知らなかったということになるだろう。
’トマト’(a).
% a という事物がトマトであるということ。
’野菜’(X):- ‘トマト’(X).
% トマトは野菜の一種であるということ。
基礎部分のモデリングは、上のように単純化できる。当初、聞き手の知識ベースには、最初の事実節しか登録されていなかったが、会話を通じて、2番目のルール節を利用できるようになったというのが、その解釈である。(このような知識ベースの変化を結果する会話的処理をモデリングするのは読者の練習問題とする。)ただし話し手は聞き手の知識ベースを観察できないから、それについての推定モデルをもつことになる。また、意味的機能を予測するというのは、その述語について、聞き手のモデルの知識ベースに対して問い合わせするということだと解釈できる。共通知識や相互知識推論の形式化については、ゲーム理論や分散計算の研究において詳しく研究されており、言語運用(語用論)や認識論理学とも関連する話題だが、厳密な扱いはやや煩雑であり、ここでは省略する。
ところで、1970年代に生成文法の研究者である黒田成幸や久野ワによって、これらの助詞の特異な使用法にかんして、簡潔なルールによる説明が試みられた(久野,1988)。
(言語的制約による説明)
主題のハ→主題となる名詞句が総称(generic)もしくは文脈指示(anaphoric).
中立記述のガ→述部が非慣習的動作あるいは存在を表わす.
つまりこれらに合致しない場合には、対比のハあるいは総記のガとして解釈されざるをえないが、そうでないときも対比や総記として解釈できなくはないというわけである。ただし総称とは事物・概念の属するクラス(分類)である。非慣習的動作の例は、「手紙が来ました」、存在の例は「雨が降っている」のようである。[27]
上で主題のハについての総称や文脈指示はその必要条件として書かれていることに注意する。十分条件でないことを示すには、選択問題を質問されたときの答えを考えればよい。「Aが答えだ。」と言えば、Aは文脈指示(anaphoric)だが、ハは使えない。また一人称は新情報になれず、総記と解される。そこで助詞ガの意味的機能を新しい情報を示すことだと考えれば単純になる。
(情報の原理)[28]
a.文の貢献(=新情報)は、通常、文頭から文末に向かって増加する.
b.主文の主語がガで示される場合は、新情報だと期待される.
c.一方、談話当事者間の共通知識から予測できるなら、可能な限りハで示す.
一方「総記のガ」は、聞き手が文の意味を特定するために参照する知識ベースの範囲を限定するが、これは条件文の誘導推論と似ている。また、「従属節」や「数量限定子」「程度の副詞」といった《特定の文脈》に置かれている場合は、これらの制約が緩和されることが知られており、これも条件文の誘導推論が緩和される諸ケースと類似している。
「太郎が学生だ。」(不自然)「太郎が学生だと彼は信じた。」(不自然ではない)
「学生が独身です。」(不自然)「大部分の学生が独身です。」(不自然でない).
逆に従属文中の成分は、ふつう主題のハとしてとりたてできないが、主文との関連性・情報度の高い場合には例外が生じる。
「O氏は、創立した会社が上場した。」(不自然ではない)
「O氏は、創立した会社が8時から営業している。」(座りが悪い)
「この患者は、K医師が薬を処方した。」(自然)
「この患者は、K医師が薬を飲んだ。」(座りが悪い)
おそらく、こうした例文では、聞き手にとって、文脈や、文中の要素の意味的関連についての知識が、推定はできなくはないが前もって明らかでなかったり、あるいは容易に推論できないために、不自然に思えたり、座りが悪いと感じられるのだろう。しかし、こうした直観も情報の新旧や意味的機能と同じく、話し手や聞き手が利用できると想定される知識ベースないしメンタルモデルを明示的にモデリングすることによって、初めてすっきりと説明できるのではないだろうか。
以上見てきたようなことばの理解をめぐる問題点は、いずれも人工物の対話的インタフェースの基礎として、素朴に論理学を採用することに疑問符をつける。
技術的には、隠れた前提の例題やハ−ガの使い分けの問題のように、モデリングの方法を工夫すれば、対応できることも分かった。さまざまな代替理論が、ファジィ理論、非単調推論、確率論理学、Dempste-Shafer理論、信念ネットワークなど、これまでに提案されている。これらはそれぞれ実質含意に基づく推論や条件付確率に基づく不確実推論に対する修正モデルである。もっとも個人の判断のあいまい性や多様性を許容しながら、客観的に誰でも合意できる解釈を得るというのは、民主主義の理想に類似するが、同時にそれを実現するためのコストもある。
皆が共通に使用するインタフェースや表現言語は、多少直観にそぐわなくても、実質含意の解釈にしたがうと約束しておいた方が、その後の混乱・誤解と再調整のための無駄な議論を防ぐため好ましいかもしれない。
もともと論理学とは、数学者・科学者の共同体で知識を伝達する際のコミュニケーションの失敗を防ぐために作られた人工言語である(論理学の入門は例えば、Allwoodら(1977)を参照)。語りえない個性的解釈は切り捨てられるが、その代償として、システム全体としての信頼性が得られるわけである。つまり、信号機で赤は「止まれ」で青は「進め」という意味を持つのが、逆であっても一つの社会でいずれかに合意されている限りにおいて混乱を避けられるのと同じである。
一方、ハやガの自然な使い分けを適切に行う音声応答システムを、感性豊かな開発者が心理学的要素を反映してデザインしたとしても、「なぜ客観性が無く、合意できないことを、皆が使うシステムのデザインに取り込んだのか」と詰問されることは、おそらくないだろう。意思決定者の限界合理性を記述するための、さまざまなモデルの利用法についての問題点とそれを解決するヒントもこのあたりにあるかもしれない。
図3.ゲームの例(*は各プレイヤーの最適応答)
慣習(とりきめ、約束事など)や信号にかんするゲーム理論モデルを援用して、共通知識としての人工言語の利点を論じることもできるだろう。例えば、図3のような利得表で表される(標準形)ゲームでは、2つの最適反応組(ナッシュ均衡)があり、どちらが実現するかは決定できない。等確率だとすれば平均的な結果は(11/4,11/4)を期待できるが、両者が相手の選択を確率的に期待するとすれば、(1/6でA,
5/6でA)が最適反応組(混合均衡)になるため、平均的な結果は(5/3,5/3)となる。一方、もしコイン投げを共通に観察できるとすれば、((表ならA;裏ならB),(表ならB;裏ならA))が最適反応組(相関均衡)の一つになり、平均的な結果は(6,6)となり、両者にとってずっと改善する。
このように信号を信号の意味が慣習・とりきめ(convention)として定まっており、それが共通知識であると仮定されるときに、分権的にプレイされるゲームの結果が、比較的安定して予見できるようになる。また、人工物のデザインという問題を考えるときには、ことばや記号の意味と呼ばれるものが、個人の頭脳に対応する知識ベースだけでモデリングを考えていたのでは、十分でない場合があるということに対して、より注意を払うべきだろう。[29]
前節の標準形ゲームをPrologでモデリングしてみよう。まず利得表を以下のようにモデリングする。ただし、あくまで理論に対して率直かつ直観的なモデリングするのが目的であるため、計算技術として見れば素朴なものであることをお断わりする。ゲーム理論や一般均衡の解(不動点)の計算方法については、LemkeやScarf以来、それ自体が技術的な研究対象になっている。
game(pure,payoff(2),player(1),acts([a,a])).
game(pure,payoff(0),player(1),acts([a,b])).
game(pure,payoff(0),player(1),acts([b,a])).
game(pure,payoff(10),player(1),acts([b,b])).
game(pure,payoff(10),player(2),acts([a,a])).
game(pure,payoff(0),player(2),acts([a,b])).
game(pure,payoff(0),player(2),acts([b,a])).
game(pure,payoff(2),player(2),acts([b,b])).
各プレイヤーの最適反応s1とs2は、以下のように定義される。各プレイヤーの戦略集合をS(player(1))、S(player(2))、利得関数をpayoff(player1)
, payoff(player1) :S1×S2→Rとすると、
payoff(s1,s2)≧payoff(x,s2) ∀x∈S(player1),
payoff(s1,s2)≧payoff(s1,y) ∀y∈S(player2).
ナッシュ均衡はこれらの最適反応の組(s1,s2)の下でのゲームの結果である。Prologプログラムとして、最適反応とナッシュ均衡は、例えば以下のように書ける。
best_response(pure,payoff(P1),player(1),acts([Act1,Act2])):-
game(pure,payoff(P1),player(1),acts([Act1,Act2])),
\+ (
game(pure,payoff(Q1),player(1),acts([_B1,Act2])),
Q1 > P1
).
best_response(pure,payoff(P2),player(2),acts([Act1,Act2])):-
game(pure,payoff(P2),player(2),acts([Act1,Act2])),
\+ (
game(pure,payoff(Q2),player(2),acts([Act1,_B2])),
Q2 > P2
).
nash(pure,[P1,P2],[Act1,Act2]):-
best_response(pure,payoff(P1),player(1),acts([Act1,Act2])),
best_response(pure,payoff(P2),player(2),acts([Act1,Act2])).
実行してみると、2つの均衡があると確かめられる。
?- nash(pure, A,B).
A = [2, 10]
B = [a, a] ;
A = [10, 2]
B = [b, b] ;
No
次に混合均衡を求めてみよう。利得表Aにしたがって、各プレイヤーの混合戦略p=(p,1-p), q=(q,1-q)の組(p, q)に対する両プレイヤーの期待利得はv1=pA(1)qTおよびv2=pA(2)qTとなる。ただしA(1)やA(2)はAの各プレイヤーの利得部分からなる行列とする。行列とベクトルの要素を明示すれば、以下の式(1)のようになる。
Prolog化する場合は、近似された確率組を代入し、期待利得を与える直接的なgame/4の拡張が可能だが、計算上、効率的ではない。混合戦略が最適反応[30]であるための条件は、自身の確率で微分して0となることだから、以下のように、予め各プレイヤーの混合戦略を期待利得の導関数が0付近になるよう、近似的に最適化しておくとよい(partial_maximal/4を使う)。
best_response(mixed,payoff(W),player(J),acts([P,Q])):-
prob(P),
prob(Q),
Prob1 is P * Q,
Prob2 is P * (1-Q),
Prob3 is (1-P) * Q,
Prob4 is (1-P) * (1-Q),
game(pure,payoff(X1),player(J),acts([a,a])),
game(pure,payoff(X2),player(J),acts([a,b])),
game(pure,payoff(X3),player(J),acts([b,a])),
game(pure,payoff(X4),player(J),acts([b,b])),
W is Prob1 * X1 + Prob2 * X2 + Prob3 * X3 + Prob4 * X4,
partial_maximal(J,P,[X1,X2,X3,X4],Q).
prob(P):- length(L,1001), nth1(K,L,_), P is (K-1)
/1000.
partial_maximal(1,P,[X1,X2,X3,X4],Q):-
DWP is Q * X1 + (1-Q) * X2 + (-Q) * X3 + (Q-1) * X4,
0.0001 > DWP^2.
partial_maximal(2,P,[X1,X2,X3,X4],Q):-
DWQ is P * X1 + (-P) * X2 + (1-P) * X3 + (P-1) * X4,
0.0001 > DWQ^2.
内点の混合均衡を求めるためには、両プレイヤーの最適反応写像の交点を確かめるのみでよい。
nash(mixed,[A,B],[P,Q]):-
best_response (mixed,payoff(A),player(1),acts([P,Q])),
best_response (mixed,payoff(B),player(2),acts([P,Q])).
実行はやや時間を要するが、理論値に近い値が得られる。
?- nash(mixed,B,C).
B = [1.66934, 1.66134]
C = [0.166, 0.833]
Yes
最後に相関均衡をモデリングする。共通観察するランダムデバイス(コイン投げ)の部分は、述語tossing_coin/2に表裏の確率を記述しておき参照する。相関戦略の下での期待利得は次のようになる。
tossing_a_coin(head,0.5).
tossing_a_coin(tail,0.5).
game(correl,payoff(Y),player(J),acts([Act1,Act2])):-
Act1 = [tail->A1,head->B1],
Act2 = [tail->A2,head->B2],
tossing_a_coin(tail,Prob_0),
tossing_a_coin(head,Prob_1),
game(pure,payoff(X1),player(J),acts([A1,A2])),
game(pure,payoff(X2),player(J),acts([B1,B2])),
Y is Prob_0 * X1 + Prob_1 * X2.
最適反応戦略とナッシュ均衡は上のように修正されたgame述語に対して、標準のナッシュ均衡の場合と同様に書ける。以下は実行結果である。
?- nash(correl,A,B).
A = [2, 10]
B = [[ (tail->a), (head->a)], [
(tail->a), (head->a)]] ;
A = [6, 6]
B = [[ (tail->a), (head->b)], [
(tail->a), (head->b)]] ;
A = [6, 6]
B = [[ (tail->b), (head->a)], [
(tail->b), (head->a)]] ;
A = [10, 2]
B = [[ (tail->b), (head->b)], [
(tail->b), (head->b)]] ;
No
EBA(属性による消去)モデル(Tversky, 1972)は、消費者が多次元的な商品属性(aspects)上に嗜好を持っており、各時点で一定の魅力ある属性セットに注目し、それを持たない代替案をメニュー(つまり代替案集合)から逐次的に除外するという、ある意味でありふれた選択の心理的プロセスを、より厳密に記述するためのモデルだ。例えば、次のような選択パタンは、日常的にはありふれた、納得いく選択方法かもしれないが、合理的選択のモデルとしては異常(anomally)とみなされる。
「カレーライス」と「うどん」の中から「うどん」を選ぶ(どちらでもいい→確率1/2)
「そば」と「うどん」の中から「うどん」を選ぶ(どちらでもいい→確率1/2)
「カレーライス」と「うどん」と「そば」の中から「カレーライス」を選ぶ(→確率1/2?)
合理的選択の考え方では、代替案のペアから確率1/2で選ばれるということは、いずれも好みの上で同等(無差別)ということを意味する。上では、最初の2つの選択パタンから、3つの代替案はいずれも無差別であり、したがって3番目の選択問題ではいずれの代替案も、選出確率は1/3だと予想される。実際、3番目の選択問題では、1番目の問題のメニューに「そば」が追加されたが、これによって「カレーライス」の相対的価値が倍になったかのようである。
ところで、対比される代替案によって、代替案の評価が変化するということは、意思決定者が代替案を絞込む選考のプロセスを反映していると考えれば説明がつく。実際、難しいと思われる選択を迫られた場合、私たちは代替案を選ぶ方法として、いくつかの選択基準を優先順位付きで用意し、それらを順番に適用して代替案を絞り込み、最後に残った案を選ぶことがある。
(1)価格が300円以下であること
(2)長い時間待たされずに食事できること
(3)しっかり栄養がとれること(あるいはカロリーに注意すること)
仮にカレーライスが350円だったとすると、上の順序で基準を適用すると、まず代替案はうどんかそばに絞られる。しかし基準3を使うまでは、いずれの代替案同士も区別できない。しかし逆の順序で適用すると、最初からカレーライスが選択される。
EBAモデルでは、代替案の絞込みを属性の価値を考慮した確率的選択として想定する。より詳しく言うと、意思決定者は、比較する代替案の集合に存在する属性に注目し、それぞれの代替案の有する属性の価値(=効用)と、集合内の属性全体の価値の比にしたがって確率的に選択すると考える。またEBAでは、特徴の似た代替案同士では価値が代替するが、特徴(=属性;aspects)の異なる代替案間では代替できない価値があると考える。これは、事実上、(皮肉にも)古典的な経済学の発想を取り入れたことになる。
EBAモデルを用いて上の例題のような選択確率を説明してみよう。例えば、うどん、そば、カレーライスそれぞれの固有属性をa、b、共通属性をw(麺&つゆ)とする。またカレーライスの特有の属性をc(辛い&具&ご飯)だとする。また、それぞれの属性の効用が、u(a)=u(b)=1、u(c)=2、u(w)=1だったと仮定しよう。このとき代替案の効用はいずれも2であるから、いずれのペアの比較でも同等である。
注意すべきことは、このような簡単な例題でも、最初にどの属性組に最初に注目するか、次にどの属性組に注目するかといった、注意配分の順序(あるいは選択基準の適用順序)によって、最終的に同じ代替案を絞り込むケースは複数生じるということである。例えば、もし消費者が最初にcに注目したとすると、カレーライスがいきなり選択される。その確率はu(c)/(u(a)+u(b)+u(c)+u(w))=2/5である。一方、うどんやそばも、ともに確率1/5でいきなり選出される可能性がある。これ以外に、うどんまたはそばが選出されるパタンでは、まず属性a、b、wのいずれかが注目され、カレーライスが消去された後、aかbのいずれかが注目されることによる。
このようにある代替案の選択確率を計算するためには、その代替案に最終的に至るさまざまな属性消去の探索ルートを調べ上げ、その選択確率を属性魅力の比に基づいて計算しなければならない。より複雑な問題では、属性構造も複雑化する。そのため、このような組合せ的処理は小さなサイズの問題でも煩雑であり、また表計算ソフトには不向きである。[31]
実際に上の例題に対して、3代替案の集合S = {x, y, z}、4基本属性
A = {a, b, c, w} からなるEBAモデルをPrologでモデリングしよう。まず、代替案と基本属性および基本属性の効用は以下のようになる。
alternatives(model(1),[x,y,z]).
aspects(model(1),base,x,[a,w]).
aspects(model(1),base,y,[b,w]).
aspects(model(1),base,z,[c]).
utility(model(1),aspect(a),1).
utility(model(1),aspect(b),1).
utility(model(1),aspect(c),2).
utility(model(1),aspect(w),1).
次に{x, y, z} の部分集合が有する属性は、各代替案の属性の集合和である。なおプログラム中で用いている述語subset_of/3はリストの部分集合を生成するプログラムとして別途作成した。またfindall/3やsort/2やintersection/3はいずれもPrologの標準的な述語で、それぞれ条件を満たす解の収集、リスト要素の整列、リストの共通部分である。
aspects(M,subset,S,Ax):-
alternatives(M,Alts),
subset_of(S,_,Alts),
S \= [ ],
findall(A,
(
member(E,S),
aspects(M,base,E,Asp),
member(A,Asp)
),
Ax0),
sort(Ax0,Ax).
さて、EBAモデルでの特色である代替案集合の絞り込みをモデリングしよう。属性による消去の1ステップは以下のようにモデリングできる。
eliminate_by_aspects(Model,S->(T:Deleted),F):-
aspects(Model,subset,S,AS),
subset_of(F,_,AS),
F \=[ ],
subset_of(Deleted,_,S), Deleted \=[ ],
aspects(Model,subset,Deleted,AD),
intersection(AD,F,[ ]),
subtract(S,Deleted,T),
\+ (
member(X,T),
aspects(Model,base,X,AX),
\+ subset(F,AX)
).
eliminate_by_aspects(M,S->(T:D),F,P=Peq):-
eliminate_by_aspects(M,S->(T:D),F),
utility(M,aspects(F), U1=U1eq),
find_all_alternative_ebas(M,S,EBAs),
sum_utility_of_aspects(EBAs,_,U0sEq,U0),
sum_equations_of_utilities(EBAs,_,UF0),
P is U1eq / U0sEq,
Input =[U1,U0,U1eq,U0sEq,F,UF0],
equation_of_choice_probability(Input,Peq).
上では、属性集合Fに注目することによって、部分集合Dを消去し、代替案集合をSからTに絞り込む消去とその確率をモデリングしている。その中で、述語find_all_alternative_ebas/3を用い、Sからのすべての可能な属性による消去とその効用の合計を求めている。選択確率は、焦点となっている属性集合Fの効用とすべての代替消去の属性集合の効用合計の比として求められる。
% ユーティリティ
find_all_alternative_ebas(M,S,EBAs):-
EBA = eba(M,S->(T0:D0),F0,U0eq=u(F0)),
findall(EBA,
(
eliminate_by_aspects(M,S->(T0:D0),F0),
utility(M,aspects(F0),_=U0eq)
),
EBAs).
sum_utility_of_aspects(EBAs,U0s,U0sEq,U0):-
X = eba(_,_,_,U0eq=_),
findall(U0eq,member(X,EBAs),U0s),
sum_eq(U0s,U0sEq,U0).
sum_equations_of_utilities(EBAs,UF0s,UF0):-
X = eba(_,_,F0,_=u(F0)),
findall(u(F0),member(X,EBAs),UF0s),
eqsum(UF0s,UF0).
equation_of_choice_probability(Input,Peq):-
Input =[U1,U0,U1eq,U0sEq,F,UF0],
Formula1= U1/U0,
Formula2= U1eq/U0sEq,
Formula3= u(F)/UF0,
Peq= (Formula1=(Formula2=Formula3)).
% リスト内の値の合計を数式や記号を使って表わす。
sum_eq([ ],0,0).
sum_eq([X],X,X).
sum_eq([X|Members],Eq,Sum):-
Members \= [ ],
sum_eq(Members,Eq1,Sum1),
Eq = Eq1 + X,
Sum is Sum1 + X.
eqsum([ ],0).
eqsum([X|Members],Sum):-
eqsum(Members,Sum0),
(
X=0 -> Sum = Sum0;
(
Sum0=0 -> Sum = X;
Sum = Sum0 + X
)
).
上記モデルを実行し、3代替案からの1ステップ属性消去パタンを推論した結果は以下のようである。
?-
eliminate_by_aspects(model(1),[x,y,z]->A,B,C=(D=(E=F))).
A = [x, y]:[z]
B = [w]
C = 0.2
D = 1/5
E = 1/ (1+1+2+1)
F = u([w])/ (u([a])+u([b])+u([c])+u([w])) ;
A = [z]:[x, y]
B = [c]
C = 0.4
D = 2/5
E = 2/ (1+1+2+1)
F = u([c])/ (u([a])+u([b])+u([c])+u([w])) ;
A = [y]:[x, z]
B = [b]
C = 0.2
D = 1/5
E = 1/ (1+1+2+1)
F = u([b])/ (u([a])+u([b])+u([c])+u([w])) ;
A = [x]:[y, z]
B = [a]
C = 0.2
D = 1/5
E = 1/ (1+1+2+1)
F = u([a])/ (u([a])+u([b])+u([c])+u([w])) ;
No
?-
ある一つの代替案が、代替案の集合から何回かの属性消去の後、選ばれる確率は、属性魅力に比例した確率選択を反復した結果であるが、その消去のパス(探索ルート)は複数ありうるのでその全ルートの選択確率の合計である。すでに述語member/2で説明したようなPrologの再帰的プログラミング技法を用いることにより、このEBAの行動選択モデルを、以下のように簡潔に表現できる。以下ではまずiterative_elimination_0/5を用いて個別の反復消去パスを求める。
iterative_elimination_0(M,(S->S),([
],[Asp],[1]),1=(1=1)):-
aspects(M,subset,S,Asp).
iterative_elimination_0(M,(S->T),Paths,P1=(P1eq=P1eq2)):-
aspects(M,subset,S,_AS),
subset_of(T,_,S),T\=[ ],T\=S,
aspects(M,subset,T,_AT),
eliminate_by_aspects(M,T1->(T:D),F,P=Peq),
iterative_elimination_0(M,(S->T1),Paths0,_P0=(P0eq=P0eq2)),
Paths0=(DelPath,AspPath,PrPath),
Paths=([D|DelPath],[F|AspPath],[P|PrPath]),
P1eq2 = P0eq2 * Peq,
P1eq = P0eq * P,
P1 is P1eq.
次に同じ選択結果に対する消去パスを集計する。述語iterative_elimination_1/4は始点Sと終点Tを結ぶすべての属性消去ルートとその選択確率の合計である。なお、消去パス集合は実行途中で表示し、かつ予め動的述語(dynamic)宣言しておいたieba/5としてデータベースに登録し、事後、分析に用いることができるようにしておく。
:- dynamic ieba /5.
iterative_elimination(M,(S->S),([ ],[Asp],[1]),1=(1)):-
aspects(M,subset,S,Asp).
iterative_elimination(M,(S->T),Paths,P1=(P1eq)):-
aspects(M,subset,S,_AS),
subset_of(T,_,S),T\=[ ],T\=S,
aspects(M,subset,T,_AT),
R = eba(M,T1->(T:D),F,P=Peq),
findall(R,
eliminate_by_aspects(M,T1->(T:D),F,P=Peq),
EBA0),
W = ieba(M,(S->T),NewPaths,P=Peq,P0=(P0eq)),
findall(W,
(
member(R,EBA0),
iterative_elimination_0(M,(S->T1),Paths0,P0=(P0eq)),
Paths0=(DelPath,AspPath,PrPath),
NewPaths=([D|DelPath],[F|AspPath],[P|PrPath])
),
EBA),
forall(member(W,EBA),(nl,write(W),write('.'),assert(W))),
findall(P*P0,member(W,EBA),Ps),
findall(NewPaths,member(W,EBA),Paths),
sum_eq(Ps,P1eq,P1).
例えば3代替案からzまたはxを得るそれぞれの反復属性消去パスとその選択確率は以下のようである。
?- iterative_elimination(model(1),[x,y,z]->[z],B,C=_).
ieba(model(1), ([x, y, z]->[z]), ([[x, y]],
[[c], [a, b, c, w]], [0.4, 1]), 0.4= (2/5= (2/ (1+1+2+1)=u([c])/
(u([a])+u([b])+u([c])+u([w])))), 1= (1=1)).
B = [ ([[x, y]], [[c], [a, b, c, w]], [0.4, 1])]
C = 0.4*1 ;
No
?- iterative_elimination(model(1),[x,y,z]->[x],B,C=_).
ieba(model(1), ([x, y, z]->[x]), ([[y], [z]],
[[a], [w], [a, b, c, w]], [0.5, 0.2, 1]), 0.5= (1/2= (1/ (1+1)=u([a])/
(u([a])+u([b])))), 0.2= (1*0.2=1* (1/5= (1/ (1+1+2+1)=u([w])/
(u([a])+u([b])+u([c])+u([w])))))).
ieba(model(1), ([x, y, z]->[x]), ([[y, z]],
[[a], [a, b, c, w]], [0.2, 1]), 0.2= (1/5= (1/ (1+1+2+1)=u([a])/
(u([a])+u([b])+u([c])+u([w])))), 1= (1=1)).
B = [ ([[y], [z]], [[a], [w], [a, b, c|...]],
[0.5, 0.2, 1]), ([[y, z]], [[a], [a, b, c|...]], [0.2, 1])]
C = 0.3 ;
No
?-
[1] 意思決定を扱う本論文では立ち入らないが、情報システム開発の手続きに見られるモデリングは、ユーザ要件の認識から始まり、データベースの設計、処理系のロジックの設計、プロトタイピングやシミュレーションを含むシステム仕様確定に至るまでの一連の作業になる。情報システム化のための標準的なモデリング手法としては、データベース設計ではER図法、システム開発ではデータフローダイヤグラム(DFD)が、またビジネス機能や業務プロセスのモデリングに対しては、階層的なプロセス記述図法IDEF0とそのシリーズ、オブジェクト指向に基づく汎用モデリング言語(UML)などがよく知られている。
[2] 多くの業務的意思決定が、このような最適化問題として定式化され、また数学者によってその解法(アルゴリズム)が開発された。研究者あるいは企業はそれらの解法をソフトウェアとして作成し、一部は製品化される。主な対象ユーザは企業内の企画調査、財務分析、あるいは経営計画立案業務の担当者たちだった。パソコンの性能向上のため、今日では問題が線形で比較的小規模であれば、ありふれた表計算ソフトウェアでも最適解を計算できるようになったが、数理計画法のパッケージソフトウェアを使えば、その他のさまざまなタイプの問題についても解くことができる。一方、研究者は依然として効率的な解法の知られていないタイプの問題に挑む。彼らは純粋な数学研究をしている場合もあるが、特殊なタイプの問題に対してうまくはたらく人工知能(AI)システムを作成し、実験結果によってその有効性を示す場合もある。もちろん企業内で開発された場合、特殊なアルゴリズムを用いたソフトウェアは特許、あるいは非公開になる場合があるだろう。事実、近年の欧米のビジネスモデル特許の多くが、派生的金融商品開発向けの数学手法を含むもので占められているといわれる。
[3] モデルという用語は分析手法に対して相対的なものである。例えば、表計算ではワークシート(表)上に入力されたデータと数式の参照関係の全体を、それが何らかの現実的対象(例えば輸送業務活動)を分析することを意図している場合に、そのモデルと呼ぶ。また表計算の追加機能(アドイン)では、本文図のソルバーのように、ソルバーのパラメータの組をモデルと呼ぶ。同様に、計量経済学で推定方程式に使う関数型と変数群を与えた上で、現実経済活動のデータを処理した推定パラメータの組が、モデルと呼ばれる。いずれの場合も前提として使用する分析枠組みが選ばれ、その上で、現実対象を観察したデータから、固有の特徴を「写し取ったもの」あるいは余分な雑音を取り除いて「抽出したもの」ものとして、相対的にモデル概念を定義している。したがって、これは観察データから得られたパラメータ組だけを、前提となる分析枠組みから切り離して、「モデル」と称することは無意味である。これに対し、本論文の言うモデリングは、こうしたモデルを解釈する分析枠組み、およびモデルをデザインする活動を含むものである。
[4] 意思決定の研究は、純粋に数学的モデルの研究、コンピュータによるシミュレーションを用いて意思決定者を支援する研究、あるいは心理学的実験や統計的データを行い、実験室で被験者を使って心理学的に検証する研究、あるいは現実の意思決定を行う個人あるいは企業や組織の事例研究といった、幅広い方法によって行われており、一括して一つの分野として表現することは適切でないかもしれない。限界合理性の変化に着目した場合は、実験室的状況だけでなく、意思決定者が組織文脈におかれたときの、協調作業による限界の克服、あるいは権限によるその限界の受容といった、その社会的諸機能と合理性(およびそれを実現するインテリジェンス)の共変化にかんする視点が重要であると思われる。
[5] 限界合理性(bounded rationality)とは、大まかに言えば、現実問題の複雑性が、意思決定者・問題解決者の志す合理性の制約になることを意味する。ただし、日常の用語としての合理性の概念には、緊急の危険から身を守るための意識的でない適応行動や、誤ったデータからの統計処理のような変則例も含まれうることに注意する。そこで限界合理性は、以下のような3条件を満たす「客観的合理性」と対比されて定義されている(cf., Simon(1976), chaper 5)。すなわち、(R1)行動主体が代替案集合を枚挙できること、(R2)各代替案の選択の結果生じるあらゆる可能性を考慮できること、(R3)代替案を絞込み、最終的に1つの行動を選択できる価値体系を有すること。合理性の限界とは、したがって、R1、R2、R3のうち少なくとも1つあるいは複数の条件を満たさない場合である。また合理性に限界のある意思決定者の行動を支配する満足化原理(satisficing principle)には、やや異なる2つの用法がある。一つは許容できる程度の代替案が見つかったら受け入れるという打ち切り基準に支配された探索的問題解決のことである。もう一つの用法がより本質的であると思われる。それは厳密な定式化と、解き易さの間のトレードオフを通じて、現実的で時宜を得た解決を図るための、近似的な問題定式化である。後者は問題表現のデザインに対するメタレベル問題における探索的ふるまいを意味する。
[6] コンピュータの原理的な計算能力は、あらゆるチューリングマシン(特殊なプログラム)の入出力系列を模倣できる万能チューリングマシンの存在によって限界付けられる。一般的に、システムの入出力の可能なペアを枚挙したものは、システムの機能(function)であり、数学的用語では関数(function)とみなせる。情報システムとは、ユーザのふるまいを含め、製作者が意図した諸情報の入出力系列をその機能として実現するためのプログラムと計算・記憶・表示・入力のための物理的装置からなる。しかし同じ機能は異なるアルゴリズム(プログラムで採用されている計算手順)や装置構成によっても実現しうる。例えば机上計算で99×99の答えを出すとすれば、地道に計算してもよいが、そろばんなどによる特殊な暗算技術を体得している場合は別として、暗算でなら、(100−1)^2に変形した方が早いだろう。システムをその機能の等価性に注目して識別するという機能主義アプローチは、認知科学における計算主義と呼ばれる研究方略にも通じる。ただし、このアプローチの限界は、明らかに、どこまでが対象システムの挙動を客観的に観察できるかという計測技術に依存して変化する。AI黎明期の1950年代は、心のはたらきを司る脳機構を直接観察する科学的手段はなかったが、現代ではMRIのような計測技術が進歩している。初期の研究では、パズルを解くとか、英語で受け答えするといった古典的なAI的ソフトウェアによって模倣できる心の機能を中心に論じ、それを実現する装置・機構が、生体の脳神経のシステムであるか、半導体でできた機械であるかを問わなかった。一方、特定の認知的機能や知的作業がどのような処理手順で実現できるのかということに焦点化できたわけである。しかし、喋るとか話すといった認知的機能が、脳のどの部位の機能であるか、あるいはどのような物質によって活動が刺激・抑制されているかを特定する、近年の脳科学的アプローチについても、脳神経システムを特定の心の機能を実現している計算機構とみなせば計算主義の立場と矛盾しないと思われる。
[7] いくつかの合理性を処方する別の語り口をあげ比較してみよう。問題解決志向と対照的に、経済学者の語り口としては、競争的市場の価格調整機能を利用した、分権的調整によってパレート最適な配分を実現する(厚生経済学の基本定理)というものがある。これは極端な政策的含意としてレッセフェールとなる。また価格メカニズムの不完全性(いわゆる市場の失敗)は効率的資源配分を達成するための経済政策の正当化の論法に用いられた。一方、経済学者から見た経営組織とは、計画的な資源配分のメカニズムとみなされる。ところが経営学者C.I. Bernardは著作「経営者の役割」の中で経営者の行う重要な意思決定とは、すべきでない意思決定を如何に避けるかだという趣旨の記述を残している。ゲーム理論では、1970年代以降、ゲームプレイヤーがゲーム理論家と同じように考えると仮定する、奇妙な正当化を検討し始めた。つまり期待効用最大化が共通知識であると仮定してゲームの解を計算できれば、ゲームの均衡解が実現されるというわけである。素朴に考えれば当たり前だが、厳密な定式化の下で考えれば、ゲームプレイヤーの用いるプログラムは他のプレイヤーのそれを含むことになり、その再帰構造は既知の計算論の結果(不完全性定理)のアナロジーを導くことになる。また経営科学の語り口のやや現代的でかつ商業的な変種は、数学的最適解の代わりに、商用の情報システムが前面に押し出したものである。そこでは専門家チームによる合理的問題解決に代わり、エンドユーザの情報共有と経営者による迅速な意思決定が言及される。例えば、「ユーザの直面するビジネス上の諸問題を分析し、そのニーズに応じたデータベースとネットワークを構成し、エンドユーザが業務遂行上の問題を合理的に解決するのを助けるための、《最適な》情報システムをデザインいたします。」といったものである。ソフトウェアのベンダー企業から提供されるこうした情報システムサービスは、奇しくも「ソリューション」(解)と呼ばれている。この背景には情報システムを構成するハードウェア、通信ネットワーク、ソフトウェアなどが、それぞれ自社製品のみならず、異なる企業の優れた製品の中から、顧客企業の実情に見合った組み合わせをアレンジし、一括調達する、オープン・アーキテクチャーの利点を追及するためである。
[8] ただし、こうした問題解決型プロジェクトは、十分な専門的知識と技術水準がなければ有効な解決策を見出せない。またミッションの明確さ、時間の制約を欠くと、とめどもない討議によって希少な資源を浪費する傾向があるため、必ずしも有効とはいえないかもしれない。プロジェクトはまたそれを計画・評価・管理するための専門技術を要求する。その一つの例はPERT/CPMとしてよく知られている。
[9] Simonの『人工物の科学』(邦訳タイトル「システムの科学」)で述べられているデザイン科学のカリキュラムは、その理論的・経験的な知識体系として、(1)デザインの評価:合理的選択の理論枠組み、最適解の計算方法、デザインの形式論理(最適化と満足化)、および(2)代替案の探索(デザイン過程):発見的探索(目的-手段分析)、探索のための資源配分、デザイン過程の構造・組織化、デザイン問題の表現方法を含む。また社会をデザインするためのカリキュラムに拡張する場合、さらにこれらに加えて、問題表現と限定された合理性、計画に使うデータの不完全性、顧客の識別、社会計画と組織設計、時間的視野と注意の管理、進化的デザイン(目標のあいまい性やコンフリクト)が重要になるとされる。
[10] そのような情報システムは情報系と総称されることがある。またMIS、DSS、データウェアハウスなどと呼ばれて変遷してきている。ただし、基幹系や勘定系の情報システムの開発においても、このことは一般化しうると思われる。
[11] 前出のソリューションと読み替えてもよいだろうが、本論文ではそれをより抽象的な言葉で象徴したい。
[12] 筆者の個人的見解として、ゲーム理論は、本家の経済学的応用よりも、むしろ上で述べたような人工物デザインや認知科学的な観点でのモデリング技術として、興味深い発展を見せているように思われる。残念なことに、こうした数学的な意思決定モデルは、必ずしも現実的応用を意識したものではなく、また高度に抽象的な数学モデルになっている。筆者自身、具体的な直観がはたらきにくいと感じている。いうなれば、ときどきことばが通じなくなるのである。数学者にとって、自明と思われる定理や証明が、自明に見えてこない理由は、やはり日常的なことばによる理解と、数理的なモデルを記述するための人工言語との間に横たわる深いギャップではないかと思われる。
[13] 合理的選択モデルは、AI研究の論理学に基礎をおくアプローチと共通する理論的基盤を持っている。しかし、数理論理学がAI研究の基礎と応用に積極的役割を果たしてきたのと異なり、従来の経済学的分析は主に微積分や数値的シミュレーションによって最適化計算を行えるタイプの問題が議論の中心であった。
[14] 一見すると皮肉に聞こえるかも知れないが、行動主義からの離脱は古典的なAIに対する反論でもある。言語哲学者John Searlによる寓意として提起された、「中国語の部屋プログラム」問題と呼ばれる作り話は、AIシステムが、自然言語の質問応答を首尾よくこなし、Alan Turingの「知能テスト」の基準に合格しているにもかかわらず、言葉を理解していると人々から見なされないという直観に訴えるという点でうまくできている。実際、どのような条件においても挙動が同じである2つのシステムはその物理的構成(architecture)のいかんによらず、機能的に等価(functionally equivalent)である。したがって、心のはたらきがAIシステムのそれと異なる、つまり強いAIが目指すべきものが何であるかを主張するためには、両者の「観察できる」出力が、知能の有無を区別する重要な観点で異なっているような、入力組あるいはシステムの作動条件(モデルパラメータ)を明らかにする必要がある。ただし、それはAI研究をシステム論やサイバネティクスの一般知能研究から区別する特徴である、特定領域での知能に焦点化する戦略、つまり具体的な課題領域で動くシステムを実際にプログラムするということと矛盾していない。
[15] そもそも合理性を処方するという志向姿勢には、つねにリスクが伴う。システムの分析者やデザイナーは意思決定者の価値観にコミットすることを避け、その中立性を保つことが賢いスタンスであると、Simonも指摘している。合理的であろうとなかろうと自身で決めたことは、顧客の責任においてなされることであり、顧客の合理性の限界に口出しは余計なおせっかいかもしれない。とくに経営情報システムの分野では顧客企業自身がニーズを正しく表現できない、導入するシステムの将来にわたる採算性をよく知らない、あるいはあえて算出しないことがあるといわれている。もちろん、そうした合理性の限界の可能性を無視した情報システム開発者が、使われない意思決定システムを作らない保証はない。ERP製品の導入方法論において、ベストプラクティスを規範的モデルとして処方することに、その萌芽が見られる。この経験的方法論の背景は必ずしも十分研究されていない。
[16] 述語論理学は変数や限量子を許す命題論理学の拡張である。述語(predicate)は、1つ以上の引数の関係を表すもので、∨、∧、¬、→および括弧を用いた論理結合演算によって複雑な論理式を合成できる。その引数は以下で述べる項の形式をとる。いうなれば、項と述語は、英語や日本語の文で言う、主語と述語に対応する関係を抽象化したものである。また全称と存在の2種類の限量子 (quantifier) (∀x):「すべての〜に対し…」と(∃y):「ある〜に対し…」を使えるように命題論理を強化している。
定義.[項(term)] (1)変数記号x、y、…は項である。(2)fがm変数関数の記号、t0、t1、…、tm-1を項とすると、f(t0、t1、…、tm-1)は項である。
定義.[原始式(atom)] (1)s、tが項のとき、s=tは原始式である。(2)Rをn項関係の記号、t0、t1、…、tm-1を項とすると、R(t0、t1、…、tm-1)は原始式である。
定義.[論理式(w.d.f.)] (1)原始式は論理式である。(2)φとψが論理式であるとき、xを変数記号として、¬φ、φ∧ψ、φ∨ψ、φ→ψ、∀x(φ)、∃x(φ)は論理式である。
定義.[文(sentence)] 文とは、自由変数を持たない論理式、すなわちその中のすべての変数が束縛されている論理式のことである。
以下、詳しいセットアップは省くので、文献を参照されたい。論理学に基づく推論システムの利点は、まず知識を述語、変数、論理結合子V、∧、¬、→(または、かつ、でない、ならば)といった記号の組み合わせ論理式でもって明示的に表現きること、いったん形式化された知識は、内容の理解に関らず機械的に推論処理できることである。またより重要なことは、その推論システム(=形式的体系)の無矛盾性 (consistency) :述語Aとその否定¬Aが共に推論(ないし証明)できるような述語は存在しないこと、および完全性 (completeness) :正しい述語つまり定理は必ず有限時間内に証明できること。またこれらの性質はそこで扱われる知識の内容には無関係であることに注意する。一方、モデルあるいは可能世界において充足される文は、それに対応する文を推論システムにおいて証明でき、正しくないならばその否定を証明できる形式的体系は、決定可能(decidable)であると言われる。すなわち正しい文はそれが真であることを(有限ステップで)必ず証明でき、間違った文はその否定を推論できることを決定可能性(decidability)という。これを一般化して、関数の値を有限の手続きで求めることができることを計算可能性(computability)という。述語論理におけるGodelの完全性定理 (completeness theorem)は、充足可能性に基づく意味論(|=ψ)と証明可能性に基づく構文論(|-ψ)とが常に一致した結果となることを保証するが、一方では自身の無矛盾性を証明できる形式的体系で自然数論を含むものは存在しないという不完全性定理が証明される。有限の形式的体系が無矛盾である限り、不完全になってしまうというこの皮肉な結果は、K. Gödelによって再帰関数を用いて示されたが、同様の結果が万能チューリングマシンやラムダ計算を用いても証明されている。詳しくは数理論理学、計算可能性理論、もしくは数学基礎論のテキストを参照されたい。
[17] ただし、「もし〜ならば〜である」(英語なら、if〜then〜)のように条件文として書かれたものを、実質含意(p→q)=¬p∨qとして、素朴に翻訳してしまうと、例えば¬p→pのように、論理的には正しいが、直観に反するという例を作ることができる。こうした例は枚挙に暇がない。また誘導推論は逆向きの含意が言外の意味として現れる心理学的現象であり、言語の研究でよく知られている。また日常の言葉として用いられる条件文は、上記の構文スタイルの他に、反事実的条件文、理由文、譲歩文、その他のバリエーションがあり、その否定の意味や誘導推論が微妙に変化する。その他、実質含意に翻訳する場合の問題点は次節を参照。
[18] このプログラムの中の’買える’(‘激安パソコン’(3,’台’)) や ‘可処分所得’(Y,’万円’) は述語であり、それぞれtrueまたはfalseのいずれかの値をとる。述語の引数には、数値、記号列、変数、文字列、リスト、関数などの形式のデータを使用できる。述語名/n のように引数の数(アリティ)を添えて述語を識別する。例えば、’買える’ は一つの引数をとる述語で、上の例では’激安パソコン’(3,’台’)という2引数の関数が代入された具体例である。’可処分所得’(Y,’万円’) は2引数の述語で、Yは変数である。Prologでは、変数を、このように大文字の英字で始める約束になっている。ただしアンダーバーで開始すると無名変数となる。Y > 20 のような比較演算子は中置きだが、意味的には2引数の述語 ‘>‘(Y,20) と同じである.
[19] リテラルは述語あるいは述語に否定記号¬を付けたものである。節はリテラルの論理和(選言)であり、便宜的にリテラルの集合と同一視される。
[20] 節の登録はassert/1を使って引数として直接入力するか、あるいは予めファイルに作成しておき、consult/1 ないし[ ] でファイル名を引数として読み込む。
[21] 実際にはコンソールから日本語文字を入力・表示できないProlog処理系もあるが、例えば述語を英数半角で定義し、引数に日本語の意味を記述しておけばよいだろう。またファイルに結果を出力したいときは、write/3でストリームを指定するか、あるいはtell述語で標準出力をリダイレクトできる。
[22] Prologで用いられる推論は、3段論法「a→bかつaが正しいとき、bは正しい」の背理法による変形を自動化したものである。すなわち、「a→bかつaのとき、¬bを仮定すると、a→b=¬a∨bと公理より、¬aであり、したがって矛盾する。よってbでなければならない。」。これは結論(ゴール)の否定¬bを前提¬a∨bに追加して
a∧¬a=□(空節)
つまり矛盾を導くことと等価である。この操作はDavis and Putnamによって1リテラル消去と呼ばれた。リテラル (literal) とは変数に値が代入済みの述語、つまりアトムまたはアトムの否定である。またリテラルの選言を節 (clause) 、節の連言を節集合という。こうした導出の手続きは、リテラルの選言 (disjunction) の場合に一般化できる。C0=P1∧…∧Pn→Qとなる場合は、ホーン節 (Horn clause) と呼ばれ、その標準形は
C0=(P1∧…∧Pn)→Q=¬P1∨…∨¬Pn∨Q
となる。つまりホーン節は肯定リテラルを1つだけ含む節である。より一般的な節形式は、(P1∧…∧Pn)→(Q1∨…∨Qm)のように書け、条件部の連言Pが結論部の選言Qを導出するというルール知識を表す。ただし述語論理の場合はスコレム標準形、つまり限量子をすべて前出させた冠頭標準形に対しスコレム関数によって存在記号を消去したものに変換しておく。知識ベースはホーン節集合C={C1、…、Cm}=C1∧…∧Cm、つまり節の連言として登録される。このときゴールの否定を節集合に追加し、1リテラル消去を繰返して空節を導く推論は、導出原理 (resolution principle) と呼ばれる(Robinson,1965; Chan and Lee, 1997)。Prologシステムは、この導出原理に基づく自動定理証明を実装したものであり、またその途中で述語の変数に矛盾の無い値を試行錯誤して代入する単一化(unification)と呼ばれるアルゴリズムを組み込んでいる。アトムの集合{A1、...、An}に対してA1θ=・・・=Anθとする代入θを単一化子 (unifier) といい、任意の単一化子θに対してそれを合成θ=φ・σによって作る代入φが存在するσを再汎単一化子 (most general unifier) という。共有変数を持たない節C1と節C2にそれぞれリテラルL1とリテラルL2があり、L1と¬L2の再汎単一化子σが存在するとする。このとき、
(C1’σ−L1σ)∨(C2’σ−L2σ)
をC1とC2の2項導出形(binary resolvant)と言い、またC1とC2を導出の親節と言う。例えば、Q(X, Y)をC1=¬P(X)∨Q(g(X)、b)とC2=P(f(a))から推論するためには、σ={f(a)/X}、ψ={b/Y}のように単一化すればよい。しかし一般には、任意の親節に対して導出形は一意とは限らず、また存在しないこともある。節集合に対する導出原理は、完全性を満たす。つまり正しい命題の否定は充足不能であり、必ず有限ステップで空節を導出する。その証明にはエルブランの定理を用いるが、比較的容易である。またPrologシステムの推論は、ホーン節集合に対するSLD導出にほぼ対応する。ただしプログラムの効率化のための「カット演算子」(!)や「失敗による否定」(\+)といった利便性の追及の代償としてその完全性が損なわれる。
[23] リストを活用した再帰的プログラミングはProlog言語の手続き的な特色の一つであるので、ここで少し詳しく説明しておこう。member/2は第1引数が第2引数のリストの先頭要素であるか、あるいはリストの先頭要素を取り去った残りのリストの要素であるというその定義を、一つの事実節と一つのルール節のペアによって表している。ルール節の方は、本体にmember/2それ自身を含んでおり、この自分自身を呼び出す再帰的処理によってPrologシステムは、先頭要素に第1引数が出てくるまで、先頭要素を繰り返し取り除くことになる。リストが空になれば、要素ではなかったので、(No)と出力される。
[24] Prologプログラムは論理式としての意味を持つが、しかし実行はその順序に依存する。例えば、a(X):- member(X,[1,2,3]), X > 2. はX=3で成功するが、b(X):- X > 2, member(X,[1,2,3]). はエラーとなり成功しない。一般に、節の順序や、節本体内の順序によって、導出の効率は変わる。制約処理の技術は、問題ごとの構造を利用して、実行順序を最適化し、Prologに数理計画法のソルバー機能を持たせたものである。
[25] またこれと類似すると思われる現象として、確率判断(probability judgment)の誤謬がある。その研究文脈では、命題の信憑性は、一つのカテゴリーで括られているときよりも、それと等価な選言命題 としてOR(∨)で結合されて明示的に述べられているときの方が、高く評価される傾向があるといわれている。例えば、医者の診断や、車の技師による故障診断では、一般的であいまいな記述よりも、詳しく場合分けされた説明の方が、専門家の意見らしい感じがするだろう。これは梱包原理(サポート理論)として知られる。しかし、煩雑な事例を分類し、一般化することが、専門家の情報サービスでもある。これは再梱包と呼ばれ、実際に主観的な確からしさを増す傾向が観察できるとされている。ちなみに、命題集合のパーティションを与えることは統計科学の分野で、「認識の枠組み」といわれることがある。認識の枠組みは統計分析者の知識ベースに相当するものである。梱包原理の言わんとすることは、知識ベースのプログラムを伝達するメッセージの価値であり、また提示コンテクストの限界は、話し手が聞き手に対してそれを要求する問い合わせを(非明示的に)発したのだと知らせるためのシグナルだと考えてよいだろう。
[26] 例外を許すルール知識は、AIでは非単調推論システム(non-monotonic reasoning systems)として1970年代後半から1980年代中頃にかけて盛んに研究された。Reiterのデフォールト推論、McDermott & Doyleの非単調論理(Non-Monotonic Logics)、McCarthyの囲い込み(circumscription)、DoyleやDe Kleerの真理値維持システム(TMS)、Pollockの阻却可能推論(defeasible reasoning)等が提案された。Reiterのデフォールト推論は「そのルールが矛盾無く仮定できるなら、3段論法を使ってよい。」という原則に従う。例えばダチョウがルール知識Q→Rの例外であることが分かっているなら、「鳥は飛ぶ」と「ダチョウは鳥である」から「ダチョウは飛ぶ」が推論されるのを阻止する。
ダチョウ(x)→鳥(x) %ダチョウは鳥である。
鳥(x)∧¬例外(x)→飛ぶ(x) %鳥は空を飛ぶ。
ダチョウ(x)→例外(x) %ダチョウはこのルールの例外である。
例外による推論阻止はまた階層的分類(taxonomic hierarchy)の成長、つまり帰納学習のモデルにも役立つ。古典的な論理学では、新しい事実の発見によって既知のルール知識から導かれる推論が覆されることはないが、こうした非単調推論システムでは、情報が無いときのデフォールト(既定値)として弱い推論を与えておき、より質の高い情報が得られたなら、これに基づいて例外を許すように知識を改訂し、推論結果を覆すことができる。帰納学習は、まず粗い近似的ルールを知識ベースに登録し、徐々に例外を添付してルールを特殊化したり、例外の少ないルールをさらに一般化したりする操作を繰返す。これによって、多少失敗はするかも知れないが、大抵はうまくいく知識を学習できると考えられる。
[27] Prologによるモデリング例を次に示そう。
‘文’([X,‘ハ’,Y], ’主題’):- ’名詞句’(X, ’総称’), ’動詞句’(Y,_).
‘文’([X,‘ハ’,Y], ’主題’):- ’名詞句’(X, ’照応’), ’動詞句’(Y,_).
‘文’([X,‘ハ’,Y], ’対比’):- ’名詞句’(X,Z), ’動詞句(Y,_).
‘文’([X,‘ガ’,Y], ’中立記述’):- ’名詞句’(X,_), ’動詞句’(Y,‘非慣習的動作’).
‘文’([X,‘ガ’,Y], ’中立記述’):- ’名詞句’(X,_), ’動詞句’(Y,‘存在’).
‘文’([X,‘ガ’,Y], ’総記’):- ’名詞句’(X,_), ’動詞句(Y,_).
’名詞句’(‘鯨’, ’総称’).
’名詞句’(‘太郎’, ’照応’).
’名詞句’(‘雨’, ’普通’).
’動詞句’(‘降っている’, ‘非慣習的動作’).
’動詞句’(‘さかなです’, ‘分類’).
’動詞句’(‘哺乳動物です’,’分類’).
’動詞句’(‘学生です’,’分類’).
ただし、上で名詞句が文脈指示(先行文脈で言及されている)かどうかは、別に談話処理をした結果であると仮定する。
[28] aは久野が参考にしたというプラハ学派の観点である。bは久野(1973)の仮説1(p.210)。また仮説2〜5と観察1〜5(pp.229-230)も参照。cはその論理的帰結である。
[29] さらに、一歩進めて、デザインにゲーム理論モデルを積極的に応用することも考えられる。情報システムのデザイナーはその盲点とそれによる事後の損失を避けるために、意図した用法としての、ゲームの均衡点でだけでなく、均衡外で起きることについても、十分な注意を払わなければならない。おそらく、デザイン問題をゲーム理論形式に埋め込むことが、その役に立つだろう。
[30]上の場合、dv1/dp=0=dp/dp A(1)qT=(1,-1)A(1)qTとなる。プレイヤー2についても同様。
[31] EBAは類推的に、関係データベースでCoddの関係代数の射影・選択演算を、1行のデータだけが残るまで反復することを想像すればよいかもしれない。この記述理論の情報システムデザインへの潜在的応用は、例えば、消費者が惑わされにくいように諸条件の提示順序を考慮したインターネットショッピングシステムや、多次元ビジネスデータを扱う情報系ユーザを支援するインタフェースなどだろう。ただし実際にこうしたシステムが開発されたことがあるかどうかは未調査である。