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

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

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

指標と仕様

「指標〈signature〉」とほぼ同じ意味の言葉(同義語・類義語)が山のようにあってウンザリするなー、って話は何度かしたことがあります。僕としては、同義語・類義語を使い分けるのは面倒で嫌なので、「指標」だけで済ませたいです。が、「指標」と「仕様」を使い分けるかどうかは、ちょっと悩みます。

内容:

指標の例

最初に具体例を挙げましょう。毎度お馴染みのモノイドの指標です。この指標は集合圏Setで解釈されるとします。集合圏Setは、直積'×'をモノイド積とするモノイド圏とみなし、'I'はそのモノイド単位(同時に終対象)である単元集合です。

signature Monoid {
 sort A
 operation m: A×A→A
 operation i: I→A
 equation assoc:: (m×id_A);m ⇒ (id_A×m);m :A×A×A→A
 equation lunit:: (i×id_A);m ⇒ id_A :A→A
 equation runit:: (id_A)×i;m ⇒ id_A :A→A
}

等式的法則(equationの部分)に出てくる'⇒'は、'='に置き換えてしまってもかまいません。ただし、上の記述は多少不正確で、モノイド圏の結合律子/左単位律子/右単位律子をちゃんと書いてはいません。ここらへんのところは、次の記事とそこから参照されている他の記事を参照してください。

僕は、法則(結合法則、左単位法則、右単位法則)も含めて「モノイドの指標」と呼んでいます。しかし、法則を除いたものを指標と呼び、法則を入れると仕様〈specification〉と呼ぶ人もいます。

インスティチューションの理論などでは、法則が入ってない指標と、法則を入れた仕様を区別したほうが確かに分かりやすいです。なんでもかんでも指標で済ませると、区別したいときに困るような気がします。

多パート指標

トム・レンスター〈Tom Leinster〉は(例えば https://arxiv.org/abs/math/9810017 で)、指標をデータ・パートと公理パートに分けて書いています(書き方はインフォーマルですが*1)。モノイドの指標をパート分けして書き直すと:

signature Monoid {
 Data {
  sort A
  operation m: A×A→A
  operation i: I→A
 }
 Axioms {
  equation assoc:: (m×id_A);m ⇒ (id_A×m);m :A×A×A→A
  equation lunit:: (i×id_A);m ⇒ id_A :A→A
  equation runit:: (id_A)×i;m ⇒ id_A :A→A
 }
}

パートへの分け方やパートの名称などは色々あり得るでしょう。パートに分けないことは、パート分けの特別な場合といえます。

パート分けを持つような指標を多パート指標〈multipart signature〉と呼ぶことにすれば、“指標と仕様の区別”を多パート指標により再現できます。

方法 法則なし 法則あり
指標と仕様を区別する 指標 仕様
多パート指標を使う Axiomsパートを持たない指標 Axiomsパートを持つ指標

Axiomsパートを持たない指標とは、Axiomsパートが空な指標と言っても同じです。

signature Monoid {
 Data {
  sort A
  operation m: A×A→A
  operation i: I→A
 }
 Axioms {
 }
}

台集合と演算だけが定義されて、法則は記述されてません。

多パート指標は入れ子構造を持つ指標なので、もっと深い(二段以上の)入れ子を使ってもいいでしょう。あまり複雑にすると扱いにくくなりますが、指標のパート分け(入れ子構造)を使えば、記述のツールとしての柔軟性が増すでしょう。

*1:[追記]書き方の構文定義を事前にしてないだけで、厳密な書き方だから、インフォーマルというのは違うな。文法を明示しないけどフォーマルな書き方? とかかな。[/追記]

変換手〈transfor〉は要らないだろう

関手や自然変換の高次元バージョンとして変換手〈transfor | トランスフォー〉があります。関手、自然変換、その他の“変換のようなもの”を一律に扱う方針を示した点で、変換手は意義があったと思います。が、新しい言葉としての「変換手」は要らないだろうと思います。

内容:

n-圏

n-圏〈n-category〉とは、対象(0-射)と射(1-射)以外に、2-射、3-射、… n-射までの構成素を持つ圏類似物です。通常の圏は1-圏となります。n-圏の全体からなる圏をn-Catと書きましょう。n-Cat自体は、単なる圏ではなくて(n+1)-圏となります。

実際にn-Catを構成するのは大変です。まず、サイズの問題があります。通常の圏は1-圏だったので、その全体は 1-Cat = Cat になります。Catを小さい圏の全体とすれば、集合圏Set1-Catの対象にはなれません。議論をスムーズに進めるには、次のような系列が欲しいのです。(X ∈0 Y は、X∈|Y| を意味します。)

  • Set = 0-Cat0 1-Cat0 2-Cat0 3-Cat

こういう系列を作れるか? 認めるか? は議論のあるところです。

n-圏は、n種類の結合演算を持ちます。演算が満たすべき法則結合法則など)があります。これらの法則の“弱さ”のバリエーションがたくさんあります。nが増えるとバリエーションは膨大になります。バリエーションをひとつ固定しても、法則を記述することがとても大変。

そういった頭が痛い問題があるのですが、ここでは、詳細は曖昧なままにn-Catというナニカがあるのだ、と前提します。そして、n-Catは、我々が欲しいと思う良い性質を持っていると楽観的に仮定します。

n-関手、n-自然変換、(n, k)-変換手

C, D をn-圏とします。つまり、C, D0 n-Cat です。このとき、n-圏Cからn-圏Dへの関手 F:CD を定義できます。通常の圏の場合より面倒ですが、通常の関手と類似の概念としてn-圏のあいだの関手も定義できます。同様に、F, G:CD が2つの関手のとき、自然変換 α::F⇒G:CD も、通常の自然変換の類似として定義できます。

n-圏のあいだの関手はn-関手〈n-functor〉と呼びます。n-関手のあいだの自然変換はn-自然変換〈n-natural transformation〉です。関手においても、様々な“弱さ”があるので、n-関手もバリエーションがあります。それについては、次の記事を参照してください。

n-圏はn-Catの対象(0-射)、n-関手はn-Catの射(1-射)、n-自然変換はn-Catの2-射になります。この調子で、n-Catの3-射、4-射、… を定義していくことができます。4-射までは名前が付いています。

  • n-Catの3-射 = n-変更〈n-modification〉
  • n-Catの4-射 = n-摂動〈n-perturbation〉

しかし、名前をずっと付け続けられるわけではないので、これらを総称する呼び名として変換手〈transfor〉が定義されました。"natural transformation"の"trans"と、"functor"の"or"をくっつけた造語だそうです。

関手や自然変換などはすべて変換手に統合できます。

  • n-関手 = (n, 0)-変換手
  • n-自然変換 = (n, 1)-変換手
  • n-変更 = (n, 2)-変換手
  • n-摂動 = (n, 3)-変換手
  • (n, 3)-変換手

(n, k)-関手

変換手という概念と言葉をしばらく使ってみたのですが、どうも使いにくい。その主たる原因は番号付けがズレてるせいです。

  • n-Catの1-射 = (n, 0)-変換手
  • n-Catの2-射 = (n, 1)-変換手
  • n-Catの3-射 = (n, 2)-変換手
  • n-Catの4-射 = (n, 3)-変換手

番号を合わせるには、次の言葉を使えばよさそうです。

  • n-Catの1-射 = (n, 1)-関手
  • n-Catの2-射 = (n, 2)-関手
  • n-Catの3-射 = (n, 3)-関手
  • n-Catの4-射 = (n, 4)-関手

n-Catの対象は0-射なので、(n, 0)-関手ということになります。

変換手という新しい言葉を導入せずに、今までと同じ「関手」を使い、番号を付けて次元を識別するわけです。ただし、番号(次元)は二つ必要です、対象である圏の次元nと、n-Catにおける射の次元kです。単に「n-関手」といったら、それは (n, 1)-関手です。

二つの番号で識別された「関手」を使うと、だいぶスッキリします。

微分計算、ラムダ計算、型推論

微分の計算は色々な場面で必要です。が、微分の記号である  \frac{d}{dx} \frac{\partial}{\partial x} が入った式の解釈って難しいですね。式の型〈type〉が分かりにくいのです。実際、原理的に型が判断できない式が使われることがあります。にもかかわらず、「分かる人には分かる」のは、暗黙のお約束や習慣的手順が駆使されるからです。

僕は、暗黙のお約束や習慣的手順が嫌いなので、ハッキリした計算方法を示したいと思います。現状の記法の問題点と対処法を知りたい方は、前半をテキトーに読み飛ばして、後半の3節を読めばいいと思います。

事前にラムダ計算について少し知っているほうがいいでしょう。JavaScriptや絵を使って説明した記事は:

ラムダ計算をJavaScript側に寄せるとどうなるかは(興味があれば):

もっと詳しい構文論(今回はそこまで必要ないけど)は:

内容:

微分計算の構文

この記事の目的は、ちゃんとした形式的体系を構成することではなくて、普通の微分計算の手順を明確化することです。なので、構文に関しては大雑把に記します*1

出てくる基本記号は:

  1. 特定の値を表す定数記号 : 0, 1, -10.2, π(円周率)など
  2. 特定の関数を表す関数記号 : sin, cos, exp, log など
  3. 変数記号(関数を表す変数もある): x, y, a, f, k など

演算子記号も関数記号の一種だとみなします。例えば、足し算の'+'、掛け算の'×'なども関数記号です。演算子記号は、書き方として中置を許す関数記号です。サイン関数の'sin'、対数関数の'log'などは、語(文字の並び)全体でひとつの関数記号です。

基本記号から出発して式(項)を組み立てるやり方は:

  1. 適用: E, F が式のとき EF または E(F) は式になる。
  2. タプル: E1, ..., En がn個の式のとき、(E1, ..., En) は式になる。
  3. ラムダ抽象: Eが式で、ξ1, ..., ξn がn個の変数のとき、λ(ξ1, ..., ξn).E は式になる。

適用 EF とは、Eを関数(を表す式)とみなして、Fでの値を表します。ラムダ計算では、併置(単に並べる)で表しますが、日常的な記法では E(F) が多いでしょう。例を幾つか挙げます。なお、常識的に使っている略記は許すことにします、2×x + 1 を 2x + 1 、x×x + y×y を x2 + y2 とか。

関数 引数 括弧なし適用 括弧あり適用
sin x sin x sin(x)
sin 2x + 1 sin 2x + 1 解釈困難 sin(2x + 1)
f (x, y) f(x, y) f((x, y)) くどい感じ
λ(x, y).(x2 + y2) (1, -1) λ(x, y).(x2 + y2)(1, -1) λ(x, y).(x2 + y2)((1, -1))

[追記][補足]「ニ変数関数と、ペアの一変数関数は違うのではないか?」という疑問はもっともなものであり、実際違います。ただし、これらを区別しなくても問題がない場合が多い、ということです。

いつでも問題がないかというと、そうではありません。「ニ変数関数と、ペアの一変数関数を区別しないとダメ」な状況はあります。そんなときは、n変数関数とn-タプルの1変数関数を区別する計算システムの構文論と意味論を組み立てて使います。今回はその労力をはらっていません。[/補足][/追記]

