転ばぬ先の備忘録

記事を書くための活性化エネルギーになかなか到達しない

正準相関分析(Canonical Correlation Analysis; CCA)における固有ベクトルの直交性

正準相関分析とは

正準相関分析(Canonical Correlation Analysis; CCA,多変量解析の一手法)は,2組の変数ベクトル  \boldsymbol{x} \in \mathbb{R}^p, \boldsymbol{y} \in \mathbb{R}^q で構成される観測データ  (\boldsymbol{x} _ 1, \boldsymbol{y} _ 1), (\boldsymbol{x} _ 2, \boldsymbol{y} _ 2), \cdots (\boldsymbol{x} _ N, \boldsymbol{y} _ N) に対して,線形変換:

 \displaystyle u = \boldsymbol{a}^{\mathrm{T}}\boldsymbol{x}, v = \boldsymbol{b}^{\mathrm{T}}\boldsymbol{y} \tag{1}

を行い,変換後の  N 個ずつの変数(正準相関変数) u, v 間の相関係数を最大化するもの.参考:原著*1,解説記事(例)*2,多変量解析について(例)*3.色々な分野(話題のものだと機械学習系,部分空間同定など)で適用されてきたらしい.

CCAと固有値問題

(1) の  u, v 間の相関係数を最大化する変換係数ベクトル  \boldsymbol{a}, \boldsymbol{b} を求める問題は,次の一般化固有値問題に帰着される(中略).

 \displaystyle \begin{bmatrix}
O & V _ {xy} \\
V _ {yx} & O \\
\end{bmatrix}
\begin{bmatrix}
\boldsymbol{a} \\
\boldsymbol{b} \\
\end{bmatrix} = 
\lambda \begin{bmatrix}
V _ {xx} & O \\
O & V _ {yy} \\
\end{bmatrix}
\begin{bmatrix}
\boldsymbol{a} \\
\boldsymbol{b} \\
\end{bmatrix}
 \tag{2}

ただし, V _ {xx}, V _ {xy}, V _ {yx}, V _ {yy} はサンプル分散共分散行列であり,固有値  \lambda u, v 間の相関係数と一致する(説明は略). \lambda m = \mathrm{min} (p,q) 個あり,

 \displaystyle 1 \geq \lambda _ 1 \geq \lambda _ 1 \geq \cdots \geq \lambda _ m \geq 0 \tag{3}

を満たす.今回の記事は,(2) の固有値問題で異なる固有値  \lambda _ i, \lambda _ j に対する固有ベクトル  (\boldsymbol{a} _ i, \boldsymbol{b} _ i), (\boldsymbol{a} _ j, \boldsymbol{b} _ j) について, \boldsymbol{a} _ i, \boldsymbol{a} _ j および  \boldsymbol{b} _ i, \boldsymbol{b} _ j はそれぞれ直交するという性質を示す.

ここまで読んで,(これってPCA, MLRみたいな,線形写像によるデータの次元削減だよね,固有ベクトル直交するの自明だよね)って思った方はYoutubeでかわいい動物やVtuberの動画を探すほうが有意義な時間を過ごせます.そこそこ探しても直交性を確かめている文献が無かった気がしたので...

式変形タイム

(2) を以下の固有値問題の形式に書き直す:

 \displaystyle V _ {xx} ^ {-1} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} = \lambda ^ 2 \boldsymbol{a}, \quad V _ {yy} ^ {-1} V _ {yx} V _ {xx} ^ {-1} V _ {xy} \boldsymbol{b} = \lambda ^ 2 \boldsymbol{b} \tag{3}

これに対して,固有ベクトル  \boldsymbol{a} _ i, \boldsymbol{a} _ j は以下を満たす.

 \displaystyle V _ {xx} ^ {-1} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} _ i = \lambda _ i ^ 2 \boldsymbol{a} _ i, \quad V _ {xx} ^ {-1} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} _ j = \lambda _ j ^ 2 \boldsymbol{a} _ j \tag{4}

この第一式両辺左側から  \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} を,第二式の両辺を転置して右側から  V _ {xx} \boldsymbol{a} _ i を作用させると,

 \displaystyle \left\{ \begin{split}
( \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} ) V _ {xx} ^ {-1} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} _ i = \lambda _ i ^ 2 ( \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} ) \boldsymbol{a} _ i, \\ \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xy} V _ {yy} ^ {-1} V _ {yx} V _ {xx} ^ {-1} ( V _ {xx} \boldsymbol{a} _ i ) = \lambda _ j ^ 2 \boldsymbol{a} _ j ^ {\mathrm{T}} ( V _ {xx} \boldsymbol{a} _ i )
\end{split} \right.
 \displaystyle \Rightarrow \left\{ \begin{split}
\boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} _ i = \lambda _ i ^ 2 \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i, \\ \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xy} V _ {yy} ^ {-1} V _ {yx} \boldsymbol{a} _ i = \lambda _ j ^ 2 \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i
\end{split} \right.

 \displaystyle \Rightarrow \lambda _ i ^ 2 \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i = \lambda _ j ^ 2 \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i \tag{5}

