機械と学習する

統計解析、機械学習について学習したことをまとめていきます

機械学習は何を学習するのか(「ベイズ推論による機械学習入門」のメモ)

【概要】

  • ベイズ推論による機械学習 入門」という書籍の輪読会を開いています
  • 機械学習では何を学習するのかがまとまった良い書籍だと思います(ただ、機械学習の入門ではない)
  • 自分なりに、機械学習とは何を学習するものなのかについて整理してメモを残しておきます

【目次】

はじめに

ベイズ推論による機械学習 入門」という書籍の輪読会を最近(2019年6月現在)開いているのですが、この本、「入門」と書いてありますが「機械学習」の入門書では全く無いだろうなと感じます。 でも、機械学習って何を学習するものなのかというのがよく理解できるものだと思っており、「ライブラリ触れるようになった」のレベルから、「仕事で使える」レベルになるにはこの辺りを理解しておく必要があるんじゃないかなと思っています。

機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

本記事では、この「ベイズ推論による機械学習 入門」をベースに、機械学習とは何を学習するものなのかについて整理したいと思います。 私自身まだ勉強中で、自分の整理のために書いています。

間違いなどあったら指摘していただけると助かります。

【トップに戻る】

ライブラリユーザとしての機械学習

個人的な経験では普段の仕事や輪読会などを通して、 「機械学習モデル」をある程度触っている方でも、 機械学習が基盤にしている「確率分布」について理解されてないのかなと感じることがあります。 一般化線形モデルを古く単純で新しさが無い技術と考えてるみたいな。

機械学習ニューラルネットワークディープラーニング)などから入ると、「確率分布」を意識せずに使えるので仕方がないのかなとは思います*1。 しかし、この考えだけだと次のような問題が発生する気がします。

  1. もっと別の解き方あるでしょ
    • 線形分離可能な問題に対してもわざわざ複雑なモデルを適用しちゃったり
    • データが過剰に必要だったり、モデルが複雑な分解釈が難しかったり
  2. 楽しくない
    • 何でもかんでもライブラリにデータを突っ込むだけじゃ問題を解いてる気分になれないじゃない?

趣味でやってるならなんでも良いんですけどね。

【トップに戻る】

機械学習の学習

ベイズ推論による機械学習 入門」の中では、機械学習を以下のように定義されています。

機械学習とは、データに潜む規則や構造を抽出することにより、未知の現象に対する予測やそれに基づく判断を行うための計算技術の総称である。

この定義のポイントは二つありますね。

  1. データに潜む規則や構造を抽出(=学習)
  2. 未知の現象に対する予測やそれに基づく判断

ここで、1の「学習」について詳しく考えてみます。 上記の定義にある「データの規則や構造」とは何でしょうか?

機械学習統計学に置いてデータ*2は、そのデータを生成する原因が一緒であれば、同じ特徴を持ったものが生成されると考えます。 しかし全く同じではなく、揺らいだものが得られます。 この揺らぎは、「原因」が本質的に持つ揺らぎや、観測時に入り込むノイズだったりします。 このように、揺らいだデータを表現するものとして「確率分布」が使われます。

確率分布としては、有名なものに正規分布が挙げられます。 身長や体重の分布やセンサ信号のノイズなど多くの現象を表現するのに使われますね。

ここで先の定義に戻ると、「データの規則や構造」とは確率分布(または複数の確率分布の組み合わせ)で表現されると捉えることができます。 つまり機械学習における学習とは、データを生成する原因としての「確率分布」の構成をデータに基づいて決定するものと考えられます。

確率分布での現象の表現

例えば、当たりくじが当たるか否かや、Webサイトに貼ったバナー広告をクリックするか否かなどの2値で表現できる事象は、以下の「ベルヌーイ分布」で表現されます。

{ \displaystyle
p(y | \theta) = \theta^{y}(1-\theta)^{1-y}
}

ここで、\thetaはある事象の発生確率です。
上式から明らかに、これは確率\thetaで事象が発生して、(1-\theta)で発生しないという現象を表現したものになっていますね。 クラス分類などの多値の場合も同様にカテゴリ分布で表現できます。

{ \displaystyle
p(s | \pi) = \prod^{K} \pi^{s_k}_k
}

ここで、\pi_kはクラスkが選択される確率です。 s_kはクラスkが選択された時に1、他は0となります。