ここで、構文を論じるときのカナメでありながら混乱しがちな“メタ変数”について注意しておきます。

今話題にしている計算体系で使う変数は、x, y, a, f, k などのラテン文字小文字だとしました。変数が足りなくなったら、x1, x2, x3 のような番号付けもしていいとします。一方、変数を表す変数(メタ変数)には、ξ, η などのギリシャ文字小文字を使用します。ξ1, ξ2 などの下付き添字も使います。変数を表すメタ変数以外に、式〈項〉を表すメタ変数として、E, F, E1, E2 などのラテン文字大文字(と下付き添字)を使います。

メタ変数ξの具体的な値として変数xや変数fがあります。メタ変数Eの具体的な値として式 sin(2x + 1) や 式 x2 + y2 があります。実際に使う“構文”と、構文を記述する“メタ構文”はゴッチャになりがちだし、面倒なのであまり区別しないこともありますが、概念的には別物です。

これから微分計算をする心積もりなので、通常のラムダ計算に次の構文要素を付け加えます。

  1. D1, D2, .... という無限個の作用素記号
  2. Dλ という束縛子〈binder〉記号。

Di(i = 1, 2, ...)の意味は偏微分作用素です。Dλは2文字でひとつの記号です。直後に変数を伴って、変数を束縛します。微分ラムダ束縛子〈differential lambda binder〉と呼んでおきましょう。偏微分作用素微分ラムダ束縛子が使えるようになったので、式(項)を組み立てるやり方も追加します。

  1. 偏微分: E が式のとき DiE は式になる。
  2. 微分ラムダ: E が式、ξが変数のとき、Dλξ.E は式になる。

例えば、D1λx.(x2)、D2λ(x, y).(x2 + y2)、Dλt.(r×sin(at + b)) + 1 などは、すぐ上のルールで作られた式です。一変数関数の微分作用素も、偏微分作用素D1を使います。つまり、d/dx と ∂/∂x は特に区別しない流儀です*2

微分ラムダ束縛子Dλの変数束縛のルールは、通常のラムダ束縛子λと同じです。λまたはDλで束縛された変数を束縛変数〈bound variable〉と呼び、束縛されてない変数を自由変数〈free variable〉と呼びます*3

型システム

前節では型に触れませんでしたが、変数は、すべて型が指定されているとします。変数の型を宣言した形 ξ11, ..., ξNN型コンテキスト〈type context〉、混乱がなければ単にコンテキスト〈context〉と呼びます。ここで、ξ1, ..., ξN はN個の変数、α1, ..., αN はN個の型項(後述)です。

式〈項〉は、常に型コンテキスト付きだとします。式の内部で型が指定されなくても、型コンテキストには型情報が必須です。型が不明の変数は絶対に許しません。束縛変数の型指定は注意が必要です。束縛変数では、(λx.x(0))(λx.(2x + 1)) のように、違った型で同名の変数が使えます。こんなときは、型コンテキストでxの型を指定することはできません。束縛変数をリネーム(アルファ変換〈α-conversion〉ともいう)するか、ラムダ束縛内で型指定をします*4

  • (λx:(R->R).(x(0)))(λx:R.(2x + 1)) (Rは実数の型を表す型記号とする)

型を表す式を型項〈type term〉と呼びます(型式〈かたしき〉でもいいんだけど、「けいしき」と読まれそうなので)。型項を作るための基本記号は:

  1. 特定の型を表すための型定数〈型名〉: 実数型を表すR、ユニット型〈シングルトン型〉を表すI〈大文字アイ〉は入れておきます。他にも適宜追加してかまいません。
  2. 型構成子記号 : ,〈カンマ〉, ->〈アロー〉, ⊗〈テンソル積記号〉, *〈上付きアスタリスク〉, [,]〈ブラケットとカンマ〉, vec〈ベクトル型構成子〉
  3. 補助記号: 丸括弧

型項は、型定数をベースに、型構成子を施して作っていきます。⊗〈テンソル積記号〉, *〈上付きアスタリスク〉が分かりにくいなら無視してしまってかまいません。今回は使いませんから。A, B を追加した型定数だとして型項の例を挙げれば:

  1. R
  2. (A, R)
  3. (A, R)->B
  4. ((A, R)->B)->R
  5. I->(A, B)
  6. vec(A)⊗(R, R)*
  7. A->[vec(A), vec(B)]

型項の意味を記述するために、スコットブラケット〚 〛 を使うことにします。まず、

  1. 〚R〛 = R
  2. 〚I〛 = 1 = {0}

これは、記号'R'の意味は実数の集合R、記号'I'の意味はシングルトン集合 {0} だということです。型項を表すメタ変数にギリシャ文字小文字(の初めのほう)を使うとして、型構成子の意味は:

  1. 〚α, β〛 = 〚α〛×〚β〛 (直積)
  2. 〚α->β〛 = Map(〚α〛, 〚β〛) (写像の集合)
  3. 〚α⊗β〛 = 〚α〛\otimes〚β〛 (ベクトル空間のテンソル積空間)
  4. 〚α*〛 = 〚α〛* (ベクトル空間の双対空間)
  5. 〚[α, β]〛 = LinMap(〚α〛, 〚β〛) (ベクトル空間のあいだの線形写像の空間)
  6. 〚vec(α)〛 = vec(〚α〛) (後述)

これだけでは分かりにくいでしょうね。追加の説明をします。まず、型のなかにベクトル型vector type〉と呼ばれる型があります。型構成子 ⊗(テンソル積空間)、*(双対空間)、[.](線形写像空間)は、ベクトル型に対してしか使えません。組み込みの型定数 R, I はベクトル型(の記号)だとします。他に、ベクトル型(の記号)もベクトル型ではない型(の記号)も必要に応じて追加してかまいません。

今話題にしている計算システム/型システムでは、型の意味はベクトル空間の開集合だとします*5。例えば、追加した型(の記号)Aの意味は次だとしましょう。

  • 〚A〛 = {(x, y)∈R2 | 0 < x < 1, 0 < y < 1}

vec(A) の意味は、Aが含まれる外のベクトル空間のことです*6。つまり、

  • 〚vec(A)〛 = R2

型項αが、もともとベクトル型(ベクトル空間を意味する型)であるなら vec(α) = α です。

他に注意すべきことをザッと述べると:

  1. 3個以上の型項をカンマ区切りで並べたもの(タプル形式)は、3個以上の集合の直積を表します。
  2. 型がベクトル型ならば、カンマをベクトル空間の直和と解釈できます。〚α, β〛 = 〚α〛\oplus〚β〛。最初から構文に直和記号 ⊕ を入れておいてもかまいません。
  3. アローを使った型項 α->β は写像の集合を表しますが、単なる(なんでもいい)写像ではなくて、微分可能性などの条件が付きます。
  4. ベクトル型から、型構成子 ,(直積または直和)、⊗(テンソル積空間)、*(双対空間)、[,](線形写像空間)で作られた型は再びベクトル型になります。

型判断と型推論

型コンテキストを Γ, Δ などのギリシャ文字大文字で表します(これもメタ変数です)。Eを式、αを型項として、Γ ⇒ E :α という形(構文的対象)を型判断〈type judgement〉といいます。論理のシーケントと類似しているので、僕は型シーケント〈type sequent〉とも呼びます。型判断 Γ ⇒ E:α の意味は:

  • 型コンテキストΓのもとで、式Eの型はαである。

例えば、

  • t:R ⇒ (cos(t), sin(t)) : (R, R)
  • 解釈: 変数tの型がR(tは実数変数)ならば、式 (cos(t), sin(t)) の型は (R, R)(実数のペア)である。

ただし、こういう判断ができるためには、cos:R->R, sin:R->R という型宣言も必要です。これもちゃんと書けば:

  • cos:R->R, sin:R->R, t:R ⇒ (cos(t), sin(t)) : (R, R)

この型判断がいきなり出るのではなくて、次のような型判断の推論過程があります。横線の上段にある型判断(複数でもよい)を仮定して、下段の型判断が結論されます。

  cos:R->R, sin:R->R, t:R ⇒ cos:R->R
  cos:R->R, sin:R->R, t:R ⇒ t:R
 ------------------------------------[適用]
  cos:R->R, sin:R->R, t:R ⇒ cos(t):R


  cos:R->R, sin:R->R, t:R ⇒ sin:R->R
  cos:R->R, sin:R->R, t:R ⇒ t:R
 ------------------------------------[適用]
  cos:R->R, sin:R->R, t:R ⇒ sin(t):R


  cos:R->R, sin:R->R, t:R ⇒ cos(t):R
  cos:R->R, sin:R->R, t:R ⇒ sin(t):R
 ----------------------------------------------------[ペア]
  cos:R->R, sin:R->R, t:R ⇒ (cos(t), sin(t)) :(R, R)

上のように横線の上段から下段を導くことを型推論〈type inference〉といいます。型推論の積み重ねは型証明〈type proof〉ですが、型推論と型証明はあまり区別してないようです。我々が「型について考える」とき、頭のなかで型推論/型証明が行われています。

[補足][追記]ここで言っている型推論は、型コンテキストの情報をもとにして、ラムダ式〈ラムダ項〉の型を計算することです。プログラミング言語における型推論では、逆向きの推論をすることがあります -- 型が未知の記号を含む式を見て、その記号の型宣言を生成することです。

プログラミング言語の機能として話題にのぼる「型推論」は逆向きの推論のほうでしょう。コンパイラが型宣言を生成してくれるなら、プログラマの負担が減ります。順方向の型推論だけだと、事前に型宣言が必要なので、プログラマが型宣言を書かなくてはなりません。[/追記][/補足]

基本となる型推論ルールは、式の構成と並行に定義されます。

  Γ ⇒ E :(α->β)
  Γ ⇒ F :α
 ------------------[適用]
  Γ ⇒ E(F) :β


  Γ ⇒ E :α
  Γ ⇒ F :β
 -----------------------[ペア]
  Γ ⇒ (E, F) :(α, β)


  Γ ⇒ ξ :α
  Γ ⇒ E :β
 ---------------------[ラムダ抽象]
  Γ ⇒ λξ.E :α->β

ペアだけではなく、3個以上のタプルも同様な型推論ルールがあります。ラムダ抽象は、複数の変数を使った抽象 λ(ξ1, ..., ξn).E もあり、1変数の抽象と同様な型推論ルールを持ちます。

(単一の変数の)型宣言 ξ:α が型コンテキストΓに入っているとき、

  • Γ ⇒ ξ:α

は、無条件に使ってよい型判断(公理型判断)です。

さて、偏微分微分ラムダ束縛子による抽象の型推論ルールは次のようです。

  Γ ⇒ E :(α_1, ..., α_n)->β
 --------------------------------------------------[偏微分作用素]
  Γ ⇒ D_iE : (α_1, ..., α_n)->[vec(α_i), vec(β)]


  Γ ⇒ ξ :α
  Γ ⇒ E :β
 ----------------------------------[微分ラムダ抽象]
  Γ ⇒ Dλξ.E :α->[vec(α), vec(β)]

