檜山正幸のキマイラ飼育記 このページをアンテナに追加 RSSフィード Twitter

キマイラ・サイトは http://www.chimaira.org/です。
トラックバック/コメントは日付を気にせずにどうぞ。
連絡は hiyama{at}chimaira{dot}org へ。
蒸し返し歓迎!
このブログの更新は、Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama
ところで、アーカイブってけっこう便利ですよ。

2017-04-26 (水)

余可換コモノイド・モダリティ事件の解説

| 12:35 | 余可換コモノイド・モダリティ事件の解説を含むブックマーク

一昨日の記事「圏論的モダリティ:圏上の非自然な構造達」の「僕のモダリティ経験」の節で:

試しに、非負実数係数のテンソルの圏に余可換コモノイド・モダリティを入れてみると、そのモダリティと整合する部分圏として部分性と確率的非決定性の両方がうまく定義できるようです。これが分かったとき、僕にとってはA-ha momentでした。

非全域関手と非自然変換」にて:

特に役に立つのは、2つの非自然変換から構成される余可換コモノイド・モダリティです。余可換コモノイド・モダリティの事例はそのうち述べるつもりです。

予告に従い、余可換コモノイド・モダリティの事例について述べます。タイトルに「事例」でなく「事件」と付けているのは、これから述べることが僕には思いがけないことだったからです。

内容:

  1. 余可換コモノイド・モダリティが定義する部分圏、不思議だ
  2. 余可換コモノイド・モダリティ
  3. 集合圏の余可換コモノイド・モダリティ
  4. 関係圏の余可換コモノイド・モダリティ
  5. モダリティと単葉関係/全域関係
  6. 非負実数係数テンソルとその圏
  7. 非負実数テンソルの圏の余可換コモノイド・モダリティ
  8. モダリティと非分散テンソル/マルコフ・テンソル
  9. 参考文献

余可換コモノイド・モダリティが定義する部分圏、不思議だ

池尻大橋駅から10秒くらいの近さのカフェ・ベローチェで、割と何となくナプキンペーパーで計算していたのですが、計算結果を見て「エッ?!」と驚きました。事前に予想も期待もしてなかった結果だったからです。これが、僕が余可換コモノイド・モダリティに興味を持つキッカケとなった「事件」(大げさだけど)です。詳しい説明は後の節でしますが、概要だけこの節で言っておきます。

係数(成分)が非負実数であるテンソル(幾つかの数を適当な次元の矩形状に並べたモノ)を考えます。非負実数係数のテンソルに関して次の言葉を使いますが、これらは後で定義します。

すべての非負実数(係数の)テンソルから構成される圏NNTens(non-negative (coefficient) tensors)に、自明と思える簡単なモダリティΔ(余乗法)とε(余単位)を入れると:

  1. Δと整合する射の全体は、非分散ブール・テンソルの全体と一致する。Δと整合する射が作るNNTensの部分圏は、有限集合を対象とする部分写像の圏FinPartialと同型である。
  2. εと整合する射の全体は、マルコフ・テンソルの全体と一致する。εと整合する射が作るNNTensの部分圏は、有限離散測度空間を対象とするマルコフ核(別名 stochastic map/kernel/relation)の圏FinStockと同型である。
  3. Δとεの両方と整合する射の全体は、非分散ブールかつマルコフなテンソルの全体と一致する。Δ, εと整合する射が作るNNTensの部分圏は、有限集合と写像の圏FinSetと同型である。

これと似た結果は関係圏Relでも成立します。関係に関する次の言葉も後で定義します。

  • 単葉(一価)関係(univalent relation)
  • 全域関係(total relation)

Relにおける余乗法と余単位も同じ記号Δ, εで表すとして:

  1. Δと整合する射の全体は、単葉な関係の全体と一致する。Δと整合する射が作るRelの部分圏は、部分写像(partial map)の圏Partialと同型である。
  2. εと整合する射の全体は、全域な関係の全体と一致する。
  3. Δとεの両方と整合する射の全体は、単葉かつ全域な関係の全体と一致する。Δ, εと整合する射が作るRelの部分圏は、集合と写像の圏Setと同型である。

うーん? なんでこんな現象が起きるのだろう? 内在的必然性とか背後のメカニズムとかはサッパリ分かりません。不思議だが本当だ。

Δとεの組み合わせは余可換コモノイド・モダリティとなります。経験則として、このモダリティ(Δ, ε)の一部または全部と整合する射を考えることは、面白い部分圏を抽出する手段として有効だ、とは言えそうです。理由は分からんけど。

余可換コモノイド・モダリティ

C = (C, ¥otimes, I, α, λ, ρ, σ) を対称モノイド圏とします。α, λ, ρはそれぞれ、結合律子(associator)、左単位律子(left unitor)、右単位律子(right unitor)、対称(symmetry)です(律子に関しては「律子からカタストロフへ」を参照)。

一般に、Cの対象Aに対して、自己関手 KA:CC はすべての対象をAに移し、すべての射をidAに移す“定数関手”とします。また Sq:CC は、対象も射もモノイド積の意味で平方(二乗)する関手です。

  • KA(X) = A, KA(f) = idA
  • Sq(X) = X¥otimesX, Sq(f) = f¥otimesf

モノイド単位対象Iに対する定数関手KIと平方関手Sqを考えます。この2つは、非全域関手ではなくて普通の(全域な)関手です。さらに非自然変換 Δ::Id ?⇒ Sq :CC と ε::Id ?⇒ KI :CC を考えます。ここで、IdはCの恒等関手です。特殊な矢印記号'?⇒'は、非自然(必ずしも自然ではない)ことを表します。このへんのところは「非全域関手と非自然変換」を参照。

非自然変換Δ, εの、対象Xにおける成分は次の形です。

  • ΔX:X→X¥otimesX in C
  • εX:X→I in C

2つの非自然変換Δとεの組み合わせ(Δ, ε)が余可換コモノイド・モダリティであるとは、任意の対象Xに対して、3つ組 (X, ΔX, εX) が余可換コモノイドになることです。他に、Δとεが圏のモノイド構造と調和するための一貫性条件も要求します。

余可換コモノイドの公理は昨日の記事の「対称モノイド圏の余可換コモノイド・モダリティ」に載せています。ここでは、図を描いておきましょう。余乗法Δは分岐の黒丸、余単位εはストッパーの横棒のアイコンで示すことにします。射の描画方向は ↓→ です。

余結合律、左余単位律、右余結合律、余可換律は次のとおりです。idXを単にXと書き、律子(構造同型射)α, λ, ρによる細かい調整は省略しています。

Δとεとモノイド積/モノイド単位との一貫性(調和性)は次の等式で表現できます。

  1. ΔX⊗Y = (ΔX¥otimesΔY);(X¥otimesσX,Y¥otimesY)
  2. εX⊗Y = εX¥otimesεY
  3. εI = idI

絵なら次のようです。点線は、モノイド単位対象を表す“空なワイヤー”です。

また、f:X→Y in C が“Δと整合すること”と“εと整合すること”は次の図で表せます。

集合圏の余可換コモノイド・モダリティ

集合圏Setに対して、余可換コモノイド・モダリティを定義します。集合圏のモノイド積は直積(記号'×')、モノイド単位対象は 1 = {0} とします。Δ, εを次のように定義します。

  • ΔX:X→X×X, ΔX(x) = (x, x)
  • εX:X→1, εX(x) = 0

集合Xごとの(X, ΔX, εX)が余可換コモノイドになること、そして一貫性条件を満たすことを確認してみてください。

集合圏Setの余可換コモノイド・モダリティでは、すべての射(集合のあいだの写像)がモダリティと整合します。つまり、f:X→Y in Set に対して:

  • f;ΔY = ΔX;(f×f) : X→Y×Y
  • f;εY = εX : X→1

これも簡単に確認できます。

結局、今定義した集合圏の余可換コモノイド・モダリティ(Δ, ε)では、Δもεも自然変換になります。自然変換は非自然変換の特別なものなので問題はありませんが、モダリティと整合する射として部分圏を抽出することは出来ません。部分圏を作る目的から言えば、自然な全域モダリティは役立たずなのです。

余可換コモノイド・モダリティが自然変換になっている状況は、実はモノイド積が直積(デカルト積)になっている場合に限られます。次の定理があります。

  • 対称モノイド圏Cに余可換コモノイド・モダリティ(Δ, ε)があり、Δとεが自然変換のとき、モノイド積は直積(デカルト積)である。

証明は割愛しますが、このことから、直積ではないモノイド積を持つ対称モノイド圏では、自然変換で与えられる余可換コモノイド・モダリティは存在しないことになります。モダリティが欲しかったら、非自然なものを許すしかないのです。これは、非自然性に関する重要な知見です。

関係圏の余可換コモノイド・モダリティ

