view_headline機械学習、ディープラーニング

機械学習のための数学

機械学習のより深い理解に必要な数学の基礎についてまとめます。
2017/3/11現在加筆中です。内容は適宜追補します。

このページで取り扱う記号の記法についてはGoodfellow et al.(2016)を踏襲します。

Random variables - 確率変数

特徴
  • 確率変数と書くと大仰で難解な概念に思えるが、英語名のRandom variablesで覚えると理解しやすい。ただの取りうる値がランダムな変数。
  • 厳密に言うと確率変数$X$は標本空間$\Omega$から可測空間$E$への可測関数。
  • 身近な例ではコイン投げにおいて、標本空間$\Omega$は'表'と'裏'の2つの元を持つ集合ととれる。 '表'と'裏'のラベルのままだと数学的に扱いにくいので、通常は'表'=1, '裏'=0と標本空間の元に数を割り当てる。 この時標本空間に対応づけられている$\{0,1\}$が確率変数$X$の取りうる値の集合となる。
  • 確率変数は離散値をとる場合と連続的な値をとる場合の2種類ある。
  • 確率変数が離散的であるとは$X$の個数が有限または可算無限であることをいう。
  • 確率変数が連続的であるとは$X$の個数が非可算であることをいう。
厳密な理解に必要な知識

Probabiity distribution function - 確率分布関数

特徴
  • 確率変数$X$の起こりやすさを表した関数。確率変数が離散的であるか連続的であるかによって確率分布関数の性質は異なる。 前者の場合の確率分布関数をPMF(Probability Mass Function, 確率質量関数)と呼び、後者をPDF(Probability Density Function、 確率密度関数)と呼ぶ。
  • PMFを考えるとき、一般に確率分布関数は大文字の$P$で表記される。
  • PDFを考えるとき、一般に確率分布関数は小文字の$p$で表記される。
  • $X$が確率分布関数$P$にしたがって分布するとき、 $$ X \sim P$$ と書く。

Discrete Probabiity distribution function - 離散確率分布関数

特徴
  • $$ 0 \le P(X=x) \le 1 $$
  • $$ \sum_{x} P(x) = 1 $$
  • $P(X=x)$は事象$x$の起こりえる確率をそのまま表す。

Continuous Probabiity distribution function - 連続確率分布関数

特徴
  • $$ 0 \le p(x \in dx) $$
  • $$ \int_{x} p(x) dx = 1 $$
  • $p(x)$は離散確率分布と異なり事象$x$の起こりえる確率を直接表さない。 非可算無限個の元を持つ確率変数$X$に対して無限分の1である$X=x$をピンポイントで 拾い上げる確率は限りなくゼロに近いため。 通常は$X$上の連続区間$I \in [a,b]$を考え、区間$I$で表せられる事象が発生する確率を $$ \int_{a}^{b} p(x) dx $$で表す。
  • 連続確率分布の例として一様分布(Uniform Distribution)がある。これは確率分布関数が任意の閉区間$I \in [a,b]$において、 $$ p(x) = u(x;a,b) = \frac{1}{b-a}$$ で表される確率密度関数である。 区間の長さのみによって確率が決まる非常にシンプルな分布関数である。

Expectation - 期待値

特徴
  • 離散確率分布の場合: $$ \mathbb{E}[f(x)] = \sum_{x} P(x) f(x) $$
  • 連続確率分布の場合: $$ \mathbb{E}[f(x)] = \int_{x} p(x) f(x) dx $$
  • 線形性: $$ \mathbb{E}[\alpha f(x) + \beta g(x)] = \alpha \mathbb{E}[f(x)] + \beta \mathbb{E}[g(X)] $$

Self Information - 自己情報量

特徴
  • surprisalとも言う。情報の量を定義するために用いられる概念。
  • $P(x)=1$、つまりわかりきっている情報は情報量ゼロとなる。
  • まれな情報ほど自己情報量$I(x)$が大きい。
  • 定義: $$I(x) = - \log P(x)$$

Entropy - エントロピー

特徴
  • 平均情報量とも言う。
  • 自己情報量ではある単一の事象$x$における情報量しかわからなかったが、エントロピーの概念を用いれば、 標本空間全体の情報量を定量することができる。
  • 定義: $$ H(X) = E_{X \sim P}[I(X)] = - \sum_{X \sim P} P(X) \ln{P(X)}$$
  • $X \sim P$とすると、エントロピーは$$H(P)$$とも表記される。
  • 起こりうる事象の数を固定すると、分布関数の選び方によってエントロピーの大小が変わる。 a個の事象を考えるとき、それぞれの事象の確率が等しく$1/a$である一様分布はこの事象のエントロピーを最大にする分布である。 これは事象の不確定さが最大ということを意味する。 不確定さが小さくなるほどエントロピーも小さくなる。

