ClaimからAccepted Factsのグラフへ 画像: Google Geminiで生成

現実は開いた系である。記録は遅れて届く。証言は撤回される。センサーは再校正される。ポリシーは変わる。まだ発見されていないものが何かすら分からない以上、関連するすべての観測が到着したと言える時点は存在しない。

行動は違う。請求すること、支払うこと、アクセスを許可すること、警報を鳴らすこと——いずれも閉じた答えを要求する。現実が終わらなくても、判定は終わらなければならない。開いた世界と有限な行動の間には構造的な断絶がある。モデルの自信を高めても、思考の連鎖を長くしても、エージェントの層をもう一段重ねても、この断絶は閉じない。

したがって最初の問いは「何が真か」ではない。こうだ。

終わりの知れないClaimの世界において、誰がどの規則のもとでこの判定の前提を確定できるのか。

システムに入ってくるのは出来事そのものではない。契約書、支払い記録、センサーログ、映像、証言、メッセージ——観測者がある時点で、ある変換を経て、ある範囲の中で、失敗の可能性を伴って生み出した断片である。システムはこれを事実ではなくClaimとして受け取らなければならない。

しかしClaimを保存するだけでは行動できない。Claimは矛盾しうる。記録がないことは、出来事が起きなかったことを意味するかもしれないし、単に収集に失敗したことを意味するかもしれない。一つの前提を導くために複数のClaimを組み合わせなければならないこともある。開いたClaim台帳をそのまま判定エンジンに渡せば、収集・事実認定・規則適用が再び一つの不透明な行為へと崩れ落ちる。

必要なのは、特定の判定に使用が許される事実状態を構築する明示的な手続きである。私はこの手続きをProjectionと呼び、その結果をGraph of Accepted Facts、すなわちGAFと呼ぶ。

Open Claims
Projection
    │  evaluation · conflict resolution · derivation · absence policy
Graph of Accepted Facts (GAF)
Closure
    │  GAF · scope · policy · rules · runtime frozen
Deterministic Verdict
Authorized Action
    └── new evidence · policy change · appeal · defect
                           Reopen / Re-projection

要点は事実をより多く集めることではない。判定の前提を構成する段階と、その前提の上で演算する段階を分離することにある。

有限な入力はまだ閉じた世界ではない

有限なClaim集合が閉じた世界を作るわけではない。データベースに支払い記録が現れないからといって、支払いが発生しなかったと直ちに結論づけることはできない。記録が欠落している、遅延している、誤送されている、別の機関に保持されている、といった可能性がある。

したがってProjectionは、入力リストだけでなく不在の意味を確定しなければならない。

  • どの出所を、この主体・述語・範囲・期間について完全とみなすのか?
  • どこで閉世界仮定を適用してよいのか?
  • 記録の欠如はfalseを意味するのか、unknownを意味するのか?
  • 明示的な否定と欠測データをどう区別するのか?
  • 証拠が不十分なとき、システムは何を返すべきか?

Raymond Reiterの基礎論文On Closed World Data Basesは、この決定的な転換を形式化した。閉世界仮定のもとでは、正の基礎リテラルを証明できないことがその否定を許すことがある。この転換が有用なのは、まさにそれが普遍的に安全ではないからだ。宣言された境界が必要になる。

銀行が特定の口座と期間について確定済みの取引台帳を提供し、Projectionのポリシーがその範囲内で台帳を完全だと認めるとしよう。すると不在は、そこに一致する取引が存在しないという根拠として使える。テナントのメッセージ保管庫に支払いへの言及がないことは、何も証明しない。一方の出所は宣言された問いに対して閉じており、もう一方は開いたままである。

Closureとは「ここまで読んだ」という宣言ではない。不在そのものがどこで計算可能な情報になるかを定義する契約である。

ProjectionはClaimを事実へ昇格させるボタンではない

