ブログ

グラフニューラルネットワーク(GNN; Graph Neural Network)入門

グラフニューラルネットワーク(GNN)が取り上げられることはそれほど多くはない一方で、Transformerを理解するにあたってはGNNを理解しておくことで直感的な理解が可能になります。当記事ではGNNの基本的な内容について把握できるように入門にあたって抑えておくべき事項をまとめました。

・Transformerの直感的理解
https://www.hello-statisticians.com/ml/deeplearning/transformer1.html

前提知識

Transformerとグラフニューラルネットワーク

下記で詳しく取り扱いました。当記事は下記の副読的な内容になるように取りまとめました。

Transformerグラフニューラルネットワークネットワーク分析」と大まかに解釈できるので、当記事ではグラフニューラルネットワークについて詳しく取り扱います。

集合と要素

グラフ理論では基本的に数ⅠAの「集合」で取り扱われる内容を元に立式されます。当項では「集合」の基本的な式表記の確認を行います。たとえばサイコロの出目の$1$〜$6$の集合を$X$とおくとき$X$は下記のように定義できます。
$$
\large
\begin{align}
X = \{ 1, 2, 3, 4, 5, 6 \}
\end{align}
$$

このとき$X$の要素を$x$とおくと、$x \in X$のように表すことができます。$x \in X$は$x$が$1$〜$6$の要素を取りうることを表しており、「$1 \in X$」〜「$6 \in X$」も同義です。

「集合」については下記でも詳しくまとめましたので合わせて参照ください。

グラフ理論の式定義

グラフ理論の基本要素であるノード、エッジ、隣接行列の概要は上記で取り扱いましたので省略します。基本的には「点と線で物事の関連性を表す」と認識できれば十分です。当項では以下、グラフ理論やグラフニューラルネットワークを取り扱う際に用いられる数式について確認を行います。

グラフをGraphの$G$、ノードの集合を頂点を表すVerticeやVertexの$V$、エッジの集合をEdgeの$E$で定義すると、下記のような等式で表すことができます。
$$
\large
\begin{align}
G = (V,E) \quad (1)
\end{align}
$$

上記の式は論文などのフォーマルな議論ではよく用いられますがグラフ理論を学んだことがないと抽象的で理解しにくいので、具体例に基づいて確認します。

グラフ理論:Wikipediaより $\quad$ 左がグラフ、右がグラフに対応する隣接行列

上図は「Transformerの解説」で用いたグラフの例ですが、上図を元に$(1)$式を具体的に確認します。図では$1$〜$6$のノードがあるので、ノードは$1$〜$6$の集合に対応します。よって、ノードの集合$V$は下記のように表されます。
$$
\large
\begin{align}
V = \{ 1, 2, 3, 4, 5, 6 \}
\end{align}
$$

また、グラフでは$1$と$2,5$、$2$と$1,3,5$、$3$と$2,4$、$4$と$3,5,6$、$5$と$1,2,4$、$6$と$4$がそれぞれ連結していることが確認できます。よって、エッジの集合$E$は下記のように表すことができます。
$$
\large
\begin{align}
E = \{ (1,2), (1,5), &(2,1), (2,3), (2,5), (3,2), (3,4), (4,3), (4,5), (4,6), \\
& (5,1), (5,2), (5,4), (6,4) \} \quad (2)
\end{align}
$$

上記では有向グラフの取り扱いに基づいて$(1,2)$と$(2,1)$を区別しましたが、無向グラフであることを前提に表記する場合は「左<右」を前提とできるので、下記のように表すことができます。
$$
\large
\begin{align}
E = { (1,2), (1,5), (2,3), (2,5), (3,4), (4,5), (4,6) } \quad (3)
\end{align}
$$

$(2)$と$(3)$を確認すると、$(3)$の要素のエッジの数は$7$個であり、$14$個である$(2)$のちょうど半分であることが確認できます。このことは「向きを考慮しない場合はエッジの数が半分になる」と解釈すれば良いです。

有向グラフを用いるか無向グラフを用いるかについては、グラフニューラルネットワークを取り扱う場合はそれぞれのノード単位で処理が行われるので、有向グラフを前提にすると考えやすいのではないかと思います。

グラフニューラルネットワークで必要な数式

前項ではグラフ理論におけるノード$V$とエッジ$E$の定義について確認を行いました。当項では前項の内容に加えてグラフニューラルネットワークで必要になる式定義を確認します。文字の選定は「A Comprehensive Survey on Graph Neural Networks」を参考に行いました。

ノードの特徴量

グラフニューラルネットワークではノードやエッジ単位に特徴量・隠れ層を割り当てます。ノード単位で計算を行うことが理解しやすいかつ多いので、当項では$n$個のノードに$d$次元の特徴量を割り当てる前提で式の確認を行います。
$$
\large
\begin{align}
X \in \mathbb{R}^{n \times d}
\end{align}
$$

上記の数式は一見難しいですが、「それぞれの要素が実数である$n$行$d$列の行列$X$を定義する」という意味合いであり、単に略記であると理解しておけば良いです。$n$個のノードへの$d$次元のベクトルの割り当ては、図で表すと下記のように表すことができます。

$n=5, d=5$でノードに特徴量を割り当てた場合

上図では$n=5, d=5$でノードに特徴量を割り当てた場合の図示を行いました。ここで各ノードに割り当てられたベクトルを$\vec{x}_{v}, \, v \in V$、グラフニューラルネットワークにおける$l$層目のグラフにおける隠れ層を$h_{v}^{l}$とおき、$h_{v}^{0} = \vec{x}_v$が成立すると仮定します。

このとき、$h_{v}^{0}$に対し、$L$層の処理を行うと$h_{v}^{L}$が得られますが、$h_{1}^{L}, \cdots , h_{n}^{L}$に基づきノードの分類やグラフの分類などを行うことができます。$h_{v}^{0}$から$h_{v}^{L}$を得る際の処理は次節で確認します。

ノードの集合・要素と$\displaystyle \sum$

$\displaystyle \sum$は$\displaystyle \sum_{i=1}^{n} x_1 = x_1 + \cdots + c_n$のような用いられ方をすることが多い一方で、集合や要素の表記に基づいて$\displaystyle \sum$が用いられることもあるので注意が必要です。

例えば上記のようなグラフに対し、$l$層におけるノード$1$に隣接するノードの隠れ層の和は下記のように表すことができます。
$$
\large
\begin{align}
\sum_{w \in N(1)} h_{w}^{l} = h_{2}^{l} + h_{3}^{l} + h_{4}^{l} + h_{5}^{l}
\end{align}
$$

このような式表記は一見難しく見えますが、グラフにおける特定のノードに隣接するノードの集合のようにインデックスが不規則になる場合の和の計算などの際に有用かつよく用いられるので、抑えておくと良いと思います。

ネットワーク分析

単語のベクトル表現に基づいてベクトル類似度を計算し、この値に基づいてグラフを描くことが可能です。この一連の流れは「ネットワーク分析」などのようにいわれますが、詳しくは下記で取り扱いました。

グラフニューラルネットワーク

MPNNフレームワーク

グラフニューラルネットワークの数式表記に関しては様々なものがありますが、MPNN(Message Passing Neural Network)の定義を元に考えると理解しやすいと思います。よって、当記事ではMPNN論文の数式を元にグラフニューラルネットワークの数式を定義し解釈を確認します。

グラフニューラルネットワークの基本式

$$
\large
\begin{align}
m_{v}^{l+1} &= \sum_{w \in N(v)} M_{l}(h_{v}^{l}, h_{w}^{l}, e_{vw}) \quad (4) \\
h_{v}^{l+1} &= U_{l}(h_{v}^{l}, m_{v}^{l+1}) \quad (5) \\
v & \in V
\end{align}
$$

