いものやま。

雑多な知識の寄せ集め

ベイズ統計学を学んでみた。(その1)

機械学習をやってると、なにかと耳にするのがベイズ統計学。 数理最適化をやってきた身としては、正直どうなの?と思うんだけど、理解もせずに批判するのもアレなんで、ちょっと勉強して自分なりにまとめていきたいと思う。

一応、参考にした本は以下:

しくみがわかるベイズ統計と機械学習

しくみがわかるベイズ統計と機械学習

  • 作者:手塚 太郎
  • 発売日: 2019/11/01
  • メディア: 単行本(ソフトカバー)

他、次のような本も眺めてる(※全部は読んでない):

ベイズモデリングの世界

ベイズモデリングの世界

  • 発売日: 2018/01/18
  • メディア: 単行本(ソフトカバー)

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

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

ただ、この本に限らず、ベイズ統計で使われる記法は雑すぎて理解に苦しむので、この一連の記事では独自の記法を使うことにする。 また、話や理論の流れについても、分かりやすくなるように独自で整理している。 これまでベイズ統計をやってきた人は違和感を覚えるかもしれないけど、普通に数学をやってきた人には逆に分かりやすいはず。

ここがダメだよベイズ統計

あらかじめ書いておくと、先にも述べたとおり、自分はベイズ統計については現時点でかなり懐疑的。

まず、なんかベイズ統計の人たち、狂信的なイメージあるのよね・・・

ベイズ統計はすごい! 最高! 他の方法はダメだ!」みたいなのを見ると、「うわぁ・・・」って正直思っちゃう。 まぁ、そういう人はかなり限られてるとは思うけど。 ただ、そこまでいかなくても、みんなベイズ統計はいいものだと思ってて、批判的な意見を見ることが少ない。

そして、「じゃあ、そんなにいいものなら、なんでみんな使わないの?」と聞くと、「数学が分かってないと使えないから」という答えが返ってくる。

いや、自分のような人間ならともかく、深層学習の最先端をやってるような研究者とかは数学分からないなんてことはないわけで。 だから、使われてない理由は単に「使い物にならない」からでしょ。 あと、ベイズ統計学での記法が雑すぎて、数学つよつよの人には逆によく分からないという可能性はあるけど。

結局、ベイズ統計では生成モデルを考えるけど、その想像力の限界がモデルの限界として現れてくることになる。 人間の理解の限界が、モデルの限界。 だから、出来たモデルはもちろん人間にも理解可能なものになるけど、人間の理解を超えた性能を出すことはできない。

一方、深層学習とかは、そのよく分からないものをよく分からないまま扱うので、出来たモデルが理解可能とは限らないけど、人間の理解を超えた性能を出すことができる。

もちろん、ベイズ統計の結果を使って深層学習などのモデルの説明をしようとしてたりするわけだけど、それって批評家があとから「それが上手くいったのはこれこれこういった理由なので当たり前ですよね」みたいにドヤる感じに似ていて、それなら「お前が最初にやれよ」って感じ。 それができないなら、後付けで説明が与えられても、正直どうなのとしか言えないと思う。

記法が雑?

ちなみに、これまで何度も「記法が雑」と書いてきたけど、これがベイズ統計を分かりにくくしている一番の原因だと思う。 雑だと思えない? そういう人は残念ながら数学やるのにあまり向いてない。

たとえば、当たり前のように P(X=2)みたいな書き方をするけど、冷静に考えると意味分からないよね。

「えっ、確率変数 Xの値が2であるような確率でしょ?」と思うかもしれないけど、それなら P(X)は? 確率変数 X確率密度関数(もしくは確率質量関数)?

じゃあ、 P(X \le 2)はどうかというと、確率変数 Xが2以下である確率だと思うけど、ひるがえって考えると P(X=2)は「確率密度関数 Xが2のときの値」なの? 「確率変数 Xが2のときの確率の値(確率変数が連続なら0になる)」なの?

そもそもの話をすると、Pの定義域ってどこ? 確率変数 Xと確率変数 Yが独立なら、 P(X, Y) = P(X)P(Y)って書いたりするけど、この式をじっと見ると Pって一体何なんだとなってくる。

本によっては、 Pは関数ではなくて確率を関数っぽく表現した記法なんて書いてあったりして、なんじゃそりゃって感じ。

この辺りのカオスな記法運用についても、整理していきたいと思う。

今日はここまで!