Projectionを、Claim全体にacceptedrejectedheldのいずれかを貼り付ける作業に還元することはできない。現実のClaimはそれほど整然としていない。

  • 「5日に家賃を送った」という主張は、日付は確認済みでも用途は未確認かもしれない。
  • 一つの支払いを確立するために、独立した二つの記録が必要になることがある。
  • 一つのClaimが、ある命題を支持しながら別の命題を反駁することがある。
  • どの出所にもそのままの形で述べられていない事実が導出されることがある。
  • 信頼できる出所であっても、その記録がどの出来事を指すのかが未解決のままのことがある。

Evaluationは関係であって、Claim全体に貼るフラグではない。 それは一つ以上のClaim、一つの原子的なProposition、一つの特定のProjectionを結びつける。続いてDerivationがEvaluation・既に受理された前提・明示的な規則を組み合わせ、Accepted Factを産出する。

Claims ───────┐
Proposition ──┼── Evaluation ── accepted / rejected / unknown
Projection ───┘                     │
                       Derivation ── Claims · Facts · Rules
                            Accepted Fact

Claimは誰が何を主張または観測したかを保存する。Propositionは評価対象となる最小の命題である。Evaluationは、一つのProjectionのもとでClaim群がそのPropositionにどう関わるかを記録する。Derivationは、結果がどう産出されたかを示す証明オブジェクトである。Accepted Factは、その手続きが今回の判定で使用することを許した前提である。

したがって同じClaimでも、目的、締切時点、立証責任、権限が異なれば、別のAccepted Factを生むこともあれば、何の事実も生まないこともある。Accepted Factは現実全体についての絶対的真理ではない。宣言された判定境界の中で使用が認められた前提である。

結果がグラフでなければならない理由

判定の前提は孤立した文ではない。誰が誰に、いつ、いくら、どの契約のもとで、どの債務に向けて支払ったか、そしてその契約がいつ有効だったかは、互いに結びついた命題である。

Graph of Accepted Factsは、これらの前提とその意味関係に加えて、それらを産出したderivationとprovenanceも併せて保持する。

  • 実体・行為・時点・数量・状態
  • 各Propositionを支持または反駁するClaim
  • 元の出所と責任主体
  • Evaluationと導出規則
  • 却下された、または未解決の代替案
  • 時間的・論理的・代替(supersession)関係

グラフの目的は装飾的な説明ではない。機械が追跡可能な依存関係を作ることである。

監査人はVerdictから出発し、GAFとその規則を下って元のClaimまでたどり着けなければならない。無効化されたClaimや出所から出発すれば、システムは再検討を要するかもしれないすべてのAccepted Fact、Closure、Verdict、Actionを見つけられなければならない。

Provenanceだけでは不十分である。完全な影響分析には、導出上の依存関係、否定的依存関係、集約条件、ポリシーの範囲も必要になる。ある結論は、存在するClaimにではなく、条件を満たすClaimが一つも存在しないという宣言された不在に依存しているかもしれない。PROV-O: The PROV Ontologyは、実体・活動・エージェント・限定関係を中心に相互運用可能なprovenanceを標準化する。GAFに追加で課される責務は、判定を再び開くために必要な、判定固有の受理状態と否定的依存関係を保存することである。

これは論理的データモデルであって、グラフデータベースを強制する命令ではない。リレーショナルデータベース、コンテンツアドレス指定型オブジェクトストア、追記専用のイベントログ、グラフデータベース——いずれも実装になりうる。ノード、型付き関係、系譜、依存性クエリを意味の損失なく保存できるなら、物理的な保存方式は有効である。

ClosureはGAFより大きい

GAFはAccepted Factsとそのderivation、provenanceを保存する。Closureは GAFより大きい。どの質問に対し、どの条件のもとで、正確にどのGAFを使用したかを凍結する。判定の再現のための契約である。