が得られる.(5) において, \lambda _ j \neq \lambda _ j を考慮すると,

 \displaystyle \boldsymbol{a} _ j ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i = 0 \tag{6}

が得られる.これに (2) の一般化固有値問題を導出する過程で入れる制約(詳細は略):

 \displaystyle \boldsymbol{a} _ i ^ {\mathrm{T}} V _ {xx} \boldsymbol{a} _ i = 1 \tag{7}

を加えることで,

 \displaystyle \boldsymbol{a} _ j ^ {\mathrm{T}} \boldsymbol{a} _ i = 0 \tag{8}

が導出される.これは 固有ベクトル  \boldsymbol{a} _ i, \boldsymbol{a} _ j の直交性そのもの.また, \boldsymbol{b} _ i, \boldsymbol{b} _ j の直交性については (3) ~ (8) の変形を同様に行うことで導出できる.

コメント

(略)が多いけれども注釈に挙げた資料に載っているのでとりあえず割愛.後日気が向けば書くかも?実装についてはこちらの記事

qiita.com

が分かりやすいです.

*1:H.Hotelling, "Relations between two sets of variables," 1936.

*2:赤穂, "正準相関分析入門", 2013.

*3:杉山・藤越・小椋, "多変量データ解析(浅倉書店)", 2014.

速度分布関数を用いた巨視的変数の定義

流体力学シリーズ3「分子気体力学」冒頭 p. 2 に次の説明がある(一部改変).

(同一の単原子分子からなる気体を考える.また,理想気体の条件を入れる.)位置ベクトル  X _ i ,分子速度  \xi _ i を変数とする6次元空間内の点  (X _ i, \xi _ i) における体積素片  d\boldsymbol{X}d\boldsymbol{\xi} \ (d\boldsymbol{X} = dX _ 1 dX _ 2 dX _ 3, d\boldsymbol{\xi} = d\xi _ 1 d\xi _ 2 d\xi _ 3) を考える.時刻  t におけるこの体積素片内の分子数  dN X _ i, \xi _ i, t の関数  f(X _ i, \xi _ i, t) を用いて

 \displaystyle dN = \frac{1}{m}f(X _ i, \xi _ i, t)d\boldsymbol{X}d\boldsymbol{\xi} \tag{2.1}

と表されるとき, f または  f/m を気体の速度分布関数という(  m は分子の質量).巨視的変数:気体の密度  \rho ,流速  v _ i ,温度  T ,圧力  p ,単位質量当たりの内部エネルギー  e ,応力テンソル  p _ {ij} ,熱流ベクトル  q _ i は速度分布関数  f のモーメントとして次の式で定義される:

 \displaystyle \rho = \int f d\boldsymbol{\xi}, \tag{2.2}
 \displaystyle v _ i = \frac{1}{\rho} \int \xi _ i f d\boldsymbol{\xi}, \tag{2.3}
 \displaystyle 3RT = \frac{1}{\rho} \int (\xi _ i - v _ i) ^ 2 f d\boldsymbol{\xi}, \tag{2.4}
 \displaystyle p = \frac{1}{3} \int (\xi _ i - v _ i) ^ 2 f d\boldsymbol{\xi} = R \rho T, \tag{2.5}
 \displaystyle e = \frac{1}{\rho} \int \frac{1}{2} (\xi _ i - v _ i) ^ 2 f d\boldsymbol{\xi} = \frac{3}{2} RT, \tag{2.6}
 \displaystyle p _ {ij} = \int (\xi _ i - v _ i)(\xi _ j - v _ j) f d\boldsymbol{\xi}, \tag{2.7}
 \displaystyle q _ i = \int \frac{1}{2} (\xi _ i - v _ i)(\xi _ j - v _ j) ^ 2 f d\boldsymbol{\xi}. \tag{2.8}

 p p _ {ij} がややこしいが,添え字がついている方が応力テンソル f について,特に平衡状態では次のMaxwell分布.  \displaystyle f = \frac{\rho}{(2 \pi RT) ^ {3/2}} e ^ {- \frac{(\xi _ i - v _ i) ^ 2}{2RT} } \tag{1} 「定義」とあるのでそのまま飲み込んでも良いけれど,式の形から直感的でないと感じた(一部,特に後半)ので最低限の定義から導出したメモ.


 \rho について

