機械学習

【入門】生成モデルと統計的機械学習について(機械学習)

【入門】生成モデルと統計的機械学習について

 

Yuma
Yuma
生成モデルと統計的機械学習の基本について説明していきます。

本記事の内容

  1. 統計的機械学習と生成モデル
  2. どのように生成モデルを構築するのか
  3. 学習モデルのパラメータ調節について

統計的機械学習と生成モデル

 

統計的機械学習と生成モデルについて簡単に説明していきます。

『統計的機械学習』や『生成モデル』は、機械学習の場面で定義が揺れている気がするので、本章では再定義します。

 

生成モデルとは

 

まずは、以下の画像を見てください。

Mnist引用元 : MNIST Dataset

 

このデータは、白黒画像なので、\( \{0,1\} \)の2値のn個(28×28)の要素から構成されます。

その白黒画像のデータセットの各要素を\( {\bf x} = \{x_{i} \in \{0,1\} \}_{i=1}^{n} \)と表すことにします。

さらに、このデータ点が確定的に出現したのではなく、背後にある確率分布\(P_{\text{target}}({\bf X})\)から生成されたものと仮定します。

ここで、\( {\bf X} \)は、\( {\bf X} = \{X_{i} \in \{0,1\} \}_{i=1}^{n} \)の確率変数を表すことにします。

ここで仮定した、データの背後にある同時確率分布\(P_{\text{target}}({\bf X})\)を『生成モデル』と呼びます。

重要なことは、生成モデルは一般に未知です(データに対する事前知識があれば、部分的な情報は既知)

 

統計的機械学習

 

早速ですが、未知の生成モデルを知るにはどうしたら良いでしょう?

一つのアイデアは、与えられているデータ点から生成モデルを予測することです。

確かにデータが数個しかない場合は、生成モデルを予測することは困難ですが、データ数が多ければ生成モデルを予測できる気がしますね。

例えば、サイコロを数回振っただけでは、本当に各数字が1/6で出るということは予測できませんが、仮に1億回振ったとしたら1/6を予測できそうですよね。

このように、与えられたデータから生成モデルを構築することを『統計的機械学習』と言います。

 

どのように生成モデルを構築するのか

 

この章では、与えられたデータからどのように生成モデルを構築するのかを説明していきます。

当然、構築する方法は任意性があるので、本章では、その中の一つにフォーカスして紹介していきます。

学習モデルを仮定する

 

与えられたデータから生成モデルを予測する一つのアイデアは、パラメータ\(\theta\)を持つ\(Q_{\theta}({\bf X}) \)を仮定し、データ集合から\(\theta\)を調節する方法です。

ここで、\(Q_{\theta}\)は『学習モデル』と呼ぶことにします。

この学習モデル\(Q_{\theta}\)には、任意性があり一般に事前知識を用いて決定します。

具体的に事前知識とは?

 

例えば、コイン投げのような場合は、二値の値を取るので確率分布を予測するためには、学習モデルとしてベルヌーイ分布を仮定すれば良さそうですね。

このように、学習モデルの確率分布の関数系は経験的に事前知識を利用してあらかじめ決定しておきます。

 

学習モデルのパラメータ調節について

 

簡単に、『パラメータ\(\theta\)を調節』と言いましたが、どのように調節したら良いのでしょうか。

当然、パラメータの調節方法にも任意性があるので、ここでは、パラメータを調節する一つの方法を紹介します。

調節方法を理解するために、『KL Divergence』を簡単に説明します。

KL Divergenceとは

 

KL Divergenceの正式名称は、『Kullback-Leibler divergence』です(相対エントロピーと呼ばれることもあります)

詳しく説明しませんが、KL Divergenceは以下のように定義され、2つの確率分布間の『差異』を測る尺度として使われます。

KL Divergence

\(P, Q\)を離散確率分布とするとき、PとQに対するKL Divergenceは以下のように定義されます。

$$\text{D}_{\text{KL}}(P \mid Q) = \sum_{{\bf x}} P({\bf x}) \log \frac{P({\bf x})}{Q({\bf x})} $$

一方、P, Qが連続確率分布の場合は以下のように定義されます。

$$\text{D}_{\text{KL}}(P \mid Q) = \int_{-\infty}^{\infty} p(x) \log \frac{p(x)}{q(x)}  $$

イメージ的には、確率分布PとQがどのくらい似ているかを表していると思ってください。