Closureには少なくとも次が含まれなければならない。

  • 判定の質問と目的
  • 出来事・対象・時間範囲
  • 正確なGAFのスナップショットとその完全性識別子
  • 完全性の宣言と、不在・否定・未知の扱い方
  • Projectionのポリシーと実装バージョン
  • Verdictの規則とエンジンのバージョン
  • 数値精度、順序、同点処理といった実行条件
  • 同じグラフを再び識別するための正規化規則

同じClosureが同じ実行環境で異なるVerdictを出すなら、それは計算層の欠陥である。Closureが異なるなら、不一致は入力、Projectionのポリシー、Accepted Facts、規則、実行環境のいずれかに局所化できる。

決定論性は現実を完全に知ることを意味しない。同じ閉じた世界は同じように計算されねばならないということを意味する。

一つの事例を最後まで追ってみる

家主は7月分の家賃が未払いだと主張する。テナントは5日に家賃を送金したと主張する。確定済みの銀行台帳は、その日家主が100万円を受け取ったことを示すが、送金メモは空欄である。契約は毎月5日までに100万円を支払うことを定めている。

Open Claim Ledgerは、どの記録も他の記録で上書きすることなく、四つの記録すべてを保存する。

Claim内容出所の状態
Claim A7月分の家賃が未払いである家主の主張
Claim B5日に家賃を送金したテナントの主張
Claim C5日に家主の口座に100万円が入金された確定済み銀行台帳
Claim D月額家賃は100万円で、5日までに支払う有効な契約

Projectionは問いを「7月分の家賃滞納は確立されたか」に絞り込む。当該口座と期間について、銀行台帳を完全なものとして受理する。同時に、メモや別途の合意がなければ特定の債務への充当を推定しないというポリシーを適用する。

Claim CとClaim Dは受理されたPropositionを支持する。Claim Bの日付と金額はClaim Cによって裏付けられるが、それが7月分の家賃への充当かどうかは未知のままである。Claim Aは、不払いの独立した証拠ではなく、当事者が望む結論の主張であるため、繰り返されてもAccepted Factにはならない。

GAFは次を記録する。

The contract required monthly payment by the fifth.       [accepted]
The landlord received the contractual amount that day.    [accepted]
Allocation of that payment to the July debt is unresolved.[unknown]
July rent delinquency has not been established.            [not derived]

ClosureはこのGAFを、Projectionのポリシー、台帳の完全性の範囲、締切時点、Verdictエンジンと結びつける。Verdictはdelinquentではなくundeterminedである。したがってAuthorized Actionは督促状の送付ではなく、充当先を確定するよう求めることである。

その後、「7月分家賃」というメモの付いた原本の送金受領証が新たなClaimとして届く。古いClosureはそのまま保存される。Reopenという事象が新たなProjectionを開始する。メモが受理されれば、新しいGAFが充当を認め、新しいClosureがpaidというVerdictを産出する。

この例におけるProjectionは、どちらの人物がより信用できるかを投票することではない。判定可能な事実状態を構築するために、問い、完全性の境界、原子的なProposition、欠測の意味、導出規則を固定することである。

決定を契約として保存する

この例にはなお隘路が残っている。メモのない支払いのたびに家主に充当先の確認を求めるなら、不確実性は取り除かれたのではなく、単に人間の承認待ち行列へ移されただけだ。

最初の確認はその事例を解決すればよい。反復されるパターンにはそれ以上のことが求められる。決定を契約として保存し、将来のProjectionの入力にできるようにすることだ。

家主がこの支払いを確認し、両当事者が次の規則を承認したとしよう。

支払いがテナントの登録口座から支払期日までに到着し、契約金額と等しく、他に未払いの債務がない場合、その支払いは当月の家賃に充当されたものとみなす。いずれかの条件に違反する事例は再審査を要する。

これにより、四つの異なる記録が生まれる。

Case Decision    ── this payment satisfied the July rent
Policy Candidate ── matching future payments may satisfy monthly rent
Ratified Contract── authorized conditions, exceptions, effective date, version
Policy Exception ── ambiguity outside the contract returns to human review