(2.1)両辺に  m をかけて, d\boldsymbol{X} 内のすべての速度を持つ分子について合算する.

 \displaystyle mdN = f d\boldsymbol{X}d\boldsymbol{\xi} \quad \rightarrow \quad \int _ {\boldsymbol{\xi}} mdN = \left(\int _ {\boldsymbol{\xi}} f d\boldsymbol{\xi} \right) d\boldsymbol{X}

積分後,左辺は  d\boldsymbol{X} 内の分子の質量の総和で,これを  d\boldsymbol{X} で割れば単位体積あたりの気体の質量;すなわち気体密度となる.次式が得られる.  \displaystyle \rho = \frac{ \int  _ {\boldsymbol{\xi}} mdN }{ d\boldsymbol{X} } = \int _ {\boldsymbol{\xi}} f d\boldsymbol{\xi} \tag{2.2*}

 v _ i について

(2.1)両辺に  m\xi _ i をかけて, d\boldsymbol{X} 内のすべての速度を持つ分子について合算する.

 \displaystyle m\xi _ i dN = \xi _ i f d\boldsymbol{X}d\boldsymbol{\xi} \quad  \rightarrow \quad \int _ {\boldsymbol{\xi}} m\xi _ idN = \left(\int _ {\boldsymbol{\xi}} \xi _ i f d\boldsymbol{\xi} \right) d\boldsymbol{X}

積分後,左辺は  d\boldsymbol{X} 内の分子の  \xi _ i 方向運動量の総和で,これを  d\boldsymbol{X} で割れば単位体積あたりの気体の運動量となる.  \displaystyle \rho v _ i = \int _ {\boldsymbol{\xi}} \xi _ i f d\boldsymbol{\xi} \tag{2.3*}

 e について

(2.1)両辺に  \frac{1}{2}m|\xi _ i | ^ 2 をかけて, d\boldsymbol{X} 内のすべての速度を持つ分子について合算する.

 \displaystyle \frac{1}{2} m|\xi _ i| ^ 2 dN = \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{X}d\boldsymbol{\xi} \quad  \rightarrow \quad \int _ {\boldsymbol{\xi}} \frac{1}{2} m|\xi _ i| ^ 2 dN = \left(\int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} \right) d\boldsymbol{X}

積分後,左辺は  d\boldsymbol{X} 内の分子の全エネルギーの総和(※分子間力のポテンシャルは無視)で,これを  d\boldsymbol{X} で割った  \displaystyle \int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} が単位体積あたりの気体の全エネルギーとなる.一方,気体の全エネルギーを巨視的変数で表すと,運動エネルギー・内部エネルギーに分離された  \displaystyle \frac{1}{2} \rho v _ i ^ 2 + \rho e の形である.以上より,次の関係式が成立.

 \displaystyle \int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} = \frac{1}{2} \rho v _ i ^ 2 + \rho e

この式を以下のように変形して,(2.6) が得られる.

 \begin{aligned}
\rho e &= \int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} - \frac{1}{2} \rho v _ i ^ 2  \\ 
&= \int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} - \rho v _ i ^ 2 + \frac{1}{2} \rho v _ i ^ 2 \\
&= \int _ {\boldsymbol{\xi}} \frac{1}{2} |\xi _ i| ^ 2 f d\boldsymbol{\xi} - v _ i \int _ {\boldsymbol{\xi}} \xi _ i f d\boldsymbol{\xi} + \int _ {\boldsymbol{\xi}} \frac{1}{2} |v _ i| ^ 2 f d\boldsymbol{\xi} \\
&= \int _ {\boldsymbol{\xi}} \frac{1}{2} \left( \xi _ i - v _ i \right) ^ 2 f d\boldsymbol{\xi}
\end{aligned} \tag{2.6*}

2行目と3行目の変形では,既に導出した (2.3*) を用いている.また,ここで導出した  e に対して,単原子理想気体に対する  \displaystyle e = C _ v T = \frac{3}{2} RT の定義から,  \displaystyle 3RT = 2e = \frac{1}{\rho} \int _ {\boldsymbol{\xi}} \left( \xi _ i - v _ i \right) ^ 2 f d\boldsymbol{\xi} \tag{2.4*} が導出される.さらに,平衡状態の状態方程式 p = \rho RT を (2.4*) に適用すると,  \displaystyle p = \rho RT = \frac{1}{3} \int _ {\boldsymbol{\xi}} \left( \xi _ i - v _ i \right) ^ 2 f d\boldsymbol{\xi} \tag{2.5*} が導出される.(2.5*) (2.6*) では, f が平衡状態で熱力学的意味あり.非平衡状態の場合でも (2.5*) (2.6*) の形を適用して,”非平衡状態に拡張された熱力学的変数”の扱い.


 p _ {ij}, q _ j について