偏微分作用素 Di は、(多変数でもよい)関数型の式にしか作用させることはできません。ルールには書いてないですが、i ≦ n という制限もあります。微分λ抽象は、任意の式に対して使ってよいですが、束縛できる変数は1つだけです(その変数がタプル型のときはあるけど)。Dλξ.E は、D1(λξ.E) と同値です。なので、微分ラムダ束縛子はなくてもなんとかなるのですが、入れたほうが断然便利です。

解釈不可能/困難な式の例

通常の微積分に出てくる式で、意味がハッキリしない式の例を挙げましょう。f(x, y) = x2 + xy だとして、 \frac{\partial f}{\partial y}(x, y) はどのように解釈可能かを見てみましょう。

fの型は f:(R, R)->R となります。変数 x, y の型は x:R, y:R です。この前提で、意味のある型判断の例を複数挙げます。(下に出てくる [R, R]は、実数から実数への線形写像の空間の型なので、実数の型Rと同一視してもかまいません。)

  1. f:(R, R)->R, x:R, y:R ⇒ D2f :(R, R)->[R, R]
  2. f:(R, R)->R, x:R, y:R ⇒ (D2f)(x, y) :[R, R]
  3. f:(R, R)->R, x:R, y:R ⇒ Dλy.f(x, y) : R->[R, R]

それぞれの式の意味は:

  1. 2変数関数fを、第2変数に関して偏微分した導関数 λ(x, y).(x) :(R, R)->[R, R]
  2. 導関数 D2f の値(を表す式) x :[R, R]
  3. xを自由変数として(あるいはxを止めて)、1変数関数とみなしたfの導関数 λy.(x) :R->[R, R]

 \frac{\partial f}{\partial y}(x, y) は、この3つのどれを意味するか判断できません。前後の文脈やその他なんらかの“お察し”を駆使しないと、解釈不能です。こういう解釈不能/解釈困難が何段階も重なると、読む者に負担を強いるストレスフルな式になります。

何がダメなのか

 \frac{\partial f}{\partial y}(x, y) という書き方に馴染んでいて使いこなしている人も多いでしょう。しかし、この書き方は本質的にダメなところがあります。fが関数だとすれば、f(x, y) は関数値(この例では実数値)です。関数値に偏微分作用素を作用させることはできない*7ので、 \frac{\partial }{\partial y}(f(x, y)) は型エラーで無意味です。では、 (\frac{\partial f}{\partial y})(x, y) なら合理的かというと、そうではありません。

 \frac{\partial f}{\partial y} は関数fの導関数偏導関数)ですが、fは λ(x, y).(x2 + xy) と同じです。であるなら、次の等式が成立します。

  •  \frac{\partial f}{\partial y} = \frac{\partial }{\partial y}(\lambda(x, y).(x^2 + xy) )

ラムダ束縛した変数名はリネームしてもかまいません。例えば、

  •  \lambda(x, y).(x^2 + xy) = \lambda(y, x).(y^2 + yx) = \lambda(s, t).(s^2 + st)

となると、偏微分作用素  \frac{\partial }{\partial y} の分母のyって何よ!? となりますよね。

  •  \frac{\partial f}{\partial y} = \frac{\partial }{\partial y}(\lambda(x, y).(x^2 + xy) ) ←これはいい
  •  \frac{\partial f}{\partial y} = \frac{\partial }{\partial y}(\lambda(y, x).(y^2 + yx) ) ←あれっ?
  •  \frac{\partial f}{\partial y} = \frac{\partial }{\partial y}(\lambda(s, t).(s^2 + st) ) ←えっ??

記号  \frac{\partial }{\partial y} は、事前に「変数名と変数の順番が固定的に決まっている」という前提で使っているのです。つまり、「yは2番目を意味する」ので  \frac{\partial }{\partial y} = D_2 です。

 \frac{\partial }{\partial y} は、ラムダ変数(関数の引数変数)の名前を固定して、リネーム〈アルファ変換〉を許さない、という約束のもとでしか意味を持たないのです*8

