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

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

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

参照用 記事

米田テンソル計算 1: 経緯と発想


\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\In}{\text{ in } }
\newcommand{\op}{\mathrm{op} }
\newcommand{\id}{\mathrm{id} }
マリオ・ロマン〈Mario Román〉の論文に触発されて、コエンド計算を古典テンソル計算風にアレンジできるんじゃないかと思い始めました。今まで折に触れて考えたり使ったりしてきた絵算の技法と米田ご利益ツールズを動員すれば、割と気持ちいい計算体系が作れそうです。

今回は実質的な説明はしてません。米田テンソル計算を思いついた経緯を述べ、インフォーマルに発想を語り、使う予定の技法・道具達を紹介するだけです。

内容:

シリーズ目次(リンク):

  1. 米田テンソル計算 1: 経緯と発想 (この記事)
  2. 米田テンソル計算 2: 準備
  3. 米田テンソル計算 3: 米田の「よ」、米田の星、ディラックのブラケット 再論
  4. 米田テンソル計算 4: 米田埋め込み

関連する記事:

  1. ホム関手とサンドイッチ結合
  2. ニンジャ米田の補題と本家・米田の補題

米田テンソル計算の発端

圏論的レンズ 4: テレオロジー圏」においてマリオ・ロマン〈Mario Román〉の論文を引用しました。あの論文から、ロマンが絵算好きでアイディアマンなことは推察できます。彼の論文で他に面白いものがあるのでは? と思って目にとまったのがコレ↓

おもしろ~い。

でも、少しわかりにくいですね。次のようにすると改善できると思います。

  1. ストリング図の描画法に、ボブ・クック達(オックスフォード/ケンブリッジ・グループ)の描画法を取り入れる。
  2. 関手ボックスをもっと積極的に使用する。
  3. 米田埋め込みをもっと明示的に利用する。
  4. テキストの表記法を古典テンソル計算風にする。

ロマン論文で扱っていることは(論文タイトルにもあるとおり)コエンド計算〈coend calculus〉です。ロマンのアイディアに基づいて、上記のような変更・拡張を施したコエンド計算を米田テンソル計算〈Yoneda tensor calculus〉と呼ぶことにします。

コエンド計算の創始者が米田信夫(すごくえらい人には敬称が付けにくいので敬称略)であることは、「偉大なり、米田」に書いたとおりです。米田埋め込みやニンジャ米田の補題もヘビーに使うことから、コエンド周りの計算に「米田」を冠するのはまーまー妥当でしょう。

米田」に続いて「テンソル」が出てくるのは、古典テンソル計算とコエンド計算の類似性を強調したいからです。古典テンソル計算とコエンド計算のあいだには次のような対応があります。見慣れない言葉があるかも知れませんが、それは後で(この記事内とは限らない“いずれ”)説明するでしょう。

古典テンソル計算 コエンド計算
集合
関数 関手
行列 プロ関手
行列の掛け算 プロ関手の結合
総和 コエンド
クロネッカーのデルタ 米田の「よ」
ベクトル 余前層
コベクトル 前層
スカラー値 集合
スカラー値の掛け算 集合の直積
テンソル〈複行列〉 複プロ関手
テンソルのテンソル積 複プロ関手のテンソル積
状態テンソル 複余前層
余状態テンソル 複前層

オックスフォード/ケンブリッジ流の三角・菱形

2006年の記事「幼稚園児のための量子力学とその周辺」でクックの次の論説を紹介しました。

クック達オックスフォード/ケンブリッジ・グループが使っている絵算〈{graphical | diagrammatic | pictorial} {calculus | computation}〉の描画法に関して、過去記事で次のようにまとめています。

  1. 色を付けている。
  2. 四角、三角、菱形を使い分けている。
  3. 特に三角の使い方はうまい!
  4. 矢印を下から上に描き、それを上から下に読みくだすと、ディラックのブラケット記法になる。
  5. いやーっ、やっぱり三角の使い方がうまい。