応力テンソル,熱流ベクトルについては,次の各流量から考える.

質量流量・運動量流量・エネルギー流量

下図のように気体中に仮想曲面を考え, \boldsymbol{X} 周りの微小柱状領域を考える.

f:id:tentou0:20200606172925p:plain
図:仮想曲面と柱状領域
 \boldsymbol{X} における曲面の外側へ向かう法線ベクトルを  \boldsymbol{n} と設定すると, \boldsymbol{X} 近傍の,ある  \boldsymbol{\xi} ~  \boldsymbol{\xi} + d\boldsymbol{\xi} の速度を持つ分子で,図の柱状領域に含まれる数は, f の定義より

 \displaystyle \left(dN =\right) \frac{1}{m} f d\boldsymbol{X}d\boldsymbol{\xi} = \frac{1}{m} f dS|\boldsymbol{\xi} \cdot \boldsymbol{n}| \Delta t d\boldsymbol{\xi}

である.この分子数をすべての  \boldsymbol{\xi} で合算すると, \Delta t 間に  dS を通過する分子数が次のように求まる.  \displaystyle \int _ {\boldsymbol{\xi}} \frac{1}{m} f dS\boldsymbol{\xi} \cdot \boldsymbol{n} \Delta t d\boldsymbol{\xi} \tag{2}

質量流量: MdS \Delta t

(2) に分子1個の質量  m をかけて,質量流束を得る.

 \displaystyle MdS \Delta t = \int _ {\boldsymbol{\xi}} f dS\boldsymbol{\xi} \cdot \boldsymbol{n} \Delta t d\boldsymbol{\xi} \quad \Rightarrow \quad M = \int _ {\boldsymbol{\xi}} f \boldsymbol{\xi} \cdot \boldsymbol{n} d\boldsymbol{\xi}

流体力学では  M = \rho v _ i n _ i で表される(導出は略,柱状領域を  \boldsymbol{v} に対して考える)ので,これらを比較して  \boldsymbol{n} との内積を外し,  \displaystyle \rho v _ i = \int _ {\boldsymbol{\xi}} \xi _ i f d\boldsymbol{\xi} \tag{2.3*} が得られる.(総和規約: \boldsymbol{v} \cdot \boldsymbol{n} v _ i n _ i は同義)

運動量流量: P _ i dS \Delta t

(2) に分子1個の運動量  m\xi _ i をかけて,運動量流束を得る.

 \displaystyle P _ i dS \Delta t = \int _ {\boldsymbol{\xi}} f \xi _ i dS \xi _ j n _ j \Delta t d\boldsymbol{\xi} \quad \Rightarrow \quad P _ i = \int _ {\boldsymbol{\xi}} f \xi _ i \xi _ j n _ j d\boldsymbol{\xi}

流体力学では  P _ i = \rho v _ i v _ j n _ j + p _ {ij} n _ j で表される(導出は略)ので,これらを比較して  \boldsymbol{n} との内積を外し,以下の式変形により (2.7) が得られる.

 \begin{aligned}
p _ {ij} &= \int _ {\boldsymbol{\xi}} f \xi _ i \xi _ j d\boldsymbol{\xi} - \rho v _ i v _ j \\ 
&= \left\{ \int _ {\boldsymbol{\xi}} f(\xi _ i - v _ i)(\xi _ j - v _ j) d\boldsymbol{\xi} + \int _ {\boldsymbol{\xi}} f \xi _ i v _ j d\boldsymbol{\xi} + \int _ {\boldsymbol{\xi}} f v _ i \xi _ j d\boldsymbol{\xi} - \int _ {\boldsymbol{\xi}} f v _ i v _ j d\boldsymbol{\xi} \right\} - \rho v _ i v _ j \\
&= \left\{ \int _ {\boldsymbol{\xi}} f(\xi _ i - v _ i)(\xi _ j - v _ j) d\boldsymbol{\xi} + \rho v _ i v _ j + \rho v _ i v _ j - \rho v _ i v _ j \right\} - \rho v _ i v _ j \\ 
&= \int _ {\boldsymbol{\xi}} f(\xi _ i - v _ i)(\xi _ j - v _ j) d\boldsymbol{\xi}
\end{aligned} \tag{2.7*}