次のClosureは、承認済みのポリシーバージョンを参照する。条件に合致するClaimは、家主に同じ問いを再び尋ねることなくProjectionできるようになり、新たな例外だけが人間の判断を消費する。人間の決定は一度だけ使われるが、その権限が与えられた構造は働き続ける。

しかし一度の決定はまだポリシーではない。システムが一度の確認をひそかに前例へと転化してはならない。権限を持つ人物が、規則の適用範囲、例外、発効日、遡及適用の有無を承認しなければならない。それまでは、事例の記録はPolicy Candidateにすぎない。新しい契約が明示的に遡及的でなければ、それは以後のClosureを支配し、それ以前のClosureを書き換えることはない。

これにより、GAFに二つ目の保存の循環が加わる。Claimは世界から何が入ってきたかを保存する。GAFとClosureは、特定の判定が何を受理したかを保存する。承認されたポリシーは、権限を持つ人間が繰り返される曖昧さをどう解決したかを保存し、次のProjectionは同じ隘路ではなく、より強い契約から始まる。

誤りが異なれば修復も異なる

Projection、Verdict、Actionを分離すると、一つの「間違った結果」は異なる種類の失敗へと分解される。

  • 関連するClaimを見逃したなら収集エラーである。
  • 出所やPropositionの評価を誤ったならProjectionエラーである。
  • 正しいAccepted Factsに誤った規則を適用したなら計算エラーである。
  • 正しいVerdictを不正確に表現したなら伝達エラーである。
  • 正しいVerdictを誤った対象・限度・権限に対して実行したならActionエラーである。

この分類は誤りをなくすものではない。何を再び開くべきかを教えてくれるものだ。

収集エラーには新たなClaimが必要になる。Projectionエラーには、EvaluationとDerivationの再検討が必要になる。計算エラーは、Closureを保存したままエンジンを修正・比較できる。Actionエラーは事実を書き換えるべきではない。外部世界における取消・訂正・補償が必要になる。

これらすべてを「モデルが間違っていた」と一括りに呼べば、この区別は失われる。原因を見失えば、修復後に何が変わったかを証明することもできなくなる。

Accepted Factは行動する権限ではない

Accepted Factは権力を付与しない。「家賃が滞納している」と「このシステムが督促状を送ってよい」は別のPropositionである。

Verdictエンジンは Closureを受け取り、計算の履歴を伴う判定を出力する。Authorized Actionは別途、次を検査しなければならない。

  • 誰がその効果を承認したか
  • どの主体・対象を標的とするか
  • 適用される金額と頻度の上限は何か
  • 再試行は冪等か
  • どの受領証が実行を証明するか
  • 誤った効果はどう取り消し、または補償できるか

事実の産出、判定、実行はそれぞれ異なる種類の権限を行使するため、分離されている。

閉じた世界は再び開ける状態を保たねばならない

Closureは、永遠の真理を装うことなく不変でなければならない。証拠が遅れて到着することがある。出所が不正だと判明することがある。ポリシーの欠陥が発見されることがある。影響を受けた当事者が異議を申し立てることがある。

古い結果を上書きすれば、その時点で取られた行動の説明が失われてしまう。したがってReopenは古いClosureへの修正ではなく、新たな事象である。

新しい証拠、ポリシーの変更、異議申し立て、あるいは欠陥報告が記録される。依存関係グラフは、影響を受けうるClosureを特定する。権限ある手続きが再審査を許可すれば、新たなProjectionが新しいGAF、Closure、Verdictを産出する。新しい結果は、履歴を上書きすることなく何を置き換えるのかを述べる。

Actionが既に世界を変えてしまっていれば、再計算だけではそれを覆せない。取消、訂正通知、返金、補償は、それ自体が独自の承認と受領証を伴う新たなActionである。

再び開けることはClosureを弱めない。何を固定したかを保存し、宣言された手続きを通じてのみ置き換えを許すとき、Closureは正当性を得る。

LLMは境界の代替にはなれない