上記の式はMPNN(Message Passing Neural Network)論文の$(1), (2)$式の$t$を$l$に置き換えて表しましたが、グラフニューラルネットワークの内部処理は上記を元に概ね理解することが可能です。

ここで$(4)$式の$M_{l}$は$l$層におけるノード間のMessage Passingの関数、$(5)$式の$U_{l}$は$l$層におけるノード内のUpdateの関数を表します。$M_{l}$、$U_{l}$をシンプルな表記で表す場合は下記のように表すことができます。
$$
\large
\begin{align}
m_{v}^{l+1} &= \sum_{w \in N(v)} c(e_{vw}) h_{w}^{l} \quad (6) \\
h_{v}^{l+1} &= \mathrm{sigmoid}((h_{v}^{l}+m_{v}^{l+1}) W_{v}^{l}) \quad (7) \\
W_{v}^{l} & \in \mathbb{R}^{d \times d}
\end{align}
$$

$(6)$式の$N(v)$はノード$v$に隣接するノードの集合、$c(e_{vw})$はエッジ$e_{vw}$の重みを計算する関数を表します。$d \times d$行列の$W_{v}^{l}$はニューラルネットワークの学習パラメータに対応します。

また、$(7)$式はMLP(Multi Layer Perceptron)の式に対応することも合わせて抑えておくと良いです。$L$層のグラフニューラルネットワークでは$(6), (7)$式のような処理を$L$回繰り返し、次項で確認するようなグラフニューラルネットワークのタスクを解くにあたって活用されます。

グラフニューラルネットワークのタスク設定

グラフニューラルネットワークを用いて解くタスクは主に「①ノード分類」と「②グラフ分類」の$2$つを抑えておくと良いです。「A Comprehensive Survey on Graph Neural Networks」の図がわかりやすいので簡単に確認します。

・ノード分類(Node Classification)

A Comprehensive Survey on Graph Neural Networks. Fig.$2a$

・グラフ分類(Graph Classification)

A Comprehensive Survey on Graph Neural Networks. Fig.$2b$

直感的にはたとえば「水泳教室に通う」際に、「生徒」を「ノード」、「スクールへの所属」を「エッジ」で表す場合、個々の生徒の上達を判定することを「ノード分類」、スクール全体の上達を判定することを「グラフ分類」と対応させて理解すると良いと思います。

また、「グラフ分類」を行うことができる場合、「スクール全体の上達」のようなグラフ全体の何らかの特徴量が抽出されたと解釈することもできます。グラフニューラルネットワークの一例であるTransformerではこのように抽出が行われた特徴量を活用して、様々なタスクを解くことが可能になります。

参考

・MPNN論文
・A Comprehensive Survey on Graph Neural Networks
・グラフ理論と機械学習(運営者作成)

3.5.3 母分散の比の区間推定 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$3.5.3$節「母分散の比の区間推定」の内容を$F$分布を用いた母分散の比の取り扱いについて取りまとめを行いました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

「母分散の比の区間推定」の概要

概要

散らばりの度合いを表す「分散」や「標準偏差」などの指標は常に正の値を取ることから差ではなく比を元に取り扱うのが適切です。当記事では以下$F$分布を元に、$2$つの母集団から得られる標本の母分散の比の区間推定に関して確認を行います。

発展事項

$F$検定に用いる$F$分布の確率密度関数の導出に関しては下記などで詳しく取り扱いました。

必要な数学

「区間推定」の結果の導出にあたっては不等号に関する計算がよく出てくるので、抑えておく必要があります。
$$
\large
\begin{align}
-1.96 \frac{\sigma}{\sqrt{n}} \leq \bar{x}-\mu \leq 1.96 \frac{\sigma}{\sqrt{n}}
\end{align}
$$

上記のような数式を$\mu$に関して解く必要があるので、特に$-x<-y$が$x>y$に対応することは必須です。

母分散の比の区間推定

検定統計量の導出

F分布

$$
\large
\begin{align}
X & \sim \chi^2(m) \\
Y & \sim \chi^2(n)
\end{align}
$$

上記のように$X$と$Y$がそれぞれ自由度$m$と$n$の$\chi^2$分布に従う場合を仮定します。このとき、下記のように$F$を考えることができます。
$$
\large
\begin{align}
F = \frac{X/m}{Y/n} \sim F(m,n)
\end{align}
$$

上記の$F(m,n)$は自由度$(m,m)$の$F$分布(F-distribution)を表します。

母分散の推定・検定

母分散の推定・検定にあたっては、下記のように定める統計量$\chi^2$を用います。
$$
\large
\begin{align}
\chi^2 &= \frac{(n-1)\hat{\sigma}^2}{\sigma^2} \sim \chi^2(n-1) \\
\hat{\sigma}^2 &= \frac{1}{n-1} \sum_{i=1}^{n} (X_i-\overline{X})^2
\end{align}
$$

上記の$\hat{\sigma}^2$は不偏標本分散に対応します。

F統計量

母分散$\sigma_x^2$と$\sigma_y^2$の$2$つの母集団に関して、それぞれ$m$個と$n$個の標本の不偏標本分散$\hat{\sigma}_x^2$と$\hat{\sigma}_y^2$を仮定します。このとき下記が成立します。
$$
\large
\begin{align}
\frac{(m-1)\hat{\sigma}_x^{2}}{\sigma_x^{2}} & \sim \chi^{2}(m-1) \\
\frac{(n-1)\hat{\sigma}_y^{2}}{\sigma_y^{2}} & \sim \chi^{2}(n-1)
\end{align}
$$

上記と「$F$分布」の内容を元に、$2$つの母集団の母分散の比の統計量$F$を下記のように定義することができます。
$$
\large
\begin{align}
F &= \frac{\frac{(m-1)\hat{\sigma}_x^{2}}{\sigma_x^{2} (m-1)}}{\frac{(n-1)\hat{\sigma}_y^{2}}{\sigma_y^{2} (n-1)}} \\
&= \frac{\hat{\sigma}_x^{2}}{\sigma_x^{2}} \cdot \frac{\sigma_y^{2}}{\hat{\sigma}_y^{2}} \sim F(m-1,n-1)
\end{align}
$$

母分散の比の区間推定

前項の内容に基づいて母分散の比$\displaystyle \frac{\sigma_x^{2}}{\sigma_y^{2}}$の$95$%区間は下記のように表すことができます。
$$
\large
\begin{align}
F_{\alpha=0.975}(m-1,n-1) \leq & F \leq F_{\alpha=0.025}(m-1,n-1) \\
\frac{1}{F_{\alpha=0.025}(n-1,m-1)} \leq & \frac{\hat{\sigma}_x^{2}}{\sigma_x^{2}} \cdot \frac{\sigma_y^{2}}{\hat{\sigma}_y^{2}} \leq F_{\alpha=0.025}(m-1,n-1) \\
\frac{1}{F_{\alpha=0.025}(m-1,n-1)} \frac{\hat{\sigma}_x^{2}}{\hat{\sigma}_y^{2}} \leq & \frac{\sigma_x^{2}}{\sigma_y^{2}} \leq F_{\alpha=0.025}(n-1,m-1) \frac{\hat{\sigma}_x^{2}}{\hat{\sigma}_y^{2}}
\end{align}
$$