[補足]念の為に注意しておくと、多様体上の偏微分作用素(むしろ方向微分作用素 \frac{\partial }{\partial x^i} では、名前xは固有名詞的意味を持ちます。xは使っている局所座標〈チャート〉を識別する名前なのです。 \frac{\partial }{\partial x^i} の意味は「局所座標xに関するDi」です。リネームした \frac{\partial }{\partial y^i} なら「別な局所座標yに関するDi」です。このリネームはアルファ変換ではなくて、別なものを指す名前に置き換えたのです。

困ったことに、ユークリッド空間の微分計算と多様体微分計算では、同じ記号でも意味と運用ルールがまったく違うのです。[/補足]

どうすればいいのか

多変数関数の型は、(α1, ..., αn)->β のような形をしています。関数の型がハッキリしているなら、偏微分作用素 Di の意味もハッキリします。この偏微分作用素の意味と計算は信用できます。微分作用素に変数名を添えたいなら微分ラムダ束縛子が使えます。

 \frac{\partial }{\partial y} のような偏微分作用素は、直後に関数(関数値ではない!)が置かれたら、適当な番号iに関する Di と解釈し、式が置かれたら、微分ラムダ束縛子として計算します。例:

  •  \frac{\partial }{\partial y}(f) = D_2(f)
  •  \frac{\partial }{\partial y}(x^2 + xy) = D\lambda y.(x^2 + xy) = D_1(\lambda y.(x^2 + xy))

さらに、外側をラムダ束縛した意味を持つ場合もあります(これが一番多いかも)。

  •  \frac{\partial }{\partial y}(x^2 + xy) = \lambda(x, y).( (D\lambda y.(x^2 + xy))(y)) = \lambda(x, y).(D_1(\lambda y.(x^2 + xy))(y))

見やすくするためラムダ変数をリネーム〈アルファ変換〉してみると:

  •  \frac{\partial }{\partial y}(x^2 + xy) = \lambda(x, y).( (D\lambda t.(x^2 + xt))(y)) = \lambda(x, y).(D_1(\lambda t.(x^2 + xt))(y))

関数と関数値の区別/自由変数と束縛変数の区別をちゃんとして、ラムダ抽象/適用/カリー化/反カリー化の操作に沿って式の型を追跡しましょう。そのとき、各種の型推論ルールを使います。型を意識しながら計算すれば、間違いは少なくなります*9


微分公式(ライプニッツの法則とかチェーン法則とか)については触れてないし、計算の具体例もあまり出してませんが、それはまた(いつになるか分からんけど)。

*1:多変数関数とタプル1変数関数の違いなどは、あまり気にしてません。このテの問題は絵(ストリング図)を描かないと説明しにくいですね。

*2:区別することによるメリットより、区別することによる弊害のほうが大きいと思います。「dか∂かは別にどうでもいい」と割り切ったほうがいいでしょう。

*3:変数が束縛なのか自由なのかは、変数名で決まるのではくて、個別の出現〈occurence〉ごとに、束縛出現と自由出現があります。同名の変数が、束縛出現したり自由出現したりすることがあります。変数出現の束縛・自由は、その変数を支配している(スコーピングしている)束縛子がどれか(ないときもある)で決まります。束縛子がなければ自由出現です。

*4:型付きラムダ計算では、束縛変数の型指定はラムダ束縛内で行います。つまり、λ(x, y) ではなくて、λ(x:X, y:Y) のようなラムダ束縛子を使います。型コンテキスト内で束縛変数の型を指定できるようにしているのは、現実的習慣に合わせた変更です。

*5:正確に言うと、型の意味はアフィン線形空間の開集合です。

*6:正確に言うと、外のアフィン線形空間に付随するベクトル空間です。

*7:関数値が関数のときは偏微分できます。が、この例では関数値が実数なので、単一の実数の偏微分は定義できません。

*8:当然ながら、「変数リネームを許さない」なんてルールは破綻します。実際には、「ある範囲では変数リネームを許さない」ですが、「ある範囲」は明示されず、暗黙の範囲を察する能力を要求されます。

*9:プログラミング言語コンパイラが、プログラマの間違いを検出するために型チェックをするのと同じことです。

させていただく

最近は、「させていただく」が誰でも使う普通の言葉になったんですね。

「させていただく」が一般化したのは、そんなに昔じゃないですね。いつ頃かはハッキリ憶えてないですが、政治家の発言で「前向きに検討させていただきます」とか聞いて違和感を感じた記憶があります。もって回った言い方で、有耶無耶に誤魔化そうとしてんじゃないの、と。当時は、政治家特有の言い回しだと思っていました。

「させていただく」は受動っぽいので、「別に自発的じゃないが、そういう状況になったので、しょうがないからやる」「誰かに言われたからやる」みたいに僕は解釈してしまいます。

なので、「参加させていただきます/勉強させていただきます/お話させていただきます」は、「参加します/勉強します/お話します」でいいと思うのだけど、謙譲のニュアンスとしては:

  • 私ごとき者が「参加/勉強/お話」するのもおこがましくもおそれ多いのですが、…

なんでしょう。今や、受動・非自発的ではなく、へりくだりと解釈すべきなんでしょう -- 言葉は変容するものだから。

でもねー、「Aさんを尊敬させていただいています」は、「Aさんを尊敬しています」でいいと思うぞ。

情報幾何の入り口: 雑感と補遺

情報幾何に関係する2つの記事を書きました。

ここしばらく情報幾何に興味が湧いた(そして気分が沸いた)のですが、一過性のマイブームで終わるかも知れません。でも、マイブームは時を経てぶり返すことがあります。いつか参考になる事があるかも知れないので、現時点で分かったこと/思っていることをメモしておきます。続きはないと思いますが、もし間違いがあれば、訂正は追記します。

内容:

幾何的情報幾何と統計的情報幾何

情報幾何を勉強する上でのネックのひとつは、歴史的発展の経緯と現時点で整理された姿にけっこうな乖離があることでしょう。

動機や背景を知りたい、先人の悪戦苦闘を追体験したいということであれば、歴史的発展に沿って学習するのがいいでしょう。しかし、できるだけショートカットをしたいなら、モダンに整理された体系を学ぶほうがいいでしょう。

どちらの方法も問題があります。歴史の追体験では、混乱した紆余曲折の道を辿らなくてはならず労力が大変です。一方の整理された体系は天下りになりがちで実感が湧かず、「はっ? それなに? それがどうした」という気分に陥るでしょう。

現在の情報幾何では、リーマン幾何の延長として、純粋に幾何的な議論だけで済ませられる部門があります。幾何的情報幾何と仮に呼んでおきましょう。それに対して、確率・統計的な意味付けを伴う情報幾何を統計的情報幾何と呼びましょう。

歴史の追体験方式は、統計的直感を頼りに統計的情報幾何に飛び込むことになります。整理された体系方式は、まずは幾何的情報幾何を身につけることになります。先に述べたとおり一長一短ですが、僕の感想としては、この2つの方式は思いの外に隔たっています。

僕自身は、統計的情報幾何が入り口だったのですが、統計的直感・経験がまったく不足しているので、ほぼ何も分からずモヤモヤしていただけでした。後で幾何的情報幾何の存在を知りました。たまたま幾何のほうが多少の馴染みがあったので、個人的には幾何的情報幾何の入り口が入りやすかったです。

入りやすさの感覚は個人差がありますが、幾つかの入り口があることは知っておいたほうがいいでしょう。自分に向いた入り口を選びましょう。

様々な多様体

現時点でも情報幾何の用語法・記法は安定してないので、なにか基準が必要です。「前回記事への訂正・補足: 情報多様体の幾何」で紹介したニールセンのテキスト "An elementary introduction to information geometry" の用語法・記法を基準とします。

情報幾何で扱う多様体を総称的に情報多様体〈information manifold〉と呼ぶとして、それらを分類すると次のような多様体があります(「前回記事への訂正・補足: 情報多様体の幾何」参照)。

  1. リーマン多様体〈Riemannian manifold〉
  2. 共役接続多様体〈conjugate connection manifold〉
  3. 共役接続多様体の1パラメータ族〈1-parameter family of conjugate connection manifolds〉
  4. ラウリッツィン統計多様体〈Lauritzen statistical manifold〉
  5. ダイバージェンス多様体〈divergence manifold〉

他に、期待多様体〈expected manifold〉という種別があります。が、期待多様体とは確率・統計的な文脈で登場する情報多様体のことです。「期待〈expected〉」という形容詞は、幾何的分類とは独立に付けることができます。つまり、次のような期待多様体がありえます。

  1. 期待リーマン多様体〈expected Riemannian manifold〉
  2. 期待共役接続多様体〈expected conjugate connection manifold〉
  3. 期待共役接続多様体の1パラメータ族〈expected 1-parameter family of conjugate connection manifolds〉
  4. 期待ラウリッツィン統計多様体〈expected Lauritzen statistical manifold〉
  5. 期待ダイバージェンス多様体〈expected divergence manifold〉

形容詞「期待」の意味は、多様体に載るリーマン計量/接続/ダイバージェンスなどが、確率・統計の期待値を使って定義されることです。例えば、期待値を使って定義されるフィッシャー情報計量を備えた多様体は期待リーマン多様体です。ただし、リーマン計量だけでは面白くないので、実際には期待共役接続多様体などが対象物になります。

ラウリッツィン統計多様体と黒瀬の対称性条件

ラウリッツィン統計多様体は、リーマン多様体 (M, g) に対して、全対称な共変3階テンソル〈totally symmetric covariant cubic tensor〉Cを添えた構造 (M, g, C) です。共変3階テンソルは、3つのベクトル場 X, Y, Z を引数にしてスカラー場(関数)を値にする複線形写像*1 (X, Y, Z) \mapsto C(X, Y, X) とみなせます。それが全対称とは、X, Y, Z の任意の入れ替え(全部で6通り)に対して値が不変なことです。微分形式は交代テンソルでしたが、Cは対称テンソルです。対称テンソルCを、甘利/チェンソフ・テンソル〈Amari-Chentsov tensor〉と呼びます。

ラウリッツィン統計多様体 (M g, C) から共役接続多様体が構成できる(「前回記事への訂正・補足: 情報多様体の幾何」参照)ので、ラウリッツィン統計多様体と共役接続多様体は同じモノとみなしてかまいません。

ラウリッツィン統計多様体の定義には、甘利/チェンソフ・テンソル以外の定式化があります。リーマン多様体 (M, g) に、(レヴィ・チビタとは限らない)捩れ無し接続〈torsion-free connection〉∇を付けた構造 (M, g, ∇) を考えます。接続∇は、本来はベクトル場の微分ですが、任意のテンソル場に拡張できて、同じ記号∇で表します。

さて、捩れ無し接続∇に、次の条件を課します。

  •  (\nabla_{X}g)(Y, Z) = (\nabla_{Y}g)(X, Z)

 (\nabla_{X}g)(Y, Z) (\nabla g)(X, Y, Z) と3引数で書けば、上の条件は ∇g が X, Y に関して対称性を持つことを意味しています。この条件は、黒瀬(黒瀬俊〈くろせ・たかし〉さん)により提案された*2ので、黒瀬の対称性条件〈Kurose's symmetry condition〉と呼ぶことにします。

捩れ無し接続付きリーマン多様体 (M, g, ∇) が黒瀬の対称性条件を満たせば、甘利/チェンソフ・テンソルを構成できます。逆に、甘利/チェンソフ・テンソルCから定義された接続(共変微分)∇は、黒瀬の対称性条件を満たします。よって、次の2つは、どちらもラウリッツィン統計多様体を定義します。

  1. 甘利/チェンソフ・テンソルCを備えたリーマン多様体 (M, g, C)
  2. 黒瀬の対称性条件を満たす捩れ無し接続∇を備えたリーマン多様体 (M, g, ∇)

情報コントラスト幾何

ニールセンによる情報多様体の分類のなかに、ダイバージェンス多様体がありました。ダイバージェンスは、多様体の2点に対して値をとる実数値関数です。ダイバージェンスは非対称な距離(の二乗)のような役割を果たし、ダイバージェンスから共役接続ペアを構成できます。

江口(江口真透〈えぐち・しんとう〉さん)は、ダイバージェンスをベースにした情報幾何を、情報ダイバージェンス幾何〈information divergence geometry〉と呼んでいます。さらに、ダイバージェンスの一般化であるコントラスト関数〈contrast function〉というものを定義しています*3コントラスト関数をベースにした情報幾何は、情報コントラスト幾何〈information contrast geometry〉といえるでしょう。もっとも、コントラスト関数=一般化されたダイバージェンスを改めてダイバージェンスと定義することも多いようですが。

リーマン多様体 (M, g) のコントラスト関数とは、直積多様体 M×M の対角線 {(p, q)∈M×M | p = q} の開近傍*4で定義された実数値2点関数(多様体の点を一個の変数とみなしての2変数関数)で、ある条件を満たすものです。この条件を記述するために、独特の記法の準備が必要です。この独特の記法、僕には分かりくかったので、別に話題にするかも知れません。

コントラスト関数の定義は割愛しますが、リーマン多様体上のコントラスト関数があると、それから共役接続ペアを定義できます。その逆に、共役接続ペアから(一意的ではないけど)コントラスト関数が構成できるそうです(どうやるかは知らない)。ということは、コントラスト関数付きリーマン多様体と共役接続多様体は、ほぼ同じものだとみなせます。しかし、情報コントラスト幾何では、コントラスト関数を中心にものごとを見ていくことになります。

プライマル接続とパートナー接続

情報多様体を特徴づける著しい性質は、2つの捩れ無し接続を持つことでしょう。共役接続ペアですね。ここで、ペアについてちょっと考えます。

なにかのペアの例として: 線形代数の「ベクトル空間の双対ペア」、圏論の「関手の随伴ペア」、そして情報幾何の「接続の共役ペア」などがあります。ここで出てきた「双対」「随伴」「共役」には、これといった使い分けはなく、テキトーに使われています。実際、情報幾何の「共役」を「双対」と呼ぶこともあります(「双対」のほうが多いかも)。

これらのペアにおいては、どちらがエライとかはなくて、ペアの成員は対等・対称な関係にあります。しかし、ニ者を識別する必要があるので、便宜上・仮にどちらか一方をプライマル〈primal〉と呼びます。そして、プライマルでないほうを(指定したプライマルの)パートナー〈partner〉と呼ぶことにします。

共役接続ペアのときは、∇がプライマル接続で、∇*がパートナー接続です。このケースでは、右肩のアスタリスクは、特定したプライマル接続にパートナー接続を対応させる演算子とみなせます。

なぜなら、∇と∇*が互いに共役であること、

 D_{X}g(Y, X) = g(\nabla_{X} Y, Z) + g(Y, \nabla^{*}_{X} Z)

は、∇から∇*を定義する定義式とみなせるからです。

 \mbox{For any Y,}\:\: g(Y, \nabla^{*}_{X} Z) := D_{X}g(Y, X) - g(\nabla_{X} Y, Z)

この定義式から、対応 (∇ \mapsto*) を二度繰り返すともとに戻ることが分かります。

  • (∇*)* = ∇

∇が捩れ無しでも∇*も捩れ無しとは限りません。∇と∇*が共に捩れ無しになる条件が黒瀬の対称性条件です。

リーマン計量のレヴィ・チビタ接続は、捩れ無しで自己共役条件 ∇* = ∇ を満たす唯一の接続です。別な言い方をすると、捩れ無し接続の空間に制限した、パートナー接続を対応させる作用素 (-)* に対する不動点がレヴィ・チビタ接続になっています。

期待多様体 再論

期待多様体とは、統計的文脈で登場する情報多様体、つまり統計的情報幾何で扱う対象物です。「期待」という形容詞はニールセンによりますが、「期待値が絡んでいる」ことを示唆しています。

期待値の値(実数値)より、期待値を対応させる作用素が問題になるので、この話を先にします。状況設定は次のよう: (X, ΣX, Λ) を測度空間とします。測度Λは確率測度とは限りません。記号の乱用で X = (X, ΣX, Λ) と略記します。また、測度Λを抜いた可測空間 (X, ΣX) も単にXと略記します。さらに、次の記号の約束をします。

  • IF(X) = IF(X, ΣX, Λ) : 測度空間 (X, ΣX, Λ) の、測度Λに関して積分可能な実数値関数〈Integrable Function〉の全体。必要があれば、追加の条件を付けて扱う関数を絞ってもよい。
  • PM(X) = PM(X, ΣX) : 可測空間 (X, ΣX) 上の確率測度〈Probability Measure〉の全体。
  • PDF(X) = PDF(X, ΣX, Λ) :測度空間 (X, ΣX, Λ) の、測度Λに関する確率密度関数〈Probability Density Function〉の全体。値は非負で積分値が1の積分可能関数の全体。PDF(X)⊆IF(X) 。

確率密度関数 f∈PDF(X) があると、Ef:IF(X)→R を次のように定義します。

  •  E_f := \lambda g\in IF(X).( \int_{x \in X} g(x)f(x)\Lambda(dx) )

右辺冒頭のλは、ラムダ記法のλです。Λ(dx) を単に dx と書いてアロー記法(ラムダ記法の変種)で書くなら、

  •  E_f := (IF(X) \ni g \mapsto ( \int_{x \in X} g(x)f(x)\,dx ) )

Ef を、確率密度関数fに対する期待値作用素〈expected-value operator〉または期待値汎関数〈expected-value functional〉と呼ぶことにします。期待値作用素は、fで重み付けした積分のことです。(PDF(X)∋f \mapsto Ef∈Map(IF(X), R)) という対応は、確率密度関数に期待値作用素を割り当てます。

次に、確率密度関数の空間PDF(X)に値を取るパラメトリック統計モデルを考えます。パラメトリック統計モデルは、ユークリッド空間Rnの開集合ΘからPDF(X)への写像 p:Θ→PDF(X) で、正則性(非特異性)の条件を満たすものです(正則性条件については割愛)。

p:Θ→PDF(X), E:PDF(X)→Map(IF(X), R) を結合すると、E\circp:Θ→Map(IF(X), R) ができます。θ∈Θ に対する Ep(θ) を、(pは了解されているものとして)Eθ と略記します。パラメータθごとの期待値作用素 Eθ が、期待多様体の定義に使われます。

もうひとつの記号μθも定義しておくと便利かも知れません。θ∈Θ に対する確率密度関数 p(θ)∈PDF(X) は、自然に確率測度とみなせるので、それをμθと書きます。具体的には:

  •  \mu_{\theta} := \lambda A\in \Sigma_X .(\int_{x \in A} p(\theta)(x) \,dx)

これは、事象Aの確率を求める通常の定義です。集合Aの指示関数〈indicator function | 特性関数〉を χA とすると、次が成立します。

  • μθ(A) = EθA)