2行目と3行目の変形では,既に導出した (2.2*) (2.3*) を用いている.

エネルギー流量: E dS \Delta t

(2) に分子1個のエネルギー  \frac{1}{2}m\xi _ i ^ 2 をかけて,エネルギー流束を得る.

 \displaystyle E dS \Delta t = \int _ {\boldsymbol{\xi}} \frac{1}{2} f \xi _ i ^ 2 dS \xi _ j n _ j \Delta t d\boldsymbol{\xi} \quad \Rightarrow \quad E = \frac{1}{2} \int _ {\boldsymbol{\xi}} f \xi _ i ^ 2 \xi _ j n _ j d\boldsymbol{\xi}

流体力学では  E = ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j n _ j + p _ {ij} v _ i n _ j + q _ j n _ j で表される(導出は略)ので,これらを比較して  \boldsymbol{n} との内積を外し,以下の式変形により (2.8) が得られる.

 \begin{aligned}
q _ j &= \frac{1}{2} \int _ {\boldsymbol{\xi}} f \xi _ i ^ 2 \xi _ j d\boldsymbol{\xi} - ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j - p _ {ij}v _ i \\ 
&= \left\{ \frac{1}{2} \int _ {\boldsymbol{\xi}} f (\xi _ i - v _ i) ^ 2 (\xi _ j - v _ j) d\boldsymbol{\xi} - \frac{1}{2} \int _ {\boldsymbol{\xi}} f \left\{ (-2 \xi _ i v _ i + v _ i ^ 2)(\xi _ j - v _ j) - \xi _ i ^ 2 v _ j \right\} d\boldsymbol{\xi} \right\} - ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j - p _ {ij}v _ i \\
&= \left\{ \frac{1}{2} \int _ {\boldsymbol{\xi}} f (\xi _ i - v _ i) ^ 2 (\xi _ j - v _ j) d\boldsymbol{\xi} + \int _ {\boldsymbol{\xi}} f v _ i (\xi _ i - v _ i)(\xi _ j - v _ j) d\boldsymbol{\xi} + \frac{1}{2} \int _ {\boldsymbol{\xi}} f v _ j (\xi _ i - v _ i) ^ 2 d\boldsymbol{\xi} + \frac{1}{2} \int _ {\boldsymbol{\xi}} f (-2 v _ i ^ 2 v _ j + v _ i ^ 2 \xi _ j + 2 v _ i \xi _ i v _ j) d\boldsymbol{\xi} \right\} - ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j - p _ {ij}v _ i \\
&= \left\{ \frac{1}{2} \int _ {\boldsymbol{\xi}} f (\xi _ i - v _ i) ^ 2 (\xi _ j - v _ j) d\boldsymbol{\xi} + \int _ {\boldsymbol{\xi}} f v _ i (\xi _ i - v _ i)(\xi _ j - v _ j) d\boldsymbol{\xi} + \frac{1}{2} \int _ {\boldsymbol{\xi}} f v _ j (\xi _ i - v _ i) ^ 2 d\boldsymbol{\xi} + \frac{1}{2} \int _ {\boldsymbol{\xi}} f (v _ i ^ 2 \xi _ j) d\boldsymbol{\xi} \right\} - ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j - p _ {ij}v _ i \\
&= \left\{ \frac{1}{2} \int _ {\boldsymbol{\xi}} f (\xi _ i - v _ i) ^ 2 (\xi _ j - v _ j) d\boldsymbol{\xi} + p _ {ij}v _ i + \rho e v _ j + \frac{1}{2} \rho v _ i ^ 2 v _ j \right\} - ( \frac{1}{2} \rho v _ i ^ 2 + \rho e ) v _ j - p _ {ij}v _ i \\
&= \frac{1}{2} \int _ {\boldsymbol{\xi}} f (\xi _ i - v _ i) ^ 2 (\xi _ j - v _ j) d\boldsymbol{\xi}
\end{aligned} \tag{2.8*}

3 行目 ~ 5行目の変形では,既に導出した (2.3*) (2.6*) (2.7*) を用いている.


あとがき

大学院の講義で途中まで導出されていたので折角ということで全部導出してみたけれど,結構頭混乱してきた... 速度分布関数でのEuler方程式,NS式の導出にもチャレンジしたい. この分野はBKW方程式などの形くらいまでしか触れなかったので,実用的な展開を知りたい.(講義で紹介されていた気がする...)

ご指摘,ご意見等ありましたらコメント等にてお願いします.