ここで$16$個の標本に基づいて$\hat{\sigma}_x^2=6$、$11$個の標本に基づいて$\hat{\sigma}_y^2=3$が観測される場合、母分散の比$\displaystyle \frac{\sigma_x^{2}}{\sigma_y^{2}}$の$95$%区間は下記のように計算できます。
$$
\large
\begin{align}
\frac{1}{F_{\alpha=0.025}(m-1,n-1)} \frac{\hat{\sigma}_x^{2}}{\hat{\sigma}_y^{2}} \leq & \frac{\sigma_x^{2}}{\sigma_y^{2}} \leq F_{\alpha=0.025}(n-1,m-1) \frac{\hat{\sigma}_x^{2}}{\hat{\sigma}_y^{2}} \\
\frac{2}{2.845} \leq & \frac{\sigma_x^{2}}{\sigma_y^{2}} \leq 2.544 \times 2 \\
0.703 \leq & \frac{\sigma_x^{2}}{\sigma_y^{2}} \leq 5.088
\end{align}
$$

「統計検定$2$級対応 統計学基礎」では$\displaystyle \frac{\sigma_x^{2}}{\sigma_y^{2}}$ではなく$\displaystyle \frac{\sigma_y^{2}}{\sigma_x^{2}}$が用いられるが、上記の不等号の両辺の逆数を元に不等号を入れ替えると結果が一致します。

統計学を学ぶにあたって最低限抑えておきたい数学 〜ベクトルの基本と内積〜

当記事では「統計学を学ぶにあたって最低限抑えておきたい数学」の中から「ベクトルの基本と内積」に関して取り扱います。ベクトルは複数の数字を同時に取り扱う考え方で、多次元の変数を取り扱う際などに必須になるので抑えておくと良いです。
取りまとめにあたっては数学の解説に関してはなるべくシンプルに取り扱いますが、統計学への応用に関連した複雑な内容に関しては目次に「*」をつけました。「*」がついているものはやや難しいので、読み飛ばしても問題ありません。

・基本数学まとめ
https://www.hello-statisticians.com/math_basic

ベクトルの基本

ベクトルの概要

ベクトルは「大きさ」と「向き」の$2$つで表される概念です。たとえば強風の注意報が出る場合はどの方角か以上に「秒速$x$m/s」が重要である一方で、夏や冬の雨量や積雪量の予報にあたっては「季節風がどの方角から吹くか」が「秒速$x$m/s」と同様に重要になります。

風速の例と同様に、単に「大きさ」を知れば良い場合と、「向き」も含めて重要な場合が色々とあります。このような場合に「大きさ」と「向き」を同時に取り扱う概念が「ベクトル」です。

ベクトルの式表記

ベクトルの式表記にあたっては数ⅡBでは$\vec{x}$のように表されることが多いです。一方、線形代数などではボールド体を用いて$\mathbf{x}$のように表される場合が多いですが、線形代数的な式変形がメインでない場合は$\vec{x}$を用いるで良いと思います。

ベクトルは「向き」と「大きさ」を取り扱う量であるので、$\vec{x}$の大きさを表す表記があると使いやすいです。このような際には$|\vec{x}|$のように表されることが多いです。

ベクトルの成分表示

前項のようにベクトルは$\vec{x}$のように定義されますが、ベクトルを$x$-$y$平面上の成分で表示することで様々な応用に用いることができます。具体的には下記のようにベクトルの成分表示を行うことができます。

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1., 2.])
loc = np.zeros(2)

plt.quiver(loc[0], loc[1], x[0], x[1], color="green", angles="xy", scale_units ="xy", scale=1)
plt.grid()

plt.xlim(-1, 2)
plt.ylim(-1, 3)
plt.show()

・実行結果

上記は$\vec{x}=(1, 2)$に対応します。上記は$x$-$y$平面上の成分に対応しますが、$x$-$y$-$z$空間上の成分に対応させて$3$次元で描画を行うことも可能です。また、ベクトルの成分表記は$\vec{x}=(1, 2)$のように横に書かずに下記のように縦に表記することもできます。
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} 1 \\ 2 \end{array} \right) \\
\vec{y} &= \left(\begin{array}{c} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{array} \right)
\end{align}
$$

ベクトルの加減

当項ではベクトルの加減について取り扱います。
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} 2 \\ 1 \\ 2 \end{array} \right) \\
\vec{y} &= \left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array} \right)
\end{align}
$$

上記のように定めた$\vec{x}, \vec{y}$に関して下記のように計算を行うことができます。
$$
\large
\begin{align}
\vec{x}+\vec{y} &= \left(\begin{array}{c} 2 \\ 1 \\ 2 \end{array} \right) + \left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array} \right) = \left(\begin{array}{c} 3 \\ 3 \\ 5 \end{array} \right) \\
\vec{x}-\vec{y} &= \left(\begin{array}{c} 2 \\ 1 \\ 2 \end{array} \right) – \left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array} \right) = \left(\begin{array}{c} 1 \\ -1 \\ -1 \end{array} \right)
\end{align}
$$

「ベクトルの成分表示」にあたっては横表記、縦表記のどちらも用いることができますが、上記のような演算を行う際には縦表記を用いると計算が見やすいです。

ベクトルのスカラー積

当項ではベクトルのスカラー積について取り扱います。ベクトルの積には主にスカラー積、内積、外積がありますが、スカラー積は当項で、内積は次節で取り扱います。外積は当記事では省略します。
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array} \right)
\end{align}
$$

上記のように定義した$\vec{x}$に関して下記のようにスカラー積の計算を行うことができます。
$$
\large
\begin{align}
2\vec{x} &= 2 \left(\begin{array}{c} 1 \\ 2 \\ 3 \end{array} \right) \\
&= \left(\begin{array}{c} 2 \\ 4 \\ 6 \end{array} \right)
\end{align}
$$

内積

内積の概要

前節ではベクトルとスカラーの積について取り扱いましたが、当項ではベクトルとベクトルの積について取り扱います。ベクトルとベクトルの積を考えるにあたっては主に内積と外積がありますが、以下、内積について取り扱います。

ベクトル$\vec{x}, \vec{y}$の内積$\vec{x} \cdot \vec{y}$は$2$つのベクトルのなす角$\theta$を用いて下記のように定義します。
$$
\large
\begin{align}
\vec{x} \cdot \vec{y} = |\vec{x}| |\vec{y}| \cos{\theta}
\end{align}
$$

次に以下のように$\vec{x}, \vec{y}$が成分表示ができると仮定します。
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} x_1 \\ x_2 \end{array} \right) \\
\vec{y} &= \left(\begin{array}{c} y_1 \\ y_2 \end{array} \right)
\end{align}
$$

このとき内積は下記のように表すことができます。
$$
\large
\begin{align}
\vec{x} \cdot \vec{y} &= \left(\begin{array}{c} x_1 \\ x_2 \end{array} \right) \cdot \left(\begin{array}{c} y_1 \\ y_2 \end{array} \right) \\
&= x_1 y_1 + x_2 y_2
\end{align}
$$

ベクトルの類似度と内積

「ベクトルが同じ向きを向くか」を判断する際の指標に$2$つのベクトルのなす角の$\cos{\theta}$を用いることができます。内積の定義の式を$\cos{\theta}$に関して解くと下記が得られます。
$$
\large
\begin{align}
\vec{x} \cdot \vec{y} &= |\vec{x}| |\vec{y}| \cos{\theta} \\
\cos{\theta} &= \frac{\vec{x} \cdot \vec{y}}{|\vec{x}| |\vec{y}|}
\end{align}
$$

上記を元に$\vec{x}$と$\vec{y}$の類似度を計算することができます。近年DeepLearningの領域でよく用いられるTransformerのDot Product Attentionは内積を元に処理を行うなど、内積の応用例は多いので、式定義は抑えておくと良いと思います。

ネットワーク分析から直感的に理解するTransformerの仕組みと処理の流れ