ロマンの描画法はノードの区別がなくてわかりにくいんですよね。ベクトル/コベクトルを表す三角とスカラー値を表す菱形を導入することにします。

ここで言ったベクトル/コベクトル/スカラー値などは抽象化された概念です。特に抽象化されたスカラー値(アブラムスキーの抽象スカラー)については次の記事に書いています。

抽象スカラーに関するアブラムスキーの論文は以下です。

  • Title: Abstract Scalars, Loops, and Free Traced and Strongly Compact Closed Categories
  • Author: Samson Abramsky
  • Submitted: 15 Oct 2009
  • Pages: 32p
  • URl: https​://arxiv.org/abs/0910.2931

関手ボックス

オプティックの絵図」で紹介したように、ロマンは、オプティックの描画に関手ボックス/ストライプ図を使っています。

しかし、コエンド計算では関手ボックス/ストライプ図を使っていません。米田埋め込みは関手ボックスで描くのがわかりやすいのに…。

コエンドの具体的構成で使われるコエンド同値関係も、関手ボックスを使って次のように描けます。

説明:

  1. この図は集合圏におけるストリング図で、描画方向は「↓→」。つまり、射の順行方向は上から下
  2. ピンクはプロ関手 P:\cat{C}^\op\times \cat{C} \to {\bf Set} の関手ボックス。
  3. 左辺関手ボックス内の左側は逆行する f:X \to Y \In \cat{C} 、あるいは f:Y \to X \In \cat{C}^\op
  4. 左辺関手ボックス内の右側は順行する \id_X:X \to X \In \cat{C}
  5. 右辺関手ボックス内の左側は逆行する \id_Y:Y \to Y \In \cat{C}
  6. 右辺関手ボックス内の右側は順行する f:X \to Y \In \cat{C}
  7. 塗られた三角は p:{\bf 1} \to P(Y, X) \In {\bf Set} 、あるいは p\in P(Y, X)
  8. 全体の意味は P(f, \id_X)(p) \sim P(\id_Y, f)(p)

この絵から、コエンド同値が、双方向関手ボックス内で射がスライドして180度回転する関係で生成されることが読み取れます。まったく雰囲気的な連想を言うと、奇妙な(物理的に存在しない)滑車のようです。

関手ボックス/ストライプ図とその利用については次の記事が参考になるでしょう。

米田ご利益ツールズ

「ご利益ツールズ」という言葉は次の記事で使ったものです。

上記過去記事で紹介したツール達は:

  1. ラムダ記法
  2. 米田の星(上米〈うえヨネ〉、下米〈したヨネ〉)
  3. 関手・自然変換のテンソル積
  4. マルチ米田埋め込み/マルチ余米田埋め込み

これらにさらにツールを追加して増強版ご利益ツールズを作りましょう。

追加ツールのひとつは米田の「よ」です。これについては:

上記の過去記事で導入した米田密度の記号、コエンド/エンドの記号なども増強版ご利益ツールズの一部です。

  • 米田密度:  \lambda\,X. よ_A(X)
  • コエンドの記号: \underline{\sum}^X
  • エンドの記号: \overline{\prod}_X

ニンジャ米田の補題は、ディラックのデルタ/クロネッカーのデルタの消去と同じ形になります。


\quad {\displaystyle \int_x \delta_a(x)f(x)\,dx = f(a) }\\
\quad {\displaystyle \sum_i \delta_k(i)f(i) = f(k) }\\
\quad {\displaystyle \underline{\sum}^X よ_A(X)\times F(X) \cong F(A) }

また、次のツールも追加します。

  1. 第二種米田埋め込み/第二種余米田埋め込み
  2. 第二種マルチ米田埋め込み/第二種マルチ余米田埋め込み
  3. プロ関手/複プロ関手のテンソル積
  4. 米田マーク
  5. 米田マーク付きノード

