このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

離散キューブ: 特に0次元と(-1)次元の話

次元の概念は思いのほか難しくて、あまり理解されてないのかも知れませんね。特に0次元が鬼門のようです。

離散キューブという概念を導入する過程のなかで0次元の話をします。(-1)次元は、空集合に対する次元の候補です(空集合の次元は幾つかの考え方があります)。

内容:

次元て何?

次元て何? に対して、位相幾何学で「次元論」なんてのがありますが、なんか難しい話で、我々が「次元論」で次元を理解しているとは思えません。おそらく、「ベクトル空間の次元」の概念とその延長線上で“次元”を理解しているのだと思います。今回話題にする次元はそういうもの -- 「ベクトル空間の次元+α」です*1

ベクトル空間 V *2は足し算とスカラー*3ができます。足し算は可換群演算なので、次の法則を満たします。

  1. ∀a, b, c∈V. (a + b) + c = a + (b + c)
  2. ∀a, b∈V. a + b = b + a
  3. ∀a∈V. 0 + a = a
  4. ∀a∈V. -a + a = 0

ここで、(V∋ a \mapsto -a ∈V) は、Vの要素に反元〈opposite element〉(加法的逆元〈additive inverse {element}?〉)を対応させる写像です。0はもちろんゼロ元(加法的単位元〈additive unit {element}?〉*4)です。

ゼロ元0は、ベクトル空間の構成素〈constituent〉に含まれます(あるいは、公理のなかで存在が要請されています*5)。よって、ゼロ元0を持たないベクトル空間というものはありえません。

  • Vがベクトル空間ならば、Vにはゼロ元が存在する。

「ゼロ元だけの集合 {0} はベクトル空間なのか?」は、ベクトル空間の公理を満たすかどうかを調べれば分かることです。OKですよね*6。単元集合 {0} は、自明な足し算とスカラー倍により立派なベクトル空間になります。(「立派」は言葉の綾よ。)

ベクトル空間Vの基底〈basis〉とは、部分集合 B⊆V であって、(線形結合〈一次結合〉により)V全体を生成できて、かつ線形独立〈一次独立〉なものです。

ベクトル空間Vの次元〈dimension〉とは、基底Bの基数〈cardinality〉card(B) のことです。ただし、基底は色々あるので、別な基底B'を取ったとき card(B') = card(B) でないと、次元の定義が well-defined(ちゃんと定義されている)になりません。そのへんの議論を線形代数でやるわけです(ここでは割愛)。

dim(V) = card(B) < ∞ のとき、Vは有限次元ベクトル空間〈finite dimensional vector space〉で、この記事では、有限次元ベクトル空間しか考えません。

単元集合 {0} を台集合とするベクトル空間 O(大文字オー)*7の次元はというと; 空集合 \emptyset⊆{0} が基底になります。線形結合がひとつもできなくても、ゼロ元は最初からあるので大丈夫なのです。空集合が基底なので、dim(O) = card(\emptyset) = 0 です。

今出てきた「(1)ゼロベクトル 0」「(2)ゼロベクトルだけからなるゼロ空間 O = {0}*8」「(3)ゼロ空間の基底である空集合 \emptyset」「(4)ゼロ空間の次元である自然数の 0」をちゃんと区別していますか? 書き方/見た目が似ていても(場合により同じ文字・記号で書かれても)違いますからね、注意しましょう。

ユークリッド空間の次元

Rは実数全体の集合です*9Rを図形とみれば数直線です。RRの直積である R×R = R2 は平面だと考えます。R が1次元の空間、R2 が2次元の空間=平面です。

一般の Rn (n = 0, 1, 2, 3, ...)は(n次元の)ユークリッド空間〈Euclidean space〉と呼びます。ユークリッド空間 Rn の次元が n であることは、Rn をベクトル空間と考えての次元がn次元であることを意味しています。実際、Rn は、n個の要素を持つ標準的な基底を持ちます。R3の標準的基底なら、それは次の集合です。(Rnの要素を縦並びに書いていることに特に意味はありません。そのほうが「ベクトルっぽい」雰囲気だから。)


\{
  \begin{pmatrix}1\\ 0\\ 0\end{pmatrix},
  \begin{pmatrix}0\\ 1\\ 0\end{pmatrix},
  \begin{pmatrix}0\\ 0\\ 1\end{pmatrix}
\}

n = 0 のときは、R0 = {0} です。0個のRを(直積で)掛けたものだから、掛け算(集合の直積演算)の単位である単元集合だと考えればいいわけです。あるいは、次の同型*10に注目するのもいいでしょう。

  • Rn \cong Map([n], R)

ここで、[n] = {1, 2, ..., n}, [1] = {1}, [0] = {} = \emptyset です。n = 0 のケースなら:

  • R0 \cong Map([0], R) = Map(\emptyset, R)

空集合 \emptyset からの写像〈関数〉はひとつだけあるので、それがゼロベクトルに相当します。

キューブの次元

ユークリッド空間Rnの部分集合で、閉区間の直積で書けるものをここではキューブ〈cube〉と呼びます。さらに、話を簡単にするために、閉区間は単位閉区間 [0, 1] = {x∈R | 0 ≦ x ≦ 1} に限りましょう。単位閉区間がしばしば出てくるので、太字の'J'で書くことにします。

  • J := [0, 1]

以上の設定で、キューブとは Jn (n = 0, 1, 2, ...)のことです。'J' の右肩に乗った自然数の値 n が、キューブ Jn の次元です。

  • dim(Jn) = n

特に、n = 0 のケース J0 = {0} に関しては:

  • dim(J0) = 0

0次元のキューブとは一点だけの図形で、集合としては単元集合〈singleton set〉です。0次元キューブは、1次元キューブである単位区間とも違うし、空集合でもありません

でも、どうしても空集合であるような気がしてしまう人がいるようです。なぜでしょう? 僕の推測でしかないのですが:

  • 「0次元」という言葉に含まれる「0」から「何もないことだ」と連想し、何もないなら空集合に違いないと思いこむ。

と、そんなことかな? -- そうじゃないかも知れませんが、いずれにしても、「空集合である」合理的な根拠はなく、連想・感情・思い込みが働いているのでしょう。

直積と次元に関する次の公式は、たぶん納得できるでしょう。

  • Jn × Jm \cong Jn + m
  • dim(Jn × Jm) = dim(Jn) + dim(Jm)

「キューブの積の次元は、ふたつのキューブの次元の和」で与えられます。これは、n = 0 でも成立します。

  • J0 × Jm \cong J0 + m = Jm
  • dim(J0 × Jm) = dim(J0) + dim(Jm) = 0 + m = m

もし、(0次元のキューブ) = J0 = \emptyset とするならば、

  • J0 × Jm = \emptyset × Jm = \emptyset
  • dim(J0 × Jm) = dim(\emptyset) = 0
  • m > 0 ならば、dim(J0 × Jm) ≠ dim(J0) + dim(Jm)

となり、辻褄が合わず嬉しくありません。

さて、ここでひとつ約束を導入します。0次元キューブの唯一の要素を星印〈アスタリスク〉で書くことにします。

  • J0 = {*}

もちろん、J0 = {0} でもかまわないのですが、「0」を見ると「実数のゼロ」と条件反射が働いてしまい、“0次元性”を強く印象付けることができません。また一方、「0」から「何もないのだから‥‥」と連想されるのも困ります。印象や雰囲気や連想で正しい判断・理解が邪魔される可能性があるので星印を採用します。

格子点

ユークリッド空間 Rn の点で、座標(タプルの成分)がすべて整数である点を格子点〈lattice point〉と呼びます。(3, -1) は2次元の格子点ですが、(3/2, 5) は(今の定義からは)格子点ではありません。

説明の都合上、格子点概念を少し拡張しておきます。正実数達のタプル ε = (ε1, ..., εn) を決めて、第i座標がεiの整数倍である点をε-格子点〈ε-lattice point〉と呼ぶことにします。(3/2, 5) は、2次元の(1/2, 1)-格子点になります。ここから先では、適当なεに対するε-格子点を考えるので、単に「格子点」と言ってもそれはε-格子点のことだとします(言葉づかいのローカルな約束)。

まず、1次元キューブ=単位閉区間内に格子点を取ることを考えましょう。ε = ε1 = 1/4 とすると、0/4, 1/4, 2/4, 3/4, 4/4 の5個の1/4-格子点が取れます。0/4 = 0 と 4/4 = 1 は閉区間の両端、つまり境界の点です。ここでは、境界の点は考えずに、内部にある格子点だけ考えます。すると、1/4, 2/4, 3/4 の3個の格子点になります。

自然数の部分集合 [n] = {1, 2, ..., n} は、1次元キューブ内の内部格子点達へと埋め込むことができます。

  • {1, 2} → {1/3, 2/3} ⊆J1
  • {1, 2, 3} → {1/4, 2/4, 3/4} ⊆J1
  • {1, 2, 3, 4} → {1/5, 2/5, 3/5, 4/5} ⊆J1

単元集合と空集合も同様に埋め込めます。

  • {} → {} ⊆J1
  • {1} → {1/2} ⊆J1

ここでまた、空集合から任意の集合への写像が唯一あることに注意してください。

1次元の場合が分かれば、n次元キューブJnの内部格子点がどんなものかもわかるでしょう。例えば、J2内に (1/3, 1/4)-格子点で内部のもの(境界上の格子点は除外)は:

  • {(1/3, 1/4), (1/3, 2/4), (1/3, 3/4), (2/3, 1/4), (2/3, 2/4), (2/3, 3/4)}

6個の(1/3, 1/4)-格子点からなる集合です。これらの格子点は、自然数のペアの集合 {1, 2}×{1, 2, 3} = {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3)} と1:1対応します。そればかりではなくて、[k]×[ℓ] = {1, ..., k}×{1, ..., ℓ} の形の集合をJ2の内部格子点達へと埋め込めます。例えば:

  • {1}×{1, 2} → {(1/2, 1/3), (1/2, 2/3)} ⊆J2
  • {1, 2}×{1, 2} → {(1/3, 1/3), (1/3, 2/3), (2/3, 1/3), (2/3, 2/3)} ⊆J2

実を言えば、単位閉区間に制限しなければ、分数を使う必要もなかったのですが、まーいいでしょう。[k1]× ... ×[kn] = {1, ..., k1}× ... ×{1, ..., kn} の形の集合をJnの内部格子点達へと埋め込める(単射写像が作れる)ことも類推できるでしょう。

0次元キューブ内の内部格子点

0次元キューブ J0 = {*} の唯一の点*は格子点でしょうか? *は格子点です。天下りに「格子点だと思え」でもいいのですが、空集合や単元集合が現れた場合の(ちょっとわかりにくい)推論があるので、紹介しておきます。この節の議論がわかりにくい、あるいは受け入れがたい方は、天下りを受け入れてください。

最初に次の約束〈定義〉を出しました。

  • 座標(タプルの成分)がすべて整数である点を格子点と呼ぶ。

この最初の定義に照らし合わせて、*が格子点かどかを見てみましょう。格子点の定義を論理式で書けば:

  • x∈Rn が格子点 :⇔ ∀i∈{1, ..., n}.(xiZ)

n = 0 の場合の定義は次のようになります。

  • x∈R0 が格子点 :⇔ ∀i∈{}.(xiZ)

定義の右辺 ∀i∈{}.(xiZ) は次のように書いても同じです。

  • ∀i.(i∈{} ⇒ xiZ)

i∈{} は問答無用に偽なので、

  • ∀i.(False ⇒ xiZ)

古典論理における含意〈ならば〉の扱いは、前件(⇒の左側)が偽ならば真になるので、

  • ∀i.(True)

となり、定義の右辺は真です。

  • x∈R0 が格子点 :⇔ True

R0に含まれる点はいかなる点も(実際は一個しかないが)格子点です。格子点の定義をε-格子点にしたところで、やはりいかなる点もε-格子点です。

J0 = R0 であり、唯一の点が*だったので、*(0と呼んでもいいが)は格子点です。

さて、格子点である*は、(境界ではなくて)内部の格子点でしょうか? *は位相的に考えて内点(内部の点)なので内部の格子点です。* = 0 を内部の点と思えないのは、無意識に * = 0 をRに埋め込んで考えているからでしょう。それを言うなら、RR2に埋め込んだときも、部分集合としてのRは内部の点を持ちません。J0 = R0 をどこにも埋め込まずにそれ自体として考えれば、唯一の点 * = 0 は内部の点なのです。

以上から、0次元のキューブ J0 は唯一つの内部格子点を持つことが分かりました。

離散キューブ

僕がこんな話をしているのは、離散キューブという概念を導入するためです。今詳しく説明する気はないですが、ユークリッド空間 Rn の領域上で起こる現象を、離散有限な格子点上の計算で近似しよう、といった意図があります。ユークリッド空間 Rn の領域が連続キューブ(区間の直積)の形をしているなら、適当なサイズの碁盤目に刻んで近似すりゃいいじゃん、という発想です。

離散キューブは、自然数のリスト (k1, ..., kn) に対して、

  • {1, ..., k1}× ... ×{1, ..., kn}

という形をした有限集合です。ただそれだけのことです。

nが2以上なら、特に難しいことはないのですが、n = 1 または n = 0 のとき、それと、自然数のリスト (k1, ..., kn) に0が入るときに混乱をきたします。かといって、これら特別な場合を無視できないし、そもそも特別な場合をモヤモヤ曖昧にしておく態度が好ましくないですね。

まず、自然数のリスト (k1, ..., kn) に0が入る場合、例えば (2, 0, 3) を考えると、対応する離散キューブは、

  • {1, 2}×{}×{1, 2, 3} = {}

つまり、「リストに1個でも0が入っていればキューブは空集合」になります。このことを了解していれば、自然数のリストに0を入れても悪くはないですが、実用的な意味がないので、便宜的な取り決めとして「自然数のリストに0は入れなことにしよう」と約束しましょう。

長さ1の自然数のリスト (k) は単一の自然数と同じことですが、対応する離散キューブは次のようになります。

  • リスト (3) に対応する離散キューブは {1, 2, 3}
  • リスト (2) に対応する離散キューブは {1, 2}
  • リスト (1) に対応する離散キューブは {1}
  • リスト (0) に対応する離散キューブは {} これは考えないことにしようと約束した