昨今のDeepLearningの研究を席巻するTransformerの解説は複雑なものが多く、なかなか直感的に理解するのは難しいです。そこで当記事では「グラフ理論」や「ネットワーク分析」の知見を元に直感的にTransformerを理解できるように取りまとめを行いました。

概要

Transformerの解説などには難しいものが多いですが、基本的には下記に基づいて直感的に理解することができます。

① Transformerはネットワーク分析に類似する
② Transformerはグラフニューラルネットワークの一種である
③ グラフニューラルネットワークはRNNの拡張である

上記はどれも表立って解説されることが少ないので、解説コンテンツなどで取り扱われるケースは稀です。当記事では以下、必要な知識を前提知識で取り扱ったのちにTransformerの仕組みについて詳しく確認を行います。

前提知識

Word2vecに基づく単語のベクトル表記

単語をおよそ$100$〜$1,000$次元のベクトルに変換する手法の総称をWord$2$vecといいます。狭義にはWord$2$vecが$2013$年の研究を指す場合もありますが、単に「Word to Vector」の概念を表すと考えることもできるので当記事では総称と定めました。

Word$2$vecの大まかな理解にあたっては、「概念をベクトルで表す」ことが理解できれば良いです。たとえば新商品の紹介をする際に「レトルトカレー」であれば、「食品、保存食、温めが必要、辛い、肉入り」などに基づいて$0$or$1$の質的変数を作成することが可能です。

上記のように考えることで、「新商品のレトルトカレー」を属性を表す変数に基づくベクトルである程度表すことが可能になります。Word$2$vecは単語をベクトル化する手順ですが、レトルトカレーと同様にベクトル化を行うと大まかに理解しておけば当記事の理解にあたっては一旦十分です。

具体的な例があるとわかりやすいので、「本屋に行った。統計の教科書を買った。」を元に以下、Word$2$vecを適用する際の大まかな処理について確認します。

「本屋に行った。統計の教科書を買った。」という文を単語に分解し、動詞を基本形に直し助詞を除外すると「本屋、行く、統計、教科書、買う」のような単語の列が得られます。このような単語の列は数列を拡張して系列と表され、系列モデリングなどのようにいわれることも多いです。

ここでそれぞれの単語の意味に着目することで、単語を下記のようなベクトルの表記で表すことができます。

Word$2$vecを用いて単語をベクトルで表す際にベクトルの要素に具体的な意味を対応させるわけではありませんが、このように解釈することが可能であることは抑えておくと良いです。Word$2$vecの詳細に関しては「深層学習による自然言語処理」の$3$章の解説がわかりやすいのでここでは省略します。

グラフ理論と隣接行列

グラフ理論は点と線で物事を表す理論です。たとえば駅の路線図では下記のように駅を点、路線を線で表します。

東京メトロホームページより

上記の路線図では「駅と駅が隣接するかどうか」を中心に取り扱う一方で、それぞれの位置や方角などは厳密に再現はされません。このように、「隣接するかどうか」のみに着目して物事を表す際の理論を「グラフ理論」といいます。

グラフ理論では点をノード(node)、線をエッジ(edge)、全体をグラフ(graph)と定義します。数式で表すと$G = (V,E)$のように表しますが、$V$が頂点のVertice、$E$がEdge、$G$がGraphであるとそれぞれ解釈すると良いです。

グラフの表記法に関しては主に$2$通りあり、「①図を用いる」と「②隣接行列を用いる」をそれぞれ抑えておくと良いです。例があるとわかりやすいので下記のWikipediaの例を元に確認します。

グラフ理論:Wikipediaより $\quad$ 左がグラフ、右がグラフに対応する隣接行列

上記の例ではノードをそれぞれ行列の行と列に対応させ、$2$つのノードが連結する場合は$1$、連結しない場合は$0$をそれぞれの要素に持ちます。たとえば$1$と$2$が連結するので$1$行$2$列と$2$行$1$列が$1$であることが確認できます。

このようにグラフ理論ではノードとエッジを用いて概念を表す理論であり、グラフの表記法には「①図を用いる」と「②隣接行列を用いる」の$2$通りあることを大まかに理解しておけば当記事の範囲では十分です。

ネットワーク分析

グラフ理論の教科書などでは、特定の定義されたグラフについて取り扱うことが多いですが、言語の取り扱いを考える際は前々項で取り扱ったWord$2$vecのように何らかの手法に基づいて各単語にベクトルを割り当て、その類似度に基づいてグラフを作成することがよく行われます。

単語の類似度などに基づいてグラフを作成することを従来的には「ネットワーク分析」といいますが、この際によく用いられるのがcos類似度です。
$$
\large
\begin{align}
\cos{\theta} &= \frac{\vec{x} \cdot \vec{y}}{|\vec{x}||\vec{y}|} \\
-1 \leq & \cos{\theta} \leq 1
\end{align}
$$

$2$つのベクトル$\vec{x}, \vec{y}$のなす角を$\theta$とおくとき、内積$\vec{x} \cdot \vec{y}$を用いることで$\cos{\theta}$は上記のように計算することができます。内積の計算の詳細については当記事では省略しますので詳しくは下記をご確認ください。

ここで$\cos{\theta}$は$2$つのベクトル$\vec{x}, \vec{y}$が同じ向きを向くかどうかの指標であると考えることができるので、ベクトルで表された単語の類似度を考えるにあたってcos類似度を用いるのは自然な考え方です。

上図で表した表はWord$2$vecの概要を確認するにあたって用いましたが、それぞれ「統計と教科書」、「本屋と教科書」が類似したベクトルであることが確認できます。それぞれのcos類似度は下記のように計算できます。
・統計と教科書
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} 0 \\ 1 \\ 0 \\ 1 \\ 0 \end{array} \right), \, \vec{y} = \left(\begin{array}{c} 0 \\ 1 \\ 1 \\ 1 \\ 0 \end{array} \right) \\
\cos{\theta} &= \frac{\vec{x} \cdot \vec{y}}{|\vec{x}||\vec{y}|} \\
&= \frac{2}{\sqrt{2} \times \sqrt{3}} = 0.816 \cdots
\end{align}
$$

・本屋と教科書
$$
\large
\begin{align}
\vec{x} &= \left(\begin{array}{c} 1 \\ 1 \\ 1 \\ 0 \\ 0 \end{array} \right), \, \vec{y} = \left(\begin{array}{c} 0 \\ 1 \\ 1 \\ 1 \\ 0 \end{array} \right) \\
\cos{\theta} &= \frac{\vec{x} \cdot \vec{y}}{|\vec{x}||\vec{y}|} \\
&= \frac{2}{\sqrt{3} \times \sqrt{3}} = 0.666 \cdots
\end{align}
$$

「ネットワーク分析」ではcos類似度などを用いて計算を行なった結果を元に閾値を設定することでエッジを描くかを判断します。上記の例では閾値を$0.55$に設定し、単語をノードで表し、類似する単語をエッジでつなげることで下記のようなグラフを描くことができます。

上記では閾値を$0.55$に設定したのでこのようなグラフとなったことに注意が必要です。たとえば閾値を$0.5$に変更すると、「行くと買う」のcos類似度が$0.5$であるので下記のようなグラフが得られます。

Transformerではネットワーク分析と同様の考え方を用いることは次節で確認します。DeepLearning以前のネットワーク分析では単語の共起に基づくBag of Wordsなどが用いられましたが、TransformerではWord$2$vecが用いられるので当項ではWord$2$vecを元に確認を行いました。

数列・系列・言語モデル