よって、確率\theta\pi_kを求めることができれば、これらの事象を表現できることがわかります。

パラメータの学習

\theta\pi_kをどのようにして求めたら良いでしょう?

何も前提がなければ、事象が発生した数(N_x)を全体数(N)で割ってそれを\thetaとする考えが浮かぶと思います。

{ \displaystyle
\theta = \frac{N_x}{N}
}

これも立派な「学習」で「最尤推定」による\thetaの推定です。

上記では確率\thetaはいつでも一定の値という現象を表現していますが、 何らかの変量\textbf{x}に依存して変化するようなケースも想定できます。 例えば、かき氷が売れるかチョコレートが売れるかは「気温」に依存性がある*3などが考えられます。 そこで、確率\thetaをxの関数(f(\textbf{x}))で表現したいとします。 (事象yがベルヌーイ分布に従うのは変わらない)

{ \displaystyle
\theta = g(f(x|w)) = g\left( \sum^{D}_{i=0} w_i x_i \right)
}

ここで、w_i\thetaを表現するためのx_iの係数で、 g(\cdot)\thetaを確率の定義に押し込めるための活性化関数です。 変量\textbf{x}は1以上の次元の変数です(\textbf{x}=[x_1, x_2, \cdots, x_D])。 なお、x_0は定数項を表現します。 このように\thetax_iとその係数w_iとの線型結合で表現したものが線形回帰と呼ばれるモデルです(xが1次元なら単回帰、多次元なら重回帰です)。 xが1次元の場合は、y=wxという二次元平面上の直線の式になりますね。

さらに、\textbf{x}自体をなんらかの特徴量に変換(いわゆる特徴抽出)する操作はよく使われるテクニックですね。 これも、特徴量へ変換する関数を\phi_i(\textbf{x})とすれば、以下のように確率\theta\phi_i(\textbf{x})で表現することができます。 これでも、事象yがベルヌーイ分布に従うのは変わらず、確率\thetaの表現方法の話です。

{ \displaystyle
\theta = g\left( \sum^{M}_{m=0} w_m \phi_m(\textbf{x}) \right)
}

特徴量と係数w_iとの線型結合で表現されるので、特徴量の空間においては直線(平面)を描くものとなります。 これは「線形基底関数モデル」と呼ばれたりします。

最後に、上記の特徴量へ変換する関数\phi_i(\textbf{x})自体をデータから学習させようとしたものがニューラルネットワークです。 関数\phi_j(\textbf{x})を以下のように表現します。

{ \displaystyle
\phi_j(\textbf{x}) = h\left( \sum^{D}_{i=0} w_{ji} x_i \right)
}

すると確率\thetaは以下のように表すことができます。

{ \displaystyle
\theta = g\left( \sum^{M}_{m=0} w_m h\left( \sum^{D}_{i=0} w_{ji} x_i \right) \right)
}

ここでも結局、事象yがベルヌーイ分布に従うのは変わらず、全て確率\thetaをどのように表現するかといった問題です。

ということで、確率分布のパラメータの学習として一貫してニューラルネットワークまで導くことができました。 実際にそれぞれのパラメータを学習するには、活性化関数が入ることで解析解が求められないことが多いです。 そのため、勾配法などで探索的に係数を学習する必要があります。

これは回帰の場合も全く同様で、 回帰の場合には最初に事象が従う分布として正規分布などを仮定するところが異なるだけです。 確率分布の違いがノイズの出方の仮定になるため、どのような確率分布を用いれば良いのかは、データに依存します。

【トップに戻る】

ベイズ推論による学習

ベイズ推論」や「ベイズ推定」という言葉を最近聞くようになってきたと感じます。 この「ベイズ推論」とは何でしょうか?

ここまで確率分布のパラメータ推定という見方で機械学習を説明してきましたが、 「ベイズ推論」というのも実は確率分布のパラメータ推定法の一つです。 推定したいパラメータも、3.2節で説明した\thetaや、\thetaを表現するための\textbf{w}でありますので、問題としては前章と同じものです。

何が異なるかというと、 ベイズ推論では、それぞれのパラメータ(\theta\textbf{w})は、データに基づいて想定されうる確率分布として推論されます。 データ\textbf{X}が得られた条件での確率\thetap(\theta | \textbf{X})という条件付き確率で表現します。

この条件付き確率p(\theta | \textbf{X})は「事後分布」とも呼ばれ、以下の「ベイズの定理」を使って算出します。