Kullback-Leibler divergence - カルバック・ライブラー情報量

特徴
  • 2つの確率分布が互いにどれだけ異なっているかを表す指標。$D_{\text{KL}}$で表記される。
  • $$ D_{\text{KL}}(P||Q) = E_{x \sim P}[\log \frac{P(x)}{Q(x)}] = \sum_{x} P(x) \log \frac{P(x)}{Q(x)}$$
  • ギブスの不等式より、$D_{\text{KL}}(P||Q) \ge 0$ 。$D_{\text{KL}}(P||Q)=0$となるのは全ての$x$において$P(x)=Q(x)$となる場合のみ。
    つまり確率分布が互いに全く同一であるときにカルバック・ライブラー情報量は$0$になる。
  • $$D_{\text{KL}}(P||Q) \ne D_{\text{KL}}(Q||P)$$

Cross Entropy - クロスエントロピー

特徴
  • 確率分布$P,Q$のクロスエントロピー$H(P,Q)$はエントロピー$H(P)$およびKL Divergenceを使うと下記の式で表せられる。 $$ H(P,Q) = H(P) + D_{\text{KL}}(P||Q) $$
  • 上記を展開すると $$ \begin{align} H(P,Q) &= -\sum_{x \sim P} P(x) \log P(x) + \sum_{x} P(x) \log \frac{P(x)}{Q(x)} \\ &= -\sum_{x \sim P} P(x) \log Q(x) \end{align} $$
  • Quadratic Cost Functionの場合、誤差の最小値は0となるがクロスエントロピーを誤差関数とする場合はその値の最小値はゼロとはならない。 とはいえクロスエントロピーを最小にすることとKL Divergenceを最小にすることは同義でありこの場合は最小値はゼロとなる。 そのためクロスエントロピーを最小化する、 といったときには誤差の測定に$H(P,Q)$と$D_{\text{KL}}$のどちらを使おうとしているのか注意が必要。
  • 機械学習では入力がk個のクラスのうちどれに該当するか判定する場合に誤差関数として採用されることが多い。
    2値分類(Binary Classification)を例として考える。入力が1であると考えられる確率を$\hat y_1$、2の場合は確率を$\hat y_2$とおく。 また、入力に対する真の判定結果をそれぞれ$y_1, y_2$とおく。このとき $$ \begin{align} H(P,Q) = - \sum_{i}^{2} y_i \log \hat{y_i} &= - (y_1 \log \hat{y_1} + y_2 \log \hat{y_2} ) \\ &= - (y_1 \log \hat{y_1} + (1-y_1) \log (1-\hat{y_1}) ) \end{align} $$ となる。2値分類のため $ y_2 = 1 - y1,\, \hat y_2 = 1 - \hat y_1$であることを利用している。
  • MNISTのように10個の出力ニューロンが出力層に並べられている場合でも、出力層の1つ1つのニューロンはそれぞれ2値分類をしている。 例えば出力層の最初のニューロンは入力が0かそうでないかを判断するニューロンであり、出力層の最後のニューロンは入力が9かそうでないかを 判定するだけである。そのため上記の2値分類用のクロスエントロピーを用いて出力層のニューロンの誤差を定量できる。

2つの離散確率分布$P(x),\,Q(x)$に対するエントロピー、クロスエントロピー、KL情報量の変化の様子を体感できるデモを用意した。
機械学習では$P(x)$を参照用の真の確率分布、$Q(x)$をニューロンの出力した確率分布とすると、$Q(x)$の形状を$P(x)$に近づけていく 操作が繰り返される。$Q$の形が$P$に近いほどKL情報量が$0$に近づく様子が確認できる。

$P_1$
0.200
$P_2$
0.200
$P_3$
0.200
$P_4$
0.200
$P_5$
0.200
$H(P)$ = $-\ln(0.2)$
$H(P,Q)$ = $-\ln(0.2)$
$D_{KL}(P||Q)$ = 0
$Q_1$
0.200
$Q_2$
0.200
$Q_3$
0.200
$Q_4$
0.200
$Q_5$
0.200
$H(Q)$ = $-\ln(0.2)$

Logits - ロジット