「数列」を数以外の記号などを取り扱えるように拡張したものを「系列」といいます。「系列」はよく出てくるので、数列と対応させて理解しておくと良いと思います。言語モデルは当記事では省略しますが、「深層学習による自然言語処理」の$3$章が詳しいのでこちらなど参照ください。

DeepLearningとMLP

DeepLearningにおけるMLPは多層パーセプトロン(Multi Layer Perceptron)を意味しますが、グラフニューラルネットワークの一種であるTransformerではMLPの計算が途中で用いられます。MLPの解説などは「ゼロから作るDeepLearning」など、わかりやすいものが多いので、当記事では省略します。

LSTMの限界とAttention

LSTMはRNNを改良したニューラルネットワークであり、長い系列に対応できるとされますが、$20$〜$50$系列ほどが上限であり、それ以上の取り扱いが難しいです。そこで横に展開するRNNの層の重み付け和を取るAttentionという構造が考案されました。

Attention論文 Fig.$1$

上記のようにAttentionではRNNの計算の際にそれぞれの層の重み付け和を計算し、この値を元に推論などを行います。このような計算を行うことで、「伝言ゲーム」のように伝達が難しいRNNの構造を改善させることが可能です。

Attentionの論文ではRNNに導入する形式でAttentionが用いられますが、TransformerではRNN構造を用いずに全体の処理を構築することからTransformerの論文のタイトルが「Attention Is All You Need」であることは有名な話です。

入門書ではRNNとLSTMが分けて解説されることもありますが、論文などではLSTMもrecurrent(再帰的)な構造であることからLSTMを含めてRNNと表されることが多いので注意が必要です。Attentionの基本事項は「深層学習による自然言語処理」の$4$章が詳しいので下記を参照ください。

グラフニューラルネットワークの基本式

Transformerの理解にあたってはグラフニューラルネットワークの数式を抑えておくと良いです。以下、理解しやすさの観点からMPNN(Message Passing Neural Network)の数式を主に参考に作成を行いました。
$$
\large
\begin{align}
m_{v}^{t+1} &= \sum_{w \in N(v)} M_{t}(h_{v}^{t}, h_{w}^{t}, e_{vw}) \\
h_{v}^{t+1} &= U_{t}(h_{v}^{t}, m_{v}^{t+1})
\end{align}
$$

上記の式はMPNN(Message Passing Neural Network)論文の$(1), (2)$式をそのまま表しました。上記の理解にあたっては下記の点に注意すると良いです。

① ノード$v$の隠れ層$h_{v}^{t}$について取り扱う式である。隠れ層はそれぞれのノードにWord$2$vecのように数十〜数百の要素を持つベクトルが割り当てられたと考えれば良い。
② ノード$v$の隣接ノードの集合を$N(v)$と表し、$w \in N(v)$であるので隣接するノードは個々の$w$で表される。$\displaystyle \sum_{w \in N(v)}$の表記は$N(v)$の全ての要素に関する$M_{t}(h_{v}^{t}, h_{w}^{t}, e_{vw})$の和を取るという意味である。
③ $m_{v}^{t+1}$は隣接するノードの隠れ層のベクトルを元に計算する式を表す。たとえば駅間で乗客が移動するようにイメージすれば良い。この処理をMessage Passingと呼称するが、Attention処理における重み付け和の計算はこの処理の一例と解釈できる。
④ $2$式目の$U_t$はMessage Passing処理で集約したMessageを元にノード$v$の隠れ層をUpdateする関数を定義したものである。Transformerで用いられるMLP(Multi Layer Perceptron)処理はこの一例である。
⑤ $t$や$t+1$はニューラルネットワークのレイヤーに対応する。よって$l, l+1$を用いて表すこともあり得る。
⑥ $n$層のグラフニューラルネットワークを取り扱う際は$h_{v}^{t+n}$を全てのノードに関して計算し、「ノード単位の分類」や「グラフ全体の分類」などの処理を行う。
⑦ Transformerではグラフ全体の$h_{v}^{t+n}$を用いてその後の処理を実行する。オリジナルのTransformerでは翻訳タスクに用いられたが、BERTなどのように様々な応用事例がある。

MPNNフレームワークに基づくグラフニューラルネットワークの詳細や具体例に基づく式の解釈に関しては下記でまとめましたので、詳しくは下記をご確認ください。

Transformerの仕組み

Self-Attention

前節で確認したAttentionは非常に有力な処理モジュールである一方で、Attentionの処理における重みパラメータをどのように作成するかの手順を用意する必要があります。パラメータを外部から与える場合もあり得ますが、処理が複雑化し汎用的なモジュールになりにくいです。

上記に対し内部処理にAttentionの重みパラメータを計算するモジュールを用意するとシンプルに計算を行うことができます。このように通常の内部計算と同時にAttentionの重みパラメータを計算する仕組みをSelf-Attentionといいます。

Dot Product Attention

Self-Attentionの構造を実現させるにあたっては様々な計算方法がありますが、シンプルな手法の$1$つにDot Product Attentionがあります。ここでDot Product Attentionの「Dot Product」は内積を意味することは抑えておくと良いです。

Transformer論文 Fig.$2$の左

上図はTransformer論文における「Dot Product Attention」の処理を表しますが、QとKのmatmulの所で内積の計算を行い、その結果に基づいてVへのAttentionを計算すると解釈することができます。この処理は「ネットワーク分析」のグラフ作成と同様に理解することができます。

「ネットワーク分析」では単語のcos類似度の計算を行いグラフ化を行いましたが、cos類似度の計算は内積をそれぞれのベクトルの大きさで割ることで計算できるので、Dot Product Attentionの処理は概ねcos類似度の計算と同様な処理であると解釈できます。

RNN・Dot Product Attentionのグラフ理論に基づく解釈

RNNが直列的に表される処理である一方で、Dot Product Attentionは単語類似度に基づくグラフを元に表される処理であると解釈できます。

左はRNN、右はDot Product Attentionに基づく。左は一方向、右は双方向であることに注意

上図の例では単語が少ないのでどちらもそれほど大差ないように見えますが、右のように意味に基づくグラフを生成した上でRNNと同様にMLP処理を行う場合は、系列が$50$以上の場合も構造的に無理のない処理を行うことができます。

Multi Head Attention

Multi Head Attentionの解釈は一見難しいですが、基本的にはこれまでの処理を「並列で複数行う」と同義なので「アンサンブル学習」を行なったと解釈すれば良いです。Transformerにおけるグラフの構築は入力値に基づいて行われるので、並行処理で様々な結果が得られる可能性があります。

したがって、Multi Headを用いることで「ランダムフォレスト」のような「アンサンブル学習」と同様に計算のロバスト化を行うことができると解釈すると良いのではないかと思います。

Multi Head AttentionではたとえばWord$2$Vecの$512$次元を$8$分割し、それぞれ$64$次元ずつを元にDot Product Attentionの処理を行うようにイメージすれば良いです。

ランダムフォレストでは個々の学習器の学習の際に表型のデータから列と行をランダムに抜き出すことで相関の低い決定木を作成しますが、Multi Head AttentionではWord$2$Vecのベクトルを分割することでそれぞれ相関の低い計算結果を構築することができます。

また、この分割や再連結はTransformer論文ので下記のような数式で表されるパラメータ処理を行うことが一般的です。
$$
\large
\begin{align}
\mathrm{MultiHead}(Q,K,V) &= \mathrm{Concat}(\mathrm{head}_{1}, \cdots , \mathrm{head}_{h}) W^{O} \\
\mathrm{head}_{i} &= \mathrm{Attention}(QW_{i}^{Q}, KW_{i}^{K}, VW_{i}^{V}) \\
W_{i}^{Q} & \in \mathbb{R}^{d_{model} \times d_{k}}, \, W_{i}^{K} \in \mathbb{R}^{d_{model} \times d_{k}}, W_{i}^{V} \in \mathbb{R}^{d_{model} \times d_{v}}
\end{align}
$$

