高みを目指すブログ

都内近郊に住む暇を持て余した理系大学生が日常を綴るブログです。主なトピックは、勉強系では金融工学、人工知能、プログラミング、python、日常系では、色々なことを書いて行こうと思います。

機械学習とベイズ統計学

はじめに

本記事は機械学習ベイズ統計学の関係性を頭を整理するために個人的にまとめたものです。学部生の見解ですので、その辺を踏まえた上でご覧になってください。

機械学習とは?

wikipediaに概要がかなりよくまとまっていたので引用します。

センサやデータベースなどから、ある程度の数のサンプルデータ集合を入力して解析を行い、そのデータから有用な規則、ルール、知識表現、判断基準などを抽出し、アルゴリズムを発展させる。なお、データ集合を解析するので、統計学との関連が深い。 そのアルゴリズムは、第一にそのデータが生成した潜在的機構の特徴を捉え、複雑な関係を識別(すなわち定量化)する。第二にその識別したパターンを用いて、新たなデータについて予測を行う。データは、観測された変数群のとりうる関係の具体例と見ることができる。一方、アルゴリズムは、機械学習者として観測されたデータの部分(訓練例などと呼ぶ)を学習することで、データに潜在する確率分布の特徴を捉え、学習によって得た知識を用いて、新たな入力データについて知的な決定を行う。(https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92)

つまり機械学習とは、

  1. データが生成した潜在的機構の特徴を捉え(特徴抽出)、複雑な関係を識別し(モデルの学習)
  2. 識別したパターン(学習したモデル)を用いて、新たなデータについて予測を行う

ためのアルゴリズムやその過程のことを言います。これだけではいまいちピンとこない気がするので、もう少し具体的に見ていきましょう。


例えば、猫が写っている写真があるとしてコンピューターがこれを読み込み、猫が写っていると認識できるようなシステムを作りたいとします。まずはじめに、取り込んだ画像データを定量的に扱えるものにしなくてはなりません。方法は様々ですが、画像データが64×64ピクセルならば各ピクセルごとのRGB値などを利用するとしたら、少なくとも64×64次元のベクトルとしてデータを数値化できます。しかし、このままでは次元数が大きすぎるの*1で、うまく次元圧縮などをする必要性などが出てきます。詳しい方法は避けますが、概ねここまでのプロセスのことを特徴抽出と言います。

次はモデルの学習ですが、まずはどのモデルを使うかを選択しなければなりません。モデルの精度などはデータの種類により一長一短ですが、自分が対処している問題が、回帰問題なのか分類問題なのかである程度使うべきモデルを絞ることができます(まぁ半分以上のモデルは回帰も分類もどっちもできると思いますが笑)。先の猫の画像の例などは分類問題に当たります。モデルが選択できたら、データをフィッティングしてパラメーターをチューニングします。これがいわゆるモデルの学習です。特にこの段階で行われる学習は、教師ラベル(猫の画像の例なら、全ての画像データに対してそれぞれ猫が写っている、写っていないという情報のこと)が与えられた元でそれに近づけるようにパラメーターをチューニングするので教師あり学習と言います。逆の、教師ラベルの無い教師なし学習は前段階の特徴抽出の段階で行われることが多いです。

モデルの学習が終わったら、最後に新しいデータをモデルにインプットして帰ってきた出力をモデルがはじき出した将来予測とします。この一連の作業を機械学習と呼んでいるということです。

ベイズ統計学とは?

次にベイズ統計学について見ていきましょう。ベイズ統計学は数学的に難解なイメージが強いですが、大元は以下の一つのいたってシンプルな式に集約されます。

{ \displaystyle
P(A|B) = \frac{P(B|A)P(A)}{P(B)}\propto P(B|A)P(A)
}

みなさんご存知条件付き確率の計算式です。これを言葉で言い換えると「事後確率P(A|B)は尤度P(B|A)と事前確率P(A)の積に比例する」ということを意味しています。これがベイズ統計学の本質です。統計的に得られたデータをこの式に組み込んで、出力される事後確率から様々な意味を見出していきます。

では何故ベイズ統計学は数学的に難解なのか?尤度と事前確率が得られればすぐに事後確率を計算することはできず、ある一つの手順を踏むことになります。それは基準化定数を求めるという作業です。ちゃんと説明すると、上の式にある通り尤度と事前確率の積だけでは事後確率に比例するだけであり、イコールではありません。故に確率の和が1である(もしくは確率密度関数を全区間積分したら1となる)という性質を利用することで比例の度合い(これを基準化定数という)を計算する必要があります。この時に尤度と事前確率の積の確率分布を周辺化するために積分計算を行わなくてはなりませんが、これが積分値が解析的にも止まらない都合上計算不能に陥ることが多いです。従って、事後確率も解析的に与えられないので、なんとかサンプリングをしようとして考え出されたのがかの有名なマルコフ連鎖モンテカルロ(MCMC)だったりします。話がかなり込み入ってしまいましたが、要約するとベイズ統計学

  • 理屈自体はシンプルで、極論言うと条件付き確率の計算式を用いるだけ
  • しかし、すぐに解析的に計算不能に陥るので高度なサンプリング手法が必要になる

って感じになるかと思います。

機械学習の中に見るベイズ統計学

さてここからが本題の機械学習ベイズ統計学の関係についてですが、時間の都合上明日に回します。ごめんなさい笑

まとめ

*1:次元の呪いという問題があります。詳しくはまたいつか…