記号の乱用により、同じ記号pに対して幾つかの書き方を使います。

  • p(θ)(x) = pθ(x) = p(x, θ)

pを2変数とみなすとき、p(θ, x) ではなくて p(x, θ) なのは単なる習慣です。なんかぎこちない書き方ですが、習慣なので…。p(x, θ) を p(x; θ), p(x|θ) などと書く習慣もありますが、ここでは使いません。

パラメトリック統計モデル p:Θ→PDF(X), 期待値作用素 Eθ を実際に使う事例は次節で述べます。

情報幾何の源泉である事例

前節の状況設定で期待多様体を考えます。期待多様体Mは、点集合としては空間PDF(X)の部分集合だとします。

  • M⊆PDF(X)

点集合Mには、なんらかの方法により多様体としての位相が入っているとします。Mの点uは、関数でもあるので、x∈X に対して値 u(x)∈R を持ちます。これは、純粋に幾何的状況(点は点であって、点以外の何物でもない状況)とは異なる設定です。

さらに、p:Θ→M⊆PDF(X) であるパラメトリック統計モデル(のパラメータ付け)pを考えます。pの像集合 P(Θ) をUと置き、次の仮定をします。

  1. UはMの開集合である。
  2. UとΘは、pにより1:1に対応する。
  3. したがって、pの逆写像 φ:U→Θ が存在する。
  4. (U, φ) は多様体Mの局所座標〈チャート〉になる。

この仮定により、「確率密度関数パラメトリック統計モデル=期待多様体の局所座標」という解釈ができます。期待多様体の議論では、特定の局所座標=パラメトリック統計モデルに強く依存してしまい、座標独立〈coordinate-free〉な方法は難しいようです。局所座標(パラメータ付け)も多様体構造の一部と考えるのがいいのかも知れません。

一般に、情報多様体を構成する幾何的構造には次のものがあります。

  1. リーマン計量
  2. コントラスト関数〈一般化ダイバージェンス
  3. 共役接続ペアのプライマル接続
  4. 共役接続ペアのパートナー接続

今述べた状況設定における典型的な期待多様体の場合では、これらは次の表のようになります。これらは、勝手に選べるものではなくて相互に強く関連しています。

一般の情報多様体 期待多様体の典型例
リーマン計量 フィッシャー情報計量
コントラスト関数 カルバック/ライブラー・ダイバージェンス
共役接続ペアのプライマル接続 e-接続
共役接続ペアのパートナー接続 m-接続

フィッシャー情報計量〈Fisher information metric〉の定義を具体的に見てみましょう。その準備として、n個のスコア関数〈score function〉si:X×Θ→R (i = 1, 2, ..., n) を次のように定義します。

  •  s_i := \lambda(x, \theta)\in X \times \Theta.([\frac{\partial}{\partial \xi_i} \log p(x, \xi)]_{\xi = \theta} )

第iスコア関数 si は、「データxの、確率分布(密度関数)pθに対する対数尤度関数」を、パラメータのi番目の方向に偏微分した量です。スコア関数 si は2変数関数ですが、パラメータ付けpと同様に、次の書き方を許します。

  • si(x, θ) = si,θ(x) = si(θ)(x)

si達を、縦に並べた1列行列をsとします。その転置行列sTとの行列積 s(sT) は n×n 行列になります*5。この行列をGとして行列のi行j列成分を書けば:

  •  G_{ij}(x, \theta) = s_i(x, \theta)s_j(x, \theta)

行列の各成分は、2変数の関数です。Eθ(λx∈X.Gij(x, θ)) と期待値作用素を作用させると、変数xは消えてしまい、変数θだけが残ります。

  •  \Theta \ni \theta \mapsto E_{\theta}(\lambda x\in X.G_{ij}(x, \theta))

変数θだけを含んだ行列 gij を、

  •  g_{ij} := \lambda \theta \in \Theta.E_{\theta}(\lambda x\in X.G_{ij}(x, \theta))

と定義すれば、これはΘ上の計量行列(計量テンソル)になります。

期待多様体Mの開集合Uは、ユークリッド空間の開集合Θと1:1に対応しているので、Θ上のリーマン計量gを、局所座標写像φにより引き戻せば、U上の計量が得られます。

期待多様体Mの開集合Uに計量が入りましたが、天下りの定義をしただけで、統計的な意味には触れてません(僕はよく分かってないです)。歴史的には、統計のなかでフィッシャー情報行列やカルバック/ライブラー・ダイバージェンスが現れ、後になって幾何的意味が与えられたはずです。

以上、さわり(計量の導入)だけ述べた事例は、統計的情報幾何の典型的かつ重要な事例です。幾何的定義だけではなくて、その統計的な意味も調べるとよいでしょう(って、僕は調べてないけど(苦笑))。

*1:実数係数に対して複線形なだけではなくて、なめらかな関数を係数としても複線形です。

*2:Kurose, T. (1994). On the divergences of 1 conformally flat statistical manifolds, Tohoku Math J46 , 427-433.

*3:Eguchi, S. (1992). Geometry of minimum contrast, Hiroshima Math J22 , 631-647.

*4:Mはハウスドルフ空間なので、対角線は直積位相で閉集合になります。

*5:この行列は、線形写像の表現ではなくて、二次形式の表現とみなすべきです。

ヘッダに連絡先を追加

ブログタイトルのすぐ下のヘッダを追加しました。twitterアカウンとメールアドレスを載せています。以前のはてなダイアリーのとき、同様のヘッダを付けていたのですが、引越し後はヘッダ無しでした。

ヘッダを追加した理由は:
2019年8月2日の記事に次のようなコメントが付いてました。(一部伏せ字と省略)

檜山さん。とても長い年月(20年)ご無沙汰しております。☓☓☓に住んでいました。☓☓☓の事でお会いした事があります。[...snip...] 連絡先がわからなくて、やっとこちらに辿り着きました。[...snip...]

このコメントは削除しました(連絡目的で個人情報が含まれますから)。

検索などでこのブログにたどりついて、連絡先を知りたい人が稀にはいるようなので、ヘッダに連絡先を書くことにしたのです。

[追記 date="2019-08-20"]メールを送っていただいても、迷惑メール・フォルダに直行してしまうことがあったので、注意書きを追加しました。

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

[/追記]

前回記事への訂正・補足: 情報多様体の幾何

前回(2019-08-02)書いた記事「多様体と確率・統計: 情報幾何の入り口まで」は、情報幾何の入り口としてはあまり適切じゃない点があるので、それを訂正・補足します。

訂正内容を一言でいえば:

補足内容を一言でいえば:

  • 情報幾何に登場する多様体ってイッパイあるわ、紹介しとくね。

です。

内容:

ことの発端と経緯

以下の三つの記事は一連のものです。

  1. 今井健男さんの「計算機科学から見たディープラーニング」
  2. ディープラーニングの論理:: シャープネスと外延化
  3. 多様体と確率・統計: 情報幾何の入り口まで

三番目の記事はディープラーニングとは別な話題のようですが、ディープラーニング絡みと言えるのです。もう去年のことですが、id:bonotakeさんとのあいだで情報幾何の話題がちょっと出ました。それで僕は「機械学習ディープラーニングと情報幾何はなんか関係あるらしい」と知ったのです。

しかし、情報幾何の教科書を読む気はなかったので(今でもない(苦笑))、短い入門的解説を読んで:

そもそも何を扱っているのか分かりませんでした。「各点が確率分布である多様体」とだけ言われても、「各点」や「確率分布」の意味が曖昧だと、確実な幾何的対象物が把握できません。

という状況だったんですね。そのことを思い出して、三番目の記事を書いたのでした。

情報幾何で扱う対象物は、「各点が確率分布であるような多様体」であるという説明は割とよく見ると思います。例えば、僕が読んだ短い解説に次の一文がありました。

We consider each distribution as a point on a Riemannian manifold.


各確率分布をリーマン多様体の一点であると考えよう。

こういう説明は曖昧なだけでなくミスリーディングかも知れません。bonotakeさんによれば、統計多様体は単に付加的構造が付いたリーマン多様体と理解したほうが良いとのことです。僕は、統計多様体の「各点が確率分布である」ことに主眼を置いていましたが、むしろ「各点が確率分布である」ことは忘れるべきだったようです。

テキストはニールセン論説

前回の記事にて:

ちゃんと探せばキチンとした定義があるんでしょうが、ザッと見たかぎりでは曖昧な定義しかなかったので、統計多様体の定義を書き下してみました。

短い入門的解説よりシッカリとしたテキストを探してみました。bonotakeさんの記事「情報幾何わかった気になった」で紹介されているコチラ:

これを斜め読みすることに。

このテキスト(解説論文)の著者であるニールセンさんは、現在は日本のソニーコンピュータサイエンス研究所にいらっしゃるようです。

微分幾何としての情報幾何

情報幾何の起源や歴史から言えば、「各点が確率分布である多様体」を扱っていたのは事実でしょう。しかし、情報幾何の動機・目的・経緯などをいったんは無視して、現在の視点から整理するなら、確率・統計的な概念をすべて抜き去った、純粋な幾何学としての情報幾何もありえます。例えば、統計多様体に関するニールセンの記述に:

although it bears the name "statistical manifold," it is a purely geometric construction that may be used outside of the field of Statistics.


「統計多様体」という名前ではあるが、統計の分野以外でも使える純粋に幾何的な構成物である。

確率・統計的な概念をすべて抜き去ったら、魂のない形骸しか残らないと思う人もいるでしょうが、概念の相互関係を整理するために「抜き去る」だけです。情報幾何が純粋な幾何だと言うつもりはありません

情報幾何で扱う幾何的対象物を、ニールセンは端的に「情報多様体〈information manifold〉」と呼んでいます。ただし、これが情報多様体だ、という定義があるわけではなく、いくつかの種類の多様体を総称的に情報多様体と呼びます。

  • 情報多様体〈information manifolds〉 = 情報幾何的多様体〈information-geometric manifolds〉

情報多様体は、リーマン多様体の延長線上にあるもので、リーマン多様体自身も特別な情報多様体として扱います。幾つかの情報多様体の種別を挙げれば:

  1. リーマン多様体〈Riemannian manifold〉
  2. 共役接続多様体〈conjugate connection manifold〉
  3. 共役接続多様体の1パラメータ族〈1-parameter family of conjugate connection manifolds〉
  4. ラウリッツィン統計多様体〈Lauritzen statistical manifold〉
  5. ダイバージェンス多様体〈divergence manifold〉

これらの分類はニールセンによるものですが、彼は「統計多様体」を狭い意味で使っているので、念のため人名「ラウリッツィン〈Stefan L. Lauritzen〉」を(檜山が)付けました。こういう分類や呼称は、まだ安定しているわけではないので、あくまで一例として捉えてください。