式は難しく見えますが、基本的には相関の低い結果を元にアンサンブル学習を行うランダムフォレストと同様に解釈しておければ十分だと思います。

グラフニューラルネットワークとTransformer

Transformerはグラフニューラルネットワークの一種と見なすと理解しやすいです。グラフニューラルネットワークではグラフが与えられた際に隣接するノードの持つ隠れ層の和などを計算することによってグラフに沿って伝達を行い、それぞれの隠れ層に関してMLP処理を行います。

RNNはグラフニューラルネットワークの一種であり、Recurrent(再帰)処理は一方向かつ一直線のグラフであると解釈することができます。

図の左のようなグラフに沿ってRNNの計算処理が行われるのと同様に、グラフニューラルネットワークでは上図の右のようにグラフが与えられ、それぞれ隣接するノードに基づいて和などの計算を行います。

基本的にグラフニューラルネットワークでは「①グラフに基づくノード間の伝達処理」と「②ノード毎のMLP処理」で構成されます。

Transformer論文 Fig.$1$を改変

Transformerは上記の赤枠のようにMulti-Head AttentionとFeed Forwardで構成されており、Multi-Head Attentionを構成するDot Product Attentionがネットワーク分析と同様にグラフを構築しグラフに基づいて相互に伝達を行う処理、Feed ForwardがMLP(Multi Layer Perceptron)処理であると解釈することができます。このように考えることでTransformerは単語類似度を元に構築されるグラフを用いたグラフニューラルネットワークであると解釈できます。

Transformerにおける学習パラメータは一見わかりにくいですが、Multi-Head AttentionではなくFeed Forward部分で行われることも注意して確認しておくと良いです。

グラフニューラルネットワークの定義は論文によって様々ではありますが、MPNN(Message Passing Neural Network)NLNN(Non Local Neural Network)の論文などを元に理解するとわかりやすいのではないかと思います。

グラフニューラルネットワークとRNN

RNNはグラフニューラルネットワークの一種と考えることもできますが、グラフニューラルネットワークは近年のトピックであることからグラフニューラルネットワークはRNNの拡張であると見なすこともできます。

グラフを用いて参照構造を表す試みによって、多くのDeepLearningの構造が抽象化可能であるのでグラフニューラルネットワークの概要は抑えておくと良いと思います。

また、単に外からグラフを与えるだけでなくTransformerのように内部処理でグラフを作成することで、グラフを用意する必要がないというのはなかなか強力です。

Transformerの構造に関する主要研究

Reformer

MLP-Mixer

まとめ

当記事の内容は下図のようにまとめることができます。

TransformerとMPNN型GNNの各層における処理の概要

Transformerの各層では主に「①グラフの構築」、「②ノード間処理」、「③ノード内のUpdate」の$3$つの処理が行われており、①は「ネットワーク分析」、②と③は「MPNN型のグラフニューラルネットワーク」の処理に対応すると解釈すると理解しやすいです。

参考

・Transformer論文
・Word$2$vec論文①
・Word$2$vec論文②
・Attention論文
・MPNN論文
・NLNN論文
・Reformer論文
・MLP-Mixer論文

・直感的に理解するTransformer(運営者作成)
・グラフ理論と機械学習(運営者作成)
・Pythonで理解する言語処理(運営者作成)

1.7.1 時系列データ 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$1.7.1$節「時系列データ」の内容を元に日毎の気温や毎月の消費者物価指数などの時系列データの概要に関して取り扱いました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

「時系列データ」の概要

概要

「日毎の最高気温・最低気温」や「毎月の消費者物価指数・完全失業率」のように、時間の順に得られるデータを「時系列データ(time series data)」といいます。たとえば下記のように日毎の平均気温が得られる場合を仮定します。

$日$ $1$$2$$3$$4$$5$$6$$7$$8$$9$$10$
$平均気温$ $6.6$$7.0$$5.9$$6.3$$7.3$$6.5$$4.0$$5.9$$6.1$$3.4$
「統計検定$2$級対応 統計学基礎」 問$1.1$を元に作成

当記事では以下、時系列データの具体的な例やPythonを用いた可視化について取り扱います。

必要な数学

当記事では用語の確認などが主目的であるので、数学知識は基本的には必要ありません。

時系列データ

Pythonを用いた可視化

前節の例は下記のようなPythonを実行することで可視化できます。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 11, 1)
y = np.array([6.6, 7., 5.9, 6.3, 7.3, 6.5, 4., 5.9, 6.1, 3.4])

plt.plot(x,y)
plt.show()

・実行結果

時系列データの具体例

以下、「統計検定$2$級対応 統計学基礎」の表$1.19$の値を確認します。

import numpy as np

x = np.loadtxt("Salary.csv", skiprows=1, delimiter=",")

print(x.shape)
print(x[:5])

・実行結果

> print(x.shape)
(135, 3)
> print(x[:5])
[[ 200001.  305282.  403179.]
 [ 200002.  285265.  353285.]
 [ 200003.  304792.  376831.]
 [ 200004.  291911.  362336.]
 [ 200005.  286992.  360746.]]

上記で読み込んだSalary.csv「統計検定$2$級対応 統計学基礎」の公式ページより入手することが可能です。

3.5.2 対応のある2標本の区間推定 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$3.5.2$節「対応のある$2$標本の場合」の内容を元に対応のある$2$標本の区間推定について取りまとめを行いました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

「対応のある2標本の区間推定」の概要

概要

$2$標本に対応がある場合、標本平均の差$\overline{X}-\overline{Y}$の分散$V[\overline{X}-\overline{Y}]$について下記が成立します。
$$
\large
\begin{align}
V[\overline{X}-\overline{Y}] = V[\overline{X}] + V[\overline{Y}] – 2 \mathrm{Cov}[\overline{X}, \overline{Y}]
\end{align}
$$

上記の式は$2$標本に対応がない場合も成立しますが、「$2$標本に対応がない$\implies$ $\mathrm{Cov}[\overline{X}, \overline{Y}]=0$」より、「$3.5.1 \,$ $2$つの母平均の差の区間推定」の式に一致します。

このように「対応のある$2$標本の区間推定」は単に母平均の差の区間推定の考え方を用いることはできないので、当記事では$2$標本に対応がある際の区間推定における取り扱いについて確認します。

必要な数学

「区間推定」の結果の導出にあたっては不等号に関する計算がよく出てくるので、抑えておく必要があります。
$$
\large
\begin{align}
-1.96 \frac{\sigma}{\sqrt{n}} \leq \bar{x}-\mu \leq 1.96 \frac{\sigma}{\sqrt{n}}
\end{align}
$$

上記のような数式を$\mu$に関して解く必要があるので、特に$-x<-y$が$x>y$に対応することは必須です。

対応のある2標本の区間推定

対応のある$2$標本$x_1, \cdots , x_n$と$y_1, \cdots , y_n$の母平均の差の取り扱いにあたってはそれぞれの標本の差を$d_i=x_i-y_i$のように定め、$d_i$の標本平均$\bar{d}$と不偏標本分散$s_d^2$の値を計算し、$t$検定を行えば良いです。