通常の米田埋め込み、余米田埋め込みは次の形をしてます。


\quad {\bf Yo}_\cat{C} : \cat{C} \to \cat{C}^\wedge \\
\quad {\bf coYo}_\cat{C} : \cat{C} \to \cat{C}^\vee

ここで、\cat{C}^\wedge,\, \cat{C}^\vee はそれぞれ前層の圏、余前層の圏です。

一方、第二種米田埋め込み〈type-2 Yoneda embedding〉、第二種余米田埋め込み〈type-2 coYoneda embedding〉は次の形です。


\quad {\bf YO}_{\cat{C}, \cat{D}} : {\bf Cat}(\cat{C}, \cat{D}) \to {\bf Prof}(\cat{C}, \cat{D}) \\
\quad {\bf coYO}_{\cat{C}, \cat{D}} : {\bf Cat}(\cat{C}, \cat{D}) \to {\bf Prof}(\cat{D}, \cat{C} )

ここで、{\bf Prof} は“圏、プロ関手、自然変換”が形成する2-圏です。

米田テンソル計算で主に使うのは第二種米田埋め込み/第二種余米田埋め込みです。また、通常の米田埋め込み/余米田埋め込みは、第二種米田埋め込み/第二種余米田埋め込みの特別な場合として再現することから、単に「米田埋め込み/種余米田埋め込み」と言ったら、それは第二種を意味することにします。以下「{余}?」は「余」がついてもつかなくてもいいことを表します。

{余}?米田埋め込み=第二種{余}?米田埋め込みは、米田テンソル計算の主要な道具です。米田マークは、絵算において{余}?米田埋め込みを明示するためのマークです。米田マーク付きノードは、{余}?米田埋め込みを表す関手ボックスのことです。

以上のようなツールも追加したツールボックスが、新しい米田ご利益ツールズ〈Yoneda benefits tools〉です。

「マルチ{余}?米田埋め込み」の「マルチ」も、「複プロ関手」の「複」も "multi" のことですが、マルチ/複の意味は次節で解説します。

シーケント構成

行列の圏から古典テンソルの圏を作り出すのと同じ圏論的構成法〈categorical construction〉を僕は簡約多圏構成〈reduced polycategory constructio〉とかポリ構成〈Poly construction〉と呼び、\mathrm{Poly}(\cat{C}) のように書いてきました。それについては、次の記事に書いています。

後になって、ポリ〈poly〉を使うのはどうもよくないと思い、「圏論的ドクトリンの安直な導入」ではシーケント構成〈sequent construction〉、\mathrm{Seq}(\cat{C}) のような用語・記法を使っています。シーケント構成はモノイド圏の厳密化を与える構成法です。

プロ関手の圏/2-圏は直積でモノイド圏になるので、シーケント構成を適用できます。ネーミングに関しては、過去の習慣のしがらみで、シーケント構成で得られた圏を「マルチ、複、ポリ」などの形容詞を付けて呼ぶことがあります*1。例えば:

\quad {\bf MultiProf} := \mathrm{Seq}({\bf Prof})

{\bf MultiProf} の射が複プロ関手〈multi-profunctor〉です(あるいは多プロ関手〈poly-profunctor〉、すぐ下の追記参照)。複プロ関手が古典テンソル計算のテンソルに相当するものです。

[追記]
脚注で「ネーミングに一貫性・整合性を期待しても無理な話です。」と書きましたが、「マルチ、ポリ」を使ったネーミングはほんとに頭痛の種です

複〈マルチ〉、余複〈コマルチ〉、多〈ポリ〉を一貫して整合的に使うネーミングも可能だし望ましいと思います。例を挙げると:

  • 線形写像、複線形写像、余複線形写像、多線形写像
  • 圏、複圏、余複圏、多圏
  • 射、複射、余複射、多射