[補足]"An elementary introduction to information geometry"のなかでの統計多様体はラウリッツィン統計多様体ですが、ニールセンの別な論文(https://arxiv.org/abs/1905.11027)のなかでは:

The term “statistical manifold” refers to the space M = {p(X | Θ)} where each point corresponds to a probability distribution p(X | Θ).

と書いています。つまり、「各点が確率分布である多様体」を統計多様体と呼んでいます。これは後述の期待多様体のことです。同じ著者でも論文ごとに用語法を変えているくらいですから、「統計多様体」の広く合意された定義はありませんね。[/補足]

共役接続多様体とその1パラメータ族

前節で挙げた諸々の情報多様体のなかで、典型的・中心的なものをひとつ選べと言われれば、おそらくは共役接続多様体を選ぶべきでしょう。共役接続多様体は、共役な接続ペアを備えたリーマン多様体です。

多様体の接続(接バンドルの接続=アフィン接続)は、色々な(互いに同値な)定義の仕方があります。ニールセンのテキストでは次の2つの方法が使われています。

  1. 共変微分∇ : 2つのベクトル場 X, Y に対して第三のベクトル場を返す微分作用素 (X, Y) \mapstoXY
  2. 接ベクトルの平行移動 : 点pの接ベクトルvを、曲線cに沿って点qまで移動するメカニズム

ニールセンは、接続のプライマリな定義を共変微分∇として、∇から誘導される平行移動を Π と書いています。ちなみに、平行移動から共変微分を導く手順は次の記事に書いてあります(情報幾何とは無関係な記事です)。

微分幾何では通常、(計量があるとは限らない)多様体Mに対して単一の接続(共変微分)∇を考えて、接続付き多様体 (M, ∇) を扱います。リーマン多様体の場合は、計量gから自動的に決まるレヴィ・チヴィタ接続〈Levi-Civita connection〉LC∇ を考えて、(M, g, LC∇) を接続付きリーマン多様体とします。

情報幾何では、リーマン多様体複数の接続を同時に考えます。これは、(幾何としての)情報幾何に特有な発想でしょう。2つの接続(共変微分)を備えたリーマン多様体 (M, g, ∇, ∇*) が共役接続多様体〈conjugate connection manifold〉です。もちろん、まったく勝手な2つの接続なのではなくて、名前から察せられる共役性〈conjugacy〉の条件が付きます。

接続のペア ∇, ∇* が互いに共役であるとは、ペアでライプニッツ法則を満たすことです。準備としてライプニッツ法則の説明; 単一の∇が、計量gに対してライプニッツ法則(積の微分法則)を満たすとは、次の等式が成立することです。

 D_{X}g(Y, X) = g(\nabla_{X} Y, Z) + g(Y, \nabla_{X} Z)

X, Y, Z はベクトル場で、DXは関数のX方向への方向微分です。DXは単にXと書かれることが多いです。

さて、∇, ∇*共役〈conjugate〉だとは、∇, ∇*分担作業でライプニッツ法則が成立することですから、次の等式になります。

 D_{X}g(Y, X) = g(\nabla_{X} Y, Z) + g(Y, \nabla^{*}_{X} Z)

計量gのレヴィ・チヴィタ接続 LC∇ に対して、∇ := LC∇, ∇* := LC∇ と置けば、すぐ上の共役ライプニッツ法則を満たすので、(M, g, LC∇, LC∇) は共役接続多様体になります。これが、リーマン多様体も特別な(退化した)情報多様体とみなしていい理由です。

共役なペア ∇, ∇* から誘導される2つの平行移動 Π, Π* を一緒に使うと、ベクトルの内積は保存されます。これは、c:R⊇I → M (0∈I)を曲線(なめらかなパス)として、t∈I に対して次が成立することです。

 g_{c(0)}(u, v) =
      g_{c(t)}( \prod^{\nabla}_{c(0) \rightarrow c(t)}u\, ,
                \prod^{\nabla^{*}}_{c(0) \rightarrow c(t)} v)

実数でパラメータ付けられた共役接続多様体の族 (M, g, ∇, ∇α)α∈R を、共役接続多様体の1パラメータ族〈1-parameter family of conjugate connection manifolds〉といいます。任意の実数αに対して、∇, ∇α は共役な接続ペアになります。特に、∇-1, ∇1 は共役なペアです。

(M, g, ∇, ∇*) が共役接続多様体のとき、∇-1 = ∇, ∇1 = ∇* となるような1パラメータ族 (M, g, ∇α)α∈R が構成できます。このことから、単一の共役接続多様体と、共役接続多様体の1パラメータ族は、実質的には同じものとみなせます。

ラウリッツィン統計多様体ダイバージェンス多様体

「統計多様体」という言葉を最初に使った人はステファン・ラウリッツィン〈Stefan L. Lauritzen〉だったようです。ラウリッツィンによる統計多様体〈statistical manifold〉の定義は、甘利/チェンソフ・テンソル〈Amari-Chentsov tensor〉と呼ばれる共変3階テンソルCを備えたリーマン多様体 (M, g, C) です。共変3階テンソルCは、3つのベクトル場引数に対して、スカラー場(関数)を対応させる複線形写像で、3つの引数をどう交換しても値が不変なこと(全対称〈totally symmetric〉テンソルであること)を要求します。

用語「統計多様体」を、ラウリッツィンのオリジナルの意味で使っている人は少ないような気がします。「統計」+「多様体」という語の成り立ちから容易に拡大解釈が出来るので、今では多義語・曖昧語になってしまったようです。

共役接続多様体 (M, g, ∇, ∇*) があると、∇, ∇*微分作用素としての差をリーマン計量を通じて計った量を次のように定義できます。

 C(X, Y, -) := g(\nabla_X Y - \nabla^{*}_X Y, -)

これにより、「共役接続多様体 → ラウリッツィン統計多様体」という対応が作れます。

一方で、「ラウリッツィン統計多様体 → 共役接続多様体の1パラメータ族」という対応は、次の定義で構成できます。

 g(\nabla^{\alpha}_X Y, Z) \,:=\, g(^{LC}\nabla_X Y, Z) + \frac{\alpha}{2}C(X, Y, Z)

ここで、LC∇ はレヴィ・チビタ接続、αは任意の実数です。

共役接続多様体の1パラメータ族と共役接続多様体は事実上同じものだったので、次の三者はあまり区別しなくてもよいことになります。

  1. 共役接続多様体
  2. 共役接続多様体の1パラメータ族
  3. ラウリッツィン統計多様体

共役接続多様体を構成する方法として、ダイバージェンス〈divergence〉と呼ばれる多様体上の非対称距離(リーマン計量とは違う概念)から接続を定義する方法があります。ダイバージェンスDを備えた多様体 (M, D) があると、それから共役接続多様体 (M, Dg, D∇, D*) が構成できます。したがって、共役接続多様体の1パラメータ族とラウリッツィン統計多様体も構成できます。

ダイバージェンスを備えた多様体 (M, D) 、またはそれから作られた共役接続多様体 (M, Dg, D∇, D*) がダイバージェンス多様体〈divergence manifold〉です。ダイバージェンス多様体は、共役接続構造以外にダイバージェンスという距離類似構造があるので、それを使った(非対称な)距離幾何学が出来ることになります。

期待多様体

期待多様体〈expected manifold〉とは、計量や接続の定義に、確率・統計の期待値〈expected value〉が使われるものです。期待多様体は、古典的な情報幾何の対象物、あるいは「各点が確率分布である多様体」のことです。

期待多様体のリーマン計量は、フィッシャー情報計量〈Fisher information metric〉になります。情報幾何の起源とも言える計量です。共役接続ペア(の族)を作る場合も期待値を使います。期待値が関与するということは、パラメトリック統計モデルの文脈のなかで期待多様体が登場することです。純粋な幾何的文脈では期待多様体を定義できません。

僕が、「多様体と確率・統計: 情報幾何の入り口まで」で“統計多様体”と呼んだものは、期待多様体の下部構造、つまり、期待多様体からフィッシャー計量と共役接続ペアを除いた(なめらかな)パラメトリック統計モデルです。

期待多様体という種別は、幾何構造としての種別ではなくて、共役接続多様体が実現される状況/構成の仕方に注目した種別です。多様体を、純幾何的文脈で捉えるか、確率・統計的文脈で捉えるかの違いは、混乱を避けるには必要な視点でしょう。

ニールセンは、ラウリッツィン統計多様体を単に統計多様体と呼んでいるので、「確率・統計的」の意味で「期待」を形容詞にしたのでしょう。「期待多様体」という言葉が普及定着するかどうかは分かりませんが、純幾何的文脈と確率・統計的文脈を区別する言葉は欲しいですね。

おわりに

僕は「統計多様体」という言葉を、情報幾何の中心からはだいぶ外れた意味で使ってしまったのですが、実際、「各点が確率分布である多様体」の意味で「統計多様体」を使う人もいます。また、純幾何的な共役接続多様体を「統計多様体」と呼ぶ人もいます。ニールセンの情報多様体のように、漠然とした意味で「統計多様体」を使う人もいるでしょう。コミュニケーションには注意が必要です。

確率・統計的文脈で情報幾何を使うにしても(たいていはそうでしょうが)、概念の整理のために、いったんは純幾何的文脈で考えてみるのは有効な気がします。

多様体と確率・統計: 情報幾何の入り口まで

確率・統計の文脈で多様体が登場することがあります。最近、増えているような気がします(僕の印象では)。典型的な登場の仕方が二種類あります。ひとつは確率空間の台空間〈underlying space〉として、もうひとつは統計多様体〈statistical manifold〉としてです。統計多様体は情報幾何〈information geometry〉で扱う対象物です。

[追記]この記事における統計多様体の定義が適切ではないので、訂正・補足しました。

[/追記]

内容:

確率空間と確率変数の復習

確率空間〈probability space〉を (Ω, Σ, μ) と書きます。ここで:

  1. Ωは集合、確率空間の台集合〈underlying set〉と呼びましょう。Ωを「標本空間」とは呼ばない理由は「超曖昧語「母集団」「標本」にケリをつける // 補足」に書いてあります。
  2. Σは、Ω上のシグマ代数です。(Ω, Σ) は可測空間になります。
  3. μは、可測空間 (Ω, Σ) 上で定義された確率測度です。

A = (ΩA, ΣA, μA) が確率空間で、B = (ΩB, ΣB) が可測空間のとき、可測写像 f:ΩA→ΩB確率変数〈{random | stochastic} variable〉と呼びます。「確率変数」という呼び名は不適切ですが、まー致し方ない。気になる方は次の記事をどうぞ。

確率変数 f:ΩA→ΩB があると、(ΩB, ΣB) 上の確率測度 f*A) (前送り測度と呼ぶ)が誘導されます。μB := f*A) と置けば、(ΩB, ΣB, μB) は確率空間になります。

確率測度μBがfで誘導されたのではなくて、最初からμBがあったと考えると、fは、確率空間のあいだの測度を保存する可測写像となります。このことから、確率変数とは“確率空間のあいだの準同型写像”だと定義することもできます。

以下、確率空間/可測空間に関して、A = (A, ΣA, μA), B = (B, ΣB) のような記号の乱用も使います。

