profunctor

【 profuncor は行列とよく似ている 】

このセッションでは、線形代数の行列に相当するものが、カテゴリー論ではどのようなものになるかを考えます。 

2つのカテゴリー𝖢と𝖣が与えられたとき、カテゴリー論での行列の類似物はprofunctorと呼ばれるもので、集合のカテゴリーSet に値を取るfunctor f:Cop×DSet になります。

前にも述べたように、肩について「op」はfunctorのvarianceを示すために使われています。正確を期すためには必要なのですが、最初に見るときには無視しても構いません。ここで説明する線形代数とのアナロジーでは、行と列の間の一種の転置を示すものと考えることができます。

もう少し、詳しく見ていきましょう。

もしprofunctor f:Cop×DSet の定義域の二つのカテゴリー CopDが離散カテゴリーで有限集合であるならば、profunctorは単に二つの要素のペアでindexされた集合の集まりです。それは数字の代わりに集合をエントリーとする行列です。

簡単なcurrying で、C, D上のオブジェクト c, d に対する 定義、cf(c,,),df(,d) で、profunctor fは、ペアのfunctor f(c,):C(SetD)opf(,d):DSetCopを定義することがわかります。

( "op" をないものとしてみれば、このfunctor のペアは、 f(c,):CSetD と  f(,d):DSetC のペアになります。確かにこう考えるとわかりやすいです。)

functor f(c,) は行列fのc行目の集合として描くことができます。 このfunctorは functor DSetを定義し、このfunctorでDのj番目のオブジェクトは、行 f(c,) のj番目のオブジェクトの集合にマップされます。

同様に、functor f(,d)は行列fのd列目の集合を表します。

カテゴリーが、Yoneda (あるいは co-Yoneda) embedding で presheafのカテゴリーに埋め込まれると考えれば、 functor 𝐶(𝑆𝑒𝑡𝐷)𝑜𝑝𝐷𝑆𝑒𝑡𝐶𝑜𝑝は、一意に、次のfunctor 𝐹,𝐹に拡張できます。

  𝐹:𝑆𝑒𝑡𝐶𝑜𝑝(𝑆𝑒𝑡𝐷)𝑜𝑝
  𝐹:(𝑆𝑒𝑡𝐷)𝑜𝑝𝑆𝑒𝑡𝐶𝑜𝑝

"op"を無視すると、こんな形になります。

  𝐹:𝑆𝑒𝑡𝐶𝑆𝑒𝑡𝐷 
  𝐹:𝑆𝑒𝑡𝐷𝑆𝑒𝑡𝐶

--------------------------------

ショートムービー「 profunctor 」を公開しました。
https://youtu.be/VEjUNGr6mJ8?list=PLQIrJ0f9gMcOJYKeUN_8q2K-yxtTfbIoB

「 profunctor 」のpdf資料https://drive.google.com/file/d/1GgHDSRBaWcmjjSiocOXmVIPBxQ0G636j/view?usp=sharing

blog 「 profuncor は行列とよく似ている 」
https://maruyama097.blogspot.com/2024/02/profunctor.html

「言語の意味の数学的構造」まとめページ
https://www.marulabo.net/docs/embedding-dnn/

ショートムービーの再生リスト
https://www.youtube.com/playlist?list=PLQIrJ0f9gMcOJYKeUN_8q2K-yxtTfbIoB 

コメント

このブログの人気の投稿

初めにことばありき

宇宙の終わりと黒色矮星

Google翻訳での日本語の点数の低さについて