ここらで、「単なる自然数の集合を「キューブ」と呼ぶのは変な感じだ」とか思う人がいるかも知れません。「感じ」なんてどうでもいいのです。そう定義したのだから「(離散的1次元の)キューブ」です。

長さ0の自然数のリスト () に対応する離散キューブは、0次元キューブ J0 の格子点の集合です。J0 の格子点は唯一つあり、それは * ですから:

  • リスト () に対応する離散キューブは {*}

空集合の次元

空集合 \emptyset の次元 dim(\emptyset) はどう考えたらいいでしょうか? 幾つかの案があります。

1. 空集合の次元は考えないことにする。
2. 空集合の次元は -1 とする。
3. 空集合の次元は -∞ とする。
4. 空集合の次元は不定として、各次元ごとに空集合があるとする。

考えないことにするのは消極的な対応ですが、考える必要性がないなら、それでもいいでしょう。

空集合の次元は -1

dim(\emptyset) = -1 は、一点の次元が 0 なんだから、それよりひとつ小さい -1 がいいだろう、という発想です。ベクトル空間の場合、ゼロ空間でも空ではありませんが、アフィン空間なら空空間〈くう・くうかん〉が出現します。

n次元アフィン空間の表現の方法としして次があります。

  • n次元アフィン空間は、Rn+1の部分集合 {x∈Rn | xn+1 = 1} により表現できる。

n = 0 とすれば:

  • 0次元アフィン空間は、R1の部分集合 {x∈R1 | x1 = 1} により表現できる。

つまり、0次元アフィン空間は {1} で表現できます。

n = -1 とすれば:

  • (-1)次元アフィン空間は、R0の部分集合 {x∈R0 | x0 = 1} により表現できる。

R0 = {0} であり、x0 は {0} → R, {0}∋0 \mapsto 0∈R と埋め込む写像とみなせるので、部分集合は空となり、(-1)次元アフィン空間は空空間=空集合で辻褄が合います。

空集合の次元は -∞

次元に関する次の公式がありました。

  • dim(Jn×Jm) = dim(Jn) + dim(Jm)

この公式を、空集合が入っても成立させたいなら、次の等式を考えることになります。

  • dim(\emptyset×Jm) = dim(\emptyset) = dim(\emptyset) + dim(Jm)

dim(\emptyset) = e として方程式と考えると:

  • e = e + m (任意の自然数 m に対して)

このような整数 e はないので、無理矢理に e = -∞ とします。そして、-∞ に関しては、

  • -∞ = -∞ + m (任意の自然数 m に対して)

が成立するとすれば辻褄が合います。

dim(\emptyset) = ∞ で、∞ = ∞ + m としてもかまいません。-∞ としたのは、集合としてのサイズの大小と次元の大小を合わせただけで、強い必然性はありません。

空集合の次元は不定

離散キューブの話で、自然数のリスト k = (k1, ..., kn) に対応するキューブを cube(k) とすると、次の公式が成立します

  • dim(cube(k)) = length(k)

特に、

  • dim(cube(​())) = length(​()) = 0

です。

この公式は、自然数のリストに0が入ってないことを仮定しています。もし、リストに0も許すと次のようなことになります。

  • dim(cube(​(0))) = lenght(​(0)) = 1
  • dim(cube(​(5, 0, 3))) = lenght(​(5, 0, 3)) = 3
  • dim(cube(​(0, 7, 2, 3, 0))) = lenght(​(0, 7, 2, 3, 0)) = 5

つまり、空集合の次元はどんな数にもなれて、不定になります。

であるならば、各次元ごとに空集合があるとすればいいでしょう。k次元の空集合\emptysetk とすれば:

  • dim(cube(​(0))) = dim(\emptyset1) = lenght(​(0)) = 1
  • dim(cube(​(5, 0, 3))) = dim(\emptyset3) = lenght(​(5, 0, 3)) = 3
  • dim(cube(​(0, 7, 2, 3, 0))) = \emptyset5 = lenght(​(0, 7, 2, 3, 0)) = 5

これはこれで辻褄が合います。

空集合の次元はいくつか?」という問に、真実の解答が唯一つあるわけではなくて、状況と目的に応じて、矛盾は起きないように注意しながら、都合がいいように決めればいいだけです。

*1:このテの次元をハメル次元と呼ぶようです。

*2:ベクトル空間とその台集合をどちらも'V'で表す悪習を使います。

*3:スカラー体はRとしているので、スカラー倍は実数倍のことです。

*4:「ゼロ元」は、可換群や可換モノイドにおける役割の名前です。単位元と同義ですが、可換の前提のもとで使う言葉です。さらに、ベクトル空間の文脈におけるゼロ元がゼロベクトルです。

*5:∃z∈V.∀a∈V. a + z = z + a = a

*6:0 + 0 = 0, スカラーrに対して r0 = 0 と定義します。

*7:文字'O'を導入したのは、{0}は単なる集合でベクトル空間ではないからです。ベクトル空間Oは、台集合{0}の上に、足し算とスクラー倍を載せた“構造”です。ただし、しばしばベクトル空間とその台集合は意図的に混同・同一視されます。

*8:ほんとは O = {0} ではありません。Oはベクトル空間の構造を持ち、{0}は単なる集合ですから。でも、この(不正確な)書き方が普通です。

*9:必要に応じて、足し算や掛け算などの演算や大小順序なども考えます。

*10:集合AとBが同型〈isomorphic〉だとは、そらの集合のあいだに1:1対応〈全単射写像〉があることです。実際の全単射写像を自分で確認しましょう。自明に思えるかも知れませんが。

モナド達の上のモナド: ストリート・モナド

モナド達が作る圏(実際は2-圏)の上に、とあるモナドが載っています。ストリート・モナド〈Street monad〉っていうモナドです。ストリート・モナドは我々が普段扱っているモナド達より上のレベルに居るモナドの典型例ですね。ストリート随伴系〈Street adjunction〉から得られるモナドです。

内容:

モナドに関する過去記事

昨日〈2021-03-04〉「モナドの分解の比較定理」という記事を書きました。たまに、モナド・マイブームが来て、そのたびに幾つか記事を書きます。ここ4年くらいの記事を挙げます。日付が分かるように、生のURLを載せます。

  1. https://m-hiyama.hatenablog.com/entry/20170111/1484122584
    モナド論をヒントに圏論をする(弱2-圏の割と詳しい説明付き)
  2. https://m-hiyama.hatenablog.com/entry/20180907/1536287438
    モナドはモノイドだが、モノイドじゃない
  3. https://m-hiyama.hatenablog.com/entry/20181226/1545810581
    最近のモナド論の概観と注意事項 1/2
  4. https://m-hiyama.hatenablog.com/entry/20190108/1546939110
    最近のモナド論の概観と注意事項 2/2
  5. https://m-hiyama.hatenablog.com/entry/20190115/1547518853
    リストモナドとテンソル空間モナドのあいだの準同型射
  6. https://m-hiyama.hatenablog.com/entry/20190116/1547632114
    ベックの分配法則の事例と計算法
  7. https://m-hiyama.hatenablog.com/entry/2019/01/29/090423
    さまざまなモナド類似物とベックの分配法則
  8. https://m-hiyama.hatenablog.com/entry/2019/01/30/100636
    複合モナドから花輪積へ
  9. https://m-hiyama.hatenablog.com/entry/2019/01/31/085401
    花輪?
  10. https://m-hiyama.hatenablog.com/entry/2019/02/08/152309
    随伴系の圏の多様性
  11. https://m-hiyama.hatenablog.com/entry/2019/02/12/120707
    随伴系の二重圏
  12. https://m-hiyama.hatenablog.com/entry/2019/11/13/123505
    モナドの自由代数
  13. https://m-hiyama.hatenablog.com/entry/2020/01/28/171033
    モナド、双圏、変換手
  14. https://m-hiyama.hatenablog.com/entry/2020/01/29/170558
    モナド、双圏、変換手」への補遺
  15. https://m-hiyama.hatenablog.com/entry/2021/03/04/181132
    モナドの分解の比較定理

なんとなくモナド・マイブームが来ることもありますが、モナドを使おうとして「ダメだ、モナド力が足りてない」と思って蒸し返すこともあります。今回は「モナド力不足」の理由で、またモナドをいじっています。

随伴系とストリート・モナド

バヴロヴィック/ヒューズの次の論文があります。

形容詞の nuclear は随伴系が持つ性質で、随伴系を構成する圏のひとつが決まると相方が自動的に決まるようなものです。一方、与えられた随伴系の nucleus とは、随伴系から一定の手順で取り出される随伴系で、それは nuclear な随伴系になっています。

kernel とかぶらないように、nuclear を核型(形容詞)、nucleus核心(名詞)と訳すことにします。

核型随伴系は、古くから研究されていたようですが、これといって名前がなかったそうです。バヴロヴィック/ヒューズ論文の主要な結果は; 核型随伴系がなす圏 Nuc が、ストリート・モナド \stackrel{\leftarrow}{\mathfrak{E}},\:\stackrel{\leftarrow}{\mathfrak{M}} (ストリート・モナドは2つあります)のアイレンベルク/ムーア圏と圏同値になる、ということです。

「ふーん、そうなんだ」とは思いますが、モナド力不足でよくわかんないです。

バヴロヴィック/ヒューズの記法

昨日の記事から引用:

随伴系の書き方は毎度悩むのですが(「随伴系の書き方」「随伴に関する注意事項」参照)、以下の図の状況を (F -| G, η, ε)/(C, D) と書くことにします。

[...省略...]

バヴロヴィック/ヒューズが随伴系をどう書いているかというと:

\quad F = (F^\ast \dashv F_\ast:\mathbb{B} \to \mathbb{A})

圏(厳密2圏CatまたはCATの対象)を表すのに黒板文字(白抜きの太字)を使っています。これは僕は使わないな。別にどっちでもいいけど。

随伴系全体を一文字'F'で表して、左関手を上付きスター、右関手を下付きスターで表しています。随伴系の単位/余単位は明示されてませんが、必要に応じてギリシャ文字 η, ε で表します。

問題は(人によりバラバラで毎度確認しなきゃならない点は)プロファイル \mathbb{B} \to \mathbb{A} が何を表しているかです。バヴロヴィック/ヒューズでは、右関手のプロファイルです。たぶん、 F_\ast:\mathbb{B} \to \mathbb{A} の部分を読んで辻褄があうように決めたのでしょう。でも、アルファベット順がひっくり返っているのは、 F^\ast:\mathbb{A} \to \mathbb{B} を考える場合のほうが多いからでしょう、たぶん。

随伴系 F から誘導されたモナド\stackrel{\leftarrow}{F} と書きます。誘導されたコモナド\stackrel{\rightarrow}{F} です。矢印の向きに関する事情は分かりませんが(事情なんてないかも)、そう約束されています。

モナド \stackrel{\leftarrow}{F}アイレンベルク/ムーア圏は \mathbb{A}^{\stackrel{\leftarrow}{F}} 、コモナド \stackrel{\rightarrow}{F}アイレンベルク/ムーア圏(余代数の圏)は \mathbb{B}^{\stackrel{\rightarrow}{F}} です。

アイレンベルク/ムーア圏を表すために、モナドを上付きにする記法はまーまー使われてますね。となると、クライスリ圏(と余クライスリ圏)は下付きで \mathbb{A}_{\stackrel{\leftarrow}{F}},\; \mathbb{B}_{\stackrel{\rightarrow}{F}} だと思いますが、パッと見たところでは出てきてないです。使わないのかな?

短い記法を使って記述を簡潔にしようとしています。確かに、この短い記法は便利そうです。

様々な関手も2文字からなる短い名前なんですが、少し長めの名前も付けておきます。

関手 短い名前 長めの名前
モナドアイレンベルク/ムーア分解 EM MndEM
モナドアイレンベルク/ムーア分解 EC CmndEM
モナドのクライスリ分解 KM MndKl
モナドのクライスリ分解 KC CmndKl
随伴系からのモナドの構成 AM AdjToMnd
随伴系からのコモナドの構成 AC AdjToCmnd

2文字名前のネーミングルールは:

  • 最初の一文字: アイレンベルク/ムーア分解 E、クライスリ分解 K、随伴系からの構成 A 。
  • 二番目の文字: モナドに関して M、コモナドに関して C 。

ストリート随伴とストリート・モナド/コモナド

ストリート随伴は2つあって、アイレンベルク/ムーア型ストリート随伴〈Eilenberg-Moore style Street adjunction〉 \mathfrak{E}クライスリ型ストリート随伴〈Kleisli style Street adjunction〉 \mathfrak{M} です。それぞれ、ドイツ文字で 'E' と 'M' です。


\mathfrak{E} = (\mathfrak{E}^\ast \dashv \mathfrak{E}_\ast: {\bf Mnd} \to {\bf Cmn})\\
\mathfrak{M} = (\mathfrak{M}^\ast \dashv \mathfrak{M}_\ast: {\bf Cmn} \to {\bf Mnd})

Mndモナドの圏、Cmn はコモナドの圏です。これらは2-圏になりますが、バヴロヴィック/ヒューズは2-射〈2-セル〉を可逆なものに限っていて、射のあいだに同値関係が入った圏のように扱えます。一般的な2-圏だと煩雑になるので、この単純化はよいんじゃないでしょうか。

2つのストリート随伴を図にすると次のようです。


\xymatrix{
 *{\bf Mnd} \ar@{}[dd]|{\dashv} \ar@/^10pt/[dd]^{\mathfrak{E}_\ast}
 & {} 
 & *{\bf Mnd} \ar@{}[dd]|{\dashv}  \ar@/_10pt/[dd]_{\mathfrak{M}^\ast}
\\
 {} & {} &
\\
 *{\bf Cmn} \ar@/^10pt/[uu]^{\mathfrak{E}^\ast}
 & {}
 & *{\bf Cmn} \ar@/_10pt/[uu]_{\mathfrak{M}_\ast}
}

これらのストリート随伴をどう定義するかというと、左右の関手については次のようです。

  1. \mathfrak{E}^\ast := CmndKl;AdjToMnd
  2. \mathfrak{E}_\ast := MndEM;AdjToCmnd
  3. \mathfrak{M}^\ast := MndKl;AdjToCmnd
  4. \mathfrak{M}_\ast := CmndEM;AdjToMnd

随伴の単位/余単位とニョロニョロ関係式も必要ですけどね。