ここで$2$標本の差の母平均を$d$とおくとき、$\displaystyle \frac{\bar{d}-d}{s_d/\sqrt{n}} \sim t(n-1)$が成立します。よって母平均$d$の$95$%区間は下記のように表すことができます。
$$
\large
\begin{align}
t_{\alpha=0.975}(n-1) \leq & \frac{\bar{d}-d}{s_d/\sqrt{n}} \leq t_{\alpha=0.025}(n-1) \\
\bar{d} – t_{\alpha=0.025}(n-1) \frac{s_d}{\sqrt{n}} \leq & d \leq \bar{d} + t_{\alpha=0.025}(n-1) \frac{s_d}{\sqrt{n}}
\end{align}
$$

3.5.1 2つの母平均の差の区間推定 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$3.5.1$節「$2$つの母平均の差の区間推定」の内容を元に母平均の差の区間推定について取りまとめを行いました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

「2つの母平均の差の区間推定」の概要

概要

教材 人数平均標準偏差
標準版教材(A) $32$$62.2$$11.0$
改定版教材(B) $35$$71.4$$10.8$
「統計検定$2$級対応 統計学基礎」 第$3$章 例$10$

上記のように教材$A$、教材$B$の統計量の実現値が得られた場合、母平均に差があるかを調べる場合を考えます。このときの一連の手順が「$2$つの母平均の差の区間推定」であり、次節で「母分散既知の場合」、「母分散未知かつ等しい場合」の$2$つに場合分けし、それぞれについて区間推定の手順を確認します。

必要な数学

「区間推定」の結果の導出にあたっては不等号に関する計算がよく出てくるので、抑えておく必要があります。
$$
\large
\begin{align}
-1.96 \frac{\sigma}{\sqrt{n}} \leq \bar{x}-\mu \leq 1.96 \frac{\sigma}{\sqrt{n}}
\end{align}
$$

上記のような数式を$\mu$に関して解く必要があるので、特に$-x<-y$が$x>y$に対応することは必須です。

2つの母平均の差の区間推定

母分散が既知のとき

教材$A$の標本の実現値$x_1, \cdots , x_m$が$\mathcal{N}(\mu_1,\sigma_1^2)$に基づいて生成され、教材$B$の標本の実現値$y_1, \cdots , y_n$が$\mathcal{N}(\mu_2,\sigma_2^2)$に基づいて生成されると仮定します。

このとき、標本平均$\overline{X}, \overline{Y}$を下記のように定めます。
$$
\large
\begin{align}
\overline{X} &= \frac{1}{m} \sum_{i=1}^{m} X_i \\
\overline{Y} &= \frac{1}{n} \sum_{j=1}^{n} Y_j \\
\overline{X} & \sim \mathcal{N} \left( \mu_1,\frac{\sigma_1^2}{m} \right), \quad \overline{Y} \sim \mathcal{N} \left( \mu_2,\frac{\sigma_2^2}{n} \right)
\end{align}
$$

ここで標本平均の差の$\overline{X}-\overline{Y}$を考えるとき、正規分布のモーメント母関数などを用いることで下記を示すことができます。
$$
\large
\begin{align}
\overline{X}-\overline{Y} \sim \mathcal{N} \left( \mu_1-\mu_2, \frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n} \right)
\end{align}
$$

ここで$\overline{X}-\overline{Y}$の実現値を$\bar{x}-\bar{y}$とおくと、母平均の差$\mu_1-\mu_2$の$95$%区間に関して下記が成立します。
$$
\large
\begin{align}
z_{\alpha=0.975} \leq \frac{(\bar{x}-\bar{y})-(\mu_1-\mu_2)}{\displaystyle \sqrt{\frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n}}} \leq z_{\alpha=0.025} \quad (1)
\end{align}
$$

上記の$(1)$式は下記のように変形できます。
$$
\large
\begin{align}
z_{\alpha=0.975} \leq & \frac{(\bar{x}-\bar{y})-(\mu_1-\mu_2)}{\displaystyle \sqrt{\frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n}}} \leq z_{\alpha=0.025} \quad (1) \\
\bar{x}-\bar{y} – 1.96 \sqrt{\frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n}} \leq & \mu_1-\mu_2 \leq \bar{x}-\bar{y} + 1.96 \sqrt{\frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n}}
\end{align}
$$

上記が母平均の差$\mu_1-\mu_2$の$95$%区間を表します。

発展事項

$\displaystyle \overline{X}-\overline{Y} \sim \mathcal{N} \left( \mu_1-\mu_2, \frac{\sigma_1^2}{m}+\frac{\sigma_2^2}{n} \right)$が成立することは正規分布のモーメント母関数を用いることで示すことができます。詳しくは下記で取り扱いました。

上記の導出にはモーメント母関数の理解が必須なので、統計検定$2$級範囲では下記のように$E[\overline{X}-\overline{Y}], V[\overline{X}-\overline{Y}]$の計算で抑えておくでも十分です。
$$
\large
\begin{align}
E[\overline{X}-\overline{Y}] &= E[\overline{X}] – E[\overline{Y}] \\
V[\overline{X}-\overline{Y}] &= V[\overline{X}] + V[-\overline{Y}] \\
&= V[\overline{X}] + (-1)^2V[\overline{Y}] = V[\overline{X}] + V[\overline{Y}]
\end{align}
$$

母分散未知かつ等しい場合

Ch.1 「基礎事項ア・ラ・カルト」の演習問題の解答例 〜統計学のための数学入門30講〜

当記事は「統計学のための数学入門$30$講(朝倉書店)」の読解サポートにあたってChapter.$1$の「基礎事項ア・ラ・カルト」の章末問題の解答の作成を行いました。
基本的には書籍の購入者向けの解説なので、まだ入手されていない方は購入の上ご確認ください。また、解説はあくまでサイト運営者が独自に作成したものであり、書籍の公式ページではないことにご注意ください。

・書籍解答まとめ
https://www.hello-statisticians.com/answer_textbook_math#math_stat

本章のまとめ

共役複素数の性質

$\alpha=a+bi, \beta=c+di$に関して下記が成立する。
・$[1] \,$ $\alpha$が実数 $\, \iff \,$ $\alpha=\bar{\alpha}$
・$[2] \,$ $\overline{\alpha \pm \beta} = \bar{\alpha} \pm \bar{\beta}$
・$[3] \,$ $\overline{\alpha \beta} = \bar{\alpha} \bar{\beta}$
・$[4] \,$ $\overline{\frac{\alpha}{\beta}} = \frac{\bar{\alpha}}{\bar{\beta}}$
・$[5] \,$ $\alpha \bar{\alpha} = a^2+b^2 = |\alpha|^2$

演習問題解答

問題$1.1$

下記のようにそれぞれ示すことができる。

・$[1]$
$\alpha$が実数のとき、$\alpha=a+bi=a$より$b=0$であり、$\bar{\alpha}=a-bi=a$である。よって$\alpha$が実数 $\, \iff \,$ $\alpha=\bar{\alpha}$が成立する。

・$[2]$
下記が成立する。
$$
\large
\begin{align}
\overline{\alpha \pm \beta} &= \overline{(a+bi) \pm (c+di)} \\
&= \overline{(a \pm c) + (b \pm d)i} \\
&= (a \pm c) – (b \pm d)i \\
\bar{\alpha} \pm \bar{\beta} &= (a-bi) \pm (c-di) \\
&= (a \pm c) – (b \pm d)i
\end{align}
$$

上記より$\overline{\alpha \pm \beta} = \bar{\alpha} \pm \bar{\beta}$が示される。

・$[3]$
下記が成立する。
$$
\large
\begin{align}
\overline{\alpha \beta} &= \overline{(a+bi)(c+di)} \\
&= \overline{ac+bdi^2+(ad+bc)i} \\
&= \overline{ac-bd+(ad+bc)i} = ac-bd-(ad+bc)i \\
\bar{\alpha} \bar{\beta} &= (a-bi)(c-di) \\
&= ac+bdi^2-(ad+bc)i = ac-bd-(ad+bc)i
\end{align}
$$