{ \displaystyle
p(\theta | \textbf{X}) \propto p(\textbf{X} | \theta) p(\theta)
}

この事後分布が推定できれば、未知の値x_*に対する予測は以下のように期待値を計算するものとなります。

{ \displaystyle
p(x_* | \textbf{X}) = \int p( x | \theta) p(\theta | \textbf{X}) d\theta
}

確率分布のパラメータを確率分布で推定するのでややこしく感じると思いますが、工学的に有用な点がいくつかあります。

過剰適合しにくい

3.2節の最初に最尤推定について簡単に触れましたが、最尤推定ではパラメータを一点で推定します(点推定)。 そのため、特にデータが少ない場合には簡単に極端な値を推定してしまいます。 例えば、あるクジ(5%程度で当たる)のあたり確率をデータから推定したい場合、10本くらいクジを引いてもあたりが出る確率は僅かです。 10回引いて全てハズレが出た場合、最尤推定ではあたりは0%と推定してしまうことになります*4

これに対してベイズ推定では、可能な確率がどの程度あり得るのかを表現します。

f:id:hippy-hikky:20190618222334p:plain:w400
最尤推定ベイズ推定の違い.左下の最尤推定ではあたり確率は0%と推定してしまっているが,右下のベイズ推定では可能な確率が分布で表されている.

データが少ない時には、少ないなりに広がった分布を推定し、確信度が低いことを明示的に表現できますので、予測を諦めるということも定量的に判断ができます。

ドメイン知識を自然に取り込める

上記のベイズの定理は尤度p(\textbf{X}|\theta)と事前分布p(\theta)の積で事後分布が表現できることを意味しています。 この事前分布p(\theta)は、問題についての知識を確率分布として取り込むことができるため、特にデータが少ない場合に、ドメイン知識に基づいた推定を行うことができます。

ということで、ベイズ推定というのはデータが限られるような場合に柔軟に適用できるものであるということが理解できますね。

【トップに戻る】

まとめ

本記事では、機械学習が何を学習するものであるのかについて、「確率分布」を軸に説明してきました。 2章でも書きましたが、確率分布を軸に機械学習を捉えることで、全体の見通しがつきやすく、過度に複雑なモデルを適用しないという選択が自然に取れるようになるのかなと感じます。

また、ベイズ推定についても、何を学習するのか?何が嬉しいのか?ということを聞かれることがあるのですが、確率分布のパラメータ推論という考えで一覧することで理解が進むのかなと思っています。

余談ですが、統計学の教科書では様々な確率分布を紹介する章がありますよね。 初学者のかたは、あの章を読んでも面白さを感じないのではないでしょうか? しかし、「確率分布」がデータ分析はもちろん機械学習にとって基礎であり、重要であるために多くの紙面が割かれているんだという、作者の気持ちが本記事を通して理解できるようになると良いなと思います。

【トップに戻る】

輪読会やってます

ということで、「ベイズ推論による機械学習 入門」の輪読会を開催しています。 (2019/06/18現在、3章まで進んでいます)
興味のある方、お気軽に参加してください。

reading-circle-beginners.connpass.com

また、勉強会の資料として、1章と3章の資料を公開しています。 この記事の内容は二つ目(3章)の解説資料のp.16にちょっとだけ記載しています。

www.slideshare.net

www.slideshare.net

参考文献

  1. ベイズ推論による機械学習 入門」

    機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

    機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

    本記事の参考書です。 「ベイズ推論」を軸にしているが、機械学習/データ分析の基礎である「パラメータ推定」について 書かれた本と理解すると良いと思う。

  2. パターン認識機械学習 上」

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

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

    [1]ではさらっと書き流しているところもしっかりと解説されているので良い。 ただ、数式を全部追おうとするときつい。

  3. データ解析のための統計モデリング入門

    一般化線形モデルを軸に階層ベイズモデルまで丁寧に記載されている。 [1]がきつい場合は、これを最初に読むと「パラメータ推定」 というものの理解が進む気がする。

【トップに戻る】

*1:データを入れたら良い感じの出力を返すブラックボックスと捉えてたり

*2:数値的なデータもありますし、画像などもデータですね

*3:本当にかき氷とチョコレートの売れ行きが気温に依存するかはわからないです。あくまでも例です。

*4:つまりあたりは存在しない。そんなはずないですよね。まだ出てないだけですよね。