--- tags: TrRun2 id: ProbCHL-B27.md --- # 檜山トレラン2 B27 世間の記法、ベイズの定理など $\newcommand{\In}{\mbox{ in }}% \newcommand{\R}{ {\bf R} }% \newcommand{\P}{ {\bf P} }% \newcommand{\N}{ {\bf N} }% \newcommand{\Imp}{\Rightarrow}% \newcommand{\lis}[1]{\boldsymbol{#1}}% \newcommand{\conc}{\mathop{\#}}% \newcommand{\MFXTens}{ {\bf MFXTens} }% \newcommand{\For}{\mbox{For }}% %$ <!-- \newcommand{\FXTens}{ {\bf FXTens} }% \newcommand{\hyp}{\mbox{-}}% \newcommand{\cat}[1]{\mathcal{#1}}% \newcommand{\sz}[1]{ {\bf {#1} } }% \newcommand{\On}{\mbox{ on }}% \newcommand{\Iff}{\Leftrightarrow}% \newcommand{\To}{\Rightarrow}% \newcommand{\sto}{\rightsquigarrow}% \newcommand{\B}{ {\bf B} }% \newcommand{\Z}{ {\bf Z} }% \newcommand{\L}{ {\bf L} }% \newcommand{\Tens}{ {\bf Tens} }% \newcommand{\XTens}{ {\bf XTens} }% \newcommand{\Set}{ {\bf Set}}% \newcommand{\WeWillDefine}{\mbox{WeWillDefine }}% \newcommand{\WeDefine}{\mbox{WeDefine }}% \newcommand{\conc}{\mathop {\#}}% \newcommand{\If}{\mbox{if }}% \newcommand{\Then}{\mbox{ then }}% \newcommand{\Else}{\mbox{ else }}$ \require{color}% \newcommand{\Assume}{\textcolor{green}{\mbox{Assume }} }% \newcommand{\By}{\textcolor{green}{\mbox{By }} }% \newcommand{\WeGet}{\textcolor{green}{\mbox{WeGet }} }% --> ## この文書を書いた動機 我々が採用したマルコフテンソル計算は、通常のベイズ確率の記述とは違う。本質的には==もちろん同じ==なのだが、記法が==異なる==。 記法が異なるだけで別物と認識してしまい、同一性や共通性に気づかないこと(これは悲劇)があるので、翻訳の手引を示しておく。 ## 文字の使い方の約束 圏 $\MFXTens$ で考える(F=Finitely, X=eXtended, M=Markov)。アルファベットの最初のほうの大文字 $A, B$ などは事象(特性値集合の直積内の部分集合)。アルファベット真ん中へん以降 $F, G, P, Q$ などはマルコフテンソル。 太字小文字は特性値集合のリスト、小文字は格子点(離散キューブの要素)を表す変数、$x, y\in cube(\lis{a})$ とか。空リストもシングルトンリストも普通に(特別扱いしないで)扱う。$cube( () ) = \{*\}, cube( (\{1\}) ) = \{1\}$ などに注意。慣れるまでは省略・略記をしないことが誤解・曲解を避けるコツ。省略・略記で統一性・法則性が崩れてしまう。 ## 世間の書き方 [Wikipedia ベイズの定理](https://ja.wikipedia.org/wiki/%E3%83%99%E3%82%A4%E3%82%BA%E3%81%AE%E5%AE%9A%E7%90%86#%E5%AE%9A%E7%90%86%E3%81%AE%E8%AA%AC%E6%98%8E) では、ベイズの定理が次の形で記述されている。 - $P(A \mid B) = \frac{P(B \mid A)P(A)}{P(B)} = P(B)^{-1} P(B \mid A)P(A)$ $P(A, B)$ という記号も登場する。例えば次の形で: - $P(B \mid A) \propto P(A \mid B)P(B) = P(A, B)$ マルコフテンソル計算で確率を勉強した人(少数派)は面食らうだろう。どう解釈すればいいのか? ## 引数に事象を入れる(便利ではある) $F:\lis{a} \to \lis{b} \In \MFXTens$ として、その成分は $F(y \mid x) \;\mbox{ for }x\in cube(\lis{a}), y\in cube(\lis{b})$ と書ける。次のように、引数〈インデックス〉に事象を入れることを許す。 - $F(B \mid x) := \sum_{y\in B} F(y \mid x)$ - $F(y \mid A) := \sum_{x\in A} F(y \mid x)$ - $F(B \mid A) := \sum_{x\in A} \sum_{y\in B} F(y \mid x) = \sum_{(x, y)\in A\times B} F(y \mid x)$ - $P(A, B \mid *) := \sum_{(x, y)\in A\times B} P( (x, y) \mid *) = \sum_{(x, y)\in A\times B} P( x, y \mid *)$ 総和記号を書かなくて済むので、便利な書き方ではある。 しばしば、格子点の単元集合と格子点が同一視される。例えば、 - $F(x \mid y) = F(\{x\} \mid y) = F(\{x\} \mid \{y\})$ 離散有限の場合は $x = \{x\}$ としても害は少ないが、一般的には有害な(誤解・曲解に導く)同一視。 ## 略記(好ましくはない) 以下、世間の習慣を色々説明するが、檜山は「好ましくない習慣」だと思っている。 分布 $P:() \to \lis{a} \In \MFXTens$ の成分は $P(x \mid *)$ だが、これを $P(x)$ と略記する。区切り記号 "$\mid$"(縦棒)がないときは分布だと思う。 余域が二部化されている同時分布 $P:() \to \lis{a}\,\&\, \lis{b} \In \MFXTens$ の成分は、正確に書けば $P(x\conc y \mid *)$ だが、$P(x, y \mid *)$ と書くのを許す。引数が入れ子 $P( (x_1, \cdots, x_r),(y_1, \cdots, y_s) \mid *)$ (もっと正確に書けば $P( ((x_1, \cdots, x_r),(y_1, \cdots, y_s) ) \mid *)$ )になるが、入れ子を作る外側のカンマが==二部化の区切り情報==を与えていると思えばよいだろう。さらに、$P(x, y)$ と略記する。(入れ子で二部化を表すのは悪くはない。) $P(A, B)$ を $P(A\times B)$ と書くのは合理的。 - $P(A, B) := \sum_{x\in A, y\in B} P(x, y)$ - $P(A\times B) := \sum_{(x, y)\in A\times B} P( (x, y) ) = \sum_{(x, y)\in A\times B} P( x, y )$ だが、$P(A, B)= P(A\cap B)$ はいただけない。なぜこうなるかというと、日本語の「かつ」を記号 $\cap$ で表しているだけで、==集合の共通部分ではない==。 例: 身長と体重の同時分布を考える。ちなみに、600kg弱の人が実在したようなので1トンまで表現できる特性値集合を使う。 $身長 := \{1cm, \cdots, 300cm\}, 体重 := \{1kg, \cdots, 1000kg\}\\ 身長 \cap 体重 = \emptyset\\ P:() \to (身長, 体重) \In \MFXTens \\ A := \{x\in 身長 \mid x \ge 180cm \} \,\subseteq 身長\\ B := \{y\in 体重 \mid y \le 100kg \} \,\subseteq 体重$ 「身長180cm以上 かつ 体重100kg以下」という“事象”の確率は $P(A, B) = P(A\times B)$ と書けるが、日本語「かつ」に引きずられて $P(A\cap B)$ とも書く。冷静に集合演算をすると: - $A\cap B = \emptyset$ なので、$P(A\cap B) = P(\emptyset) = 0$ 。もちろん $\cap$ は集合演算ではなくて、数学的な意味は $\times$ (直積)で日本語「かつ」の雰囲気を持つ特殊記号だ、と解釈する。これって「好ましくない習慣」だと思いませんか? 僕は==使いたくない!== ※「$A\cap B := (A\times 体重)\cap (身長 \times B)$ とオーバーロードすればいい」と擁護する人もいるが、そんなコジツケしてまで==間違った記法==を使う必要があるのか? ## すべて同じ文字で表す(だいぶ酷い) 以下、ダブルクォートした用語は“世間の言葉”。世間的に、次のような“確率”が出てくる。 1. 最初に与えられる“条件付き確率” 2. “事前確率” 3. 同時化した“同時確率” 4. 反転した“条件付き確率” 5. 事前分布とは別な“周辺確率” これらをマルコフテンソルで書けば: 1. $F:\lis{a} \to \lis{b} \In \MFXTens$ (最初に与えられるマルコフテンソル) 2. $P:() \to \lis{a} \In \MFXTens$ (最初に与えられる分布) 3. $Q := {}^{P\cap}F :() \to \lis{a} \,\&\, \lis{b} \In \MFXTens$ (同時化で得られたマルコフテンソル、二部化情報付き) 4. $G := F^{\dagger P}:\lis{b} \to \lis{a} \In \MFXTens$ (反転で得られたマルコフテンソル) 5. $R := Q_{\downarrow 2} : () \to \lis{b} \In \MFXTens$ (第二周辺化で得られた分布) 世間の記法では、これらのマルコフテンソルを==すべて同じ記号==、例えば $P$ で表す。 1. $P := F:\lis{a} \to \lis{b} \In \MFXTens$ 2. $P := P:() \to \lis{a} \In \MFXTens$ 3. $P := Q := {}^{P\cap}F :() \to \lis{a} \,\&\, \lis{b} \In \MFXTens$ 4. $P := G := F^{\dagger P}:\lis{b} \to \lis{a} \In \MFXTens$ 5. $P := R := Q_{\downarrow 2} : () \to \lis{b} \In \MFXTens$ 名前では区別できないので、引数渡しの構文により区別する。 1. $P(y \mid x) := F(y \mid x)$ 2. $P(x) := P(x \mid *)$ 3. $P(x, y) := Q(x, y\mid *)$ 4. $P(x \mid y) := G(x \mid y)$ 5. $P(y) := R(y \mid *)$ 引数に事象を入れる場合も同じで、 1. $P(B \mid A) := F(B \mid A)$ 2. $P(A) := P(A \mid *)$ 3. $P(A, B) := Q(A, B\mid *)$ 4. $P(A \mid B) := G(A \mid B)$ 5. $P(B) := R(B \mid *)$ 使われている習慣をまとめると: 1. ==登場するすべてのマルコフテンソルに同一の名前を与える。== 2. ==プロファイルの違いは、引数渡し構文(引数に使っている文字や区切り記号)で暗示する。== 3. ==同じプロファイルを持つ異なるマルコフテンソルは扱わない(扱えない)。== ブレンダン・フォング〈Brendan Fong〉が、同じ名前で済ませる方法の合理化を示しているが、トリッキーで汎用性はないので、マルコフテンソルの数が増えると現実的には破綻する。例えば、20個のマルコフテンソルを全部 $P$ と呼ぶとか悪夢。(が、コンピュータに解かせる問題なら、20個くらいは小規模問題。) ## 翻訳 マルコフテンソルの計算に必要なことは [A18ans A18の演習の解答例と成分公式 // 成分公式](https://hackmd.io/@m-hiyama/H1xqgtq_u#%E6%88%90%E5%88%86%E5%85%AC%E5%BC%8F) と [ストリング図一覧](https://jamboard.google.com/d/1xsHBDPYZM2ksol_EQ1TdfRtUobjvM6JtCpuGOADORlU/viewer?f=10) に書いてある。我々は既に計算できるし、確率問題を解ける。あとは“世間の記法”に合わせる作業が残っているだけ。 反転の成分公式をそのまま引用すると: $\For A:() \to \lis{a}, F:\lis{a} \to \lis{b}\\ \quad F^{\dagger A}:\lis{b} \to \lis{a}$ $\For y\in cube(\lis{b}), x\in cube(\lis{a})\\ \quad (F^{\dagger A})(x \mid y) := (\sum_{s\in \lis{a}} A(s \mid *)F(y\mid s))^{-1} A(x \mid *)F(y \mid x) = \frac{A(x \mid *)F(y \mid x)}{\sum_{s\in \lis{a}} A(s \mid *)F(y\mid s)}$ すべての名前を $P$ にして略記も採用すると、反転の公式は: $P(x \mid y) := (\sum_{s\in \lis{a}} P(s)P(y \mid s))^{-1} P(x)P(y \mid x)$ ここで出てきた $\sum_{s\in \lis{a}} P(s)P(y \mid s)$ はもとの記法で $R = Q_{\downarrow 2} = ({{}^{P\cap}F})_{\downarrow 2}$ だから、略記では $P(y)$ と書ける。したがって、 $P(x \mid y) := P(y)^{-1} P(x)P(y \mid x) = \frac{P(x)P(y \mid x)}{P(y)}$ 事象を代入すると: $P(A \mid B) := P(B)^{-1} P(A)P(B \mid A) = \frac{P(A)P(B \mid A)}{P(B)}$ こうして、人によっては「見慣れた」、人によっては「気持ちが悪い」公式ができあがる。記法が巧みに工夫されているとも言えるが、プロファイル情報がまったく見えなくなっていて、複雑な問題では「何を計算するのか? 何を計算しているのか?」を把握できなくなるような気がする。檜山の個人的な感覚では、==あまりの曖昧さ==に「気持ちが悪くて」吐きそう。 --- ## 追記: 伝統的記法の擁護 伝統的記法に対してはだいぶ批判的に書いたのだが、「短く書けて便利」という点では優れているとも言える。ベイズの定理、ベイズの公式に出てくる“確率”は次の5種になる。 1. 同時分布 2. 同時分布の第一周辺化 3. 同時分布の第二周辺化 4. 同時分布の条件化(第一条件化) 5. 同時分布の第二条件化 これら5つの関係は [ストリング図](https://jamboard.google.com/d/1xsHBDPYZM2ksol_EQ1TdfRtUobjvM6JtCpuGOADORlU/viewer?f=12) を見よ。 これら5つは(ベイズの定理では)常に一緒にクインテット〈5人組〉として登場する。なので、クインテットとしての名前が例えば $P$ で、それぞれの役割(比喩的に言えばクインテットの担当楽器)は引数構文で識別。そう考えれば、「短く書けて便利」なんだからいいじゃん、に同意できる。 クインテットの名称が $P$ で引数部分が異なると異なるマルコフテンソルになるのだということ(つまり、プロファイルの違い)が理解された上で「短く書けて便利」と言うぶんには問題がない。(フォングの合理化もその線に沿っている。) ただし、そういった背景事情が理解されないままに、味噌もクソ一緒に $P$ ではマズイ。