PとQの間のKL Divergenceが小さい PとQは似ている
PとQの間のKL Divergenceが大きい PとQは似ていない

 

生成モデルとのKL Divergenceを最小化

 

KL Divergenceは、確率分布間の差異を表すため、学習モデルと生成モデルの間のKL Divergenceが小さければ学習モデルとしては嬉しいですね。

つまり、パラメータを調節する一つの方法は、以下で定義される生成モデルとのKL Divergenceを最小化するようにパラメータを選ぶ方法です。

$$\text{D}_{\text{KL}}(\theta) = \sum_{{\bf x}} P_{\text{target}}({\bf x}) \log \frac{P_{\text{target}}({\bf x})}{Q_{\theta}({\bf x})}   $$

しかし、生成モデルの確率分布を知ることができないので、生成モデルの代わりに与えられたデータの経験分布\(\hat{P}({\bf x})\)を使用します。

経験分布はN個のデータ集合\(S = \{{\bf x}^{\mu} \}_{\mu=1}^{N}\)を用いて以下のように表せます。

$$\hat{P}({\bf x}) = \frac{1}{N} \sum_{\mu}^{N} \delta \left({\bf x}, {\bf x}^{(\mu)}  \right)   $$

この経験分布を生成モデルの代わりに使用したKL divergenceを最小化するようにパラメータを選びます。

$$\text{D}_{\text{KL}}(\theta) = \sum_{{\bf x}} \hat{P}({\bf x}) \log \frac{\hat{P}({\bf x})}{Q_{\theta}({\bf x})}   $$

KL Divergenceの最小化法

 

上記の結果から、以下の経験分布を用いたKL Divergenceを最小化するようにパラメータを選びます。

$$\text{D}_{\text{KL}}(\theta) = \sum_{{\bf x}} \hat{P}({\bf x}) \log \frac{\hat{P}({\bf x})}{Q_{\theta}({\bf x})}   $$

最小化するためには、\(\theta\)で微分して極値を求めれば良いです。

\begin{align}\frac{\partial}{\partial \theta} \text{D}_{\text{KL}}(\theta) &=  \frac{\partial}{\partial \theta} \sum_{{\bf x}} \hat{P}({\bf x}) \left(\log \hat{P}({\bf x}) – \log Q_{\theta}({\bf x})  \right) \\ &= ~ – \frac{\partial}{\partial \theta} \sum_{{\bf x}} \hat{P}({\bf x})  \log Q_{\theta}({\bf x}) \\ &= 0 \end{align}

この\(\theta\)に関する連立方程式を解けば良いことになります。

勾配降下法による最小化 

 

上記で導出した方程式は一般に解くことは難しいので、勾配降下法を利用して最小化を目指します。

具体的には、以下のようなアルゴリズムで最小化を目指すことができます。

勾配降下法による最小値探索

$$\theta^{(t+1)} \leftarrow \theta^{(t)} – \epsilon \frac{\partial}{\partial \theta} \text{D}_{\text{KL}}(\theta) $$

ここで、\(\epsilon \in \mathbb{R}_{+} \)は、学習率と呼ばれます。

以下が勾配降下法のイメージです。

勾配降下法

学習率\(\epsilon\)で徐々に極小値になるように更新するイメージです。

このようなアルゴリズムを学習方程式と呼ぶことにします。

これで、パラメータを適切に調節すれば学習モデルを生成モデルに近づけることが可能になります。

参考文献

 

参考文献について紹介します。

パターン認識と機械学習 下

 

確率的グラフィカルモデル

 

深層学習 Deep Learning

 

これならわかる深層学習入門

 

深層学習

 

どの本もわかりやすくオススメです。

 

まとめ

 

今回は、生成モデルと統計的機械学習について簡単に説明しました。

基本的に、生成モデルを構築する手法で有名なGANやボルツマンマシンもこの枠組みで全て説明することができます。

ここで、基本的な枠組みを理解することで、これ以降の具体的な学習モデルを簡単に理解することができます。

 

 

ABOUT ME
努力のガリレオ
【運営者】 : 東大で理論物理を研究中(経歴)東京大学, TOEIC950点, NASA留学, カナダ滞在経験有り, 最優秀塾講師賞, オンライン英会話講師試験合格, ブログと独自コンテンツで収益6桁達成 【編集者】: イングリッシュアドバイザーとして勤務中(経歴)中学校教諭一種免許取得[英語],カナダ留学経験あり, TOEIC650点