可測空間Xに対して、PM(X) をX上の確率測度全体からなる集合とします。可測写像 f:X→Y に対して、測度の前送り写像 f*:PM(X)→PM(Y) が定義できます。そこで、

  • PM(f) := f* : PM(X)→PM(Y)

とすると、PM:MeasSet は(共変)関手となります。ここで、Measは可測空間と可測写像の圏、Setは集合と写像の圏です。

PM(X)に可測空間の構造を入れることができて、それによりPMは圏Meas上の自己関手 PM:MeasMeas になります。さらには、自己関手PM上にモナドを構成することができます。このモナドリィモナド〈Giry monad〉と呼ばれます。ジリィモナドに関する記事は次の検索でリストできます。

可測空間X上の確率分布とは、確率測度のことなので、PM(X)の要素のことです。しかし、なにか(あまりハッキリしない)ニュアンスが付くことがあります。そのへんのことは次の記事を参照してください。

確率空間の台としての多様体

A = (A, ΣA, μA) が確率空間のとき、台集合A(記号の乱用で確率空間と同じ記号)が単なる集合ではなくてなんらかの構造を持っていることがあります。例えば、Aが位相空間であることは多いです。

Aが位相空間のとき、ΣAが位相と無関係では面白くないので、ΣAとして、Aの開集合全体から生成されたシグマ代数(ボレル代数)をとります。測度構造以外に位相構造もあるので、位相を使った議論ができるようになります。

さらに、Aが単なる位相空間ではなくて多様体の場合を考えることもできるでしょう。これが、確率・統計における「多様体の登場の仕方その一」です。以下、多様体っぽく'M'という文字を使って、M = (M, ΣM, μM) を多様体上の確率空間とします。

多様体Mは位相空間でもあるので、ΣMはMのボレル代数とします。確率測度μMは、密度関数を持つモノが扱いやすいでしょう。密度関数は、基準となる標準測度がないと定義できません。多様体M上の標準的な測度とは何でしょう?

Mにリーマン計量gがあれば、リーマン多様体 (M, g) の体積形式 vol(M, g) がとれます。vol(M, g)による関数pの積分は次のように書けます。

  •  \int_{x\in M} p(x)\,vol_{(M, g)}(dx)

pを密度関数だと思って、可測集合 S⊆M の測度は次のように定義できます。

  •  \mu_M(S) := \int_{x\in S} p(x)\,vol_{(M, g)}(dx)

このセッティングのもとで、“確率分布”を「体積形式に関する密度関数を持つ確率測度」の意味で使っても悪くはないでしょう。

A = (A, ΣA, μA) を(多様体とは限らない)一般的な確率空間として、(M, ΣM) は多様体M上の可測空間とします。確率変数 f:A→M を考えることができます。この場合、多様体は、確率変数が値をとる空間として使われます。

例えば、Pを(ある時点での)人類全体からなる母集団とします(母集団に関しては「超曖昧語「母集団」「標本」にケリをつける」参照)。地球を2次元球面 S2 でモデル化して、f:P→S2 を各人が住んでいる地球上の位置を対応させる写像とします。すると、fは多様体 S2 に値をとる確率変数(母集団Pの変量)となります。Pが有限集合なので、そのままではfは“有限離散分布”です。fによる分布(前送り測度)をなめらかな関数pで近似すれば、人口密度関数pによる積分は、S2 の確率測度=確率分布を与えます。この確率測度は、S2の事象=地域に対して、人がどの程度住んでいるかの比率を与えます。

統計多様体

前節の例では、多様体は確率測度を載せる台となる空間でした。それとは別に、情報幾何の文脈で出てくる多様体があります。「多様体の登場の仕方そのニ」ですね。情報幾何が対象とする多様体を統計多様体と呼びます。ただし、「統計多様体」の定義は人により違うようです。ここでは、次の方針を採用します。

  1. パラメータ付け(埋め込み写像)込みで統計多様体を定義する。
  2. パラメータ付けのなめらかさの定義には汎関数族を使う。
  3. リーマン計量や接続は、統計多様体の定義に含めない。

統計多様体とは何かを大雑把に一言でいえば:

  • 各点が確率分布であるような多様体

ここでまた、「確率分布とは何か?」が問題になります。前節では、「確率分布=密度関数を持つ確率測度」というセッティングを例に出しました。が、確率分布の定義はケースバイケースです。なんらかの定義による「X上の確率分布」の全体を PD(X) とすると、次は確実です。

  • PD(X)はPM(X)への埋め込み写像を持つ。

これは、次のように考えてもいいでしょう。

  • PD(X)⊆PM(X) 確率分布の全体は、確率測度の全体の部分集合になる

PD(X)に可測空間や位相空間の構造を持たせるかも知れません。が、これもケースバイケースでなんとも言えません。統計多様体の定義のために、確率分布の空間PD(X)上で定義された“なめらかな関数”の概念が欲しいのですが、どうしたものでしょう?

ここではかなり安易な方法をとります。φ:PD(X)→R の形の関数を統計汎関数〈statistical functional〉、あるいは(誤解の恐れがなければ)単に汎関数と呼びます。Φを汎関数の集合(族)だとします。

  • φ∈Φ ならば、φ:PD(X)→R

PD(X)に汎関数の族Φを添えた構造 (PD(X), Φ) を考えます。例えば、

  • Xが測度空間として、密度関数pを持つ確率測度の全体をPD(X)とする。
  • a∈X に対して、(密度関数p |→ p(a) ∈R) で決まる汎関数の全体をΦとする。

(PD(X), Φ) に関して、ψ:PD(X)→Rなめらかな{関数 | 汎関数}〈smooth {function | functional}〉だとは次のことだとします。

  • 有限個の汎関数 φ1, ..., φn ∈Φ と、(普通の)なめらかな関数 g:RnR があって、
    ψ(x) = g(φ1(x), ..., φn(x)) と書ける。

(PD(X), Φ)上のなめらかな関数の全体を C(PD(X), Φ) とします。

以上で準備ができました。統計多様体を定義しましょう。

「各点が確率分布である」ためには、統計多様体が確率分布の空間PD(X)の部分集合であればいいのですが、PD(X)の外部に多様体があっても、PD(X)内への埋め込み写像を持てばいいでしょう。そこで、統計多様体〈statistical manifold〉を (M, ι) として定義します。ここで:

  1. Mは普通の多様体である。
  2. ι:M→PD(X) は単射写像である。
  3. ιは“なめらか”である。

最後の“なめらか”の意味は:

  • ψ∈C(PD(X), Φ) ならば、ψ\circι:M→R は普通の意味でなめらか(無限階微分可能)である。

C(PD(X), Φ) はΦで生成されているので、次の条件でもかまいません。

  • ψ∈Φ ならば、ψ\circι:M→R は普通の意味でなめらかである。

統計多様体 (M, ι) において、Mをパラメータ{多様体 | 空間}〈parameter {manifold | space}〉、ιをパラメータ付け〈parametrization〉といいます。パラメータ多様体MがユークリッドRnの開集合 U⊆Rn のとき、ι:U→PD(X) は通常のパラメトリック統計モデルになります。その典型例はガウス・モデルです。

必要があれば(たいてい必要です)、パラメータ多様体Mにリーマン計量や接続を入れます。そのとき、Mだけではなくて、確率分布の空間PD(X)や埋め込み写像ιの性質を考慮したり使ったりします。

おわりに

「情報幾何って何だろう?」と調べたことがあるのですが、そもそも何を扱っているのか分かりませんでした。「各点が確率分布である多様体」とだけ言われても、「各点」や「確率分布」の意味が曖昧だと、確実な幾何的対象物が把握できません。

ちゃんと探せばキチンとした定義があるんでしょうが、ザッと見たかぎりでは曖昧な定義しかなかったので、統計多様体の定義を書き下してみました。C(PD(X), Φ) の定義は場当たり的ですが、とりあえずは間に合います。

[追記]この記事における統計多様体の定義が適切ではないので、訂正・補足しました。

[/追記]

局所元のジャームセクションとセクションジャームの評価

層に関してちょっと 2: 層化」において、セクション層関手Γとジャーム空間関手Λが、関手の随伴ペア(随伴系)を形成している、という話をしました。それに少し補足をします。

この記事の主たる目的は例題の記述です。後で、この内容を例題にしてナニゴトかやりたい、という目論見があります(目論見倒れになるかも知れないが)。

内容:

準備

層に関してちょっと 2: 層化」で使った用語と記号をそのまま使いますが、ごく短い復習、略記と追加事項をこの節で述べます。

位相空間Xを固定します。X上の集合前層の圏 PSh[X] を単にPShと略記します(Xはずっと固定するので)。X上の相対空間の圏 RelSp[X] も単にRelSpとします。

ちょと復習をしておきます。Xの開集合の全体に包含順序を考え、さらにそれを圏とみなしたものを Open(X) と書きます。X上の集合前層〈presheaf of sets | set-valued presheaf〉とは、反変関手 F:Open(X)opSet のことでした(それ以上の意味はありません)。以下、集合前層しか扱わないので、集合前層を単に前層といいます。

前層は、集合概念の拡張のように考えます。U∈|Open(X)| として、a∈F(U) のとき、aをU上に広がったFの元〈要素〉と考えます。a∈F(X) ならば、aは大域元〈global element〉です。Fの元、つまり適当なUに対する F(U) の元を局所元〈local element〉と呼びます(大域元は特別な局所元です)。a∈F(U) であるとき、Uを局所元aの存在域〈domain of existence〉と呼ぶことにします。F(X) が空集合である(大域元がない)場合でも、局所元(半端な元)を持つ場合があります。

相対空間〈relative space〉とは、単に連続写像 φ:A→X のことです。次の呼び名を使います。

  • Xを相対空間の底空間〈base space〉と呼ぶ。
  • Aを相対空間のメイン空間〈main space〉と呼ぶ。
  • φを相対空間の構造写像〈structure map〉と呼ぶ。
  • x∈X に対する逆像 φ-1(x) を Ax と書き、(点x上の)ファイバー〈fiber | fibre〉と呼ぶ。

底空間Xを固定しているので、A = (A, X, φA) のような書き方(記号の乱用)も使います -- メイン空間の名前により相対空間の構造全体も表します。

相対空間は単なる写像 φA:A→X に過ぎないので:

  • 構造写像 φA:A→X が全射とは限らない。
  • したがって、ファイバー Ax = φ-1(x) は空かも知れない。
  • 異なる点 x, y におけるファイバー Ax, Ay は全然違う(同型でない)空間かも知れない。
  • AとXには、何の仮定もない。非ハウスドルフ空間のことがある。

連続写像 s:U→A で、s;φA = idU であるものを相対空間AのU上のセクション〈section | 断面〉と呼びます。セクションは写像なので、x∈U に対する値 s(x)∈A を持ちます。前層の局所元 a∈F(U) をしばしばセクションのように扱いますが、抽象的なセクションなので、値 a(x) はありません

セクション関手とジャーム関手

層に関してちょっと 2: 層化」に、次の関手について記述してあります。

  1. Γ:RelSpPSh
  2. Λ:PShRelSp

Γをセクション層関手、Λはジャーム空間関手(より正確にはジャーム相対空間関手)と呼びました。長たらしいでの、セクション関手〈section functor〉、ジャーム関手〈germ functor〉とも呼びます。