上記より$\overline{\alpha \beta} = \bar{\alpha} \bar{\beta}$が示される。

・$[4]$
下記が成立する。
$$
\large
\begin{align}
\overline{\left(\frac{\alpha}{\beta}\right)} &= \overline{\left(\frac{a+bi}{c+di}\right)} \\
&= \overline{\left(\frac{(a+bi)(c-di)}{(c+di)(c-di)}\right)} \\
&= \overline{\left(\frac{ac+bdi^2-(ad-bc)i}{c^2-d^2i^2}\right)} \\
&= \overline{\left(\frac{ac-bd-(ad-bc)i}{c^2+d^2}\right)} \\
&= \frac{ac-bd+(ad-bc)i}{c^2+d^2} \\
\frac{\bar{\alpha}}{\bar{\beta}} &= \frac{a-bi}{c-di} \\
&= \frac{(a-bi)(c+di)}{(c-di)(c+di)} \\
&= \frac{ac+bd+(ac-bd)i}{(c^2+d^2}
\end{align}
$$

上記より$\displaystyle \overline{\left(\frac{\alpha}{\beta}\right)} = \frac{\bar{\alpha}}{\bar{\beta}}$が示される。

・$[5]$
下記のような計算が行える。
$$
\large
\begin{align}
\alpha \bar{\alpha} &= (a+bi)(a-bi) \\
&= a^2 – b^2i^2 \\
&= a^2 + b^2
\end{align}
$$

問題$1.2$

2.9.3 2変量正規分布 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$2.9.3$節「$2$変量正規分布」の内容を元に$2$変量正規分布の数式とその解釈関して取りまとめました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

$2$変量正規分布の概要

概要

当記事では$2$つの確率変数$X \sim \mathcal{N}(\mu_x, \sigma_x^2), \, Y \sim \mathcal{N}(\mu_y, \sigma_y^2)$の相関係数を$\rho$とする場合の確率分布について取り扱います。

基本的に$2$級範囲では概要を抑えておくだけで良いと思われますが、必要な場合に詳しい式変形が確認できるように別途行った導出を参照しました。

必要な数学

式を確認するにあたって、展開・因数分解(factorization)の基本公式は抑えておくと良いと思います。

また、等高線を理解するにあたっては、固有値・固有ベクトルの理解が必須です。$2$級範囲では基本的に出題されませんので、理解は必須ではありません。

$2$変量正規分布

$2$変量正規分布の数式

$2$つの連続型確率変数$X \sim \mathcal{N}(\mu_x, \sigma_x^2), \, Y \sim \mathcal{N}(\mu_y, \sigma_y^2)$の相関係数を$\rho$、同時確率密度関数を$f(x,y)$とおくとき、$f(x,y)$は下記のように表すことができます。
$$
\large
\begin{align}
f(x,y) &= \frac{1}{2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp{ \left[ -\frac{q(x,y)}{2} \right] } \\
q(x,y) &= \frac{1}{1-\rho^2} \left[ \left( \frac{x-\mu_x}{\sigma_x} \right)^2 – 2 \rho \left( \frac{x-\mu_x}{\sigma_x} \right)\left( \frac{y-\mu_y}{\sigma_y} \right) + \left( \frac{y-\mu_y}{\sigma_y} \right)^2 \right]
\end{align}
$$

上記の式で表される$2$次元の確率分布を$2$変量正規分布($2$-variate normal distribution)といいます。ここで変量(variate)は確率変数を意味し、多変量解析は複数の確率変数を含む統計解析を表すことも合わせて抑えておくと良いです。

具体的なパラメータと$2$変量正規分布

$\mu_1=1, \mu_2=1, \sigma_x=1, \sigma_y=1, \rho=0.7$のとき、前項で確認を行なった確率密度関数$f(x,y)$は下記のように表すことができます。
$$
\large
\begin{align}
q(x,y) &= \frac{1}{1-\rho^2} \left[ \left( \frac{x-\mu_x}{\sigma_x} \right)^2 – 2 \rho \left( \frac{x-\mu_x}{\sigma_x} \right)\left( \frac{y-\mu_y}{\sigma_y} \right) + \left( \frac{y-\mu_y}{\sigma_y} \right)^2 \right] \\
&= \frac{1}{1-0.7^2} \left[ \left( \frac{x-1}{1} \right)^2 – 2 \cdot 0.7 \left( \frac{x-1}{1} \right)\left( \frac{y-1}{1} \right) + \left( \frac{y-1}{1} \right)^2 \right] \\
&= \frac{1}{0.51} \left[ (x-1)^2 – 1.4 (x-1)(y-1) + (y-1)^2 \right] \\
f(x,y) &= \frac{1}{2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp{ \left[ -\frac{q(x,y)}{2} \right] } \\
&= \frac{1}{2 \pi \cdot 1 \cdot 1 \sqrt{1-0.7^2}} \exp{ \left[ -\frac{(x-1)^2 – 1.4 (x-1)(y-1) + (y-1)^2}{2 \cdot 0.51} \right] } \\
&= \frac{1}{2 \sqrt{0.51} \pi} \exp{ \left[ -\frac{(x-1)^2 – 1.4 (x-1)(y-1) + (y-1)^2}{1.02} \right] }
\end{align}
$$

上記の$f(x,y)$等高線の$1$つは下記のように表すことができます。

導出は$2$級範囲では必要ないので省略しましたが、詳しくは下記で取り扱いました。

$2$変量正規分布の条件付き分布・周辺分布

下記で詳しく取り扱いました。

2.9.2 確率変数の和の期待値・分散の取り扱い 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$2.9.2$節「共分散と相関係数」の内容を元に確率変数の和の期待値・分散の取り扱いに関して取りまとめました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

当記事の概要

概要

当記事では以下、確率変数$X, Y$の和$X+Y$に関する期待値$E[X+Y]$や分散$V[X+Y]$の取り扱いについてまとめました。下記などの内容を元に取りまとめました。

必要な数学

導出の理解にあたっては、展開・因数分解(factorization)の基本公式が必須です。

確率変数の和の期待値・分散の取り扱い

$E[X+Y] = E[X]+E[Y]$

確率変数の和$X+Y$の期待値$E[X+Y]$は下記のように表すことができます。
$$
\large
\begin{align}
E[X+Y] = E[X] + E[Y]
\end{align}
$$

上記の導出に関しては下記で詳しく取り扱いました。

$V[X+Y]$の取り扱い

確率変数の和$X+Y$の分散$V[X+Y]$は下記のように表すことができます。
$$
\large
\begin{align}
V[X+Y] = V[X] + V[Y] + \mathrm{Cov}[X,Y] \quad (1)
\end{align}
$$

上記の$\mathrm{Cov}[X,Y]$は$X$と$Y$の共分散を表します。式の導出に関しては下記で詳しく取り扱いました。

ここで相関係数を$r[X,Y]$とおくと、相関係数の定義より下記のように表されます。
$$
\large
\begin{align}
r[X,Y] = \frac{\mathrm{Cov}[X,Y]}{\sqrt{V[X]V[Y]}}
\end{align}
$$

上記より$(1)$式は下記のように表すこともできます。
$$
\large
\begin{align}
V[X+Y] &= V[X] + V[Y] + \mathrm{Cov}[X,Y] \quad (1) \\
&= V[X] + V[Y] + r[X,Y] \sqrt{V[X]V[Y]}
\end{align}
$$

$V[X_1 + \cdots + X_n]$の取り扱い

下記で詳しく取り扱いました。