次に、関係圏Relに余可換コモノイド・モダリティを入れましょう。関係圏のモノイド積も直積(記号'×')、モノイド単位対象は 1 = {0} です。Δとεも集合圏と同じですが、表現の仕方は少し違います。

  • ΔX:X→(X×X), ΔX = {(x, (x', x''))∈X×(X×X) | x = x' = x''} = {(x, (x, x))∈X×(X×X) | x∈X}
  • εX:X→1, εX = {(x, 0)∈X×1 | xは任意(無条件)} = X×1

集合Xごとの(X, ΔX, εX)が関係圏において余可換コモノイドになることも、そして一貫性も、集合圏のときと同様に確認できます。

集合圏とは違い、関係圏の射はΔ, εと整合するとは限りません。t:{1, 2}→{1, 2} in Rel を次のように定義します。

  • t = {(1, 1), (1, 2)}

このtでは、t;Δ{1, 2} = Δ{1, 2};(t×t) は成立しないし、t;ε{1, 2} = ε{1, 2} も成立しません。具体的に計算すれば分かります。

  • t;Δ{1, 2} = {(1, 1), (1, 2)};{(1, (1, 1)), (2, (2, 2))} = {(1, (1, 1)), (1, (2, 2))}
  • Δ{1, 2};(t×t) = {(1, (1, 1)), (2, (2, 2))};{((1, 1), (1, 1)), ((1, 1), (1, 2)), ((1, 2), (1, 1)), ((1, 2), (1, 2))} = {(1, (1, 1)), (1, (1, 2))}
  • t;ε{1, 2} = {(1, 1), (1, 2)};{(1, 0), (2, 0)} = {(1, 0)}
  • ε{1, 2} = {(1, 0), (2, 0)}

以上の計算から、

  • t;Δ{1, 2} ≠ Δ{1, 2};(t×t)
  • t;ε{1, 2} ≠ ε{1, 2}

t = {(1, 1), (1, 2)} は、Δともεとも整合しない射です。

モダリティと単葉関係/全域関係

関係圏Relにおいて、どのような射がΔ, εと整合するかを見ておきましょう。

r:X→Y in Rel がΔと整合するとします。このとき、r;ΔY = ΔX;(r×r) : X→Y×Y in Rel が成立します。等式の左辺/右辺を具体的に書き下してみます。

   r;ΔY
 = {(x, y)∈X×Y | (x, y)∈r};{(y, (y', y''))∈Y×(Y×Y) | y = y' = y''}
 = {(x, y)∈X×Y | (x, y)∈r};{(y, (y, y'))∈Y×(Y×Y) | y = y'}
 = {(x, (y, y'))∈X×(Y×Y) | (x, y)∈r かつ y = y'}

   ΔX;(r×r)
 = {(x, (x, x))∈X×(X×X) | x∈X};{((x, x'), (y, y'))∈(X×X)×(Y×Y) | (x, y)∈r かつ (x', y')∈r}
 = {(x, (y, y'))∈X×(Y×Y) | (x, y)∈r かつ (x, y')∈r}

r;ΔY = ΔX;(r×r) であるためには:

  • (x, y)∈r かつ y = y' ⇔ (x, y)∈r かつ (x, y')∈r

⇒方向は自明なので、実質的な条件は:

  • (x, y)∈r かつ (x, y')∈r ⇒ y = y'

この条件を満たす関係 r:X→Y in Rel単葉(univalent, 一価)な関係と呼びます。したがって、

  • 関係rがΔと整合する ⇔ rは単葉関係である

次に、r:X→Y in Rel がεと整合するとします。このとき、r;εY = εX : X→1 in Rel が成立します。等式の左辺/右辺を具体的に書き下してみます。

   r;εY
 = {(x, y)∈X×Y | (x, y)∈r};{(y, 0)∈Y×1 | yは任意}
 = {(x, 0)∈X×1 | xに対して、(x, y)∈r となる y∈Y が存在する}

   εX
 = {(x, 0)∈X×1 | xは任意}

r;εY = εX であるためには:

  • xに対して、(x, y)∈r となる y∈Y が存在する ⇔ xは任意

言い換えれば:

  • 任意のxに対して、(x, y)∈r となる y∈Y が存在する

この条件を満たす関係 r:X→Y in Rel全域(total)な関係と呼びます。したがって、

  • 関係rがεと整合する ⇔ rは全域関係である

Δとεの両方と整合する関係(Relの射)は、単葉かつ全域な関係となります。単葉かつ全域な関係は、写像だと思ってもかまいません。つまり、関係圏Relの部分圏として集合と写像の圏を再現しています。この部分圏に制限すれば、Δとεは自然変換になるので、部分圏上に自然な余可換コモノイド・モダリティが載ります。自然な余可換コモノイド・モダリティは直積(デカルト構造)を定義するので、この部分圏に制限したモノイド積が直積を与えることも分かります。

デカルト圏(直積/終対象を持つ圏)と、そのデカルト圏を拡張したモノイド圏の組としてはフレイド圏(Freyd category)があります。余可換コモノイド・モダリティを持った対称モノイド圏は、フレイド圏とかなり似ています。そういえば、フレイド圏に非自然な対角や余対角を載せることはやったことがありました。

プレモノイド圏やバイノイド圏は、関手性が破れた積を扱う仕組みでした。どうも、非関手的(no-fanctorial)/非自然(non-natural)な対応や族を扱う必然性はありそうです。モダリティは、非関手的/非自然な構造を扱う道具になる気がします。

非負実数係数テンソルとその圏

これから、係数(成分)が非負実数であるテンソルと、そのようなテンソルを射とする圏NNTens(category of non-negative tensors)に関して手早く(あるいは雑に)説明します。そして、次のような、特別な種類のテンソルを定義します。

R≧0を非負実数の全体とします。以下、X, Y, Zなどは有限集合を表すとします。写像 f:X×Y→R≧0非負実数(係数の)テンソル(non-negative (coefficient) tensor)と呼びます。fをテンソルとして扱うときは、f(x, y)をf[x→y]またはf[x←y]と書くことにします。また、f = (f[x→y] | x∈X, y∈Y) という書き方も用います。これは、行列の成分表示と同じだと思えばいいです。

f = (f[x→y] | x∈X, y∈Y) のテンソルとしてのプロファイルは、X→Y だとします。fは2つの見方ができます。2つの見方を適宜切り替えます。

f = (f[x→y] | x∈X, y∈Y), g = (g[y→z] | y∈Y, z∈Z) のテンソルとしての結合f;gは次のように定義します。

  • (f;g)[x→z] = Σ(y∈Y | f[x→y]g[y→z])

有限集合Xに対する恒等テンソルidXは:

  • idX[x→x'] = (if x = x' then 1 else 0)

idXの成分表示は、クロネッカーのデルタδ[x→x']を使うことも多いです。つまり、idX = (δ[x→x'] | x∈X, x'∈X) 。

ここまでの定義では、添字集合に任意の有限集合を許した行列とテンソルの差はありません。テンソルと呼ぶのは、X = X1×...×Xn, Y = Y1×...×Ym のようなときに、f = (f[x1, ..., xn→y1, ..., ym] | x1∈X1, ..., xn∈Xn, y1∈Y1, ..., ym∈Ym) という表現を使うからです。テンソルの具体的な計算例は、「確率的推論・判断の計算法:マルコフ・テンソル絵算」にあります。

非分散テンソル

f:X→Y in NNTens のとき、a∈X に対して次の性質を定義します。

  • fがaで消失するとは、すべてのy∈Yに対して、f[a→y] = 0 のこと。
  • fがaで分散(または分岐)するとは、f[a→y'] ≠ 0 かつ f[a→y''] ≠ 0 かつ y' ≠ y'' であるy', y''が存在すること。

消失と分散を否定すると:

  • fがaで消失しないとは、f[a→y] ≠ 0 となるyが存在すること。
  • fがaで分散しない(または分岐しない)とは、任意のy', y''に対して、y' ≠ y'' であるならば、f[a→y'] = 0 または f[a→y''] = 0 となること。

任意のx∈Xに対してxで分散しないテンソル非分散テンソル(nondispersive tensor)と呼ぶことにします。非分散テンソルは消失を禁止してないので、Xの一部でfは消失しているかも知れません。

ブール・テンソル

テンソルの係数が0か1のどちらかの場合、0をfalse、1をtrueと思うとブール値なので、ブール・テンソル(boolean tensor, Boole tensor)と呼びましょう。ただし、計算はブール値ではなくて非負実数の計算を行うので、1 + 1 = 1 なんてことはありません。このため、ブール・テンソルの結合がブール・テンソルとは限りません。

マルコフ・テンソル(Markov tensor

テンソル f = (f[x→y] | x∈X, y∈Y) が、任意の x∈X に対して Σ(y∈Y | f[x→y]) = 1 のときマルコフ・テンソル(Markov tensor)と呼びます。「確率的推論・判断の計算法:マルコフ・テンソル絵算」の計算はすべてマルコフ・テンソルの計算です。

非負実数テンソルの圏の余可換コモノイド・モダリティ

非負実数テンソルの圏NNTensに余可換コモノイド・モダリティを入れます。NNTensのモノイド積は、対象に対しては直積(記号'×')、射に対してはテンソル積(記号'¥otimes')とします。f:X→Y, g:Z→W in NNTens のとき、f¥otimesg:X×Z→Y×W は次のように定義されます。

  • (f¥otimesg)(x, z→y, w) = f[x→y]g[z→w]

モノイド単位対象は I = {*} とします。唯一の要素を星印にしているのは、「確率的推論・判断の計算法:マルコフ・テンソル絵算」で使った u[x] = u[*→x] のような書き方に合わせるためです。

余乗法Δと余単位εは次のように定義します。

  • ΔX:X→(X×X), ΔX[x→x', x''] = (if x = x' = x'' then 1 else 0)
  • εX:X→I, εX[x→*] = 1

(Δ, ε)が余可換コモノイド・モダリティとなることを示すのは、テンソル計算のよい練習問題です。実際の計算は省略しますが、便利な略記法をここで述べておきます。

テンソルの計算では、しばしば添字を動かした総和をとります。例えば、f:X→Y×Z, g:Y→W, h:Z→W のときに k = f;(g¥otimesh) : Z→W×W を計算するとします。k[x→w, w']を求めるには総和と取ります。

  • k[x→w, w'] = Σ(y∈Y, z∈Z | f[x→y, z]g[y→w]h[z→w'])

このとき、総和を意味するΣを省略して、

  • k[x→w, w'] = (y, z | f[x→y, z]g[y→w]h[z→w'])

と書きます。これは「アインシュタインの総和規約」ですが、和を取る添字は残しています。和を取る添字を目視で判断するのがそれほど楽でではないからです。次の節の計算ではこの総和規約を使います。

モダリティと非分散テンソル/マルコフ・テンソル

非負実数テンソルの圏NNTensにおいて、どのような射がΔ, εと整合するかを調べます。僕が、池尻大橋カフェ・ベローチェのナプキンペーパーにした計算とは、これから述べる計算です。

f:X→Y in NNTens がΔと整合するとします。このとき、f;ΔY = ΔX;(f×f) : X→Y×Y in NNTens が成立します。等式の左辺/右辺を具体的に書き下してみます。

   (f;ΔY)[x→y', y'']
 = (y | f[x→y]Δ[y→y', y''])
 = if y = y' = y'' then f[x, y] else 0

   (ΔX;(f×f))[x→y', y'']
 = (x', x'' | Δ[x→x', x'']f[x'→y']f[x''→y''])
 = if x = x' = x'' then f[x→y']f[x→y''] else 0

整合性は次の等式となります。

  • (if y = y' = y'' then f[x, y] else 0) = (if x = x' = x'' then f[x→y']f[x→y''] else 0)

等式の両辺が等しくなるためには、y' = y'' 以外の部分では、(右辺のテンソル)[x→y', y''] = 0 です。したがって、次が成立します。

  • y' ≠ y'' ならば、f[x→y']f[x→y''] = 0

fの係数(成分)は非負実数なので:

  • f[x→y']f[x→y''] = 0 ⇔ f[x→y'] = 0 または f[x→y''] = 0

結局、

  • y' ≠ y'' ならば、 f[x→y'] = 0 または f[x→y''] = 0

これが任意のxに対して成立するので、fは非分散テンソルです。

また、y' = y''( = y) である部分に関しても、次の制約があります。

  • f[x, y] = f[x→y']f[x→y'']

y = y' = y'' なので、

  • f[x, y] = (f[x→y])2

これは、f[x→y] = 0 または f[x→y] = 1 を意味するので、fはブール・テンソルです。

これで、f:X→Y in NNTens がΔと整合することは、fが非分散ブール・テンソルであることだと分かりました。x∈X に対して、f[x→y] = 1 となるyは高々1つで、残りの係数(成分)f[x→y]はすべて0です。

次に、f:X→Y in NNTens がεと整合するときを考えます。そのとき、f;εY = εX : X→I in NNTens が成立します。

   (f;εY)[x→*]
 = (y | f[x→y]ε[y→*])
 = (y | f[x→y]ε)

   εX[x→*]
 = 1

これより、(y | f[x→y]ε) = 1 がすべての x∈X で成立します。つまり、fはマルコフ・テンソルです。

Δとεの両方と整合するテンソルNNTensの射)は、非分散ブールかつマルコフなテンソルとなります。これは、x∈X に対して、f[x→y] = 1 となるyは1つだけあり、残りの係数(成分)f[x→y]はすべて0となるテンソルです。

非分散ブールかつマルコフなテンソルとは、有限集合XからYへの写像と同じことです。関係圏の場合と同様に、余可換コモノイド・モダリティ(Δ, ε)と整合する部分圏として(有限)集合と写像の圏が再現します。

参考文献

非負実数テンソルの圏NNTensには余可換コモノイド・モダリティが載ります。余可換コモノイド・モダリティ付きの圏としては、NNTensRel(関係圏)はかなり類似しています。現象としては「面白いな」と思いますが、たまたまやってみた計算が発端なので、全体の構図は見えません。よく分からなくてモヤモヤしてます。

とりあえず、ヒントになりそうな論文を挙げておきます(過去に言及した論文達ですが)。

古め(1999年)の論文ですが、色々なアイディアや話題が詰め込まれています。セリンガーが対角(diagonals)と呼んでいるものは余可換コモノイド・モダリティです。

今年(2017年)になって書かれたものだと思います。使われている絵算(pictorial/graphical/diagrammatic calculation)は、余可換コモノイド・モダリティを含むものです。測度論の晦渋な議論に入り込むのを上手に避けながらdisintegrationの計算をしています。

デカルト微分圏をはじめて導入した論文です。非関手的(non-functorial)/非自然(non-natural)な構造を色々使っている点で参考になるでしょう。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20170426

2017-04-24 (月)

圏論的モダリティ:圏上の非自然な構造達

| 09:28 | 圏論的モダリティ:圏上の非自然な構造達を含むブックマーク

圏論的モダリティ(categorical modality)は、圏の対象に構造を持たせるメカニズムです。ただし、構造の素材が関手や自然変換とは限りません。モダリティは、圏の射と整合しない付加的構造を対象に導入する方法だとも言えます。

「モダリティ」という言葉は耳慣れないかも知れませんが、線形論理の意味論や微分圏では、"exponential modality", "storage modality", "resource modality", "coalgebra modality" といった言葉を使います*1。ここでは、線形論理特有のニュアンスは取り除いて、一般的な広い意味で「モダリティ」を使います*2

僕がモダリティに興味を持つ動機については最後の節に書いてあります。

内容:

  1. 集合圏の付点モダリティ
  2. ユークリッド空間のあいだのなめらかな写像の圏のベクトル空間モダリティ
  3. 圏論的モダリティの定義
  4. 対称モノイド圏の余可換コモノイド・モダリティ
  5. 僕のモダリティ経験

集合圏の付点モダリティ

集合圏Setにおいて、その対象(つまり集合)で添字付けられた射(写像)の族 θX:1→X を考えます。ここで、1 = {0} はSetの終対象である単元集合です。圏Setと、射の族 θ = (θX | X∈|Set|, X≠¥emptyset) を一緒にした(Set, θ)を考えます。

集合Xに対する θX:1→X により、Xの一点θX(0)が定まるので、空でないすべての集合が付点集合(pointed set)の構造を持ちます。ここで大事なことは、θが自然変換ではないことです。

θが自然変換 θ::(1への定数関手)⇒IdSet:SetSet なら、任意の f:X→Y in Set に対して次の図式が可換になるはずです。

1 -(θX)→ X
|        |f
↓        ↓
1 -(θY → Y

しかし、すべてのfに対して f(θX(0)) = f(θY(0)) なわけではありません。つまり、θは自然変換にはなりません

θのような、自然変換とは限らない射の族を圏論的モダリティ(categorical modality)、混乱の恐れがなければ単にモダリティと呼びます(後でもっと正確な定義を述べます)。θは、各対象に付点集合の構造を与えるので付点モダリティ(pointed-set modality)と呼ぶことにします。

f(θX(0)) = f(θY(0)) であるようなfを考えることはできます。そのようなfを付点モダリティθと整合する(consistent)射と呼びましょう。θと整合する射の全体は圏Setの部分圏を定義します。その部分圏に限定するならば、先の図式は可換となるので、θは部分圏においては自然変換となります(空集合の扱いに注意が必要ですが)。

θと整合する射の全体からなる圏は、付点集合の圏PtSetとは違います。例えば、集合{0, 1}を考えると、この集合を台集合(underlying set)とする付点集合は ({0, 1}, 0), ({0, 1}, 1) の2つがあります。どちらもPtSetの対象となります。しかし、集合{0, 1}に対するモダリティ(の成分)θ{0, 1}はひとつしかありません。θ{0, 1}で導入される付点集合は、({0, 1}, 0)か({0, 1}, 1)のどちらか一方です。

集合圏Setに付点モダリティを付けることは、空でない各集合からその要素を1個選び出す究極の選択関数の存在を仮定して、そのような選択関数を1個指定することです。

ユークリッド空間のあいだのなめらかな写像の圏のベクトル空間モダリティ

初等的な多変数微分を扱う舞台となるような圏を定義しましょう。C(Rn, Rn) は、ユークリッド空間Rnで全域的に定義されて、Rmに値を取るなめらか(無限回微分可能)な写像の全体とします。

有限次元ユークリッド空間を対象とする圏を考えたいのですが、Rn←→n と1:1対応するので、n次元ユークリッド空間の代わりに単なる整数n(n≧0)を使うことにします。その前提で、圏ESmoothを次のように定義します。(EはEuclideanのつもり。)

  • |ESmooth| = N = {0, 1, 2, ...}
  • ESmooth(n, m) = C(Rn, Rn)
  • 射の結合は、写像としての結合(合成)。
  • 恒等射idnは、RnRnの恒等写像

集合圏の場合と同様に付点モダリティθを定義します。今回のθは、次のような非常にハッキリした定義を持ちます。

  • θn:0→n in ESmooth
  • その実体は、関数 θn:R0Rn
  • R0 = {0} なので、θn(0) = (Rnのゼロ) と定義する。

θ以外に、ψ = (ψn:(n + n)→n in ESmooth | n∈N), τ = (τn:n→n in ESmooth | n∈N), μ = (μn :(1 + n)→n in ESmooth | n∈N) も定義します。

  • ψn:(n + n)→n の実体は、Rn×RnRn の足し算。
  • τn:n→n の実体 RnRn は、反ベクトル(xに対する-x)を対応させる写像
  • μn :(1 + n)→n の実体は、R×RnRn の(左からの)スカラー乗法。

(θ, ψ, τ, μ)は、ESmoothの各対象n(実体はRn)の上に、標準的なベクトル空間の構造を与えます。(θ, ψ, τ μ)を、圏ESmooth上のベクトル空間モダリティvector space modality)と呼びます。モダリティを定義するために、複数の“射の族”を使ってもかまいません。ベクトル空間モダリティでは、4つの族を使っています。

明白に書いていませんが、(θ, ψ, τ, μ)は、すべてのn(あるいはRn)において、ベクトル空間の公理を満たす必要があります(実際に満たします)。モダリティには、公理を添えてもいいのです(というか、ほとんど場合に公理も付きます)。

ESmoothの射は任意のなめらかな写像なので、ベクトル空間モダリティと整合するとは限りません。ベクトル空間モダリティと整合する射は、ユークリッド空間のあいだの線形写像です。ベクトル空間と整合する射が作るESmoothの部分圏は、行列の圏と圏同値(より強く圏同型)です。

圏論的モダリティの定義

自然変換に似ていても自然性(naturality)を持たないものを考え、それを使って改めてモダリティの定義をします。

Cを圏として、Mor(C)はCの射の集合とします。写像 ξ:|C|→Mor(C) を仮に非自然変換(non-natural transformation)と呼びましょう。これは、Cの対象で添字付けられた射の族です。S(X) := dom(ξX), T(X) := cod(ξX) と置くと、ξX:S(X)→T(X) と書けます。もちろん、S, Tは関手ではなく、関手に拡張する必要もありません。S, Tは関手である必要はありませんが、部分的に定義された関手のようなものです。さらに、ξ:|C|→Mor(C) に部分写像(未定義部分があってもいい)を許したときは、部分非自然変換(partial non-natural transformation)と呼びます。

[追記]非自然変換の定義について、別エントリー「非全域関手と非自然変換」に詳しく書きました。[/追記]

例えば、集合圏Set上の付点モダリティの θX:1→X は部分非自然変換(のX成分)です。X = ¥emptyset に対するθは定義されてないのでθは部分的です。一方、ESmooth上で定義されたθ, ξ, τ, μはいずれも全域的な非自然変換です。

C上で定義されたいくつかの非自然変換/部分非自然変換と、等式や可換図式で記述されたいくつかの公理(法則)を一緒にしたものを、圏C圏論的モダリティ、あるいは単にモダリティと呼びます。

モダリティが部分非自然変換を含む集まりで定義されているとき、そのことを強調したいなら部分モダリティ(partial modality)と呼びます。全域非自然変換だけで作られるモダリティは全域モダリティ(total modality)です。集合圏Setの付点モダリティは、空集合では定義されないので部分モダリティです。一方、ユークリッド空間のあいだのなめらかな写像の圏ESmoothの付点モダリティは全域モダリティです。

対称モノイド圏の余可換コモノイド・モダリティ

モダリティの重要な例として、対称モノイド圏の余可換コモノイド・モダリティ(cocommutative comonoid modality)を紹介します。余可換コモノイド・モダリティは、対称モノイド圏のすべての対象に余可換コモノイド構造を与えるものです。圏の射が余可換コモノイド・モダリティと整合する必要はありません。言い方を換えると、圏の射が余可換コモノイド構造に対する準同型になることは要求しないのです。

C = (C, ¥otimes, I, α, λ, ρ, σ) を対称モノイド圏とします。α, λ, ρはそれぞれ、結合律子(associator)、左単位律子(left unitor)、右単位律子(right unitor)、対称(symmetry)です(律子に関しては「律子からカタストロフへ」を参照)。対称モノイド圏Cの余可換コモノイド・モダリティの素材は、次の2つの全域非自然変換です。

  • δX:X→X¥otimesX in C
  • εX:X→I in C

δXは余乗法、εXは余単位です。これらは余可換コモノイドの公理を満たします。以下で、idXを単にXと書いています。

  • [余結合律] δX;(δX¥otimesX) = δX(X¥otimesδX)
  • [左余単位律] δX;(εX¥otimesX) = X
  • [右余単位律] δX;(X¥otimesεX) = X
  • [余可換性] δXX = δX

対称モノイド圏Cが、余可換コモノイド・モダリティ(δ, ε)を持つとき、Cの対象はすべて余可換コモノイド構造を持つことになります。しかし、Cの射が余可換コモノイド構造の準同型になることは全く保証されません。余乗法δXや余単位εXを保存(preserve, respect)しない射がたくさんあるかも知れないのです。

[追記]余可換コモノイド・モダリティの説明はコチラにもあります。[/追記]

僕のモダリティ経験

セリンガー(Peter Selinger)の1999年の論文"Categorical Structure of Asynchrony"に、対角付き(対称)モノイド圏(monoidal category with diagonals)という概念が出てきます。これは余可換コモノイド・モダリティを持つ圏と同じものです。セリンガー論文を読んだのは随分と前ですが、自然変換とはならない(かも知れない)射の族を使う方法は印象に残っています。

最近読んだ長健太(Kenta Cho)/バルト・ヤコブス*3(Bart Jacobs)の論文"Disintegration and Bayesian Inversion, Both Abstractly and Concretely"に、セリンガーの“対角”と同じ余可換コモノイド・モダリティが出てきます。

「ンン? 非同期通信/処理とベイズ確率って何か関係あるのだろうか?」と疑問に思いました。共通点があるとすれば、部分性(partiality)や非決定性(nondeterminism)です。試しに、非負実数係数のテンソルの圏に余可換コモノイド・モダリティを入れてみると、そのモダリティと整合する部分圏として部分性と確率的非決定性の両方がうまく定義できるようです。これが分かったとき、僕にとってはA-ha momentでした。


モダリティは、“対象達が持つ構造”の圏論的な定式化のひとつです。自然性を持たず、射を準同型として扱うことは出来ませんが、非自然であり部分的かも知れないことに注意すればとても便利な概念です。

非全域関手と非自然変換

| 12:30 | 非全域関手と非自然変換を含むブックマーク

圏論的モダリティ:圏上の非自然な構造達」への追記ですが、別エントリーにします。圏論的モダリティ(categorical modality)を定義するために、非自然変換(non-natural transformation)という概念を導入しました。この非自然変換の定義をここで詳しく述べます。

まず、部分的に定義された関手をpartial functorと呼ぶのですが、partial functorの訳語で悩みます。

partial = non-total なので「非全域」という言葉を使うことにします。ここでの「非全域」は「全域ではない」という意味ではありません。「必ずしも全域とは限らない」です。「非可換」というよく使う言葉も「必ずしも可換とは限らない」の意味なので、「非」のよくある用法だと思います。「非自然」も同様な解釈をします。

  • 全域関手は非全域関手の特別なもの。
  • 可換環は非可換環の特別なもの。
  • 自然変換は非自然変換の特別なもの。

よろしいでしょうか。

念のため、非全域関手をホムセット中心のスタイルで定義しておきます。Fが関手のとき、その対象部分(object part)をFobj、射部分(morphism part)をFmorとします。非全域関手では、FobjもFmorも非全域(部分的)になります。Fが非全域関手であることを詳しく言うと:

  1. C, D は圏とする。
  2. Fobj:|C|→|D| は非全域写像(部分写像)である。
  3. A, B∈|C| がFobjの定義域に入るとき、FmorA,B:C(A, B)→D(Fobj(A), Fobj(B)) が定義されるが、これも非全域写像である(必ずしも全域である必要がない)。
  4. A∈|C| がFobjの定義域に入っているなら、idAはFmorA,Aの定義域に入っている。
  5. 通常の関手と同様に、射の結合と恒等射を保存する。

対象Aに対するF(A)も、射fに対するF(f)も、定義されないことがあっても別にいい、ということです。定義されている範囲内で考えれば通常の関手と同じ扱いができます。

F, G:CD が非全域関手とします。α:|C|→Mor(D) という非全域写像が、FからGへの非自然変換だとは次のことです。

  • αA が定義されているなら、F(A)もG(A)も定義されている。
  • dom(αA) = F(A)、cod(αA) = G(A) である。

α::F⇒G と書くと、自然変換と区別が付かないので、α::F ?⇒ G とでも書けばいいかな。非全域関手であることも明示するなら、α::F ?⇒ G:C⊃→D とか。

Cの射 f:A→B in C が、非自然変換αと整合する(consistent, compatible)とは、次の図式が可換になることです。(図式内のα_AはαAのこと。)

F(A) -(α_A)→G(A)
|            |
F(f)          G(f)
↓            ↓
F(B) -(α_B)→G(B)

この可換図式が意味を持つには次の前提が必要です:

  • AもBも、αの定義域に入っている。
  • fはFA,Bの定義域にも、GA,Bの定義域にも入っている。


非全域関手や非自然変換のような変なものをなぜ考えるのでしょう? その答は「使うから」「役に立つから」です。

セリンガーの論文で非自然な構造(対角構造)を見たとき、僕も違和感を感じました。しかし、「非自然変換に整合する射」という形で既存の概念がエレガントに再定式化されるのです。特に役に立つのは、2つの非自然変換から構成される余可換コモノイド・モダリティです。余可換コモノイド・モダリティの事例はそのうち述べるつもりです。

*1:例えば、Robin Cockettの"Seely categories revisited"(http://pages.cpsc.ucalgary.ca/~robin/talks/seely.pdf)、Blute, Cockett, Seelyの"Differential categories"(http://aix1.uottawa.ca/~rblute/difftl.pdf)。

*2:モダリティの本来の意味については、例えば https://ncatlab.org/nlab/show/modality 参照。

*3:英語読みなら「バート・ジェイコブス」が近いかも知れません。

2017-04-19 (水)

確率的推論・判断の計算法:マルコフ・テンソル絵算

| 16:40 | 確率的推論・判断の計算法:マルコフ・テンソル絵算を含むブックマーク

比較的最近書いた記事「同時確率分布の圏の使用例:超具体的」、「アブダクションと確率的推論」などで触れたように、確率(真である度合)を使った推論や判断が面白な―、と思っています。

でも、確率的推論・判断のための計算ってけっこう難しいです。系統的な計算手順も必要だし、何をどう計算するかの指針を与える手法も欲しいです。ここでは、行列/テンソル計算(計算手順)とストリング図(指針策定)を使った方法を紹介します。内容的には“マルコフ・テンソルの圏”を扱うのですが、厳密な定義や根拠/背景は省略して、具体的な例題を中心に述べます。

随分と長い記事です。この記事全体のまとめや言い残したことなどを最後に書いているので、「おわりに」から先に読むのもいいかも知れません。

内容:

  1. 状況設定と問題
  2. どんな道具を使うのか:マルコフ行列
  3. 何もしないときの平均損失
  4. 行列計算で考える
  5. 薬を飲むときの平均損失
  6. 2変数損失関数の平均
  7. どんな道具を使うのか:行列の一般化
  8. どんな道具を使うのか:マルコフ・テンソル
  9. 検査を受けて判断するときの平均損失:準備
  10. マルコフ・テンソルの種類と操作
  11. 検査を受けて判断するときの平均損失:計算
  12. おわりに
  13. オマケ:マルコフ・テンソルと関数の一覧

状況設定と問題

インフルエンザのようなウィルス感染症を考えます。ただし架空の病気で、これから述べる設定はフィクションです。設定に出てくる数値は、必要なときは繰り返し引用するので覚える必要はありません。全体の状況をザッと把握してください。

このウィルスに感染してもしばらくは発病せず、発病前に治療薬(抗ウィルス剤)を飲めば発病を抑えることができます*1。また、現在感染しているかどうかの検査も行えます。

感染検査は完璧ではありません。感染していても陰性と出ることもあれば、逆に感染してないのに陽性反応が出ることもあります。検査(test)の精度は次のテーブルで表現できます。

test
感染してる 感染してない
陽性 98% 5% (誤認)
陰性 2% (誤認) 95%

治療薬もまた完璧ではありません。治療薬の効果(effect)は次のとおりです。(次のテーブルは二項述語テーブルですが、その定義は次節で。)

effect
(二項述語) 感染してる 感染してない
投与する 発病10% 発病0%
投与しない 発病80% 発病0%

感染していて薬を投与しなくても、2割の人は発病せず、何の問題もありません。

もしウィルスに感染して発病すると、苦しい思いをするし、仕事を休むなど様々なダメージを受けます。その損害を金銭に換算して10万円としましょう。検査には300円、治療薬には1000円かかるとします。

この状況で、我々の行動には次のような選択肢があるでしょう。

  1. 何もしない。
  2. 検査を受けずにとりあえず薬を飲む。
  3. 検査を受けて、もし陽性が出たら薬を飲む。

他にも行動の可能性があるでしょうが、この3つを主に考えます。検査代/治療薬代というコストと感染発病したときの損害(金銭換算)を合わせて損失(loss)と呼ぶことにして、上記3種の行動に対する損失を比較しましょう。もちろん、不確定な要素があるので、損失は確率的に評価することになります。これは、確率を考慮した平均損失を計算する問題です。

どんな道具を使うのか:マルコフ行列

確率的計算を系統的に行う上で最も重要な概念はマルコフ行列です*2。なので、マルコフ行列と、マルコフ行列のなかで特殊な形のものを紹介します。

成分が非負実数値で、各列(縦方向)の合計値が1である行列をマルコフ行列(Markov matrix)と呼びます。次の2つはマルコフ行列の例です。

¥begin{bmatrix}0.95 & 0.99 & 0.97 ¥¥ 0.05 & 0.01 & 0.03 ¥end{bmatrix}

¥begin{bmatrix}0.98 & 0.05 ¥¥ 0.02 & 0.95 ¥end{bmatrix}

1番目の行列は、「同時確率分布の圏の使用例:超具体的」で出した製造機械の不良率、2番目は今回の感染検査の精度を表す行列testです。“素の”行列では現実的意味が分からないので、この記事では見出し付きのテーブルを使って書きますが、テーブルも実質的には行列(マトリクス)です。

マルコフ行列は、条件付き確率の表現です。例えば、感染検査〈testテーブル〉の第1列(左列)に注目すると:

感染してる
陽性 98%
陰性 2% (誤認)

これは、「感染している」という条件のもとでの陽性/陰性の出現確率を表します。第2列(左列)も同様に、「感染してない」と条件を付けての陽性/陰性の確率ですね。

マルコフ行列の特殊なものとして次の形を考えます。

  • 1列だけのマルコフ行列
  • 2行だけのマルコフ行列

1列だけのマルコフ行列は確率分布(probability distribution)と呼びます。混乱の恐れがないのなら、単に分布(distribution)とも呼びます。ここでは、形状が1列であることを強調して分布列(distribution column)とも呼びます。次は分布列の例です(次節に出てきます)。

infection
*
感染してる 1%
感染してない 99%

星印('*')はダミーの見出しです。「最初の行は見出し行」という形に揃えるためですが、後で出てくる図示(ストリング図)とも揃えるためです。

2行だけのマルコフ行列で、行の2つの見出しが true/false, Yes/No の意味を持つとき、そのマルコフ行列をファジー述語(fuzzy predicate)と呼びます。混乱の恐れがないのなら、単に述語(predicate)とも呼びます。例えば、検査精度の表はファジー述語です。述語であることを明白にするために、見出しのパターンを「××, 非××」とします。例えば:

test
感染 非感染
陽性 98% 5% (誤認)
非陽性 2% (誤認) 95%

先ほどの分布列〈infection列〉も2行なので述語になっています。

infection
*
感染 1%
非感染 99%

ファジー述語もマルコフ行列なので、列の和は1です。なので、第1行だけ書けば第2行は計算(1 - x)で出ます。述語を1行だけで書くときは次のように書きます。左上の欄に註釈で「(述語)」と書いて、実際には2行であることを警告します。

test
(述語) 感染 非感染
陽性 98% 5% (誤認)

述語かつ分布列なら1個だけの欄で書けます。

infection
(述語) *
感染 1%

治療薬の効果を表すテーブルは、そのままではマルコフ行列ではありませんが、次のような形で書けばファジー述語、すなわち2行のマルコフ行列です。

effect
感染, 投与 感染, 非投与 非感染, 投与 非感染, 非投与
発病 10% 80% 0% 0%
非発病 90% 20% 100% 100%

これをさらに1行形式で書くと:

effect
(述語) 感染, 投与 感染, 非投与 非感染, 投与 非感染, 非投与
発病 10% 80% 0% 0%

横方向の4つの見出しを縦横2×2に分解した形が最初に出した〈effectテーブル〉の形です。縦横の組み合わせを引数とする述語なので、これは二項述語(binary predicate)と呼びます。「二項」の代わりに「二変数」「ニ引数」と言っても同じです。

effect
(二項述語) 感染 非感染
投与 発病10% 発病0%
非投与 発病80% 発病0%

もし、1つの欄のなかに発病と非発病を詰め込むなら:

effect
感染 非感染
投与 発病10%, 非発病90% 発病0%, 非発病100%
非投与 発病80%, 非発病20% 発病0%, 非発病100%

このテーブルをチャンと(?)書きたいなら、3次元のテーブル(キューブ)にすべきなんです。{発病, 非発病}を第3の方向に取って、8個の欄を作るのです。でも、3Dで描くのは容易じゃないので2Dテーブルでやりくりします。

他に、同時確率テーブルや関数行/2変数関数テーブルなども後で使いますが、必要になったときに説明します。

何もしないときの平均損失

まず、何もしないときを考えます。検査代/薬代のコストはかからないので、感染して発病したときの損害10万円だけを考えます。

ファイナンスの確率に関して『量子ファイナンス工学入門』の前田先生は:

明日の株価予想が当たる確率は50%、外れる確率も50%である。当たるか、当たらないか分からない、つまり外れる確率が50%もある賭けに大事なお金を使うことについては慎重な判断を下すべきであろう。

せきしろさんによる確率の計算例では:

かわいい子が来る確率は来るか来ないかだから50%、その子がつまずく[檜山注:隣の席に座ろうとして転ぶ]確率は同様に50%、そして恋が生まれる確率も、生まれるか生まれないかで50%、よって1/8となり、12.5%となる。

このでんでいくと、発病する確率は50%、発病しない確率も50%で、平均損失は 10万円×1/2 + 0円×1/2 = 5万円 となります。これだと二人に一人は10万円損失している、つまり発病していることになります。全人口の半分が発病している状況ならこの計算は正しいですが、それが事実かどうか分かりません*3

実は、感染率の値がないと平均損失の計算はできません。そこで、全人口に対する感染者の比率は1%とします。100人に1人が感染しています。感染者の発病率は80%だったので、0.8%が発病の確率です。

この状況は、1000本に8本の当たりがあるクジを引くのと同じです。当たると賞金10万円なら、平均賞金額(賞金の期待値)は 10万円×8/1000 + 0円×992/1000 = 800円 です。今のケースでは賞金が損失となり、平均損失額が800円です。各個人としては、損失ゼロか10万円のどちらかですが、集団全体として損失を均等に負担するなら一人あたり800円になります。

行列計算で考える

前節の「何もしないとき」の例では、数値(スカラー)の計算だけで平均損失が出ました。前々節で述べたマルコフ行列なんて要りません … いやっ、背後には行列計算があるのです。

感染(infection)の比率は次の1列のマルコフ行列、つまり分布列でした。

infection
*
感染 1%
非感染 99%

発病(development)の比率は2行のマルコフ行列、つまり述語です。

develop
感染 非感染
発病 80% 0%
非発病 20% 100%

なお、この行列developは、薬の効果effectの非投与の部分を取り出したものです。逆に言うと、effectは、developに“薬を投与した場合の情報”を追加したものです。

感染/非感染を集約した発病率の計算は、2つのマルコフ行列の掛け算を計算します。

 develop¥: infection = ¥begin{bmatrix}0.8 & 0 ¥¥ 0.2 & 1 ¥end{bmatrix}¥begin{bmatrix} 0.01 ¥¥ 0.99 ¥end{bmatrix} = ¥begin{bmatrix}0.008 ¥¥ 0.992 ¥end{bmatrix}

ウィルスにA型ウィルスとB型ウィルスがあるならば、もっと行列計算らしくなります。

infection2
*
A感染 0.5%
B感染 0.5%
非感染 99%

B型ウィルスは発病率が低いとしましょう。

develop2
A感染 B感染 非感染
発病 80% 60% 0%
非発病 20% 40% 100%

感染ウィルスの種類と非感染の別を集約した発病率は、3行1列マルコフ行列(右側)infection2と2行3列マルコフ行列(左側)develop2の掛け算で計算します。

 develop2¥: infection2 = ¥begin{bmatrix}0.8 & 0.6 & 0 ¥¥ 0.2 & 0.4 & 1 ¥end{bmatrix}¥begin{bmatrix}0.005 ¥¥ 0.005 ¥¥ 0.99 ¥end{bmatrix} = ¥begin{bmatrix}0.007 ¥¥ 0.993¥end{bmatrix}

より一般に、確率分布を表す1列マルコフ行列(上の具体例ではinfection2)と条件付き確率を表すマルコフ行列(上の具体例ではdevelop2)の掛け算により、条件の場合分けを集約した確率分布を計算できます。

さて、平均損失の計算には、次の損失関数(loss function)が登場します。

loss
(関数) 発病 非発病
損失額 10万円 0円

関数のテーブルは1行だけの行列(マルコフ行列ではない!)とみなして、発病率分布のマルコフ行列(先に計算済の分布列 (develop infection))と掛け算します。これが前節で行った計算で、結果は800円です。

 loss¥: (develop¥: infection) = ¥begin{bmatrix}100000 & 0 ¥end{bmatrix}¥begin{bmatrix}0.008 ¥¥ 0.992¥end{bmatrix} = 800

これも、非発病の損失額が0円なので、あんまり行列計算の感じがしません。ちょっとだけ複雑なケースとして、検査を受けて何もしなかったときを考えてみましょう。損失関数は次のようになります。

loss2
(関数) 発病 非発病
損失額 10万300円 300円

A型ウィルスとB型ウィルスがある場合での平均損失計算は、次の行列計算となります。

 loss2¥: effect2¥: infection2 = ¥begin{bmatrix}100300 & 300 ¥end{bmatrix}¥begin{bmatrix}0.8 & 0.6 & 0 ¥¥ 0.2 & 0.4 & 1 ¥end{bmatrix}¥begin{bmatrix}0.005 ¥¥ 0.005 ¥¥ 0.99 ¥end{bmatrix} = 1000

この程度なら、直感とスカラー計算だけでも何とかなりますが、事情が複雑になれば行列計算が有利になります。行列による定式化は次のようにします。

  1. 確率分布は、1列だけのマルコフ行列(分布列)で表現する。
  2. 条件付き確率は、マルコフ行列で表現する。
  3. 損失関数は、1行だけの行列で表現する。これはマルコフ行列ではない
  4. 平均損失は、損失関数の1行と分布列の1列を掛けたスカラーとなる。

薬を飲むときの平均損失

検査を受けずにとりあえず薬を飲む場合を考えましょう。最初に損失関数を提示しておきます。

loss3
(関数) 発病 非発病
損失額 10万1000円 1000円

1000円は薬代です。

この損失関数を発病率の分布列で平均すれば求める結果が得られます。よって、発病率の分布列を求めればいいことになります。「何もしないとき」とは違い、薬の効果があるので、仮に感染していても発病リスクは低くなり、全体として発病率は低下します。

〈effectテーブル〉から薬を投与(administrate)時の情報だけを取り出します。それをeffectadmとしましょう。

effectadm
感染 非感染
発病 10% 0%
非発病 90% 100%

これと、集団全体での感染率の情報infectionを使います。

infection
*
感染 1%
非感染 99%

これらから、薬投与時の発病率は 1%×10% + 99%×0% = 0.1%、よって平均損失は 10万1000円×0.1% + 1000円×99% = 1100円 です。何もしないときの800円より損失は増加してますが、1000円は薬代のコストなので、発病時のダメージの平均は100円に減っています。この計算の背後には、次のような行列計算があると言えます。

loss3¥: effect_{adm}¥: infection = ¥begin{bmatrix} 101000 & 1000¥end{bmatrix}¥begin{bmatrix} 0.1 & 0 ¥¥ 0.9 & 1¥end{bmatrix}¥begin{bmatrix} 0.01  ¥¥ 0.99 ¥end{bmatrix} = 1100

ところで、「何もしないとき」の計算で出てきたdevelopは、effecから薬を非投与(not administrate, no administration)時の情報だけを取り出したものなので、develop = effectnoadm と書けます。effectnoadmと書き換えて先の計算を再掲すると:

 loss¥: effect_{noadm}¥: infection = ¥begin{bmatrix}100000 & 0 ¥end{bmatrix} ¥begin{bmatrix}0.8 & 0 ¥¥ 0.2 & 1 ¥end{bmatrix}¥begin{bmatrix} 0.01 ¥¥ 0.99 ¥end{bmatrix} = 800

「何もしないとき」と「薬を飲むとき」で類似の計算をしていることが分かります。そうであれば、「何もしないとき」と「薬をのむとき」を混ぜたような計算も同様にできそうです。次節でやってみます。

2変数損失関数の平均

前々節では「何もしないとき」、前節では「薬を飲むとき」の計算をしました。今度は、薬を投与(administration)する/しないが確率的な場合を考えます。

admin
*
投与 25%
非投与 75%

この投与率の解釈は、集団内で薬を投与する人と投与しない人がいて、その比率が25:75である状況です。あるいは別な解釈として、私個人の投与/非投与を、コインを2回投げて2回とも裏が出たら投与する、と決めるような状況です。

いずれにしても、発病を抑える薬の投与率が25%の前提で平均損失を求めてみます。薬代は損失に含めますが、感染検査はないとします。

損失に薬代を入れると、損失関数は2変数になります。{投与, 非投与}×{発病, 非発病} のそれぞれで損失額は違います。

loss3
(2変数関数) 投与 非投与
発病 損失10万1000円 損失10万円
非発病 損失1000円 損失0円

この損失関数の平均を計算するには、{投与, 非投与}×{発病, 非発病}上で定義された確率分布が必要です。平均(期待値、積分)というのは確率分布(より正確には確率測度)を使って計算されるものだからです。

今回のケースでは、薬を使う/使わないの判断は各人に任されています。検査を受けて決めるわけではないので、「感染しているかどうか」と「薬を投与するかどうか」は独立と仮定します。もし、ウィルスの潜伏期間中でも多少の症状が出る場合、この独立性はあやしくなります。「なんか調子悪いな、例のウィルスかな? とりあえず薬飲んどこう」と考える人がいれば、「感染しているかどうか」が「薬を投与するかどうか」の判断に影響します。でも今は独立だとします

感染率を表すinfectionと投与率を表すadminから、{感染, 非感染}×{投与, 非投与} 上の同時確率分布を求めるには、独立性の仮定から掛け算(確率の積の法則)が使えます。ちょっと無理矢理ですが、行列の掛け算の形で計算します(後述のテンソル積を使うのが自然です)。結果をinfAdmとします。

 admin¥: infection = ¥begin{bmatrix}0.25 ¥¥0.75¥end{bmatrix}¥begin{bmatrix}0.01 & 0.99¥end{bmatrix} = ¥begin{bmatrix}0.0025 & 0.2475 ¥¥ 0.0075 & 0.7425¥end{bmatrix} = infAdm

結果をテーブルで示すならば:

infAdm
(同時分布) 感染 非感染
投与 0.25% 24.75%
非投与 0.75% 74.25%

一列の分布列の形式にするなら:

infAdm
*
感染, 投与 0.25%
感染, 非投与 0.75%
非感染, 投与 24.75%
非感染, 非投与74.25%

{感染, 非感染}×{投与, 非投与} 上の確率分布であるinfAdmと、{感染, 非感染}×{投与, 非投与} の各場合ごとに発病率を与える条件付き確率であるeffec(薬の効果)から、{感染, 非感染}×{投与, 非投与}×{発病, 非発病} 上の同時確率分布を計算できます。

(無理矢理な)行列計算を使う手順だけ述べると、2行4列行列の形に書いたeffectにinfAdmから作った4行4列の対角行列(大文字始まりのInfAdmとする)を右から掛けます。その結果はinfAdmDev(infection, administration, developmentの同時確率分布)とします。

 effect¥: InfAdm ¥¥= ¥begin{bmatrix}0.1 & 0.8 &  0 & 0 ¥¥0.9 & 0.2 &  1 & 1¥end{bmatrix}¥begin{bmatrix}0.0025 & 0 & 0 & 0 ¥¥0 &  0.0075 & 0 & 0 ¥¥0 &  0 &  0.2475 & 0 ¥¥0 &  0 &  0 & 0.7425¥end{bmatrix} ¥¥= ¥begin{bmatrix} 0.00025 & 0.0060 & 0  & 0 ¥¥ 0.00225 & 0.0015 & 0.2475 & 0.7425¥end{bmatrix} ¥¥= infAdmDev

見出し付きのテーブルの形にすれば:

infAdmDev
(同時分布) 感染, 投与 感染, 非投与 非感染, 投与 非感染, 非投与
発病 0.25% 6% 0% 0%
非発病 2.25% 1.5% 24.75% 74.25%

感染/非感染の情報は不要なので、足し算して集約すると:

admDev
(同時分布) 投与 非投与
発病 0.25% 6%
非発病 27% 75.25%

これで、損失関数loss3と形が揃いました。

loss3
(2変数関数) 投与 非投与
発病 損失10万1000円 損失10万円
非発病 損失1000円 損失0円

損失関数loss3を横1行、同時分布admDevを縦1列にして掛け算すれば平均損失を計算できます。

 loss3¥: admDev = ¥begin{bmatrix}101000 & 1000 & 100000 & 0 ¥end{bmatrix}¥begin{bmatrix}0.0025 ¥¥0.27 ¥¥0.06   ¥¥0.7525¥end{bmatrix} =  1122.5

どんな道具を使うのか:行列の一般化

今まで出てきた二項述語や同時分布は、2次元テーブルの形をしていますが、マルコフ行列ではありませんでした。そのため、不自然な行列の変形や計算を強いられます。任意個数の添字(インデックス)を持った非負実数の族としてテンソルを定義し(次節で)、そのなかでマルコフ・テンソルを特定しましょう。

行列を成分表示するとき、aj i のような2個の添字(二重インデックス)を使います。テンソル計算では、添字を上下にして aji と書くのが普通です。ここでは、添字(インデックス)をブラケットに入れることにします; a[j, i] ですね。

a[j, i] という書き方ではまだ問題があるのでさらに工夫します。iが列番号でjが行番号のとき a[j←i]と矢印で区切ります。iとjを逆順に書きたいときは a[i→j] とします。矢印を使うと、行列の掛け算を「右から左」でも「左から右」でも自由に書けます。

  • (ba)[k←i] = Σ(j| b[k←j]a[j←i] ) … 右から左の順の積、併置
  • (a;b)[i→k] = Σ(j| a[i→j]b[j→k] ) … 左から右の順の積、セミコロン

添字のi, jなどは整数値でなくても、任意の有限集合の要素でいいとします。すると、X, Yを有限集合として (a[y←x] | x∈X, y∈Y)、または (a[x→y] | x∈X, y∈Y) のような形で行列を書けます。例えば、感染検査の精度を表す行列は、test = (test[r←i] | i∈{感染, 非感染}, r∈{陽性, 非陽性}) で、各成分は次のとおりです。

  • test[陽性←感染] = 98%
  • test[非陽性←感染] = 2%
  • test[陽性←非感染] = 5%
  • test[非陽性←非感染] = 95%

集団全体の感染率の分布列は infection = (infection[i←t] | t∈{*}, i∈{感染, 非感染}) で:

  • infection[感染←*] = 1%
  • infection[非感染←*] = 99%

一般に、a = (a[y←x] | x∈X, y∈Y) (あるいは、a = (a[x→y] | x∈X, y∈Y))のとき、行列aのプロファイルは X→Y (XからY)だといい、そのことを a:X→Y と書きます。感染検査の精度test、集団全体の感染率infectionならば:

  • test:{感染, 非感染}→{陽性, 非陽性}
  • infectiont:{*}→{感染, 非感染}

これらの行列の積 (test infection) = (infection;test) のプロファイルは {*}→{陽性, 非陽性} となります。これでお気付きの方もいるでしょうが、行列の全体も、マルコフ行列の全体も圏となります。が、その詳細はここでは割愛します。

{感染, 非感染}のように、{A, 非A}の形の集合が頻繁に出てくるので、A? = {A, 非A} としましょう。例えば:

  • 感染? = {感染, 非感染}
  • 陽性? = {陽性, 非陽性}

疑問符'?'は、"or not"と読むといいでしょう。また、{*}も頻繁に出てくるので 1 = {*} と置きます。この略記を使ってtestとinfectionのプロファイルを書けば:

  • test:感染?→陽性?
  • infectiont:1→感染?

どんな道具を使うのか:マルコフ・テンソル

薬の効果を表す情報effectは、2次元のテーブルではうまく表せないものでした。ひとつの欄に複数の値を記入することになります。

effect
感染 非感染
投与 発病10%, 非発病90% 発病0%, 非発病100%
非投与 発病80%, 非発病20% 発病0%, 非発病100%

または、縦横の見出しを組み合わせて横の見出しに潰します。

effect
感染, 投与 感染, 非投与 非感染, 投与 非感染, 非投与
発病 10% 80% 0% 0%
非発病 90% 20% 100% 100%

どちらにしても不自然。実は、〈effectテーブル〉の成分は3つの添字(インデックス)を持つのです。effect = (effect[i, a, d] | i∈感染?, a∈投与?, d∈発病?)。アレ、区切りは矢印でした、矢印はどう入れましょうか? 薬の効果の計算では、{感染, 非感染}×{投与, 非投与}の要素を与えて、{発病, 非発病}上の分布を知りたいので、関数的に考えれば 感染?×投与?→発病? というプロファイルになります。

つまり、薬の効果を表す情報は effect = (effect[i, a→d] | i∈感染?, a∈投与?, d∈発病?) となります。3つの添字のうちiとaが入力側、dが出力側です。矢印を逆向きにしたいなら effect = (effect[d←i, a] | i∈感染?, a∈投与?, d∈発病?) でもかまいません。

一般に、いくつかの添字(インデックス)を持つ実数(ここでは非負実数)の族で、添字が入力側と出力側に分割されているものをテンソルtensor)と呼びます*4。行列は添字を2つ持つテンソルです。薬の効果を表すeffectは添字を3つ持つテンソルの例です。

テンソルの入力側添字を固定します; 例えば effect[感染, 非投与→d]。出力側の添字を動かして総和を取りましょう; Σ(d∈発病? | effect[感染, 非投与→d])。この例では総和が1になります。どの入力側添字(の組)に対しても出力側の総和が1のとき、そのテンソルマルコフ・テンソル(Markov tensor)と呼びます。マルコフ行列は特別な形のマルコフ・テンソルです。

同時確率分布もマルコフ・テンソルとみなせます。次の例を考えてみます。

admDev
(同時分布) 投与 非投与
発病 0.025% 0.6%
非発病 24.975% 74.4%

これはマルコフ行列ではないので、(方便として)1列に直してマルコフ行列と考えました。

admDev
*
投与, 発病 0.025%
投与, 非発病 24.975%
非投与, 発病 0.6%
非投与, 非発病 74.4%

行の見出しは 投与?×発病? の要素です。一方、ただ1つの列の見出しはダミーの'*'です。列見出しの集合が入力側、行見出しの集合が出力側なので、同時確率分布admDevのプロファイルは 1→投与?×発病? と考えられます。出力側の 投与?×発病? 上で総和を取ると1になるので、同時分布admDevはマルコフ・テンソルです。

念のために、マルコフ・テンソルの定義を一般的に述べれば: f = (f[x1, ..., xn→y1, ..., ym] | x1∈X1, ..., xn∈Xn, y1∈Y1, ..., ym∈Ym) という添字族がマルコフ・テンソルだとは、次の条件をみたすことです。

  • 任意の a1∈X1, ..., an∈Xn に対して、Σ(y1∈Y1, ..., ym∈Ym | f[a1, ..., an→y1, ..., ym]) = 1

例に挙げたeffectとadmDevは:

  • 薬の効果effectは、プロファイルが 感染?×投与?→発病? であるマルコフ・テンソルである。
  • 薬の効果と感染分布/投与分布から作った同時確率分布admDevは、プロファイルが 1→投与?×発病? であるマルコフ・テンソルである。

複雑なプロファイルを持つマルコフ・テンソルを考えることができますが、今回必要なのは2項ファジー述語に対応するマルコフ・テンソルと、同時確率分布に対応するマルコフ・テンソルです。また、マルコフ・テンソルに関する様々な操作がありますが、系統的説明は省略して、必要なときに必要なだけ導入することにします。

検査を受けて判断するときの平均損失:準備

まず、損失関数を書いておきます。

loss4
(2変数関数) 投与 非投与
発病 損失10万1300円 損失10万300円
非発病 損失1300円 損失300円

300円は検査の費用です。loss4はマルコフ・テンソルではなくて関数です。関数としてのプロファイルを書いておくと: loss4:投与?×発病?→損失額 (as 関数) です。

loss4の平均値を求めるには、1→投与?×発病? というプロファイルを持つ同時確率分布admDev2が必要です。この同時分布admDev2を求めることが課題です。

同時分布admDev2を求めるには、今まで出てきたtest, effect, infectionを使います。これらをまとめておくと:

名前 意味 プロファイル
test 感染検査の精度 感染?→陽性?
effect 治療薬の効果 投与?×感染?→発病?
infection 集団全体の感染率 1→感染?

これらのマルコフ・テンソルを下のような図で表します。マルコフ・テンソルはオダンゴで描きます。オダンゴから出たワイヤーに添字集合をラベルします。上が入力側の添字集合、下が出力側の添字集合です。入力ラベル集合が 1 = {*} のときは、ワイヤーを描かずに'*'マークを付けることにします。

関数は四角い箱で表しましょう。損失関数 loss4:投与?×発病?→損失額 が2変数の関数です。検査の結果を見て薬の投与/非投与を決める判断関数(decision function)も関数 decide:陽性?→投与? (as 関数) です。

念のため注意しておくと、有限集合から有限集合への関数(写像)は、マルコフ行列として表現できます。decide:陽性?→投与? をテーブルで表すなら:

decide
陽性 非陽性
投与 100% 0%
非投与 0% 100%

テーブルの欄の値が100%か0%であるマルコフ行列は関数(写像)を表すのです。有限集合のあいだの関数(写像)は特殊なマルコフ行列なのだとも言えます。損失関数 loss4:投与?×発病?→損失額 は、値の領域(損失額の集合、Rと同型とする)が有限集合ではないのでマルコフ“行列”にはなりませんが、マルコフ核(マルコフ行列/マルコフ・テンソルの一般化)にはなります。

さて、求めるべき同時分布 admDev2:1→投与?×発病? を図示すると次の形です。

admDev2の実際の構成は次々節以降で行います。次節では、マルコフ行列に対する操作の説明をします。

マルコフ・テンソルの種類と操作

X1, ..., Xn, Y1, ..., Ym が(n + m)個の有限集合だとして、f:X1, ..., Xn→Y1, ..., Ym というプロファイルのテンソル反変n階/共変m階テンソルと呼びます。あるいは、nを反変の階数、mを共変の階数、(n + m)を階数と呼びます。この言い方は歴史的なもので、あんまり分かりやすくないのですが、他の言い方も見当たらないので致し方なく使うことにします。

今までに出てきたマルコフ・テンソルの種類を階数と共に挙げておきます。

名称 プロファイル 階数
一般的マルコフ行列 X→Y 反変1階/共変1階
確率分布(1列のマルコフ行列) 1→X 反変0階/共変1階
ファジー述語(2行のマルコフ行列) X→A? 反変1階/共変1階
二項述語 X×Y→A? 反変2階/共変1階
同時確率分布 1→X×Y反変0階/共変2階
有限集合のあいだの写像 X→Y 反変1階/共変1階

マルコフ・テンソルが、これらのどれか一つだけに分類される、ということではありません。例えば、infection:1→感染? は確率分布でもありファジー述語でもあります。

今回の計算で使うマルコフ・テンソルの操作には次のものがあります。

  1. 2つのマルコフ・テンソル結合(composition)
  2. 2つの確率分布のテンソルtensor product)
  3. 確率分布とマルコフ・テンソルからの同時化(同時確率分布の作成;jointification)
  4. 同時確率分布の周辺化(周辺分布の作成; marginalization)

これらの操作を一般的に述べるのではなく、今回使う範囲に限って述べます。説明の後に絵があります。

結合(composition)

マルコフ行列(反変1階/共変1階のマルコフ・テンソル)に限れば、結合は既に出てきています。f = (f[x→y] | x∈X, y∈Y), g = (g[y→z] | y∈Y, z∈Z) に対して、fとgの結合f;gは次のように定義されます。

  • (f;g)[x→z] = Σ(y∈Y | f[x→y]g[y→z])

f;gのプロファイルは X→Z となります。

x, y, zが (x1, ..., xn), (y1, ..., ym), (z1, ..., zk) のようになっても同じで、f:X1×...×Xn→Y1×...×Ym と g:Y1×...×Ym→Z1×...×Zk の結合を定義できます。

テンソル積(tensor product)

確率分布 p = (p[x] | x∈X) と q = (q[y] | y∈Y) があるとき、これらのテンソル積p¥otimesqは次のように定義されます。なお、p[x]はp[*→x]の略記です。

  • (p¥otimesq)[x, y] = p[x]q[y]

p¥otimesqのプロファイルは 1→X×Y となります。

テンソル積は、感染率 infection:1→感染? と投与率 admin:1→投与? から infAdm = infection¥otimesadmin を作る際に使っています。単なる計算としてテンソル積を作ることはいつでもできますが、背後にある確率変数の独立性がないと誤った計算になることがあります。

同時化(jointification)

確率分布 p = (p[x] | x∈X) と、マルコフ行列 f = (f[x→y] | x∈X, y∈Y) があるとき、同時分布 p∩f を次のように定義します。

  • (p∩f)[x, y] = p[x]f[x→y]

これが、マルコフ行列fの分布pによる同時化で、条件付き確率を同時確率に変換する操作です。p∩f のプロファイルは 1→X×Y となります。

周辺化(marginalization)

同時分布 f = (f[x, y] | x∈X, y∈Y) に対して、X方向への周辺化 f↓X,YX と、Y方向への周辺化 f↓X,YY は次のように定義されます。

  • (f↓X,YX)[x] = Σ(y∈Y | f[x, y] )
  • (f↓X,YY)[y] = Σ(x∈X | f[x, y] )

f↓X,YX, f↓X,YY のプロファイルはそれぞれ 1→X, 1→Y です。

上付き添字X, Yは省略して、f↓X, f↓Y でもいいでしょう。また、X×Y×Z上の同時分布をY×Zに周辺化する操作なども同様に定義できます。不要な情報を集約するときに周辺化を使います。


結合、テンソル積、同時化、周辺化を図示すると次のようになります。

検査を受けて判断するときの平均損失:計算

admDev2:1→投与?×発病? を次の4ステップで計算します。

  1. [test;decideの計算] 感染検査の精度を表す test:感染?→陽性? と、検査の結果から投与/非投与を決める関数 decide:陽性?→投与? の結合 test;decide:感染?→投与? を求める。
  2. [infAdm2の計算] test;decide:感染?→投与? を、感染率 infection:1→感染? により同時化して、infection∩(test;decide) = infAdm2 : 1→感染?×投与? を求める。
  3. [infAdmDev2の計算] 薬の効果 effect:感染?×投与?→発病? を、infAdm2:1→感染?×投与? により同時化して、infAdm2∩effect = infAdmDev2 : 1→感染?×投与?×発病? を求める。
  4. [admDev2の計算] 同時確率分布 infAdmDev2:1→感染?×投与?×発病? を周辺化して、確率分布 admDev2:1→投与?×発病? を求める。
test;decide:感染?→投与?

testとdecideの結合は、マルコフ行列の掛け算として自然に計算できます。

 test;decide = decide¥: test = ¥begin{bmatrix} 1 & 0 ¥¥ 0 & 1 ¥end{bmatrix}¥begin{bmatrix} 0.98 & 0.05 ¥¥  0.02 & 0.95 ¥end{bmatrix} = ¥begin{bmatrix} 0.98 & 0.05 ¥¥  0.02 & 0.95 ¥end{bmatrix}

test;decide
感染 非感染
投与 98% 5%
非投与 2% 95%

decideの行列は単位行列になっていますが、陽性? の空間から 投与? の空間に変換しているので無意味ではありません。decideを他の写像に切り替えると、別な結果が得られます。例えば、検査の結果によらず薬を投与するという判断もあります。

infAdm2:1→感染?×投与?

infAdm2 = infection∩(test;decide) は、本来テンソル計算で定義されますが、無理に行列計算でやるなら、分布列(1列のマルコフ行列)infectionを対角行列化して右からtest;decideに掛けます。infectionの対角行列化をInfectionとします。

 {}^{infection¥cap}(test;decide) = (decide¥: test)¥: Infection ¥¥ = ¥begin{bmatrix} 0.98 & 0.05 ¥¥  0.02 & 0.95 ¥end{bmatrix}¥begin{bmatrix}0.01 & 0 ¥¥ 0 & 0.99 ¥end{bmatrix} = ¥begin{bmatrix} 0.0098 & 0.0495 ¥¥ 0.0002 & 0.9405 ¥end{bmatrix} ¥¥= infAdm2

infAdm2
(同時分布) 感染 非感染
投与 0.98% 4.95%
非投与 0.02% 94.05%

感染検査の不完全さから、感染しているにも関わらず非投与の人が0.02%、感染してないのに投与してしまう人が4.95%います。

infAdmDev2:1→感染?×投与?×発病?

infAdmDev2 = infAdm2∩effect も、テンソル計算で定義されます。これも無理に行列計算でやるなら、effectを2行4列の行列の形にして、infAdm2の4成分を対角行列化した4行4列行列InfAdm2を右からeffectに掛けます。

 {}^{infAdm2¥cap}effect = effect¥: InfAdm2¥¥= ¥begin{bmatrix}0.1 & 0.8 & 0 & 0 ¥¥ 0.9 & 0.2 & 1 & 1 ¥end{bmatrix}¥begin{bmatrix}0.0098 & 0      & 0      & 0 ¥¥0      & 0.0002 & 0      & 0 ¥¥0      & 9      & 0.0495 & 0 ¥¥0      & 0      & 0      & 0.9405¥end{bmatrix} ¥¥ = ¥begin{bmatrix}0.00098 & 0.00016 & 0      & 0      ¥¥0.00882 & 0.00004 & 0.0495 & 0.9405 ¥end{bmatrix} ¥¥= infAdmDev2

infAdmDev2
(同時分布) 感染, 投与 感染, 非投与 非感染, 投与 非感染, 非投与
発病 0.098% 0.016% 0% 0%
非発病 0.882% 0.004% 4.95% 94.05%
admDev2:1→投与?×発病?

感染に関する情報は不要なので、列を足し算して集約します。

admDev2
(同時分布) 投与 非投与
発病 0.098% 0.016%
非発病 5.832% 94.054%


目的としたadmDev2が求まったので、損失関数loss4(下に再掲)をadmDev2で重み付けした平均を求めます。

loss4
(2変数関数) 投与 非投与
発病 損失10万1300円 損失10万300円
非発病 損失1300円 損失300円

10万1300円×0.098% + 1300円×5.832% + 10万300円×0.016% + 300円×94.054% = 473.3円 となります。検査を受けて適切な判断と予防治療をすれば、平均損失額はだいぶ下がります。

おわりに

この記事を書くにはちょっと苦労しました。最初は、圏論的定式化と実例の両方を一緒に書こうと思ったのですが、量が増えすぎるのであきらめました。ウィルス感染症に関わる検査、治療薬、損失などを計算する事例だけにしました。例題の計算に必要な概念は説明していますが、系統的でも網羅的でもありません。僕はストリング図に沿って計算してますが、それを再現するのも疲れるので、図の提示も断片的です。

しかしそれでも、確率的問題の定式化と計算に、テンソルとその図式表現であるストリング図が有効であることが多少は伝わったでしょう。

テンソルの数値的計算は、行列計算を流用しています。この方法はバッドノウハウで、あまり好ましくありません。テンソル数値計算ができるソフトウェアを探せば良かったのかも知れませんが、数値計算は手元にあったR言語処理系で行いました(Rにもテンソル計算パッケージはあるようです)。

マルコフ・テンソルは、確率分布、条件付き確率、同時確率に一様な定式化を与える点で便利なのですが、これらの意味的な違いを意識したほうがいいときもあります。この事の背景には、確率分布(確率空間)、条件付き確率、同時確率のそれぞれに対応する圏 ProbCondProbJointProb の存在があります。これらの圏達とその相互関係はまたの機会に述べるつもりです。

確率分布/条件付き確率/同時確率を計算する行為は、ある種の推論だと言えます。確率的推論を行うための論理系(logical system)をうまく定義できれば、それは日常生活の論理を(古典論理より)うまく説明できるかも知れません。「アブダクションと確率的推論」で断片的に述べたことを、もう少し体系化できる可能性があります。

現時点での感触としては、「計算と論理と圏の三者が密接に関連している」というカリー/ハワード/ランベック対応(Curry-Howard-Lambek correspondence)の確率版があるような気がします。

オマケ:マルコフ・テンソルと関数の一覧

矢印が'→!'と書いてあるのは関数です。

  1. test: 感染? → 陽性?
  2. effect: 感染?×投与? → 発病?
  3. infection: 1 → 感染?
  4. develop: 感染? → 発病?
  5. infection2: 1 → AB感染?
  6. develop2: AB感染? → 発病?
  7. loss: 発病? →! 損失額
  8. loss2: 発病? →! 損失額
  9. loss3: 発病? →! 損失額
  10. infAdm: 1 → 感染?×投与?
  11. admin: 1 → 投与?
  12. infAdmDev : 1 → 感染?×投与?×発病?
  13. admDev: 1 → 投与?×発病?
  14. loss4: 投与?×発病? →! 損失額
  15. admDev2: 1 → 投与?×発病?
  16. decide: 陽性? →! 投与?
  17. infAdm2: 1 → 感染?×投与?
  18. infAdmDev2: 1 → 感染?×投与?×発病?
  19. admDev2: → 投与?×発病?

*1:この設定のモトは、T-ウィルスと抗ウィルス剤。レイン・オカンポは薬を打ったが手遅れでした。カルロスは感染してましたが、アンジー(アンジェラ・アシュフォード)が持っていた抗ウィルス剤で発病を免れました。

*2:より一般的な概念はマルコフ核ですが、離散有限の場合ならマルコフ行列で間に合います。

*3ベイズ推論で、ほんとに何も分からないとき、暫定的に五分五分だと仮定することはあります。

*4:「テンソル」は多義語なので、多くの意味を持ちます。ここでは添字族をテンソルと呼ぶ、ということです。

2017-04-18 (火)

滝沢カレンさんの言語芸術 その2

| 15:20 | 滝沢カレンさんの言語芸術 その2を含むブックマーク

去年(2016年)の年末に書いたエントリー「滝沢カレンさんの言語芸術」にて:

滝沢カレンさんの変な日本語が2015年に評判になったようです。もうすぐ2017年ですけど。

事情をよく知らなかったので、このときの僕の印象は「2015年に評判になったらしいけど、一過性のプチブームだったんだろう」というものでした。ところが、2017年になっても滝沢カレンさんの快進撃は止まらないようです。

声に出して読みたい日本語』の著者・斎藤孝 明治大学教授は、滝沢カレンさんの大ファンらしく、彼女の言語センスを「天才的」「詩的」と絶賛しているとか。また、最近の『芸人ドラフト会議』なるテレビ番組の「自分がMCをやるときに使いたいタレント」として、女性タレントとしてはダントツの支持を集めていたようです。そして、Eテレの教育番組『NHK高校講座 ベーシック国語』の生徒役に起用されたそうです。NHKも随分とあざといキャスティングをしますね。

「あの変な日本語は、キャラを作るためにわざとやっているんじゃないか?」という疑惑があるそうです。僕は「それはない」と思います。通常の日本語を普通に使えて、それとは別にあの言語ワールドを自ら創造・構築し、それを自由に切り替えられる、としたら、それはもう掛け値なしの驚嘆すべき天才です。そこまでの突出した言語能力を持ち合わせている人間がいる可能性は低い気がするのです。

その滝沢カレンさんがインスタグラムをやっているのですが、あの日本語でかなり長文のコメントを付けていて、カレン語のファンにはたまりません。

最近のコメントから(文中の「なっちゃん」とは横澤夏子さんのことです):

本当になっちゃん(さん)の一文字一文字発する言葉に今にも踊れそうな自分にびっくりこきまろしつつも、話をどこかで、まだかまだかと聞かせてよと言いたくなるあのやり方、本当に素敵でした

[..snip..]

次のなっちゃん(さん)への嬉しみが高鳴る一日として今日の窓を閉めましょう... では、寝ます

通常日本語への翻訳はまったく無粋とは承知ながらも:

横澤夏子さんの一言一言、その発する言葉に今にも踊りだしそうな自分に、我ながら本当にびっくりしてしまいました。「話をもっともっと聞かせてよ」と言いたくなってしまうようなあの話し方、本当に素敵でした。

[..snip..]

次に横澤夏子さんに会えることへの期待で胸が高鳴るくらい、楽しい一日でした。そんな思いを抱いたまま今日が終わります。おやすみなさい。

「びっくりこきまろしつつ」とか「嬉しみが高鳴る一日」とかの意味が汲み取れてないし、肝心の語感が失われるのでダメです。カレン語は原語で読むべし。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20170418

2017-04-17 (月)

けもの(動物の)フレンズ その2

| 14:54 | けもの(動物の)フレンズ その2を含むブックマーク

山手通りの某所にて:

その1はコチラ

トラックバック - http://d.hatena.ne.jp/m-hiyama/20170417

2017-04-15 (土)

公衆電話

| 13:22 | 公衆電話を含むブックマーク

電話」というエントリーで、電話ボックスやピンク電話の話を書きました。「今じゃそんなものはないだろう」という感慨を述べたのですが、公衆電話が絶滅しているわけではないようです。

公衆電話からの着信があると、相手の電話番号が出るわけでもなく非通知と表示されるわけでもなく、「公衆電話から」の旨が表示されるそうです(僕は経験ありませんが)。非通知には出ない主義の人は、「公衆電話から」にどう対応するでしょうか? 僕なら、携帯を落とした、とか電池切れとかの状況で連絡してきたのかも知れないと想像して出ると思います。

公衆電話にも固有の電話番号が付いています(非公開ですが)。僕は公衆電話が着信してベルが鳴っているのを見た(いや、聞いた)ことがあります。電話ボックスに入って電話にでてみたのですが、「もしもし、山本さんですか?」「いえ違います。檜山です。」「すみません、間違いました。」といった会話でした。

しかしそもそも、今、公衆電話ってどこにあるのでしょう? 「公衆電話 設置場所検索」というサービスがあります。

クエリー文字列 ?sp=0 と ?sp=1 でインターフェイスを切り替えられます。?sp=0 がデフォルトで今風のインターフェイスです。http://service.geospace.jp/ptd-ntteast/PublicTelSite/TopPage/?sp=1 だと古臭いインターフェイスですが、地図の表示は ?sp=1 のほうが大きくて見やすいです(PCの場合)。

設置場所の地図を見ると、まーあるにはありますが、前もって場所を知ってないで探すのは大変(ほぼ不可能)そうです。「携帯の電池が切れた、しょうがない公衆電話を使おう」とはいかない場合が多いでしょう。

絶滅はしてないけど、絶滅危惧な状況ですね。

[追記]公衆電話設置場所の地図を見て、近所の2箇所を探したのですが見つからなかったですね。建物のなかにあるのか、それとも最早ないのか? 公衆電話探すの大変![/追記]

トラックバック - http://d.hatena.ne.jp/m-hiyama/20170415

2017-04-11 (火)

アブダクションと確率的推論

| 12:15 | アブダクションと確率的推論を含むブックマーク

「AならばB」であっても、それだけでは「BならばA」だとは断言できません。この事実を「逆、必ずしも真ならず」と言ったりします。しかし我々は、「AならばB」から「BならばA」を導くことがあります。そして、それが“全く不合理な判断だ”とも言えないのです。

古典論理では認められていなくても一理ある推論(のいくつかの形式)をアブダクションと言います。「AならばB」から「BならばA」を導くのもアブダクションの一種です。このアブダクションを確率的推論の立場から分析してみます。

内容:

  1. 一理ありそうな推論
  2. 黒いはカラス
  3. 「『カラスは黒い』が本当だ」とはどういうこと?
  4. 鳥に関する観測結果をテーブルで表す
  5. 同時確率テーブルと条件付き確率テーブルの転置
  6. 真である度合

一理ありそうな推論

古典論理や直観論理から見て認められない推論でも、なんか一理ありそうな推論があります。一方、どう考えてもおかしい、まったくデタラメな推論もあります。僕は一理ありそうな推論に興味を持っています。そして、一理ありそうな推論とまったくデタラメな推論を区別すべきだと思います。この区別をしないと次の危険があります。

  • 一理ある推論を擁護する議論が、まったくデタラメな推論まで擁護すると誤解される。
  • まったくデタラメな推論を批判する議論が、一理ある推論まで批判すると誤解される。

一理ありそうな推論として過去記事で扱った例は、発言者により命題の真偽を判断するとか、少数の事例から一般法則を主張するとかです。

ニセ科学に関連して、「デタラメ=真性ニセ科学」と「クレイジー=異端の科学理論」を区別すべきだと主張したこともあります。

今回話題にするのは、条件付き命題(conditional proposition)の仮定と結論を入れ替えてしまう推論です。'→'を「ならば」の意味として図示すれば:

   A→B
 --------[よって]
   B→A

もちろん、古典論理でこのような推論は許されません。しかし、日常的にこのタイプの推論はしているし、状況によっては(いつもではない!)それが間違いとは思えないのです。一理ありそうなんです。

黒いはカラス

事例として、「カラスは黒い」が真であることから「黒いはカラス」を導く例を考えます。

「カラスは黒い」を論理式て表すと次のようになります。

  • ∀x∈鳥.(カラスである(x)→黒い(x))

これは、「任意の鳥xに対して、xがカラスである ならば xは黒い」と読みます。日本語だと本文と紛らわしいので英語っぽく書くと:

  • ∀x∈Birds.(crow(x)→black(x))

Birdsは鳥全体の集合、crow(x)は「xはカラスである」、black(x)は「xは黒い」の意味です。仮定と結論を入れ替えた形は:

  • ∀x∈Birds.(black(x)→crow(x))

「カラスは黒い」から「黒いはカラス」を導く推論は:

   ∀x∈Birds.(crow(x)→black(x))
 ---------------------------------[よって]
   ∀x∈Birds.(black(x)→crow(x))

この推論がどのように「一理ある」かを考えてみます。

「『カラスは黒い』が本当だ」とはどういうこと?

「カラスは黒い」(論理式なら ∀x∈Birds.(crow(x)→black(x)))は真であるとします。このとき「真である」とは何でしょうか? 論理における「真である」には、構文論的な真と意味論的な真があります。構文論的な真(証明論的な真)は証明による真で、意味論的な真(モデル論的な真)は事実との照合による真です。「カラスは黒い」という命題が論理的に証明されたとは考えにくいので、事実との照合によって真であると考えましょう。

事実とは、鳥の集合Birdsの全ての要素を観測したら、カラスである要素はことごとく実際に黒かった、とうことです。このことを次の記号で書くことにします。

  • x∈Birds |= crow(x)→black(x)

記号'|='はダブルターンスタイルと呼ばれます。ダブルターンスタイルはメタな記号で、'|='の左に事実や実体を書き、その事実/実体と照合した結果として左側の命題(論理式)が真であることを示します。

「∀x∈Birds.(crow(x)→black(x)) が意味的に真である」という主張は、「x∈Birds |= crow(x)→black(x)」と同じことなので、ダブルターンスタイルを使った後者の形式を使うことにします。後者の形式、つまり「〈事実/実体〉|= 〈命題〉」の形は妥当性判断(validity judgment)と呼びます。

ここでやっていることは、全称束縛された一階述語論理の論理式を、モデル論的な妥当性判断に置き換えて扱おうということです。対象レベルの論理式 ∀x∈X.p(x) の真偽を、メタレベルの妥当性判断 x∈X |= p(x) の真偽によって与えます。

このようにして真偽値を与えることは、全称の標準的な解釈です。ただし多くの場合、論理式p(x)のなかに含まれる定数や関数記号に意味を付けるために、Xは単なる集合ではなくて構造であることを要求します。

さて、crow(x)とblack(x)を入れ替えた「x∈Birds |= black(x)→crow(x)」の意味は、鳥の集合Birdsの全ての要素を観測したら、黒い要素はことごとくカラスだった、ということです。実際に鳥を調べてみると、キュウカンチョウは黒いですがカラスではありません。したがって、「x∈Birds |= black(x)→crow(x)」、あるいは同じことですが「∀x∈Birds.(black(x)→crow(x))」が真だとは言えません。

以上が、古典論理の命題の意味的/モデル論的解釈です。この解釈では、次のアブダクションは正当化されません。

   x∈Birds |= crow(x)→black(x)
 ---------------------------------[よって]
   x∈Birds |= black(x)→crow(x)

鳥に関する観測結果をテーブルで表す

古典論理は、神様のような超越的な能力を持つ全能者を想定して、その全能者の立場で考えます(「論理を身に付けるには」参照)。また、すべての命題に真か偽かで決着を付けようとします。これは、我々人間の日常とはちょっとかけ離れた論理です。

そこで、命題とその真偽判断をもっと人間的/日常的にします。まず、全ての鳥の集合Birdsをやめます。全ての鳥を調べるなんて出来ませんからね。MyBirdsを私(特定の誰か)が認識する鳥の集合とします。鳥に関する観測結果を次のテーブルに書き込むことにします。

カラスである カラスでない
黒い カラスであって黒い鳥の比率 カラスでなくて黒い鳥の比率
黒くないカラスであって黒くない鳥の比率 カラスでなくて黒くない鳥の比率

今まで見たすべてのカラスは黒かった、という事実は次のように書けます。

カラスである カラスでない
黒い 100% ?
黒くない 0% ?

疑問符のところはあまりハッキリわかりません。しかし、だいたいの主観でいいので書き込むとします。すると例えば:

カラスである カラスでない
黒い 100% 30%
黒くない 0% 70%

カラスでなくても黒い鳥はいるにはいるが3割くらいかな、ということですね。このテーブルを(確率論の言葉では)条件付き確率テーブル(conditional probability table)と呼びます。確率とはいっても、クジや賭け事をイメージする必要はありません。観測された事実における頻度(frequency)または比率(ratio, rate)のテーブルです。この条件付き確率テーブルが今後の判断の基礎を与えます。

同時確率テーブルと条件付き確率テーブルの転置

今まで見た鳥(集合MyBirds)のなかで、カラスとカラス以外の比率はどうでしょうか? カラスは他の鳥に比べてよく目にするので、「カラス:非カラス」は6:4くらいとします。この比率を先のテーブルに掛け算すると:

カラスである カラスでない
黒い 100%×60% 30%×40%
黒くない 0%×60% 70%×40%

結果は:

カラスである カラスでない
黒い 60% 12%
黒くない 0% 28%

このテーブルは同時確率(分布)のテーブル(joint probability table)と呼びます。同時確率テーブルの4つの欄を総和すると100%になります。これを、行ごとの和が100%(全体の和は200%)になるように調整します。1行目に100/72、2行目に100/28を掛ければOKですね。

カラスである カラスでない
黒い 60%×(100/72) 12%×(100/72)
黒くない 0%×(100/28) 28%×(100/28)

さらに、縦と横を入れ替えると次のテーブルが得られます。

黒い 黒くない
カラスである 83.3% 0%
カラスでない 16.7% 100%

このテーブルも条件付き確率テーブルですが、条件の部分が最初とは逆で、1列目(左)は「黒い鳥のなかでカラスとカラスでない鳥の比率」、2列目(右)は「黒くない鳥のなかでカラスとカラスでない鳥の比率」となっています。

今まで行った一連の操作により、与えられた条件付き確率テーブルの縦横が入れ替わります。この入れ替えの操作を転置(transpose)と呼ぶことにします。転置されたテーブルによれば、黒い鳥を見たとき、それを「カラスである」と判断しても8割がた当たることになります。「黒いはカラス」はまんざら間違いではないでしょう。

真である度合

命題(妥当性判断)の真偽値を左側のブラケットに入れて明記してみます。まず、古典論理ベースの場合:

  • x∈Birds |= crow(x)→black(x) [100% = true]
  • x∈Birds |= black(x)→crow(x) [(not 100%) = false]

条件付き確率テーブル(さまざまな比率)を考えて、それを転置した場合:

  • x∈Birds |= crow(x)→black(x) [100%]
  • x∈Birds |= black(x)→crow(x) [83.3%]

古典論理の場合は100%の確実性がない限り偽(false、間違い、嘘)と判断されます。しかし日常では、8割・9割当たりなら“ほぼ真”であって間違いや嘘とまでは言いません。

古典論理における記号「→」は含意と呼ばれ、black(x)→crow(x) は ¬black(x)∨crow(x) (xは黒くない または xはカラスである)と同じ意味です。一方、確率(比率)としての解釈では、黒い鳥に限定して(条件付けて)のカラスの確率(比率)です。含意と条件付き確率テーブルでは、「ならば」の意味が微妙に違っています。

前節の条件付き確率テーブルの転置操作では、カラスでない鳥の色とか鳥全体のなかでのカラスの比率とかの情報を使いました。古典論理ではそういう情報を使わない(使えない)ので、仮定と結論をひっくり返したときのリスクを見積もれないのです。間違いを犯すリスクをゼロにするには「危ないことは一切やらない」判断が正しいことになります。しかし現実の多くのケースでは、リスクが見積もれてそれが小さいケースもあるのでアブダクションも禁止しなくてもよいのでしょう。

今述べた「カラスかどうか」の確率的判断では、古典論理に比べてより多くの情報を活用しながら二値とは限らない“真である度合い”を評価していることになります。日常的判断において「黒いはカラス」が受け入れられるのは、こういう背景・メカニズムなのかも知れません。

2017-04-10 (月)

プレーンテキストだけで色付きマーク

| 10:40 | プレーンテキストだけで色付きマークを含むブックマーク

とあるメールの題名に赤丸が入っていたのです。HTMLメールなら、本文に色だの下線だの付いていても驚きませんが、題名に色? まさか「題名でもHTML使えるようになった?」とメッセージソースを調べてみたのですが、プレーンテキストでした。

赤丸の正体は、Unicode文字 U+01F534 (LARGE RED CIRCLE) でした。Miscellaneous Symbols and Pictographs (Range: 1F300–1F5FF) というブロックに赤丸があるんですよね。

このブロックには絵文字由来の“文字”が含まれるのです。"RED", "GREEN", "BLUE"を文字列検索して色付きの絵文字を探してみたら:


文字番号 名前 レンダリング
1F34E RED APPLE 🍎
1F534 LARGE RED CIRCLE 🔴
1F53A UP-POINTING RED TRIANGLE 🔺
1F53B DOWN-POINTING RED TRIANGLE 🔻
1F53C UP-POINTING SMALL RED TRIANGLE 🔼
1F53D DOWN-POINTING SMALL RED TRIANGLE 🔽
1F332 EVERGREEN TREE 🌲
1F34F GREEN APPLE 🍏
1F49A GREEN HEART 💚
1F4D7 GREEN BOOK 📗
1F499 BLUE HEART 💙
1F4D8 BLUE BOOK 📘
1F535 LARGE BLUE CIRCLE 🔵
1F537 LARGE BLUE DIAMOND 🔷
1F539 SMALL BLUE DIAMOND 🔹

レンダリングの部分には、「🍎」のようにUnicode文字番号による文字実体参照を使っています。僕の環境だと、"UP-POINTING SMALL RED TRIANGLE"と"DOWN-POINTING SMALL RED TRIANGLE"が赤くないです。

こりゃスパムメールやセールスメールにバンバン使われそうだな。楽天から次のような題名のメールが来そう(「「ドドーン」ってそう書くの?」参照)。あー、考えただけで鬱陶しい!

  • 🔹🔷┣¨┣¨━ンと2,190名様にプレゼント🔻🔷🔹【楽🔴天】
トラックバック - http://d.hatena.ne.jp/m-hiyama/20170410

2017-04-06 (木)

大乗仏教中観派と一般モデル理論

| 13:38 | 大乗仏教中観派と一般モデル理論を含むブックマーク

ダイアコネスクの次のエッセイ風論文を読みました。

タイトルにあるMadhyamaka(マーディアミカ サンスクリット語)は、大乗仏教の学派である中観派(ちゅうがんは)のことです。タイトルを見ての印象は、逆方向の『「知」の欺瞞』かな? というものでした。

ソーカルとブリクモンの著書『「知」の欺瞞』で批判の対象となったのは、人文系の論文において、意味も分からずに数学や物理の専門用語をトンチンカンに散りばめては権威付けする行為でした。このケースでは:

  • 主題的内容:人文系
  • 用語の借用:数理科学系

逆にすると:

  • 主題的内容:数理科学系
  • 用語の借用:人文系

ダイアコネスクのエッセイの主題はインスティチューション(Institutions)と一般モデル理論(Universal Model Theory)です。ダイアコネスクはこの分野における第一人者なので、その主題的内容は完全に信用できるものです。となると、“欺瞞”かどうかの分かれ目は、この主題に対して仏教や中観派を持ち出すのが適切なのか? 仏教/中観派に関する理解が行き届いているのか? あたりでしょう。

しかし、仏教がうんぬんなんて、僕には全く判断できません。とりあえず、仏教/中観派に関するダイアコネスクの記述を信用することにしてザッと読んでみると、なかなかに説得力がある論説でした。

ダイアコネスクの主張は、ゴグエンとバーストル(Joseph Goguen and Rod Burstall)に始まるインスティチューション理論大乗仏教の中観派思想は類似のものであり、モデル理論に対して中観派思想を適用・実践したものがインスティチューション理論だとも言える、といったことです。

特に注目すべきは「空(Shunyata)」の概念です。般若心経(Heart Sutra)の「色即是空」とかのアレでしょう、たぶん。ダイアコネスクによれば、「一切が空である」とは、この世には何も存在しないという虚無的発想とは全く違う、ということらしいです。この世に存在物はあるが、「これが本質(essence)だ」とか、「これが基底(ground)だ」とか呼べるようなモノはない、そいうことらしい。中観派アプローチはnon-essentialでgroundlessということになります。

存在物にそれ自体の固有性なんてないのです(もちろん、受け売りで言ってますが)。モノ自体が独立して在るわけではなくて、すべてが相互依存(dependent origination, interdependence)のネットワークのなかにある、ということです。

インスティチューション理論は、論理系(logical system)の定式化なのですが、論理的観点(logical view)を全く持っていません。No logical viewは「この世に論理なんて存在しない」とも取られかねませんが、実際は「本質的/基底的論理なんて存在しない」という前提です。そうです、中観派の空の概念に通じるものがあります。

すべてが相互依存のネットワークのなかにあることを明確に記述するために、インスティチューション理論は圏論をヘビーに使うことになります。そもそも圏論が、対象より射を重視する点において中観派アプローチだと言えます。

先日紹介した谷村先生の「物理学者のための圏論入門」のなかに次のような記述があります。

対象たちが無関係にばらばらにあるのではなく, 射の有機的なネットワークでつながっている, というのが圏の大事な性質です.


[対象である] a や b は集合のように内部を持っているかどうかすらわかりません. いまのところ a, b の内部には立ち入らず, さしあたって対象と呼んでいるだけです. 圏論では, 元や集合の存在に先立って, 射の存在を認めるのです.


対象 a の性質を圏論的に知りたかったら, [a 自体ではなくて] 射の連動関係・絡み具合を調べることによって対象 a の特徴を探ろうとします. [...snip...] 物理学や化学では, 未知の物質に光や音や熱や他の粒子をぶつけるなどの刺激を与えて, そこから出て来る光や破片などを見て, その物質の性質や正体をつきとめようとします. このような方法は, 物理と化学に限った話ではなく, 生物学や心理学でも似たような方法が使われるでしょう.

これは、「存在物にそれ自体の固有性なんてない」「すべてが相互依存のネットワークのなかにある」という中観派アプローチと符合していますね。現代の自然科学のアプローチは、実は中観派アプローチと類似している/相性が良い、という指摘もよくされるようです。

さて、中観派のモットーによれば、特定のナニカを特別扱いしたり基底と考えるべきではない、となります。そうすると、特別扱いする論理/基底と考える論理もないわけです。たとえ一階述語論理であっても特別な論理ではなく、基底となる論理でもありません。数多〈あまた〉ある論理のひとつに過ぎず、それ自体の固有性も価値もないのです。

こういう発想で展開される古典モデル理論の再構築版が、インスティチューション独立モデル理論(Institution-independent Model Theory)です。「インスティチューション独立」は、個々のインスティチューション(論理系)に依存しないということであり、インスティチューション理論をベースにした一般(汎用、普遍的)モデル理論です。

特定の基底論理に依存したいという気持ち(邪念?煩悩?)はけっこう強烈なものなので、その誘惑を排除してニュートラルであり続けるのは大変です。確かに修行と悟りが必要そうですね。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20170406

2017-04-03 (月)

「量子と古典の物理と幾何」の資料が公開されていますよ

| 09:23 | 「量子と古典の物理と幾何」の資料が公開されていますよを含むブックマーク

終わってしまったイベントの告知ページを読む人はあまりいないと思います。しかし、今年2月のイベント「量子と古典の物理と幾何」に関しては、告知ページがイベント終了後もメンテナンスされていて、ごく最近も、追加資料がアップロードされました。

現時点において、発表者すべての資料にアクセス可能となっています。興味がある方はリンクをたどってみてください。

特に、谷村先生のPDF文書「物理学者のための圏論入門」は力作です。https://atnd.org/events/82626 の当該箇所にあるリンクからPDF文書にアクセスできます。

タイトルの「物理学者」は単なる符丁で「圏論にまったく馴染みがない人」と同義です。このPDF文書は、当日の谷村先生のお話をかなり忠実に再現していて、研究会に参加してない方でもまったく問題なく読めます。圏論入門の良い資料が、インターネット上にまたひとつ追加されましたね。