特徴
  • 確率をpとすると、 $$logit(p) = \ln \frac{p}{1-p}$$
  • ロジットの逆関数はシグモイド関数$$\sigma(z)=1/(1+e^{-z})$$ つまり$$\sigma(logit(p)) = p$$
  • $p/(1-p)$はオッズ(odds)と呼ばれる。
  • ロジット$\ln \frac{p}{1-p}$の値域は$(-\infty,+\infty)$であり、$logits \in \mathbf R$。
    つまり実変数$x$をロジットと見立ててシグモイド関数にかけると確率が得られたと見ることができる。
  • TensorFlow等の機械学習フレームワークでは、これから確率に変換しようとしている出力層のニューロンの出力値を よくロジットと呼ぶことが多い。
  • MNISTのチュートリアルではトレーニングデータとして用意されている出力の真の値は確率分布だが、 ニューロンの出力値は$\mathbf{w}^{\mathbf{T}} \mathbf{x} + \mathbf{b}$ であり、 その値は1より大きくなりえることから$p \in [0,1]$の確率の公理を満たさない。
    そのためこのようなケースでは出力層のニューロンについては出力値を確率を表すように変換してやらなければならない。 ニューロンの出力をソフトマックス関数やシグモイド関数に通してからクロスエントロピーの計算をし、誤差を最小化させるという流れが一般的。

Softmax function - ソフトマックス関数

特徴
  • $$\sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k} e^{z_k}}$$
  • 定義域が$(-\infty,+\infty)$の変数を$(0,1)$に写す関数。単調増加関数だが上限がある。
  • 任意の実数値を取りうる変数を確率的な変数に規格化したい時に用られる。
  • Multiclass classification(多クラス分類)のニューラルネットの出力層のニューロンの活性化関数として使われるケースが多い。
  • 出力層の7個のニューロンのそれぞれの入力総和が $$ \mathbf z = \left( \begin{array}{c} 1\\ 2\\ 3\\ 4\\ 3\\ 2\\ 1\\ \end{array} \right) $$ であるとき、これらのニューロンの入力総和に対する個々のソフトマックスは $$ \mathbf{\sigma(\mathbf{z})} = \left( \begin{array}{c} 0.0236\\ 0.0643\\ 0.1747\\ 0.4748\\ 0.1747\\ 0.0643\\ 0.0236\\ \end{array} \right)\\ $$ 同時に $$ 0 \le \mathbf{\sigma}_i \le 1\\ \sum_i \mathbf{\sigma}_i = 1 $$ となる。
    ソフトマックスの入力の内、最も値が大きいものの出力が強調され他の出力と大きく差をつけられることから 多クラス分類のような複数のクラスから1つのクラスを選択する場合の分類に向いている。

Sigmoid function - シグモイド関数

特徴
  • $$s(\mathbf{z})_j = \frac{1}{1+e^{-z_j}}$$
  • $$s' = s(1-s)$$
  • ソフトマックス関数と同様に、定義域が$(-\infty,+\infty)$の変数を$(0,1)$に写す関数。単調増加関数だが上限がある。
  • Multilabel classification(マルチラベル分類)のニューラルネットの出力層のニューロンの活性化関数として使われるケースが多い。
  • シグモイドはソフトマックスと異なり、入力されたベクトルの成分の和で個々の成分を割り成分の総和が1となるような規格化は行わない。 そのため多クラス分類のようにあり得る複数のクラスの中から1を選ぶような分類には適さない。 代わりに、出力層のニューロン個々が独立した確率であるようなマルチラベル分類に適している。

Multiclass classification - 多クラス分類

特徴
  • MNISTのようにmutually exclusiveな値の分類。
  • 1つの入力に対して複数のクラスの中から1のクラスが割り当てられるような分類
  • ニューラルネットでは入力に対する真の出力が下記のようなone-hot vectorとなるような分類 $$ \mathbf y = \left( \begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \\ 0 \\ \end{array} \right) $$

Multilabel classification - マルチラベル分類

特徴
  • Not mutually exclusiveな分類。
  • 1つの入力に対して複数のクラスが割り当てられるような分類
  • 例としてトピックラベルのように一つの記事に複数のタグをつける場合に使われる分類
  • ニューラルネットでは入力に対する真の出力が下記のようなベクトルとなるような分類 $$ \mathbf y = \left( \begin{array}{c} 0 \\ 1 \\ 0 \\ 1 \\ 0 \\ \end{array} \right) $$

Hadamard Product - アダマール積

特徴
  • 同じ形状の2つの行列に対して、それぞれの成分を掛けあわせた同型の行列を作る操作。
  • $$ \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} \circ \begin{pmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{pmatrix} = \begin{pmatrix} a_{11} b_{11} & a_{12} b_{12} \\ a_{21} b_{21} & a_{22} b_{22} \end{pmatrix} $$
  • $$(A \circ B)_{i,j} = a_{i,j} b_{i,j}$$
  • 畳み込みニューラルネットワーク(CNN)において、生の入力からfeature map(Activation map, Convolved feature)を作る際に利用される演算。