大半のエンドツーエンドLLMアプリケーションは、質問の解釈、検索、出所の選定、事実認定、規則適用、表現を一回の生成の中に混ぜ込んでいる。受理されたClaimと却下されたClaimが外部化されていなければ、同じ答えが同じ根拠を意味するとは限らない。答えが変わっても、入力の境界が変わったのか計算が変わったのかは分からない。

長い説明や生成された推論の記録は、この問題を解決しない。事後的な説明は、実際に使用された入力・規則・権限の実行記録ではない

LLMは境界の周辺では依然として有用である。非構造化された出所からClaim候補を抽出し、原子的なPropositionを提案し、矛盾や未知を説明し、Projectionのポリシーの草案を作り、確定したVerdictを人間の言葉に翻訳できる。

しかし提案は採用ではない。LLMが生成したClaim、マッピング、Evaluation、規則は、provenanceを伴うバージョン管理された入力とならなければならず、権限ある手続きを通過しなければならない。重大な帰結を伴う行動の最終的な権限を、自然言語生成の内側に隠しておくことはできない。

貢献とはこの連鎖である

構成要素のすべてが新しいわけではない。閉世界推論、provenance、truth-maintenance system、event sourcing、rule engine、法的な事実認定、異議申し立てには長い歴史がある。On Closed World Data Basesは開いた世界と閉じた世界の区別を確立し、PROV-O: The PROV Ontologyは活動と責任主体を通じて実体を追跡するグラフモデルを標準化した。

貢献とはこの連鎖であり、一つの責任プロトコルとして組み立てられている。

Claims → Projection → GAF → Closure → Verdict → Action → Reopen

すべての矢印は、単なるデータ変換ではなく権限と誤りの境界である。Claimを保存する主体、前提を受理する権限、Verdictを計算するエンジン、世界を変えるゲートウェイは、それぞれ異なる契約のもとで動作する。それらの記録は連結しているが、どの段階も他の段階の権限をひそかに引き継ぐことはない。

GAFはもう一つのデータベースの発明ではない。開いたClaimから行動可能な事実に至る経路全体を監査可能・再現可能・異議申し立て可能にする提案である。

目標は完璧な真理ではなく制御された閉鎖である

開いた世界全体を知るシステムを作ることはできない。しかし、どの情報を前提として受理し、なぜそうしたのかを述べるシステムを作ることはできる。

Open Claimsは不一致と不確実性を保存する。Projectionは目的、範囲、立証責任、不在の意味を固定する。GAFは受理された前提をその関係と系譜に結びつける。Closureは再現のための条件を凍結する。Verdictは閉じた入力の上で計算する。Actionは別個の権限のもとで現実を変える。Reopenは履歴を消すことなく境界を再訪する。

この循環があれば、誤りはもはや一つの不透明な幻覚として残ることはない。システムが何を見落としたのか、何を誤って受理したのか、受理された前提から何を誤って計算したのか、正しい判定の後に何を誤って実行したのかを区別できる。

Claimを GAFへ投影することは、機械を無謬にする方法ではない。機械が何を前提に判断したかを固定し、その判断を再現し、異議を唱え、訂正できるようにする方法である。

「数学は閉じた系の中で計算するがゆえに真である」という格言は、より狭く、擁護可能な事実を指し示している。公理、定義、推論規則が固定されれば、その形式的境界の内側での導出は検証し再現できる(Formalism in the Philosophy of Mathematics)。だからといって、すべての数学的真理が計算可能になるわけでも、すべての命題が決定可能になるわけでも、すべての公理系が完全になるわけでもない。Closureが保証するのは、受理された導出の再現性であって、全知ではない。

現実世界の判定も、計算の前に同じ規律を必要とする。GAFは真理そのものではない。それは、開いた現実からどの前提が受理されたかを固定し、その内部で判定を再現し——そして争うことを——可能にする閉じた世界である。

関連記事

合わせて読みたい

出典