僕はこの整合的なネーミングで押し通したいのですが、既にある概念と名前がコンフリクトしたり、伝統・習慣と合わなかったりします。

既存の名前・習慣のしがらみを考慮しないなら、モノイド圏から別種の構造を作る構成法は次のように書くのがよいと思います。


\quad \mathrm{Multi}:{\bf MonCat} \to {\bf MultiCat}\\
\quad \mathrm{CoMulti}:{\bf MonCat} \to {\bf CoMultiCat}\\
\quad \mathrm{Poly}:{\bf MonCat} \to {\bf PolyCat}

どんなしがらみがあるかは、面倒くさいので説明しません。

プロ関手の圏 {\bf Prof} に関しては、それほどのしがらみもないので、次のようにしてもいいかも知れません。


\quad {\bf MultiProf} := \mathrm{Multi}({\bf Prof}) \\
\quad {\bf CoMultiProf} := \mathrm{CoMulti}({\bf Prof}) \\
\quad {\bf PolyProf} := \mathrm{Poly}({\bf Prof}) = \mathrm{Seq}({\bf Prof})
[/追記]

米田埋め込みと図式変形

米田テンソル計算の舞台は複プロ関手の圏 {\bf MultiProf} ですが、これは2-圏の構造を持ちます。対象〈0-射〉は圏のリスト \vec{\cat{C}} = (\cat{C}_1, \cdots, \cat{C}_n) です。1-射は複プロ関手で、ロマンの方法でストリング図に描けます。

さて、2-圏 {\bf MultiProf} の2-射である自然変換はどのように図式化できるでしょう。{\bf MultiProf} はデカルト積も持つので、横結合/縦結合/デカルト積の3つの演算を持ち、描画の方向も3つ必要となり3次元図式〈サーフェイス図〉で描くことになります。

3次元図式を描くのはとても大変なので、代わりに2次元図式の時間的な変化として表現することにします。この方法の事例は、「図式思考の例として、ラックス・モノイド関手について考えてみる」で紹介したバートレットの論文にあります。

2次元図式の時間的な変化をバートレットは書き換え〈rewriting〉と呼んでいます。

書き換えでは、レイアウトの変更(アイソトピー)だけでなく、絵図の切り貼りが発生することもあります。このことを考慮して、ジェイコブス達は手術〈surgery〉という言葉を使っています。

  • Title: Causal Inference by String Diagram Surgery
  • Authors: Bart Jacobs, Aleks Kissinger, Fabio Zanasi
  • Submitted: 20 Nov 2018 (v1), 28 Jul 2019 (v2)
  • Pages: 17p
  • URL: https​://arxiv.org/abs/1811.08338

そして、ロマンは図式の変形〈deformation〉と言っています。

呼び名 記号
Bartlett 書き換え〈rewriting〉 \Rightarrow
Jacobs, Kissinger, Zanasi 手術〈surgery〉 \rightsquigarrow
Roman 変形〈deformation〉 \rightarrow

どの用語・記号を使うかは趣味の問題です。いずれにしても、2-圏 {\bf MultiProf} の各次元の射を以下のように図式化することになります。

射の次元 射の呼び名 絵図表現
0-射 圏/圏のリスト ワイヤー/ケーブル
1-射 複プロ関手 ストリング図
2-射 自然変換 ストリング図の変形
スカラー1-射 集合 閉じたストリング図
スカラー1-射のあいだの2-射 写像 閉じたストリング図の変形

おわりに

古典テンソル計算と絵図の対応はペンローズから(あるいはそれ以前から)利用されていました。

テンソル計算の計算対象、絵図の描画対象を、圏/関手/プロ関手/自然変換にして、テキスト記号計算〈symbolic calculation by text〉と図式絵算〈graphical calculation by diagrams〉の対応をうまくとれば、けっこう使いやすい計算体系になるだろうと期待してます。

*1:ネーミングに一貫性・整合性を期待しても無理な話です。