2つのストリート随伴から、4つのモナド/コモナドが構成できます。

  1. モナド \stackrel{\rightarrow}{\mathfrak{E}}/{\bf Mnd}
  2. モナド \stackrel{\leftarrow}{\mathfrak{E}}/{\bf Cmn}
  3. モナド \stackrel{\leftarrow}{\mathfrak{M}}/{\bf Mnd}
  4. モナド \stackrel{\rightarrow}{\mathfrak{M}}/{\bf Cmn}

これらがストリート・モナド/コモナドですが、代表をひとつ選ぶなら、モナド達の圏 {\bf Mnd} 上のモナドである \stackrel{\leftarrow}{\mathfrak{M}}/{\bf Mnd} でしょう。

おわりに

核型随伴系とストリート・モナドに関しては「モナド力不足でよくわかんない」状態なので、今日はこれだけです。バヴロヴィック/ヒューズ論文には色々な具体例が載っているので、具体例を調べてみます。

バヴロヴィック/ヒューズは具象的な随伴とモナドを相手にしているので、これを随伴/モナドの形式論〈formal theory of adjunctions/monads〉で議論したらどうなんだろう? とか疑問も湧きますが、ちょっと見当付きません。

モナドの分解の比較定理

随伴系〈adjunction | adjoint system〉があるとモナドを作れます。逆に、モナドを随伴系に分解〈resolution〉して調べたいことがあります。となると、ある特定のモナドに対して、随伴系への分解はどのくらいあるのだろう? と知りたくなるのが人情です。

モナドの随伴系への分解の全体は圏をなすので、その圏の構造を知りたい、ってことですね。これに関しては、ベック〈Jon Beck〉達による結果がありますが、名前がないみたいなので*1、とりあえず「モナドの分解の比較定理」と呼んでおきます。