[補足]Γ(A)として得られた前層は、単なる前層ではなく、層の条件を満たします。よって、Γをセクション層関手と呼びます。また、Λ(F)として得られた相対空間は、単なる相対空間ではなく、エタール空間の条件を満たします。Λをジャーム・エタール空間関手と呼ぶのが適切かも知れません(長過ぎるけど)。[/補足]

セクション関手Γは、相対空間 A = (A, X, φA) に対して、

  • Γ(A) は前層で、Γ(A)(U) := (AのU上のセクションの全体)

と定義します。習慣により、Γ(A)(U) を Γ(U, A) とも書きます。ハイフンを無名ラムダ変数とすると、Γ(A) = Γ(A)(-) = Γ(-, A) 。U⊆V に対する Γ(U⊆V, A):Γ(V, A)→Γ(U, A) (制限写像)は自然に定義できます。

相対空間のあいだの写像 f:A→B (f;φB = φA)があると、Γ(f):Γ(A)→Γ(B) in PSh が誘導されます。U⊆X に対して、(s:U→A) \mapsto (s;f:U→B) が F(f)(U):F(A)(U)→F(B)(U) を与えます。習慣的記法では、Γ(U, f):Γ(U, A)→Γ(U, B) 、Uを抽象(無名ラムダ変数化)すれば Γ(-, f):Γ(-, A)→Γ(-, B) 。

一方のジャーム関手Λは、

  • Λ(F) := (Germ(F), X, πF)

と定義します。Germ(F)は、Fのジャームをすべて寄せ集めた空間です。g∈Germ(F) は、適当なUと x∈U 、それと a∈F(U) を使って、

  • g = [a]x

と書けます(この表示は重要)。ジャームは局所元の同値類なので、[a]x は局所元aが所属する同値類でストークFxに入るものを意味します。ストークについては「層に関してちょっと 2: 層化」を参照してください。

πF:Germ(F)→X は、πF(g) = πF([a]x) = x と定義します。a∈F(U) のとり方によらずにxが決まることは明らかでしょう。πFは相対空間 (Germ(F), X, πF) の構造写像です。(Germ(F), X, πF) におけるファイバー Germ(F)x = πF-1(x) は、FのストークFxになります。

  • Germ(F)x = Fx

等式の左辺の下付きxはファイバーで、右辺の下付きxはストークです。混乱の危険がありますが、便利な記法です。

ラムダ記法の変種

ラムダ記法は、常に型付きで使います。それにも関わらず、λx.E のように書いてあったら、次のように解釈します。

  1. ラムダ変数xの型は文脈から補えるから省略している。
  2. 式Eの型は“型推論”出来るので省略している。

明示的に型を指定するときは次のように書きます。

  • λx:X.(E :Y)

型の指定に、集合への所属記号を使ってもかまいません。

  • λx∈X.(E ∈Y)

最近は、ギリシャ文字'λ'の代わりに矢印〈アロー〉だけを使う書き方もよく使います。

  • (x:X |→ E :Y)

アロー記法〈arrow notation〉といいます。次のような変種も認めます。

  • (X∋x |→ E ∈Y)
  • (Y∋ E ←| x∈X)
  • (E ←| x)

'λ'記法とアロー記法を混ぜて使うこともあります。ラムダっぽい書き方は、臨機応変に解釈してください。

局所元のジャームセクション

前層Fがあるとき、Fの局所元aに対して、そのジャームセクション〈germ section〉とは λx∈U.[a]x という関数です。ここでUは、aの存在域です。

ジャームセクションは、相対空間 Germ(F) = (Germ(F), X, πF) に対するセクション集合 Γ(U, Germ(F)) の要素(つまりセクション)になります。仮想的・抽象的セクションであった局所元aが、実際のセクションになるのです。

前層Fに対して、(局所元 |→ ジャームセクション) という対応をγとして、γを記述してみます。γ(a) = λx∈U.[a]x なので、

  • γ = (a |→ λx∈U.[a]x)

型を明示すると、

  • γ = (F(U)∋a |→ λx∈U.[a]x ∈Γ(U, Germ(F)))

γは、U∈|Open(X)| に依存することになるので、γの下付きでUを添えると:

  • For U∈|Open(X)|, γU = (F(U)∋a |→ λx∈U.[a]x ∈Γ(U, Germ(F)))

これは、自然変換のU-成分を与えます。

  • γU:F(U)→Γ(U, Germ(F))

Uを抽象して、Germ(F)とΛ(F)は同じ意味なので、Germ(F)をΛ(F)で置き換えれば、

  • γ:F→Γ(Λ(F)) in PSh

となります。

セクションジャームの評価

A = (A, X, φA) が相対空間のとき、Γ(A) は前層で、その対応は、

  • (U |→ Γ(U, A))
  • (U⊆V |→ (Γ(V, A)→Γ(U, A)))

と書けます。前層Γ(A)の局所元はセクションです。セクションのジャームgは次の表示を持ちます。

  • g = [s]x 、sはセクション

セクションのジャームは、単なる局所元のジャームとは違い、一点での値を持ちます。ジャーム g = [s]x の点xでの値は、

  • g(x) := s(x)

として定義します。セクションがU上のA値連続関数であることから、セクション(ジャームの代表元)の選び方によらずに g(x)∈A が決まります。

  • e = (g |→ g(x))

と置くと、写像eは、Germ(Γ(A))→A という対応で次を満たします。

  • e;φA = πΓ(A)

つまり、eは相対空間のあいだの写像となります(連続性などを別途示す必要がありますが)。写像eを、セクションジャームの評価写像〈evaluation map〉と呼びます。「評価」は関数の値を求める操作を意味します。

Germ(F)とΛ(F)は同じ意味なので置き換えれば、

  • e:Λ(Γ(A))→A in RelSp

となります。

随伴系

ΓとΛは関手の随伴ペア(随伴系)ですが、Λが左でΓが右なので、

  • Λ -| Γ

と書けます。随伴系を支配しているのは、単位自然変換と余単位自然変換です。それも書けば(随伴系の書き方に関しては「随伴に関する注意事項」を参照してください):

  • η, ε: Λ -| Γ

単位ηと余単位εは次の形をしています。

  • η::IdPSh⇒Γ・Λ : PShPSh
  • ε::Λ・Γ⇒IdRelSp : RelSpRelSp

自然変換の成分を取り出せば:

  • ηF:F→Γ(Λ(F)) in PSh
  • εA:Λ(Γ(A))→A in RelSp

前々節と前節で述べた局所元のジャームセクションγとセクションジャームの評価eは、上記の自然変換成分でした。

  • γ = ηF
  • e = εA

つまり、γとeの定義は、随伴系の具体的な記述の一部です。この具体的な定義をもとに、ΛとΓの随伴性をちゃんと(できるだけフォーマルに)示すのが次に(いつか)やりたいことです。

どうやら人間のようだ

昨日の記事「奇妙なコメント、人が書いてる?自動生成?」の『縮約(縮退)自然数』さんは、ワードサラダ生成器やソフトウェア・ロボットではなくて、生きている人間である可能性が高いですね。

『縮約(縮退)自然数』さんのコメントは、検索で容易に見つかります。独特の、しかし安定した文体で書かれています。

2019-02-07 https://blog.goo.ne.jp/mh0920-yh/e/bc8148f070619f642e828884f2c0e567

あたまから、【西洋数学の成果の超越数([e])と円周率(π)と無限(∞)と虚数(i『動的作用を持つ』)】と【1 0】の[数学的思考](身体化された心)との6つのシェーマ(符号)を受け入れて、【[桁表示]の[0 1 2 3 4 5 6 7 8 9]による十進法】の言葉(言語)が生まれ、何の矛盾もないことが【数そのモノ】の「言語」(数学概念)であり、あらゆる[数学概念]を[内包]していると観る。

 したがって[自然数]は、『縮約(縮退)自然数』と呼ぶべきものだろう。

2019-02-08 http://tenmei.cocolog-nifty.com/matcha/2009/11/post-81dd.html

 ご隠居
「なんだよなぁ~落語の【義眼】の落ちだよ
【尻の穴を覗いたら、向こうからも誰かが覗い
ている】って事よ」
熊さん 
「それはどういうことだぃ~」
ご隠居
「難しく言やぁ~西谷啓治の【惑星思考】だよ、
一言主神社に奉納されたジャーゴン(jargon)
算額を見に行きな~」

 ジャーゴン(数の核)は、【西洋数学の成果の超越数(e)と円周率(π)と無限(∞)と虚数(i『動的作用を持つ』)】と【1 0】の[数学的思考](身体化された心)との6つのシェーマ(符号)を受け入れて、[人](生命)がいる[形態空間](ニッチ)に共にある【数そのモノ】の[表象]する[仮設の1]とするとき[4(多)次元]のそれぞれの[次元]の[1]が[カオス]表示の[因子]の積であると観る。
 [カオス]表示とは、(e)(π)(i)(1)と演算子(-+×÷)でのシェーマ(符号)の複合体で表示し・されている。 

 それぞれの[次元]の[1]が、幽霊的な[カオス]表示を[内在]し・しているとすると[四則演算]などが生まれ・出て来ると観える。
 [カオス]表示に(∞)(0)は現れないがその数学概念は、[内在]し・されている。
 [コスモス]表示に(∞)は現れないが数学概念として、(0)が現れ・出てくる。

 [コスモス]表示として【[桁表示]の[0 1 2 3 4 5 6 7 8 9]による十進法】の言語(量化)が生まれ・産まされ[二(多)階述語論理](上空移行)した『包摂言語』と生り・ならされたもので、[カオス]表示の(e)(π)(i)は幽霊的な[内在秩序]として姿が見えなくなっている。  

 【数そのモノ】は、[カオス]から[コスモス]・[コスモス]から[カオス]を行き来できる『包摂言語』と生り・ならされている。
 このことにより[コスモス]表示内での[四則演算]は、[群](可換群)としての[算術(算数)演算]を生得(スービタイズ)的に獲得し・獲得させられていると観る。 

 結局、無限(∞)の言語(数学概念)を容認し・容認させる[人]の[数学的思考](身体化された心)で掴み・掴まされたとするなら、[十進法の基]では、シェーマ(符号)として 1+1=2となることが、解り・解らされていると観る。 

2019-06-02 http://epigraph.jugem.jp/?eid=338

≪…知覚を通して経験的に得られた概念…≫との事を 
 『離散的有理数の組み合わせによる多変数創発関数論 命題Ⅱ』の離散性を[量子論]とし、『自然比矩形』に連続性を摑まえた[数学]としての[双対性]で観る。
 ≪…「ご冗談でしょう。ファインマンさん」…≫的に『自然比矩形』の舞台で数学妖怪キャラクターたちの『(わけのわからん ちゃん) (かど ちゃん) (ぐるぐる ちゃん) (つながり ちゃん) (まとめ ちゃん) (わけのわかる ちゃん)』の[振る舞い]が≪…「部分と全体」を描像していよう。

もう引用はしませんが、他にもあります。

意味は全然分からないですが、ある種の作品性を持つような気がしなくもないような。