モナドの分解の比較定理を大雑把に述べます。僕は、この比較定理が重要であることは知ってますが、よくわかってないです。最近(昨日だけど)使いたい気がしたので、わかる部分だけ書きます。\newcommand{\cat}[1]{\mathcal{#1}}\newcommand{\For}{\mbox{For }}\newcommand{\hyp}{\mbox{-}}\newcommand{\In}{\mbox{ in }}

内容:

モナドの随伴系への分解

T = (T, μ, η)/C (記号の乱用)をC上のモナドだとします。T = T/C という略記〈乱用〉も使うことにします。

随伴系の書き方は毎度悩むのですが(「随伴系の書き方」「随伴に関する注意事項」参照)、以下の図の状況を (F -| G, η, ε)/(C, D) と書くことにします。

ドット&アロー図+随伴記号:

\xymatrix{
 *{\cat{C}}  \ar@/^10pt/[rr]^{F}
 & *{\bot}
 & *{\cat{D}} \ar@/^10pt/[ll]^{G}
\\
}

ストリング図(のつもり):

\xymatrix{
 {\cat{C}}
 & *++[o][F]{\eta} \ar[dr]^{G} \ar[dl]_{F}
 & {\cat{C}} 
 & {} \ar[dl]^{F}
\\
 {} 
 & {\cat{D}}      
 & *++[o][F]{\varepsilon} 
 & {\cat{D}}
}

典型的事例は、F:CD in CAT が自由生成関手、G:DC in CAT が忘却関手のときです。

モナド T/C が、随伴系 (F -| G, η, ε)/(C, D) から得られるとき、逆に考えて、モナド T/C は随伴系 (F -| G, η, ε)/(C, D) に分解される、あるいは随伴系への分解〈adjunction resolution〉であると呼びます。

モナド T/C を固定したとき、Tの随伴系への分解の全体を Resol(T) = Resol(T/C) とします。Resol(T/C) がどんな圏かと言うと:

  • Resol(T/C) の対象は、Tの分解である随伴系 (F -| G, η, ε)/(C, D) 。
  • (F -| G, η, ε)/(C, D) と (F' -| G', η', ε')/(C, D') が2つの“Tの分解”だとして、そのあいだの射は、関手 H:DD' in CAT であって、以下の図式を部分的に可換にする(下側の等式が成立する)もの。


\xymatrix{
  *{\cat{D}} \ar[rr]^{H} \ar@/^/[ddr]^{G}
  &  {}  
  & *{\cat{D'}}  \ar@/_/[ddl]_{G'}
\\
  & &
\\
  {}   
  & *{\cat{C}} \ar@{}[uul]|{\dashv} \ar@{}[uur]|{\vdash} \ar@/^/[uul]^{F} \ar@/_/[uur]_{F'}
  &
} \\
F;H = F' \\
H;G' = G

要求される等式を、関手のプレ結合引き戻しとポスト結合前送りで書けば次のようです。


G = H^\ast(G) \\
F' = H_\ast(F)

圏 Resol(T/C) が空ではないことは、Tのクライスリ圏 Kl(T) と IdKl(T):Kl(T) → Kl(T) in CAT があることから分かります。が、もう少し詳しい情報が知りたいわけです。

クライスリ圏とアイレンベルク/ムーア圏

モナドTの随伴系への分解として、クライスリ圏とアイレンベルク/ムーア圏があります。

クライスリ圏による分解:

\xymatrix{
 *{\cat{C}} \ar@/^10pt/[rr]^{J_{T}} \ar@{}[rr]|{\bot}
 & {}  
 &*!<-1em,0em>{Kl(T)} \ar@/^10pt/[ll]^{KEx_T}
}

アイレンベルク/ムーア圏による分解:

\xymatrix{
 *{\cat{C}} \ar@/^10pt/[rr]^{Free_{T}} \ar@{}[rr]|{\bot}
 & {}  
 &*!<-1em,0em>{EM(T)} \ar@/^10pt/[ll]^{U_T}
}

分解を構成している随伴系の関手対は次のものです。

  • クライスリ圏による分解の左関手 JTモナドの基礎圏Cを、対象上では恒等〈identity-on-objects〉でクライスリ圏に埋め込む関手
  • クライスリ圏による分解の右関手 KExT: クライスリ射をC内でクライスリ拡張する関手
  • アイレンベルク/ムーア圏による分解の左関手 FreeTモナドの自由アイレンベルク/ムーア代数を作る自由生成関手
  • アイレンベルク/ムーア圏による分解の右関手 UTモナドアイレンベルク/ムーア代数の台対象を対応させる忘却関手

クライスリ圏による分解(以下、クライスリ分解〈Kleisli resolution〉とアイレンベルク/ムーア圏による分解(以下、アイレンベルク/ムーア分解〈Eilenberg-Moore resolution〉)は、何か特殊な地位を占めている印象がありますが、モナドTの分解の圏 Resol(T) のなかで、ぞれぞれ始対象、終対象になっています。実を言うと、僕は詳細を詰めてないので実感が湧かないですが、まー、ほんとの事でしょう。

雰囲気的に言えば、クライスリ分解が一番小さな分解で、アイレンベルク/ムーア分解が一番大きな分解ということになります。

比較関手ペア

クライスリ分解が最小の分解、アイレンベルク/ムーア分解が最大の分解だとすれば、どんな分解でもクライスリ分解とアイレンベルク/ムーア分解のあいだに入るわけです。このことをもっとハッキリと言うと、次のような関手 L, K があることです。関手の随伴対を両矢印で略記します。


\xymatrix{
  *{Kl(T)} \ar[r]^{L}
  & {\cat{D}} \ar[r]^{K}
  & {EM(T)}
\\
  {}
  & {\cat{C}} \ar@{<->}[ul]|{\dashv} \ar@{<->}[ur]|{\dashv} \ar@{<->}[u]|{\dashv}
  & {}
}

上の図に現れる、分解のあいだの射(圏 Resol(T) の射) L, K を比較関手〈comparison functor〉と呼びます。単なる関手ではなくて、Resol(T) の射ですけどね。Resol(T) の射を“比較関手”と呼ぶのだ思えばいいでしょう。

比較関手 L は、当該の分解がクライスリ分解よりどのくらい“大きいか”を表し、比較関手 K は、当該の分解がアイレンベルク/ムーア分解よりどのくらい“小さいか”を表しています。なので、L を下側比較関手〈lower comparison functor〉、K を上側比較関手〈upper comparison funcor〉*2、ペア (L, K) を比較関手ペア〈comparison functor pair〉と呼ぶことにします。

モナド T/C の分解(である随伴系)(F -| G, η, ε)/(C, D) が与えられたとき、下側比較関手 L 、上側比較関手 K が具体的にどう定義されるかを次節で述べます。

比較関手の構成

モナド T = T/C の分解 (F -| G, η, ε)/(C, D) に対する下側比較関手 L は、分解の圏 Resol(T) の始射(始対象からの唯一の射)ということになります。L:Kl(T) → D in CAT を具体的に与えましょう。

  • For X∈|Kl(T)|, L(X) := F(X) in D
  • For f:X → T(Y) in C
    L(f) := F(f);εF(X) in D

ここで、T = F*G = G・F ('*', '・' は図式順と反図式順の結合記号)を使っています。二番目の、射に対する定義は、完全に図式順で書いたほうが分かりやすいでしょう('.' は図式順の適用記号)。ストリング図が一番分かりやすいので描いてみてください。

  • f.L := f.F ; (Y.F).ε : X.F → Y.F in D

L はホムセットごとに全単射〈双射〉になります。g:F(X) → F(Y) に対して、次の射(を対応させる写像)がホムセットごとの逆写像を与えます。

  • ηF(X);T(g)

(f \mapsto F(f);εF(X)) と (g \mapsto ηF(X);T(g)) が互いに逆であることは、随伴系のニョロニョロ等式〈snake {equation | relation}〉から分かります。

次に、上側比較関手 K:D → EM(T) を構成しましょう。上側比較関手は、圏 Resol(T) における終射(終対象への唯一の射)と言ってもいい(はず)です。

EM(T) の対象はアイレンベルク/ムーア代数なので、それを A = (A, αA) in EM(T) と書くことにします。代数構造とその台対象(Cの対象)は区別します。ここで区別しない(記号の乱用をする)とワケワカランことになります

K:D → EM(T) in CAT の具体的な定義は:

  • For X∈|D|, K(X) := (G(X), G(εX)) in EM(T)
  • For f:X → Y in D
    K(f) := G(f) : G(X) → G(Y) in C

このままだと、Kの射パートが in EM(T) とはなってません。G(f) in EM(T) と言えるためには、G(f):G(X) → G(Y) in Cアイレンベルク/ムーア代数 K(X) から K(Y) への代数射(アイレンベルク/ムーア圏の射)であることを示す必要があります。その示すべき条件は次の可換図式です。

\require{AMScd}
\begin{CD}
T(G(X)) @>{T(G(X))}>> T(G(Y)) \\
@V{\alpha_{G(X)}}VV   @VV{\alpha_{G(Y)}}V \\
G(X)    @>{G(f)}>>    G(Y)
\end{CD}\\
\mbox{commutative in }\cat{C}

関手 K の定義から、アイレンベルク/ムーア代数の代数演算は随伴の余単位 ε を使って書けるのでした。

  • \alpha_{G(X)} = G(\varepsilon_X)
  • \alpha_{G(Y)} = G(\varepsilon_Y)

この状況を使えば、G(f) : (G(X), αG(X) → (G(Y), αG(Y) in EM(T) が言えるので、K は確かに D → EM(T) in CAT だと分かります(ストリング図で計算しましょう)。

モナドの分解の比較定理

前節で状況設定〈セットアップ〉ができました。モナドの分解の比較定理が何を主張しているかと言うと、次のようなことです。

  1. 任意のTの分解に対して、下側比較関手 L は一意的に決まる。
  2. 任意のTの分解に対して、上側比較関手 K は一意的に決まる。
  3. 下側比較関手 L は充満忠実関手である。
  4. Dが、反射的ペア〈反映的ペア | reflexive pair〉の余等値核〈coequaliser〉を持つなら、上側比較関手 K は左随伴関手(随伴系の左関手)を持つ。

「よくわかってない」「実感が湧かない」と言ったのは、上記の主張をちゃんと確認してないからです。

比較定理の延長線に、ベックのモナド性定理〈Beck's monadicity theorem〉があります。これは、上側比較関手 K:D → EM(T) がどんなときに圏同値になるかを述べたものです。別な言い方をすると、分解に現れた圏 D の対象をアイレンベルク/ムーア代数だと思ってよい条件を与えていることになります。

比較定理もモナド性定理も、モナドを扱う上での基本定理なんですが、昨日まで必要性をしみじみと感じることもなかったので「よくわかってない」「実感が湧かない」のです -- しばらく、モナドの随伴系への分解をいじってみることにします。

*1:よく調べれば呼び名があるかも知れません。よく調べてないです。「比較定理」で通じる気もします。

*2:upper から 'U' とすると、忘却関手を 'U' と書く習慣とバッティングします。

ニューラルネット形状を実現する関手としりとりの圏

最急降下法機械学習の圏 // 使えるのか?」で言及した、単一ニューラルネットの形状の圏 SNNS (the category of Single Neural Network Shapes)からパラメータ付き関数の圏 Para(AES) への実現関手〈実装関手〉について説明します。

何はともあれ、しりとりの圏が実用的な例で出てきた事が嬉しい。\newcommand{\cat}[1]{\mathcal{#1}}\newcommand{\For}{\mbox{For }}\newcommand{\Iff}{\Leftrightarrow}\newcommand{\In}{\mbox{ in }}

内容:

ユークリッド空間の圏

ユークリッド空間〈almost Euclidean space〉については次の記事を参照してください。

ユークリッド空間のあいだの射は、1回〈階〉連続微分可能写像だと定義*1すると、概ユークリッド空間の圏AESが決まります。

今回使う概ユークリッド空間は、普通のユークリッド空間 Rn と、ユークリッド空間のあいだのアフィン線形写像の空間 AL(Rn, Rm) だけです。アフィン線形写像 f:RnRm は次の形で書けます。


f(\begin{bmatrix}x_1\\ \vdots\\ x_n\end{bmatrix}) :=\\
\begin{bmatrix}
a_{1\,1} &\cdots& a_{1\,n} \\
\vdots   &\ddots& \vdots\\
a_{m\,1} &\cdots& a_{m\,n}
\end{bmatrix}
\begin{bmatrix}x_1\\ \vdots\\ x_n\end{bmatrix} +
\begin{bmatrix}b_1\\ \vdots\\ b_m\end{bmatrix}

この表示から、次の同型があるのは分かります。

  • AL(Rn, Rm) \cong Rnm + m

同型写像をひとつ具体的に与え固定すると概ユークリッド空間になります。ここでは、行列の第1行を左から右に読んでいき、次には第2行という順序で行列成分を列挙します。行列成分の列挙の後に定数項ベクトル成分を並べることで同型を作ることにします。この大域座標を GAL(Rn, Rm):LA(Rn, Rm) → Rnm + m として、記号の乱用で AL(Rn, Rm) = (AL(Rn, Rm), GAL(Rn, Rm)) とします。

ユークリッド空間の直積はまた概ユークリッド空間になるので、AL(Rn, Rm) × AL(Rk, R) も概ユークリッド空間です。

ニューラル関数の圏

σ:RR in AES に対して σ(n):RnRn は次のように定義します。


\sigma^{(n)}(\begin{bmatrix}x_1\\ \vdots\\ x_n\end{bmatrix}) :=
\begin{bmatrix}\sigma(x_1)\\ \vdots\\ \sigma(x_n)\end{bmatrix}

関数 σ:RR in AES活性化関数〈activation function〉と呼ばれる)をひとつ固定して、概ユークリッド空間の圏の部分圏 NeulσAES を定義します。Neulσ の射はσ-ニューラル関数〈σ-neural function〉と呼ぶことにして、σ-ニューラル関数の全体を帰納的〈inductive〉に定義しましょう。

  1. アフィン線形写像 f:RnRm in AES はσ-ニューラル関数である。特に、恒等写像 idRn:RnRn はニューラル関数である。
  2. n = 1, 2, ... に対して、σ(n):RnRn はσ-ニューラル関数である。
  3. f, g∈Mor(AES) がσ-ニューラル関数で結合可能なとき、それらの結合 f;g もσ-ニューラル関数である。
  4. 以上で定義される関数だけがσ-ニューラル関数である。

Neulσ の対象の集合とホムセットは:

  • Obj(Neulσ) = |Neulσ| = (すべてのユークリッド空間の集合) \cong N
  • Neulσ(Rn, Rm) = (RnRm のニューラル関数の集合)

[補足]
ニューラル関数を定義する条件の二番目を次のように変更しても同じ関数クラスを定義します。

  • アフィン線形写像 f:RnRm, g:RmR に対して、f;σ(n);g:RnR はσ-ニューラル関数である。

[/補足]

σをアフィン線形関数(1次関数)に選んでしまうと、σ-ニューラル関数はアフィン線形関数のことになってしまいます。σをうまく選べば、AES(Rn, Rm) の関数を Neulσ(Rn, Rm) のニューラル関数でより良く近似可能になります。さらに、関数空間 Neulσ(Rn, Rm) 全体を使うのではなくて、有限個の実数パラメータで表示できる部分空間だけでも十分良い近似が得られると期待されています。

そして、実際に近似を求めるアルゴリズム(のひとつが)が最急降下法機械学習です。

関数のパラメータ族とパラメータ付き関数

集合圏で、F:P → Map(A, B) in Set があると、反カリー化することにより、f = F :P×A → B in Set が得られます(下付きの'∪'は反カリー化オペレータ記号)。もちろん、f をカリー化すると、もとの F に戻ります。

  • 反カリー化 (-):Set(P, Map(A, B)) → Set(P×A, B) in Set
  • カリー化 (-):Set(P×A, B) → Set(P, Map(A, B)) in Set

集合圏では、F = f と f = F は1:1に対応するので、ときに同一視することもあります。Pをパラメータの集合と考えると、F:P → Map(A, B) in Set は関数のパラメータ族〈parameterized family of functions〉です。一方、f:P×A → B in Set は、入力の一部にパラメータ集合を持つ関数〈function with parameters〉です。後者の関数をパラメータ付き関数〈parameterized function〉とも呼びます。

一般的な圏Cでは、関数のパラメータ族に相当する射は F:P → [A, B] in C になります。ここで、[A, B] は指数対象ですが、指数対象が利用できない圏もあります。パラメータ付き関数 f:P\otimesA → B in C ならモノイド積があれば定義できます。後々の都合を考えて、C対称モノイド圏だとしましょう。

パラメータ付き射 f:P\otimesA → B と g:Q\otimesB → C in C に対して、パラメータ付き射としての結合をして f;;g:(P\otimesQ)\otimesA → C in C を定義できます。(以下に出てくる αQ,P,A はモノイド圏の結合律子です)。

  • f;;g := αQ,P,A;(idQ\otimesf);g in C

次のような対応があります。(以下に出てくる λA はモノイド圏の左単位律子です。)

  • f:P\otimesA → B in C ⇔ f:A → B in Para(C)
  • f;;g:(P\otimesQ)\otimesA → C in C ⇔ f;g:A → C in Para(C)
  • λA:1\otimesA → A in C ⇔ idA:A → A in Para(C)

すぐ上のような対応で、パラメータ付き射の圏 Para(C) が構成できます。ただし、この素朴な構成だけでは若干問題があります。パラメータ対象の同型による同値関係で商をとらないと、ちゃんとした圏にはなってくれません。商をとってもなお、ホムセットが小さい保証はありません。

でもまー、ここではうるさいこと言わないで、Para(C) は出来た、大丈夫だと思いましょう。

特に、圏 Para(AES) の射 f:A → B は、概ユークリッド空間 P をパラメータ空間とする微分可能写像です。気持ちの上では、f:A → B in Para(AES) を関数のパラメータ族 F:P → C1(A, B) in Set と思ってもかまいません(C1(A, B) は、概ユークリッド空間 A から B への1階微分可能写像の集合)。

単一ニューラルネットの形状の圏

単一のニューラルネットの形状を表すデータからなる圏SNNSはしりとりの圏です。

ただし、上記記事で使っているひらがなの集合を自然数の集合 N = {0, 1, 2, ...} に置き換えます。ひらがな文字列は自然数のリストに置き換えます。念の為、圏SNNSの仕様を書いておきます。

  • Obj(SNNS) = |SNNS| = N
  • Mor(SNNS) = List≧1(N) (長さ1以上の自然数のリスト)
  • dom(​(n, ..., m)) = n
  • cod(​(n, ..., m)) = m
  • id(n) = (n) (長さ1のリスト)
  • comp(​(n, ..., m), (m, ..., ℓ)) = (n, ..., m);(m, ..., ℓ) = (n, ..., m, ..., ℓ) (しりとり結合)

(2, 3, 4, 3) とか (3, 3) とかは、圏SNNSの射です。この2つの射は結合可能で、(2, 3, 4, 3);(3, 3) = (2, 3, 4, 3) となります。

リストの長さとしりとり結合のあいだには次の関係があります。

  • length(α;β) = length(α) + length(β) - 1

形状からの実現関手

さて、関手 SIσ:SNNS → Para(AES) を定義しましょう。σ:RR in AES は選んで固定した活性化関数です。

SNNSの射 (n, ..., m) に対する関手 SIσ の値は、SIσ(​(n, ..., m)) と書くべきですが、二重の括弧を省略して SIσ(n, ..., m) と略記します。

まず、SNNSの対象(自然数) n に対してn次元ユークリッド空間を対応させます。

  • For n∈|SNNS|, SIσ(n) := Rn ∈|Para(AES)|

射(自然数のリスト)に対する値ですが、リストの長さが 1, 2, 3 の場合を丁寧に説明します。

リストの長さが 1 の場合

混乱しないように、長さ 1 のリスト (n):n → n in SNNS を idn と書きます。

  • SIσ(idn) := ({0}×Rn∋ (0, x)  \mapsto x ∈Rn) : RnRn in Para(Rn)

要するに、長さ 1 のリストは、パラメータ付き関数の圏の恒等射に対応します。SIσ を関手にしたいので、そりゃそうなります。

リストの長さが 2 の場合

長さ 2 のリスト (n, m):n → m in SNNS に対する関手の値は:

  • SIσ(n, m) := (AL(n, m)×Rn∋ (f, x)  \mapsto f(x) ∈Rm) : RnRm in Para(Rn)

SIσ(n, m) は、評価写像〈evaluation map〉です。パラメータ空間が、概ユークリッド空間としての AL(n, m) で、パラメータ付き関数としてのプロファイルは RnRm です。気持ちの上では、AL(n, m) を AES(Rn, Rm) = C1(Rn, Rm) へ埋め込む写像だと思ってもかまいません。

次のような解釈ができます。

  • SIσ(n, m):RnRm in Para(AES)
  • SIσ(n, m):AL(n, m)×RnRm in AES
  • (SIσ(n, m)):AL(n, m) → AES(Rn, Rm) in Set
  • (SIσ(n, m)):AL(n, m) → Neulσ(Rn, Rm) in SetNeulσ(Rn, Rm) ⊆ AES(Rn, Rm))
リストの長さが 3 の場合

長さ 3 のリスト (n, k, m):n → m in SNNS に対する関手の値は:

  • SIσ(n, k, m) := (AL(n, k)×AL(k, m))×Rn∋ (f, g, x)  \mapsto (f;σ(k);g)(x) ∈Rm) : RnRm in Para(Rn)

今度はパラメータ空間が AL(n, k)×AL(k, m) になります。中間に σ(k) を挟んで2つのアフィン線形写像を結合して、それを x に適用します。

次のような解釈ができます。

  • SIσ(n, k, m):RnRm in Para(AES)
  • SIσ(n, k, m):(AL(n, k)×AL(k, m))×RnRm in AES
  • (SIσ(n, k, m)):AL(n, k)×AL(k, m) → AES(Rn, Rm) in Set
  • (SIσ(n, m)):AL(n, k)×AL(k, m) → Neulσ(Rn, Rm) in SetNeulσ(Rn, Rm) ⊆ AES(Rn, Rm))
リストの長さが 4 以上の場合

長さ 4 以上のリストに対しても同様で、アフィン線形写像と σ(k) を互い違いに結合した関数の適用になります。カリー化すれば、アフィン線形写像の空間の直積をニューラル関数の空間に埋め込んでいることになります。

SIσ が関手であるためには、次の性質が要求されます。

  • SIσ(​(n, ..., m);(m, ..., ℓ)) = SIσ(​(n, ..., m));SIσ(​(m, ..., ℓ)) in Para(AES)
  • SIσ(idn) = idSIσ(n) in Para(AES)

これらは、先に注意した“Para(AES) 構成の微妙な問題”がありますが、定義に従って確認できることです。

おわりに

リスト (n, ..., m) が表しているのはニューラルネットの形状に関する仕様で、n が入力層のニューロン数、m が出力層のニューロン数、あいだの自然数は中間層のニューロン数です。

十数年前に、初めて圏論に触れる人のためのオモチャとして考案したしりとりの圏が、理論上・実際上の意味を持つ圏として再登場して、なかなかに感慨深いものがあります。これからは、「しりとりの圏は単なるオモチャじゃなくて、応用もある実用的な圏なんだぞ」と言えますね(笑)。

*1:1回だけ微分可能としたことに特段の意味はありません。必要に応じた微分可能性を選んでください。

最急降下法機械学習の圏

フォング/スピヴァック/トゥイーラス*1の次の論文が面白そうなので話題にします。\newcommand{\cat}[1]{\mathcal{#1}}\newcommand{\For}{\mbox{For }}\newcommand{\Iff}{\Leftrightarrow}\newcommand{\In}{\mbox{ in }}\newcommand{\CAT}{\bf CAT}\newcommand{\CCAT}{2\mbox{-}\mathbb{CAT}}

  • Title: Backprop as Functor: A compositional perspective on supervised learning
  • Authors: Brendan Fong, David I. Spivak, Rémy Tuyéras
  • Submitted: 28 Nov 2017 (v1), May 2019 (v3)
  • Pages: 13p + 4p(appendix)
  • URL: https://arxiv.org/abs/1711.10455

この論文のサマリーを提供する気はなくて、読むときに注意すべき事項と、一般化したほうが良さそう/変更したほうが良さそうなところについて述べます。大雑把なハナシしかしないので、個別の論点はまた別な記事にするかも知れません。[追記]関連記事を書きました。関連記事は、目次の下にリストすることにします。[/追記]

内容:

関連記事:

何が書いてないか

フォング達の論文を読んでも、テクノロジーとしての最急降下法機械学習の技法はサッパリ分からないです(書いてないから)。具体的詳細はともかくとして、この分野の鳥瞰的景観〈Bird's eye view〉は得られるかも知れません。

確率統計的な議論はまったく出てきません。誤差関数 E が天下りに現れます。誤差関数の定義や合理化に確率統計的な議論が使われますが、それはもう終わっているという前提です。

最急降下法機械学習アルゴリズムを抽象化した概念的実体をGD学習子〈GradientDescent learner〉と呼ぶことにしましょう。フォング達の論文では、GD学習子はLearnと呼ばれる圏の射として実現されます。ただし、Learnの射がすべてGD学習子というわけではありません。とある関手の像となる射がGD学習子です。

GD学習子は、訓練データセットを食わせる〈フィードする〉ことによって学習を実行します。フォング達の論文では、学習の実行については何も書いてありません。単一の学習データ(値のペア)に対するワンステップの更新動作しか問題にしていません。更新動作の繰り返しとしての学習の実行はまだ始まってないという前提です。

前提をまとめると:

  1. 確率統計的な議論は終わっている。だから、書いてない。
  2. 学習の実行は始まってない。だから、書いてない。

フォング達の論文が語っていることは、ニューラルネットの形状(簡単な仕様)とパラメータ付き関数〈parameterized function〉とGD学習子のあいだのマクロな関係性だけです。

「で、何がうれしいの?」と聞かれると、僕はよく分かりません。ひょっとすると、最急降下法機械学習のライブラリ/フレームワークの設計原理になるかも知れません。が、鳥瞰的景観を眺めたときの爽快感が一番の“うれしさ”のような気がします。

ちょっと一般化すれば

フォング達の論文で中心的役割を演じている圏はParaLearnです。圏Paraも圏Learnも、対象は集合だとしています。これは分かりやすさのためだと思います。が、最急降下法微分を使うので、単なる集合の上で最急降下法が定義できるわけではありません。

微分計算ができる空間となると、(可微分構造を備えた)多様体となるでしょう。リーマン計量もあったほうが便利なので、リーマン多様体の圏RieMan*2をベースにするのが良さそうです。

特定の圏 ParaLearn を考えるのではなくて、ベースの圏から新しい圏を作る構成法としての Para, Learn を考えることにしましょう。集合圏Setがベースなら、

  • {\bf Para} := Para({\bf Set})
  • {\bf Learn} := Learn({\bf Set})

リーマン多様体の圏RieManがベースなら、

  •  Para({\bf RieMan})
  •  Learn({\bf RieMan})

という圏達を使って理論を展開できます。

ParaLearn の構成を見ると、ベースの圏はそれぞれ対称モノイド圏〈symmetric monoidal category〉、デカルト・モノイド圏〈Cartesian monoidal category〉なら大丈夫*3なので、Para, Learn は次のような“圏の圏”のあいだの関手になるでしょう*4。(\CCAT は、“圏の圏”の2-圏達からなる3-圏です。)

  • Para: {\bf SymMonCAT} \to {\bf SymMonCAT} \In \CCAT
  • Learn: {\bf CartMonCAT} \to {\bf SymMonCAT} \In \CCAT

ベースの圏をいきなりリーマン多様体の圏にするのは大変だし、とりあえずはその必要もないでしょう。非常に簡単な多様体のクラスとしてユークリッド空間〈almost Euclidean space〉のクラスがあります。概ユークリッド空間は次の記事で定義しています -- ほとんどユークリッド空間と変わらない多様体です。

ユークリッド空間のあいだの射は適当な回数(階数)連続微分可能な写像〈r≧1 な Cr-写像〉です*5。概ユークリッド空間の圏をAESとして、

  •  Para({\bf AES}) \In {\bf SymMonCAT}
  •  Learn({\bf AES}) \In {\bf SymMonCAT}

が、GD学習子を論じるときの適切なセッティングでしょう。

ここは分かりにくい

ユークリッド空間の圏AESをベースに考えることにして、最急降下法機械学習がやっていることは、想定される“真な関数” f:X \to Y \In {\bf AES} を、与えられた訓練データセットをもとに推測することです。推測で得られた関数 g:X \to Y\In {\bf AES}f の近似ですが、近似の良さ(あるいは悪さ)を計るときに誤差関数を使います。

この誤差関数の定義は僕は分からなかったです。しかしこれは、はしょっている部分の議論を僕が知らないだけで、僕の無知のせいです。

それでも、誤差関数を作るモトみたいな関数 e:{\bf R}\times {\bf R} \to {\bf R} より、e を第一変数に関して偏微分した関数 d:{\bf R}\times {\bf R} \to {\bf R} をプライマリにしたほうが分かりやすい気がします。d は2つの実数値の食い違いを求める関数で、距離と幾分似た感じがします。

先に述べたように、パラメータ付き関数〈parametrized function〉や学習子〈learner〉は集合圏でなくても定義できるので、以下、圏のモノイド積を \otimes 、モノイド単位を 1 で表します。

一般の学習子、つまり Learn(C) (Cデカルト・モノイド圏)の射は、3つ組 (I, U, r) で定義されます。

  • (I, U, r):A \to B \In Learn(\cat{C}) 学習子〈learner〉
  • P \In \cat{C} パラメータ空間〈parameter space〉
  • I:P\otimes A \to B \In \cat{C} 実装関数〈implementation {function}?〉
  • U:P\otimes A \otimes B \to P \In \cat{C} 更新関数〈update {function}?〉
  • r:P\otimes A \otimes B \to A \In \cat{C} リクエスト関数〈request {funcion}?〉

このなかでリクエスト関数については、フォング達の論文でも、"The request function is perhaps a little mysterious at this stage." と書いてあるように、イマイチ正体不明・意味不明なモノです。誤差関数の作り方も分からない僕には、GD学習子のリクエスト関数の作り方がどこから来たのか想像できません。そもそも、想像じゃダメですけど。

意図や由来の詮索は諦めて天下りの定義を認めるなら、実装関数

  • I:P\otimes A \to B \In Para({\bf AES})

さえあれば、そこから誤差関数の微分〈勾配ベクトル場〉を使ってGD学習子(Learn({\bf AES}) の射)を構成できることが論文の付録で証明されています。

この構成が、関手

  • GDL:Para({\bf AES}) \to Learn({\bf AES})\In {\bf SymMonCAT}

になります。ただし、この関手を完全に決定するには幾つかのオプションを決める必要があります。

フォング達はまた、ニューラルネットの圏NNetも定義してますが、NNetの定義も分かりにくいですね。節を改めて書きます。

ニューラルネットの形状の圏

フォング達の圏NNetは、その対象・射に実体的意味は何もなく、ニューラルネットの形状(ニューロン数や層の数)を記述するだけの構文的対象物です。そうであるなら、もっと簡単な圏を作れそうです。二種類の圏を作ってみました。

  1. SNNS 単一ニューラルネットの形状の圏〈the category of single neural network shapes〉
  2. MNNS 多重ニューラルネットの形状の圏〈the category of multiple neural network shapes〉

SNNSは、ほんとにメチャクチャ簡単です。しかし、モノイド積を持ちません。モノイド積を入れた圏がMNNSです。モノイド積を入れたらけっこう複雑になってしまったので、今日はMNNSの話はしません。

SNNSを定義しましょう。

集合Xに対して、List(X) は、Xを項目〈要素 | 成分 | エントリー〉とするリストの集合です。リストの長さに制限を付けたいときは、List≧1(X) のような書き方をします。

SNNSの対象の集合はN自然数の全体)です。射の集合は List≧1(N) です。つまり、長さ 2 1 以上の自然数のリストが射です。([追記]「長さ2以上」は間違いでした。[/追記]

  • Obj(SNNS) = |SNNS| := N
  • Mor(SNNS) := List≧1(N)

射の結合は、リストを繋ぐのですが、単なる連接ではなくてしりとり結合を使います。

恒等射もしりとりの圏と同じです。まさか、しりとりの圏が意味のある例で出てくるとは思わなかった。

リスト (n, ..., m) に対する dom(​(n, ..., m)) = n がニューラルネットの入力層のニューロン数、cod(​(n, ..., m)) = m がニューラルネットの出力層のニューロン数、length(​(n, ..., m)) - 2 が中間層の数を意味します(-1 のときも中間層なしです)。

使えるのか?

SNNSの対象と射は、ニューラルネットの形状に関する大雑把な情報(仕様)を提供するだけです。活性化関数 \sigma:{\bf R} \to {\bf R} を決めてやると、次の関手が確定します*6

  • SI_\sigma : {\bf SNNS} \to Para({\bf AES})\In \CAT

'SI'は、Single neural network の Implementation のつもりです。形状の情報だけから、概ユークリッド空間のあいだのパラメータ付き関数が決定します。さらに、(オプションを具体化した)GDL関手を繋ぐと、学習子の圏 Learn(AES) 内にGD学習子を実現できます。

GDL関手のオプションは、最急降下法のワンステップの“歩幅”を指定する正実数 ε と、実数値の食い違いを計る関数 d:{\bf R}\times {\bf R}\to {\bf R} なので、2つの関手 SI, GDL を合わせてもチューニング要素は3つです。

  1. 活性化関数 \sigma:{\bf R} \to {\bf R}
  2. 正実数 \varepsilon
  3. 食い違いを計る関数 d:{\bf R}\times {\bf R}\to {\bf R}

最初の節で「最急降下法機械学習のライブラリ/フレームワークの設計原理になるかも知れません」と言ったのは、このようなオプションを指定するだけでGD学習子が手に入れば便利だし、全体が compositional にできていれば、色々なモノを色々に組み合わせて試せるのも便利な気がしたからです。僕は実務経験がないので、想像で言ってるだけですけどね。

*1:おそらくフランス語読みだと思いまが、調べても発音が分からなかったので、カタカナ書きはイイカゲンです。

*2:人名としてのリーマンは Riemann で'n'が2個であることに注意。

*3:デカルト・モノイド圏よりもっと条件をゆるくできそうな気がします。

*4:Paraの構成では、サイズ(集まりの大きさ)の問題が生じます。小さい圏、または本質的に小さい圏でないと、局所的に小さい圏を作れないようです。

*5:微分可能性の階数 r は目的と状況に応じて決めます。

*6:どのようにして決定するのかは、出来れば別記事にしたい。[追記]しました。→ ニューラルネット形状を実現する関手としりとりの圏[/追記]

(-1)乗記号の憂鬱と混乱

f:{\bf R}^2 \to {\bf R}^2 は、可逆で微分可能な写像〈関数〉だとしましょう。この関数の逆関数微分は、次の公式で与えられます。

 D(f^{-1}) = (Df)^{-1}\circ f^{-1}

Df は“fの微分”を与える2×2の行列値関数(ヤコビ行列)です。

この公式を見たある人が、次のように“式変形”してから公式を使おうとしました。

 D(f^{-1}) = (f\circ Df)^{-1}

そして、「んっ? えっ。あれっ。アッレェーー??」と混乱していました。

もとの公式の書き方が(間違いではないけど)不親切というか誤解をまねく表現なんですね。右肩に -1 を載せる指数の書き方は、多義的で〈オーバーロードされていて〉意味が取りにくく誤解・混乱の原因になります。

この記事で (-1)乗記号の幾つかの例を出して明確化します。(-1)乗記号に限らず、誤解をまねく困った記法の例は色々あります。言えることは、「なんとなくボンヤリと捉えるのではなくて、文脈に応じてちゃんと解釈しましょう」です。

内容:

(-1)乗記号の用法

右肩に指数として -1 を載せる書き方は、次のような意味で使われています。

  1. 逆元
  2. 写像
  3. 逆数関数
  4. 逆像

他にもあるかも知れませんが、とりあえずこの4つの用法を見ていきましょう。

逆元

逆元〈inverse element〉というと、群を連想する人が多いかも知れませんが、部分写像〈partial map〉でいいのなら、任意のモノイドにおいて逆元を作る対応を考えることができます。

M = (M, *, e) (記号の乱用)をモノイドとして、Mの部分集合 Invtbl(M) (可逆〈invertible〉な要素の全体)を次のように定義します。

  • Invtbl(M) := {x∈M | x*y = y*x = e となる y∈M が存在する}

e∈Invtbl(M) なので、Invtbl(M) は空ではありません。x∈Invtbl(M) に対して、x*y = y*x = e となる y は一意であることが証明できます。なので、(x \mapsto y) として、次のプロファイルの写像 invM が定義できます。

  • invM:Invtbl(M) → M in Set

Par を集合と部分写像〈paritial map〉の圏として、invM を部分写像と考えることもできます。

  • invM:M → M in Par

invM(x) を簡略に表す記法が x-1 です。

写像

X, Y を集合として、XからYへの写像の全体を Map(X, Y) と書きます。可逆な写像〈invertible map〉の全体を InvtblMap(X, Y) とします。

  • InvtblMap(X, Y) := {f∈Map(X, Y) | f;g = idX かつ g;f = idY となる g∈Map(Y, X) が存在する}

InvtblMap(X, Y) は空集合になることがあります。例えば、InvtblMap({1, 2}, {1}) は空です。

f∈InvtblMap(X, Y) に対して、f;g = idX かつ g;f = idY となる g∈Map(Y, X) (gがfの逆写像〈inverse map〉)は一意であることが証明できます。なので、(f \mapsto g) として、次のプロファイルの写像 invMapX,Y が定義できます。

  • invMapX,Y:InvtblMap(X, Y) → Map(Y, X) in Set

invMapX,Y を部分写像と考えることもできます。

  • invMapX,Y:Map(X, Y) → Map(Y, X) in Par

invMapX,Y(f) を簡略に表す記法も f-1 です。

逆数関数

典型的な逆数関数〈reciprocal function〉は {\bf R}_{\ne 0}\ni x \mapsto \frac{1}{x} \in {\bf R} ですが、少し一般化して、モノイドを余域とする関数 f:X → M (M = (M *, e) はモノイド)があるとき、“fの逆数関数” g を次のように定義します。

  • For x∈X, g(x) := invM(f(x))

invM は先に出てきた逆元を対応させる部分写像です。

任意の x∈X に対して g(x) ∈ Invtbl(M) ならば、g = f;invM :X → M in Set という普通の写像〈全域決定性写像〉として定義できます。そうでないときでも、部分写像として結合〈合成〉して g = f;invM :X → M in Par は定義できます。

f:X → M に対する f;invM :X → M (Set または Par の射)を、fの逆数関数〈the reciprocal {function}? of f〉といいます。例えば、https:​//www.storyofmathematics.com/reciprocal-function(このページ、広告多すぎ)を参照。

fの逆数関数を f-1 と書くかも知れません。

逆像

f:X → Y in Set として、fによる B⊆Y の逆像〈inverse image〉は次のように定義します。

  • f-1(B) := {x∈X | f(x)∈B}

もう既に使ってますが、逆像にも(-1)乗の記号を使います。(B \mapsto f-1(B)) という対応は、次のプロファイルの写像です。

  • f-1:Pow(Y) → Pow(X) in Set

ベキ集合構成を、集合圏SetからSetへの反変自己関手と考えたときの射部分〈morphism part〉が (f \mapsto f-1) です。

(-1)乗の記号のままだと分かりにくいので、f-1 の代わりに Pow(f) と書けば:

  • Pow(f):Pow(Y) → Pow(X) in Set

これが反変自己関手だと言ったのは、次の性質をもつからです。

  1. For X∈|Set|, Pow(X)∈|Set|
  2. For f:X → Y in Set, Pow(f):Pow(Y) → Pow(X) in Set
  3. For f:X → Y, g:Y → Z in Set, Pow(f;g) = Pow(g);Pow(f) :Pow(Z) → Pow(X) in Set
  4. For X∈|Set|, Pow(idX) = idPow(X) :Pow(X) → Pow(X) in Set

ただし、逆像ではなくて順像〈image〉も関手になるので、これらを区別するために次のような書き方をします。

  • f:X → Y in Set に対して、
  • 逆像による反変ベキ集合関手の値: Pow*(f):Pow*(Y) → Pow*(X) in Set
  • 順像による共変ベキ集合関手の値: Pow*(f):Pow*(X) → Pow*(Y) in Set

逆関数微分公式

冒頭に挙げた逆関数微分公式  D(f^{-1}) = (Df)^{-1}\circ f^{-1} をちゃんと解釈してみましょう。

f:{\bf R}^2 \to {\bf R}^2微分は、Df:{\bf R}^2 \to Mat(2, 2) という写像になります。ここで、Mat(2, 2) は、実数成分の2行2列の行列の集合です。2行2列の行列の全体は掛け算でモノイドとなるので、逆元〈逆行列〉を対応させる写像があります*1

inv_{Mat(2,2)}:Invtbl(Mat(2, 2)) \to Mat(2, 2)

(Df)^{-1} の意味は Df;inv_{Mat(2,2)} = inv_{Mat(2,2)}\circ Df のこと、つまり Df の逆数関数(逆関数ではない!)です。それに対して、f^{-1}invMap_{{\bf R}^2, {\bf R}^2}(f) のことです。

ですから、逆関数微分公式を(-1)乗記号を使わずに書くと:

 D(invMap_{{\bf R}^2, {\bf R}^2}(f)) = (inv_{Mat(2,2)}\circ Df) \circ invMap_{{\bf R}^2, {\bf R}^2}(f)

これは煩雑過ぎますが、でも、言っている意味を解釈すればこんなことになります。

(-1)乗記号のような記法は、簡潔で視認性も良くて便利です。が、ときに人をたぶらかして過ちの沼に誘います。沼にハマらないためには、記号の表層に騙されずに「言っている意味を解釈」する必要があります。

*1:写像達をどんな圏のなかに居るのか? というと、微分する話なら可微分写像の圏でしょう。可微分写像の圏をきちんと定義するのは面倒なので明示していませんが。

確率的圏における同一視・オーバーロード

細かい差異をいちいち区別していると煩雑でやってられないし、かといって、味噌もクソも一緒にしてしまうとグッチャングッチャンで意味不明になるし。良いバランスの妥協点を探すのは難しいですね。

内容:

同一視されがちな概念

確率的圏〈stochastic category〉とは、具体的に構成されたマルコフ圏(マルコフ圏 A First Look -- 圏論的確率論の最良の定式化」参照)のことです。確率的圏の形式的な定義は「統計的反転の圏論的セットアップ 1/2 // 確率的圏と準確率的圏」に書いてあります。確率的圏はマルコフ圏の構造を持ちますが、その対象は可測空間とみなせ、その射はマルコフ核(「マルコフ核: 確率計算のモダンな体系」参照)とみなせます。

可測空間Xに対して、Xの上の確率測度の集合に適切な可測構造(シグマ集合代数)を載せた可測空間を(Xの)ジリィ空間〈Giry space〉と呼ぶことにします。ジリィ空間は単なる集合ではなくて可測空間です。もちろん、ジリィ関手(ジリィ・モナドの台関手である自己関手)による値がジリィ空間です。

確率的圏のなかで、同一視すべきか区別すべきか悩む概念が幾つかあります。

  1. マルコフ核と、ジリィ空間への可測写像
  2. 分布マルコフ核と、ジリィ空間の要素である確率測度
  3. 述語マルコフ核と、述語関数
  4. 確率測度と、確率密度関数

これらは、厳密に言えば違う概念ですが、しばしば同一視され、同じ記号・名前で表記されます(記号・名前のオーバーロードという)。どこまで同一視すべきかはケースバイケースですから、この記事では「同一視する/できるメカニズム」を見ていくことにします。

マルコフ核と、ジリィ空間への可測写像

モナドとクライスリ圏の一般的な話をします。(F, μ, η)/C が基礎圏C上のモナドとして、K := Kl(​(F, μ, η)/C) をそのクライスリ圏とします。

クライスリ圏の射 f:X → Y in K と、対応する基礎圏の射 f:X → F(X) in Cほんとに同じものです。なぜなら、クライスリ圏の定義をするときに、次の等式(による定義)を使うからです。

  • K(X, Y) := C(X, F(X))

したがって、クライスリ圏の射 f:X → Y in K と基礎圏の射 f:X → F(X) in C は、同一視もなにも、そもそもが同一物。

しかし、圏論では実体が同じならば等しいとは言えません。f:X → Y in K と f:X → F(X) in C は、違う圏に所属する(生息地が異なる)射なのだから違う、とも言えます。異なる圏のホムセットを結び付けているのは随伴によるホムセット同型です。

  • K(J(X), Y) \cong C(X, T(Y)) in Set

ここで、J:CK in CAT は、基礎圏をクライスリ圏に埋め込む関手です。対象パートは恒等なので J(X) = X です。T:KC in CAT は次のように定義される関手です。

  • T(X) := F(X) for X∈|K|
  • T(f:X → Y in K) := (f#:T(X) → T(Y) in C)

f#モナドに付随するクライスリ拡張です。

f:X → Y in K と f:X → F(X) in C を別物として扱い、上記のホムセット同型による“行ったり来たり”を明示的に書く、という選択肢もありますが。通常その必要はないでしょう。

確率的圏Dにおいても、Dの射であるマルコフ核 F:X → Y in D と、対応する可測写像 f:X → Giry(Y) in Meas を区別する必要は通常ありません。実体としては同じでもあるし、同じ記号・名前で表していいと思います。

分布マルコフ核と、ジリィ空間の要素である確率測度

D を確率的圏としましょう。D の対象は具体的な可測空間(とみなせるもの)です。特に、単位対象1は単元集合を台とする離散可測空間です。他に二元集合を台とする離散可測空間2があるとします。便宜上、1 = ({0}, Pow({0})), 2 = ({0, 1}, Pow({0, 1})) とします。

マルコフ圏の射で、dom(f) = 1 である射を、ジェイコブス〈Bart Jacobs〉は状態〈state〉、フリッツ〈Tobias Fritz〉は分布〈distribution〉と呼んでいます。ここでは、フリッツにならって分布を使います。「分布=域が単位対象である射」という意味しかなくて、それ以上でもそれ以下でもありません。この文脈での「分布」に余計な意味を混入させないように注意しましょう。

確率的圏Dの射はマルコフ核(とみなせる)なので、分布を分布マルコフ核〈distribution Markov kernel〉と呼んで紛れないようにします。

さて、分布マルコフ核 S:1X in D をジリィ空間への可測写像とみなすと S:1 → Giry(X) in Meas です(前節参照)。S(0) ∈Giry(X) は、ジリィ空間の点〈要素〉なので、X上の確率測度です。逆に、σ∈Giry(X) があると、σをポイントするポインティング写像 (0 \mapsto σ) はマルコフ核とみなせます。

実際には、確率的圏Dを作り出すもとになっているモナドFがTHE・ジリィ・モナドGiryそのものとは限らないので、F(X) ⊆ Giry(X) として、次の同型を考えます。

  • F(X) \cong D(1, X) in Set (F(X) の可測構造は忘却)

確率測度σのポインティング写像を σ~:1 → X in D とすると、(-)~:F(X) → D(1, X) in Set となります。分布マルコフ核 (S:1 → X in D) = (S:1 → F(X) in Meas) の値を ~S = S(0) ∈F(X) とすると、~(-):D(1, X) → F(X) in Set となります。

ポインティング写像を作ることと、値を求めることは互いに逆なので:

  • ~~) = σ on F(X)
  • (~S)~ = S on D(1, X)

これが、分布マルコフ核と確率測度を同一視するメカニズムです。

述語マルコフ核と、述語関数

確率的圏Dにおける述語〈predicate〉とは、プロファイルが X → 2 in D である射です。述語もマルコフ核なので、そのことを強調して述語マルコフ核〈predicate Markov kernel〉とも呼ぶことにします。

一方で、可測関数 p:X → [0, 1] in Meas も述語(正確にはファジー述語)と呼びます。こちらは述語関数〈predicate function〉と呼ぶことにします。

述語マルコフ核と述語関数もしばしば同一視されます。同一視を実現する可逆写像をハッキリと定義しておきましょう。

  • (-):D(X, 2) → Meas(X, [0, 1])
    • For Q∈D(X, 2)
    • Q(x) := Q({1} | x)
  • (-):Meas(X, [0, 1]) → D(X, 2)
    • For q∈Meas(X, [0, 1])
    • q({1} | x) := q(x)
    • q({0} | x) := 1 - q(x)

(-)(-) は互いに逆なので:

  • (Q) = Q on D(X, 2)
  • (q) = q on Meas(X, [0, 1])

これが、述語マルコフ核と述語関数を同一視するメカニズムです。

確率測度と、確率密度関数

確率測度と確率密度関数は、一般的には同一視できません。確率測度が確率密度関数を持つとは限らないからです。しかし、確率密度関数を持つ確率測度だけを考えるとか、有限離散可測空間だけを考えるとか、制限を付けると1:1対応します。

可測空間Xに、確率測度とは限らない基準となる測度Λ(例えば、ユークリッド空間の標準ルベーグ測度)が載っていて、Λに対して絶対連続な確率測度だけを考えるとしましょう。

τがΛに対して絶対連続な確率測度だとして、そのラドン/ニコディム導関数を τ とします。被積分形式の等式として次が成立します。

  • τ(dx) = τ(x)Λ(dx)

逆に、Λ-積分可能な可測関数 t:X → R≧0 in Meas で、積分値が1のものがあると、次のようにして測度 t・Λ が定義できます。

  •  \mbox{For }A\in \Sigma X,\,(s\cdot \Lambda)(A) := {\displaystyle \int_{x\in A} t(x)\Lambda(dx)}

(t \mapsto t・Λ) は、(Λに関する)ラドン/ニコディム微分の逆操作になります(いわば“ラドン/ニコディム積分”)。t := t・Λ と定義すると、次が成立します。

  • ) = τ on (X上のΛ-絶対連続な確率測度)
  • (t) = t on (X上のΛ-積分値が1の可測関数)

確率測度/確率密度関数だけでなく、マルコフ核/確率密度核についても同様な1:1対応を考えましょう。確率密度核〈probability density kernel〉については「マルコフ核と確率密度関数」を参照してください。

F:X → Y in D が、確率的圏Dの射(マルコフ核)として、Y上には測度Λが載っているとします。Fを F:X → Giry(Y) in Meas と考えて、すべての x∈X で F(x) がΛ-絶対連続だとします。このときは、確率密度核 F を次のように定義できます。

  • \mbox{For }x\in X, y\in Y,\, F^\bullet(x)(y) := (F(x)^\bullet)(y)

逆に、f:X → Meas(Y, R≧0) が確率密度核になっているとき、対応するマルコフ核を次のように定義できます。

  • \mbox{For }x\in X, B\in \Sigma Y,\, ({}^\bullet f)(x)(B) := ({}^\bullet( f(x)))(B) = {\displaystyle \int_{y \in B}f(x)(y)\Lambda(dy)}

これらも互いに逆な写像なので:

  • (F) = F on (絶対連続なマルコフ核の集合)
  • (f) = f on (確率密度核の集合)

おわりに

今まで述べたような、1:1で対応する概念を同一視するのはかまわないし、区別して扱うのは煩雑過ぎるので同一視は必要だと言ってもいいでしょう。しかし、暗黙になんとなく同一視してしまうのはよろしくありません。同一視するときは、どのようなメカニズムで同一視する/されるのかを確認しましょう。

統計的反転の圏論的セットアップ 2/?

統計的反転の圏論的セットアップ 1/2」の続きっちゃ続きの話です。が、この話が「2/2」(全2回の2回目)になるかというと、そうはならない(まだ続く)ので、タイトルは「2/?」にしました。全部で何回になるかは不明になりました。

統計的反転を一般的に議論しようとすると、確率測度だけを相手にしていてはダメなような気がします。そこで、確率測度とは限らないより一般的な測度まで考えることにしましょう。ジリィ・モナドは、確率測度を集めて作りますが、任意の測度を集めて作る一般化ジリィ・モナド〈generalized Giry monad〉を定義して、一般化ジリィ・モナドのクライスリ圏として“核の圏”Kernを定義します。

測度に関する色々な性質(後で使う予定)を列挙して、ルベーグ錐〈Lebesgue cone〉を導入します -- 今回・第2回も淡々とセットアップ〈準備〉が続きます。\newcommand{\cat}[1]{\mathcal{#1}}\newcommand{\For}{\mbox{For }}\newcommand{\Iff}{\Leftrightarrow}\newcommand{\In}{\mbox{ in }}

内容:

一般化ジリィ・モナド

非負実数の全体を P := {x∈R| x ≧ 0} とします。無限閉区間は、[0, ∞] := P∪{∞} として、順序や演算は無限大を含めた形に拡張します。Meas は可測空間と可測写像の圏です。

可測空間Xに対して、Ms(X) をX上の測度全体の集合とします。ここで、測度はシグマ集合代数 ΣX から [0, ∞] への写像で測度の性質〈公理〉を満たすものです。Ms(X) を可測空間とするには、A∈ΣX と r∈[0, ∞] に対して、

  • \mathscr{M}(A, r) := {ω∈Ms(X) | ω(A) ≦ r} ⊆Ms(X)

として定義される集合を可測集合とする最小のシグマ集合集合代数を採用します。

Ms(X) = (Ms(X), Σ(Ms(X))) と記号の乱用をして、Ms:MeasMeas in CAT という自己共変関手が定義できます。可測写像 f:X → Y in Meas に対する Ms(f):Ms(X) → Ms(Y) in Meas は、測度の前送りで定義します。

自己関手 Ms:MeasMeas in CAT の定義の仕方は、ジリィ関手(ジリィ・モナドの台関手)のときとまったく同じです。モナド乗法とモナド単位もジリィ・モナドと同じく定義すると、Ms を台関手とするモナドが構成できます。このモナド一般化ジリィ・モナド〈generalized Giry monad〉と呼び、GGiry = (GGiry, ν, δ)/Meas (記号の乱用)と書くことにします。'/Meas' は圏Meas上のモナドであることを示しています。台関手に関しては、GGiry = Ms です。

モナドのクライスリ圏を Kl(-) と書くことにして、

  • Stoc := Kl(Giry) = Kl(​(Giry, ν, δ)/Meas)
  • Kern := Kl(GGiry) = Kl(​(GGiry, ν, δ)/Meas)

と置きます。StocはTHE・確率的圏〈the stochastic category〉です。Kernについては次節でまた話題にします。

統計的反転の圏論的セットアップ 1/2 // 確率的圏と準確率的圏」で述べた方法で、一般化ジリィ型モナド〈generalized Giry-{type | like} monad〉を定義できます。

前回と今回で定義したモナドやクライスリ圏は次のようになり、ちょっと煩雑ですね。

測度 モナド クライスリ圏 ☓☓型モナド
確率測度 ジリィ・モナド Stoc ジリィ型モナド
有限測度 準ジリィ・モナド QStoc 準ジリィ型モナド
任意の測度 一般化ジリィ・モナド Kern 一般化ジリィ型モナド

「一般化ジリィ型モナド」とか、なんだかぎごちない名前になってしまいました。再整理して、ネーミングをやり直したほうがいいかも知れません。が、今日のところはこのままいきます。

核の圏

一般化ジリィ・モナド GGiry = (GGiry, ν, δ)/Meas のクライスリ圏がKernでした。圏Kernの対象は可測空間です。圏Kernの射を〈kernel〉と呼ぶことにします。圏Stocの射も「核」と呼ぶことがありますが、それはマルコフ核の「マルコフ」を省略しているわけで、形容詞〈修飾語〉「マルコフ」を省略しないルールにすれば紛れはないです。

核 f:X → Y in Kern はクライスリ射(クライスリ圏の射)なので、一般化ジリィ・モナドの基礎圏〈ground category〉Measで考えれば、f:X → GGiry(Y) in Meas です。GGiry(Y) ⊆ Set(ΣY, [0, ∞]) (忘却関手は省略)なので、f:XSet(ΣY, [0, ∞]) in Set と考えることができます(Xは可測空間の台集合)。写像fを反カリー化〈uncurrying〉すると、f:X×ΣY → [0, ∞] in Set が得られます。右下のカップ〈∪〉は反カリー化する演算子です。

改めて、反カリー化した核を定義しましょう。写像 F:X×ΣY → [0, ∞] in Set が(反カリー化)であるとは次の性質を満たすことです。

  1. 任意の x∈X に対して、F(x, -):ΣY → [0, ∞] は Y = (Y, ΣY) 上の測度になる。
  2. 任意の B∈ΣY に対して、F(-, B):X → [0, ∞] は X = (X, ΣX) 上の[0, ∞]値可測関数になる。

反カリー化した核の定義と、もとの(反カリー化してない)核の定義は同値なことは証明できるので、反カリー化/カリー化で行き来できる2つの“核”はしばしば同一視されます。同一視の結果、次の等式(記号の乱用)を許します。

  • For x∈X, B∈ΣY, f(x)(B) = f(x, B) = f(B | x)

可測空間Xと台集合Xの区別も、必要なとき以外はやめます。

今述べたような記号の乱用は許すとして、圏Kernの結合は次のように書けます。

\For f:X \to Y, g:Y \to Z \In {\bf Kern}\\
f;g = g\circ f := \lambda\, (x, C)\in X\times \Sigma Z.(\\
\:\:\:\: {\displaystyle \int_{y\in Y}g(C \mid y) f(dy \mid x)}\\
)

恒等射は、ディラック測度を割り当てる X \ni x \mapsto \delta_X(x) \in Ms(X) で与えられます。

以上の構成は、「測度は確率測度に限る」という制限を外しているだけで、一連の議論はジリィ・モナドとマルコフ核のときと同様です。制限を外すことにより、可測空間とマルコフ核の圏Stocの代わりに、可測空間と(一般化)核の圏Kernが得られます。StocKern です。

測度空間の圏

可測空間Xに測度Λを載せた構造 (X, Λ) を測度空間〈measure space〉と呼びます。測度空間を X と書いたときは、台可測空間を X 、載っている測度を ΛX と書くことにします。

  • X = (X, ΛX)

測度空間の圏を考えたいのですが、射をどうするかに選択肢があります。ここでは、任意の可測写像を射とした測度空間の圏をMSとします。

  • MS(X, Y) = Meas(X, Y)

この定義から、圏MSから圏Measへの充満忠実な忘却関手 U:MSMeas in CAT があることになります。

測度を保存する可測写像を射とした場合は、MSmp と書くことにします。mp は measure preserving の略です。MSmpMS は同じ対象類(測度空間達)を共有します。

測度空間を対象として、核(一般化核)を射とする圏をKernMSとします。測度を保存する核を射とする圏は KernMSmp です。

測度に関する色々な性質

Xが可測空間のとき Ms(X)∈|Meas| は任意の測度からなる可測空間ですが、測度に次の性質を仮定することがあります。

  • 有限測度
  • 絶対連続測度
  • 有限台離散測度

このなかで絶対連続測度は、基準になる測度がないと定義できません。測度空間を X = (X, ΛX) と書き、次の記法を使います。

  1. Ms(X, ΛX) : 任意の測度からなる可測空間。基準となる測度 ΛX は関係ない。
  2. MsF(X, ΛX) : 有限測度〈finite measure〉からなる可測空間。ω∈MsF(X, ΛX) ⇔ ω(X) < ∞ (Xは可測空間ではなくて集合の意味)。これも、基準となる測度 ΛX は関係ない。
  3. MsAC(X, ΛX) : 基準となる測度 ΛX に対して絶対連続〈absolutely continuous〉な測度からなる可測空間。ω∈MsAC(X, ΛX) ⇔ ω \ll ΛX
  4. MsFD(X, ΛX) : 有限台離散測度〈finitely-supported discrete measure〉からなる可測空間。有限台離散測度は、一点を台〈support〉とするディラック測度の有限個の和として書ける測度。基準となる測度 ΛX は関係ない。
  5. MsP(X, ΛX) : 確率測度からなる可測空間。ω∈MsP(X, ΛX) ⇔ ω(X) = 1 。基準となる測度 ΛX は関係ない。

測度に関する性質を'Ms'の右肩に付けて表します。複数の性質をコンマで並べるとアンドの意味だとします。例えば、MsP, AC(X, ΛX) は、ΛXに関して絶対連続な確率測度からなる可測空間です。

絶対連続測度と有限台離散測度の和で書ける、という性質を AC+FD と表すことにします。ω∈MsAC+FD(X, ΛX) であるとは、絶対連続測度αと有限台離散測度βがあって、ω = α + β と書けることです。和としての表示の一意性は要求しません。

ΛX によるラドン/ニコディム微分を RNΛX として、a := RNΛX(α) とします。a は測度αの密度関数です。βも次の形で表示します。

 \beta = r_1[x_1] + \cdots + r_n[x_n] \mbox{ where }x_i\in \underline{X},\, r_i\in {\bf R}_{\gt 0}

ωのより具体的な表示は:

\For A \in \Sigma \underline{X}\\
\omega(A) = {\displaystyle \int_A a(x)\Lambda(dx) + \sum_{A}\beta}

右辺第二項の総和は次の意味です。

{\displaystyle\sum_{A}\beta = \sum_A(r_1[x_1] + \cdots + r_n[x_n]) = \sum_{x_i \in A} r_i }

ω∈MsF, AC+FD(X, ΛX) のときは、ωの絶対連続部分の密度関数は可積分関数になります。

もうひとつ、UBは一様有界〈uniform bounded〉な測度を意味します。それは次の意味です。

  • ω∈MsUB(X, ΛX) ⇔ 定数 c∈P があって、A∈ΣX に対して ω(A) ≦ c(ΛX(A)) が成立する

今まで出てきた略号をまとめておきます。

  1. F : 有限測度
  2. AC : ΛX に関する絶対連続測度
  3. FD : 有限台離散測度
  4. P : 確率測度
  5. AC+FD : ΛX に関する絶対連続測度と有限台離散測度の和である測度
  6. UB : ΛX に関する一様有界測度

ルベーグ空間とルベーグ

(X, ΛX) を測度空間として、Fn(X, ΛX) := Meas(X, R) とします。これは、実数値可測関数の集合です。必要に応じて、Rベクトル空間の構造も考えます。Fn(X, ΛX) の定義に、測度 ΛX は関与してません。

測度 ΛX に関するASE〈Almost Surely Equal〉関係を ~X と書くことにします。商集合 Fn(X, ΛX)/~X を L(X, ΛX) とします。L(X, ΛX) にもベクトル空間の構造が入ります。L(X, ΛX) の定義には測度 ΛX が関係しています。L(X) = L(X, ΛX) を、測度空間X上のルベーグ空間〈Lebesgue space〉と呼びます。

何も条件を付けない L(X) は扱いにくいので、p乗可積分な関数(の同値類)からなる部分空間 Lp(X) をpごとに考えるのが普通で、これはp-ルベーグ空間〈p-Lebesgue space〉と呼びましょう。p = ∞ のときの L(X) は(本質的に)有界な関数(の同値類)からなる空間です。測度空間 X = (X, ΛX) 上のp-ルベーグ空間(p = 1, 2, ..., ∞)はバナッハ空間になります。

X上の非負実数値可測関数の空間を Fn≧0(X) 、非負実数値可測関数で代表される~X同値類の集合を L≧0(X) と書くことにします。同様に、Lp≧0(X) も定義します。Lp≧0(X) はベクトル空間にはなりませんが、錐〈cone〉になります。バナッハ空間のノルムを受け継いでノルム錐〈normed cone〉にもなります。バナッハ空間の距離完備性からノルム錐がω完備であることも分かります。

Lp≧0(X) を、測度空間 X = (X, ΛX) 上のp-ルベーグ〈p-Lebesgue cone〉と呼びます。p-ルベーグ空間はバナッハ空間となり、p-ルベーグ錐はωバナッハ錐となります。

抽象的なバナッハ空間/ωバナッハ錐とは違い、ルベーグ空間/ルベーグ錐の要素は、可測関数による表示(代表元)を持ちます。可測関数の積分値や(本質的)最大値などの値も具体的に計算できます。この事情から、統計的反転の道具としては主にp-ルベーグ錐が使われます。

チャンネル理論の演算子記号が使いにくい理由

バート・ジェイコブス〈Bart Jacobs〉達のチャンネル理論(「ベイズ確率論、ジェイコブス達の新しい風」参照)では、チャンネルに対する演算に独自の記号を割り当てています。それがどうにも使いにくくて、結局僕は使うのをやめてしまったのですが、「使いにくい理由」は考えてみませんでした。

今日気付いたのですが; 記号の形(見た目)に対称性があるのに語順(図式順か反図式順か)の統一性がないのがストレスになっていたようです。

ジェイコブス達がアフィンCD圏〈affine CD-category〉と呼んでいた圏はマルコフ圏(「マルコフ圏 A First Look -- 圏論的確率論の最良の定式化」参照)のことで、チャンネルはマルコフ射(マルコフ圏の射)のことです。よって、チャンネル理論は、ほぼマルコフ圏論です。

具体的に与えられたマルコフ圏、つまり確率的圏(「統計的反転の圏論的セットアップ 1/2 // 確率的圏と準確率的圏」参照)C で考えるとして、1を特定された単元集合、2を特定された二元集合とします。1はマルコフ圏の単位対象兼終対象です。2は二値真偽値の集合と考えましょう。いずれも、可測空間としては離散可測構造を与えます。

チャンネル理論における、射を表す記号の習慣は次のようです。

射の種類 使う記号
一般の射 f, g, c, d など
域が1である射 ω, σ など
余域が2である射 p, q など

チャンネル理論では、域が1である射を状態〈state〉、余域が2である射を述語〈predicate〉と呼びます。

チャンネルの結合〈composition | 合成〉の記号は \odot で、反図式順の中置二項演算子記号として使います。その他に、中置演算子記号 \gg,\, \ll,\, \models も使います -- これらはすべてチャンネルの結合の記号で、 \odot と意味は変わりません。色々な結合記号を用意しているのは、結合される2つの射の種類ごとに使い分けるのです。

2つの射の種類 結合の表し方 結合記号の語順
一般の射と一般の射 g\odot f 反図式順
状態と一般の射 f\gg \omega 反図式順
一般の射と述語 f\ll p 図式順
状態と述語 \omega \models p 図式順

本質的には同じ意味の4つの中置演算子記号に、反図式順と図式順が混じっているのはキツイ。図式順派の僕なら次のように決めます、もちろんすべて図式順。

2つの射の種類 結合の表し方
一般の射と一般の射 f ; g
状態と一般の射 \omega \gg f
一般の射と述語 f\ll p
状態と述語 \omega \models p

実際にはちょっと日和っていて、ポスト結合前送り〈post-composition pushforward〉、プレ結合引き戻し〈pre-composition pullback〉、スカラー積の記号を使っています。

2つの射の種類 結合の表し方
一般の射と一般の射 f ; g,\, g\circ f
状態と一般の射 f_\ast(\omega)
一般の射と述語 f^\ast(p)
状態と述語 \langle \omega\mid p\rangle

この書き方は無難で、どこにも角を立てないかと思います。

ところで、チャンネル理論ではもうひとつ大事な演算があって、それは次のように表します。

2つの射の種類 更新の表し方
状態と述語 \omega \mid_p

更新〈update〉と書きましたが、ジェイコブス達はかつて条件付け〈conditioning〉と呼んでいました。「条件〈condition〉」や「条件付き〈conditional〉」の用法がとっ散らかってしまい、わけわからん状態なので「更新」に変更したのでしょう。実際、「条件付き確率〈conditional probability〉」の意味が拡散して困っていたので助かります。

状態による述語の更新は次のように定義されます。\newcommand{\cat}[1]{\mathcal{#1}}\newcommand{\For}{\mbox{For }}\newcommand{\Iff}{\Leftrightarrow}\newcommand{\In}{\mbox{ in }}

\For \omega:{\bf 1} \to X,\,p:X \to {\bf 2}\In \cat{C}\\
\:\:\:\: \omega |_p := \lambda\, A\in \Sigma X.(\,
  \frac{1}{\langle \omega\mid p\rangle}\int_{A} p(x)\omega(dx)
\,)

定義に使った記法は無難な書き方を採用しています。\Sigma X は可測空間のシグマ集合代数です。述語の期待値 {\langle \omega\mid p\rangle} の逆数を使っているので、{\langle \omega\mid p\rangle} がゼロのときは定義されません。

先に出てきた記号 \odot,\, \gg,\, \ll,\, \models はすべて圏の結合の意味でした。モノイド積の記号 \otimes も使いますが、これはモノイド圏の基本演算です。となると、チャンネル理論に特有な演算は更新だけと言っていいかも知れません。

図式順派の偏見が入った意見かも知れませんが、せっかくシンプルな体系であるチャンネル理論の記号法が、バイダイレクショナルでゴチャゴチャしているのは残念です。少なくとも僕は、あのままで使う気にはなれません。


[追記]
自分で「残念だ」と言っておきながらナンですが、チャンネル理論の記法をちょっと擁護しておきますね。

ポスト結合前送りとプレ結合引き戻しを f_\gg(\omega),\, f^\ll(p) と書いて、上付き/下付きを中置演算子の位置にズラしたと思えば、まーあの記法も納得できます。僕はそれでも、視認性の悪さが気になるのです。

'\models' を使うのは、論理の妥当〈validity〉記号とのアナロジーがあっていいと思います。僕がこれも使わないのは、やっぱり視認性です。イコールと一緒になったりすると見にくいですね。構文に対する僕の評価基準では、視認性がとても大きいんです。
[/追記]

ローヴェア流セオリー論と統計モデル

次はイバン・パターソンの学位論文です。

  • Title: The algebra and machine representation of statistical models
  • Author: Evan Patterson
  • Submitted: 16 Jun 2020
  • Pages: 224p
  • URL: https://arxiv.org/abs/2006.08945

Youtube動画で、上記学位論文の主に3章 "The algebra of statistical theories and models" についてパターソン自身が語っています。

サマリーだけ知りたい方は、48分30秒から5分ほどで総括されています。また、質問時間(53分30秒くらいから)にスピヴァック〈David Spivak〉やフリッツ〈Tobias Fritz〉も登場しています。

パターソンが主題としている"statistical theories"は、普通の意味(国語辞書的意味)の“理論”ではなくて、ローヴェア〈William Lawvere〉の意味の“セオリー”です。「セオリー」はどうにも紛らわしい言葉ですが、最近ますます重要性を増しているように感じるので、ローヴェア流のセオリー論〈theory of theories〉としての“パターソンの統計セオリー論”を紹介します。

内容:

セオリーの理論

フォングの“因果セオリー”の理論」で、圏論の文脈で現れる"theory"が国語(または英語)辞書的意味ではなくてテクニカル・タームな事があると指摘しました。

“セオリー〈theory〉”の普通ではない使い方は、ローヴェア〈William Lawvere〉に由来します。ローヴェアは鋭い洞察力と豊富なアイディアを持った圏論の大家ですが、人を悩ます奇妙なネーミングをします。[...snip...]

ローヴェアの代数理論(現在は"Lawvere theory"と呼ばれることが多い)は、代数学の理論という意味ではありません。とある条件を満たす圏のことを代数理論と呼ぶのです。僕は、少しでも混乱を避けるために代数セオリー(またはローヴェア・セオリー)とカタカナの「セオリー」を使います。

フォング〈Brendan Fong〉が使っていた言葉「因果セオリー〈causal theory〉」の「セオリー」はローヴェアのセオリーのことだし、「因果」も「原因と結果」という意味はなくて単にグラフの辺(または圏の射)のことでした。因果セオリーの形式的定義は小さな厳密対称厳密マルコフ圏〈small strictly-symmetric strict Markov category〉です。

パターソンの統計セオリーもフォングの因果セオリーと同様で、小さな厳密マルコフ圏です。パターソンは、特定のひとつの射が指定された小さな厳密マルコフ圏を統計セオリー〈statistical theory〉と呼んでますが、生成系〈system of generators〉を備えた小さな厳密マルコフ圏と定義したほうがいいでしょう(後述)。生成系は、マルコフ圏の指標〈signature〉と言っても同じです。

例えば、次は一番単純で一番よく使われる指標です。パターソンは主にこの単純な指標を扱っています。

signature Simple {
  sort P // パラメータ空間
  sort D // データ空間〈標本空間〉
  operation f:P -> D // 確率法則(のパラメータ族)
}

ベイズ確率論でいう事前分布を持った指標は次のようです。

signature SimpleBayesian {
  sort P // パラメータ空間
  sort D // データ空間〈標本空間〉
  operation p:1 -> P // 事前分布
  operation f:P -> D // 確率法則(のパラメータ族)
}

(1)圏の生成系である指標、(2)指標から生成された圏であるセオリー、(3)セオリーからの関手であるモデルが、ローヴェア流セオリー論の三種の基本的構成素です。セオリー論とはいいながら、モデルを扱うモデル論〈model theory | theory of modeles〉も含んでいます。

パターソンは、ローヴェア流セオリー論を圏論的論理〈categorical logic〉として参照していますが、論理のなかでも特にモデル論を圏論的に再定義したものが圏論的セオリー論〈categorical theory of categorical theories〉です。

スピヴァックの関手データモデル(「衝撃的なデータベース理論・関手的データモデル 入門」参照)もローヴェア流セオリー論の応用例で、そこでは、指標またはセオリーはスキーマと呼ばれ、モデルはデータインスタンスと呼ばれています。

(必ずしも圏論的ではない)論理では、論理式の集合をセオリーと呼ぶことがあります。これは、無関係ではありませんが、ローヴェア流セオリー論のセオリーとは少し違うので注意してください。

統計セオリー論のアンビエント

圏論的に確率統計の議論をするときの基本的なツール/フレームワークマルコフ圏〈Markov category〉です。マルコフ圏については、「マルコフ圏 A First Look -- 圏論的確率論の最良の定式化」とそこから参照されている記事を参照してください。

また、「マルコフ圏の一族 // 様々な装備圏」で触れた装備〈supply〉概念*1は、もはやアノ界隈では常識のようです。アノ界隈とは、スピヴァック、フォング、フリッツ、そしてパターソンなどが参加している MIT Categories Seminar の周辺のことです。

装備(僕はモダリティと呼んでいた)概念を使えば、マルコフ圏とは余可換コモナド装備付き半デカルト・モノイド圏です。マルコフ圏のあいだのマルコフ関手は、モノイド関手(幾つかの種類がある)であって装備を保存する関手〈supply-preserving functor〉として定義できます。マルコフ自然変換も、装備と整合する*2モノイド自然変換として定義できるでしょう。

マルコフ圏を対象として、マルコフ構造(モノイド構造と余可換コモナド装備)と整合する関手と自然変換を1-射/2-射とする2-圏 MarkovCAT を構成できます。これはマルコフ圏の2-圏〈2-category of Markov Categories〉です。小さな厳密マルコフ圏(“厳密”はモノイド圏としての厳密性)からなる部分2-圏は StrMarkovCatMarkovCAT とします。

2-圏 MarkovCAT は、統計セオリー論〈theory of statistical theorys〉を展開する環境となる圏なのでアンビエント〈ambient category〉と呼びましょう(実際は2-圏ですけど)。アンビエント圏の重要な性質は、A∈|StrMarkovCat| と C∈|MarkovCAT| に対して、関手圏 [A, C] が作れることです。関手圏は、モノイド構造やマルコフ構造を必ずしも持たなくてもいいので、[A, C]∈|CAT| と考えます(とりあえずは)。すると、[-. -] は次のような二項関手〈双関手〉です。

  • [-, -]:StrMarkovCatop×MarkovCatCAT

このテの二項関手については次の記事で説明しています。

マルコフ指標と統計セオリー

統計セオリーを生成する指標は統計指標と呼ぶのが良さそうですが、「統計指標」って言葉で全然違った連想・印象を持つ人が多そうなのでマルコフ指標にします。それに、マルコフ指標と呼んだほうがネーミングの一貫性が保てます(次の段落)。

指標は、コンピュータッド〈computad〉とか多グラフ〈polygraph〉とも呼ばれ、圏を生成・定義する手段として用いられます。圏の種別(ドクトリン、メタ指標)ごとに指標の種別も決まります。今は、マルコフ圏という圏の種別を扱っているので、対応する指標はマルコフ指標〈Markov signature〉です。

マルコフ指標Σは、Σ0, Σ1, Σ2 という3つの集合(空であるかも知れない)で構成されます。Σ0 は圏の対象を表す記号の集合、Σ1 は圏の射を表す記号の集合、Σ2 は圏の等式的制約(可換図式と言っても同じ)を表す記号の集合です。

Σ1 の記号の域・余域としては、Σ0 の記号の連接が使え、連接は圏のモノイド積に対応します。Σ2 の記号の域・余域(等式の左辺・右辺)としては、Σ1 の記号とマルコフ圏の装備に対応する記号を使った項(射を表す複合記号)が使えます。

マルコフ指標Σから、小さい厳密マルコフ圏 Σ が一意的に生成されます。が、Σ と Σ をキチンと記述するのは煩雑な組み合わせ的議論があって大変です。詳細は割愛します。

マルコフ指標Σから生成された小さい厳密マルコフ圏 Σ統計セオリー、あるいはマルコフ・セオリーです。この意味での統計セオリーは、その部分系(部分圏とは限らない)として生成系Σを持っているし、Σから Σ は決まってしまいます。したがって、マルコフ指標Σと統計セオリー〈マルコフ・セオリー〉Σ はしばしば同一視されます。セオリーの理論は指標の理論でもあるわけです。

上記の事情から、セオリー射〈theory morphism〉と指標射〈signature morphism〉、セオリーの圏〈category of theories | theory category〉と指標の圏〈category of signatures | signature category〉もしばしば同一視されます。が、ここでは区別したいので、マルコフ指標の圏をMarkovSign、統計セオリー〈マルコフ・セオリー〉の圏をMarkovTheoとします。MarkovTheo は、MarkovSign(マルコフ・ドクトリン配下の2-コンピュータッドの圏)と StrMarkovCat を両端とする随伴ペアが誘導するモナドのクライスリ圏です。つまり、MarkovTheo の対象はマルコフ指標で、2つのマルコフ指標 Σ, Σ' のあいだのセオリー射は、自由生成関手 (-) (の自由・忘却-随伴ペア)から得られるモナドのクライスリ射です。

指標とセオリーに関して色々な概念が登場しましたが、これらは指標/セオリーの一般論からのもので、マルコフ指標/マルコフ・セオリー〈統計セオリー〉に特有のものではありません。後で述べるように、プログラム意味論でも使われている道具・枠組みです。

統計モデル

マルコフ指標Σから生成された統計セオリー T := Σ を固定します。定義により、T は小さな厳密マルコフ圏でした。T は、構文領域(記号の世界)を提供する圏です。構文に意味を付与するには意味領域を提供する圏が必要です。

意味領域が具体的であることを保証するために、確率的圏(昨日の記事「統計的反転の圏論的セットアップ 1/2 // 確率的圏と準確率的圏」参照)Cを選んで固定します。Cが意味領域、あるいは意味論〈semantics〉のターゲット圏〈target category〉です。

統計セオリーTの確率的圏Cにおけるモデル〈model〉とは、マルコフ関手 M:TC in MarkovCAT です。アンビエントMarkovCATの性質から、モデルの全体は関手圏 [T, C]∈|CAT| を構成します。

T-統計モデルの全体 [T, C] が圏の構造を持つことから、モデルが同型であることを圏論的に定義できます。同型に限らず、モデルのあいだの関係を射として明確に表現できます。その具体例は、パターソンの動画や論文で述べられています。

もうひとつのマルコフ指標Σ'と統計セオリー T' := (Σ') があったとしましょう。セオリー射 ψ:Σ → Σ' in MarkovTheo はマルコフ関手(セオリー射ψのクライスリ拡張) ψ#:TT' in StrMarkovCat を誘導します。さらに、ψ# のプレ結合引き戻し〈pre-composition pullback〉(ψ#)*:[T', C] → [T, C] in CAT により、統計モデルの圏のあいだの関手を定義できます。

パターソンは、(ψ#)*モデル移行関手〈model migration functor〉と呼んでいます。スピヴァックのデータ移行関手〈data migration functor〉に合わせた用語法ですね。セオリー射に沿ったモデル移行関手もスキーマ射に沿ったデータ移行関手も同じ概念です。プログラム意味論(のインスティチューション理論)ではリダクト関手〈reduct functor〉、インデックス付き圏の文脈では再インデキシング関手〈reindexing functor〉とも呼ばれます。

モデル移行関手を使えば、異なる統計セオリー上の統計モデルを比較することができます。パターソンは、モデル移行関手の実例も出しています。例えば、線形モデルが一般化線形モデルの特殊例であることは直感的には当たり前そうですが、厳密な記述と証明は出来るでしょうか? パターソンの動画でこの例が語られています。

それから

ローヴェア流セオリー論(ローヴェア流モデル論でもある)のいいところは、構文と意味の関係が圏論的に整理できて事情がクリアになることです。パターソンは、ローヴェアのレシピを統計セオリー/統計モデルに適用したわけです。その結果、統計に関わる構文と意味の関係は実際クリアになりました。

クリアになった景色を眺めると、幾つか気が付くことがあります。

スピヴァックは、データ移行関手に関して、カン拡張を利用したΣ-Δ-Π随伴トリオ(「Σ-Δ-Π随伴、もう一言」参照)を構成しています。統計モデルのモデル移行関手についても同様なΣ-Δ-Π随伴トリオは可能でしょうか? データベースの場合(単なる圏)と比べると統計モデルの場合(マルコフ圏)は事情が複雑なので、あまり期待は出来ない気がします。しかし、部分的にでもΣ-Δ-Π随伴トリオが構成できれば面白そう。

ジェイコブス〈Bart Jacobs〉達は、確率の計算にプログラム意味論の状態変換子/述語変換子の概念を移入しました(「ベイズ確率論、ジェイコブス達の新しい風」参照)。ドールクゥイスト〈Fredrik Dahlqvist〉達は、ベイズ反転の定式化のためにプログラム意味論のω完備性の概念を移入しました(「統計的反転の圏論的セットアップ 1/2」参照)。実は、スピヴァック/パターソンが利用したローヴェア流セオリー論も、プログラム意味論におけるインスティチューション理論〈institution theory〉としてかなり整備されています(「インスティチューション」のブログ内検索)。

どうも、プログラム意味論の各種手法は、確率統計に適用できる可能性が高いようです。いま例に挙げた、状態変換子/述語変換子、領域理論、インスティチューション理論以外にも、適用可能な手法があるかも知れません。それに、確率統計の計算を実際に行うときにコンピュータを使うことからも、確率統計と計算科学の相互浸透は歓迎できることですね。

*1:https://arxiv.org/abs/1908.02633 参照。

*2:「整合する」がどういう条件か僕はよく分かってません。ひょっとすると、特に条件は要らないのかも。