はじめに
記事を書いた動機
この記事を書こうと思った動機は以下の記事
machine-learning.hatenablog.com
を読んだためです。
上記の記事はベイズ推定をメインに扱っていらっしゃる方が書いた記事です。前々から認知していたブログでしたが、私自身はベイジアンではないため特に深く考えるということをしてきませんでした。しかし、最近はベイズ推定の強み活かせば、機械学習に更に発展があるのではないかと思っています。
ベイズを意識する理由
深層学習が流行して以来、「Deep Q-Network」のような深層学習を用いて強化学習の評価関数を学習する方法、あるいは深層学習の構造を強化学習する手法である「自動機械学習」、他にも「勾配法のモデルを勾配法で学習する」論文などが出ています。
[1606.04474] Learning to learn by gradient descent by gradient descent
これらに共通しているのは、既存の学習手法に組み込まれている一部(あるいは全部)を学習によって獲得するということです。基本的に機械学習をする際には、設計者が決めなければならないパラメータ(ハイパーパラメータなどと言う)が多く存在し、そのパラメータに従って最適化を行います。
そのパラメータに相当する部分(それは上記の手法では評価関数だったりネットワーク構造だったり)を学習してしまおうというのが上記の手法の大雑把な解釈です。
ベイズ理論を使うと、ハイパーパラメータ自体が確率変数であり未知パラメータという扱いをすることができます。通常はハイパーパラメータは設計者が決め打ちし、手元のデータを使ってモデルの機械学習を行います。しかし、ベイズの枠組みでは手元のデータを使ってモデルの学習だけでなく、ハイパーパラメータすらも学習できるのです(当然、モデルにもハイパーパラメータにも初期値は必要ですが)。
これは近年の深層学習を学習によって更に改良していく流れに一石を投じうると思っています。
ベイズ推定と正則化
ベイズ統計と伝統的統計
ベイズ理論では、統計パラメータ(例えばガウス分布なら平均と分散)自体は、天から与えられた唯一の値があるのではなく、あくまで有限のデータに依存する確率変数だと扱います。
伝統的統計では、有限のデータでなるべく正しく唯一の真のパラメータを推定しようとします。
いずれの方法を取ったにしても、結局は推定結果が手元のデータに依存してしまいます。ベイズ統計はそのことを受け入れ、推定された統計パラメータ自体がデータに依存した確率変数であると解釈し、伝統的統計では行った推定が本当に真の統計パラメータを捉えられているかを検定により評価します。
別に是非を問うているわけではなく、重要なのは、いつでも手元にあるデータは有限であるという事実です。もしも十分なデータがあり、それが全ての性質を平等に含んだデータ集合であるならば、伝統的統計で正確な推定を行えばいいでしょう。逆にデータ自体が不完全であると思うならば、ベイズ的立場を取ればいいでしょう。そして多くの場合、手元のデータが素晴らしいものであるという保証は薄いです。
過学習という事実
過学習というのは手元のデータに帳尻を合わせ過ぎた結果生じるものです。
しかし手元のデータが完全にすべての性質を平等に含んでおり、十分な数だけあるならば、「手元のデータに帳尻を合わす」というのは素晴らしい結果であるはずです。なぜなら、それ意外の性質のデータに推定結果を適用することなどないからです。
しかし、機械学習をやっていると多くの場合は過学習を起こします。
実際には過学習は、データが適切な場合でも、モデルの自由度をあまりに高くしすぎた結果生じます。しかし、もしもデータが全くノイズを含んでいなく、真の姿であるならば、モデルの自由度を高くしたところで正しく推定を行うはずです。
データが十分に平等に含まれ、かつノイズも無いならば過学習なんてことは起こらないはずです。現実はそうではなく、ノイズにまみれた不十分なデータから学習を行わなければなりません。
ノイズへの対策
ノイズというのは本質的なデータの持つ性質ではないため、これを省いたものを学習したいはずです。モデルの自由度が高すぎる場合には、ノイズを含んだものを学習してしまいます。
以下のにおいて過学習を起こしています。
緑の線:本質的なデータの挙動
青い点:ノイズが混入して観測されたデータ
赤い線:学習された曲線
M:モデルの自由度の高さ(多項式フィッティングにおける次数)
上記の例では、緑の曲線を表現しうるのに十分と言えるほどデータを持っておらず、しかもデータがノイズを含んでいる状態です。このような場合には、上手くモデルの自由度を決めなければそれらしい学習は行えません。
通常はモデルの自由度は高めに取っておき、正則化というテクニックによって過学習を抑制します。以下は正則化の強さを調整した際の学習結果です。
モデルの自由度を適当に設定してしまい、代わりに正則化で対応ができるということです。
この正則化は、ベイズ統計学で用いられる最大事後確率推定を適用することに相当します。
最小自乗誤差推定にノルム正則化を入れることは、最大事後確率推定の事前分布に当方的ガウス分布を想定することと同値です。
最大事後確率推定
最尤推定ではデータの生起する確率ををパラメータを用いて
として表現し、この確率が最大になるようなを求めます。
一方で最大時事後確率推定では、推定される自体がデータに依存するとし、以下の条件付き確率
を最大化します。これはベイズの定理を用いて
と書くことができます。これは右辺の第一因子は最尤推定で最大化しようとしているものであり、最大事後確率推定ではそれにが乗じられたものを最大化します。
通常いずれの推定も、対数を取ったものを最大化することで行われ、それぞれ最尤推定では
最大事後確率推定では
が目的関数となります。この際にの項が正則化項に相当してきます。
正則化項の係数は事前分布に何を仮定したかで決定されます。例えばガウス分布を想定すれば、その分散の値が重みに関与してきます。
具体的には、推定すべきパラメータは確率変数であり、その確率変数にも確率分布が存在し、その確率分布にもその形状を決めるパラメータが存在しているとしてのように扱うことができます。
をガウス分布だとおいて、をその分散だとしておけばというのは以下の形をしていて
目的関数のの部分にこいつを入れてやれば第二項は
となっており、目的関数は全体として
という形をしています。第二項はに無関係な項なので、どうでもいい定数項で、第三項がの二乗で効いてくる値となっており、これが正則化の役割を担います。は正則化の係数に相当します。
第一項は尤度ですから、データに関する確率分布を考えれば具体的な数式が現れます。特にに対してもガウス分布を仮定すれば、最小二乗法の推定と最尤推定は一致し、それに対して最大事後確率推定を上記のように行えばノルム正則化を行うことになります。
最適化の立場
最大時事後確率推定を行うと意識しようがしまいが、正則化を入れてしまえば過学習を防ぐことができるというのは同じことです。そうなると単純に
という数式において、に相当する部分を、パラメータの適当な関数で表現してしまおうということが考えられます。すなわち、パラメータに関する確率分布がどうのこうの細かいこと言わず、単純にを含む関数を準備して
という目的関数を考えれば良いということになります。ここではの略であり、はの略です。実際に最適化の立場からはそのように設計されることの方が多いです(ほとんどです)。
実際、研究においても何らかの正則化や何らかの損失関数を適当に設計してみて、後からそれが確率分布の推定という立場で見ればどういうことなのかが明らかにされることが多いです。
つまり正則化という手法がまずあり、それが後から事前分布にガウス分布を仮定した最大事後確率推定であったと判明するという順序が多いということです。
ちなみに正則化という手法は、事前分布にラプラス分布を仮定することに相当します。
ベイズ推定について
事前分布に等方的ガウス分布(全ての次元が同じ分散)を仮定する場合と、そうではない場合(各次元毎に異なる分散)ではパラメータに対する制約が全く異なってきます。当方的ガウス分布では正則化の効果を持ちますが、そうでないガウス分布を使うと、正則化よりもスパース性に対する制約が強い正則化になります。
これは直感的にすぐに解釈できるものではありません。調べて初めて分かることです。
未知の正則化手法に対する探求をする方法として、ベイズ推定を調べるということができるわけです。では逆に既知の手法であれば、わざわざベイズ推定を持ち出す意味は薄くなるのでしょうか?実はそんなことはありません。ベイズの枠組みを使うと、最適化手法として更にレベルの高い推定が行えるようになります。
正則化の試行錯誤
以下の正則化を含んだ目的関数に関して
通常は正則化における重み係数は問題に応じて適切に設定されるべきですが、その適切な値はわかりません。従って、何度も学習結果を見なおして、良いを試行錯誤的に発見する必要があります。
一方でベイズの枠組み(今回は事前分布をガウス分布として)では目的関数は
となることを(前の記事で)見ました。これは最大事後確率推定なので、最小化問題で考えれば負符号を付けて、更にと置けば
のような形になり、正則化と同様の形式になります。
最大事後確率推定というベイズ推定の手法を使うことで自然と正則化が行われ、過学習を防ぐことになります。
しかし、最適化問題をベイズの枠組みで考えようがそうで無かろうが、結局正則化の係数に関しては、ここまでの状態では試行錯誤に頼らざるを得ません。
完全なるベイズの枠組み
ここまでのパラメータを推定するための流れは
1.という事後確率を考え、
2.ベイズの定理によりに変換し
3.更に対数を取り負符号をつけることで和の形にしてきました。
4.事前分布をハイパーパラメータを明記することでと記述。
5.このが正則化項の係数を決定する。
というのがここまでの流れです。
は試行錯誤的に決定されるのが普通の方法ですが、完全なるベイズの枠組みでは自体にも何らかの確率分布を仮定することで推定の枠組みの中に入れることができます。
ハイパーパラメータを予測に含むためには変分近似などを用います。各種法毎に上手く数式を近似していき、学習のアルゴリズムを導出していきますが基本的に数式のレベルは高くなります。
ベイズの枠組みを勉強できる本
Pattern Recognition and Machine Learning
Pattern Recognition and Machine Learning (Information Science and Statistics)
- 作者: Christopher Bishop
- 出版社/メーカー: Springer
- 発売日: 2010/02/15
- メディア: ハードカバー
- 購入: 5人 クリック: 67回
- この商品を含むブログ (29件) を見る
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (18件) を見る
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/02/29
- メディア: 単行本
- 購入: 6人 クリック: 14回
- この商品を含むブログを見る
有名なPRMLはゴリゴリのベイジアン向けの本です。機械学習の基本的なことから書いてあり、範囲も広くカバーしてあるためバイブルのような扱いをされていますが、あの本の主張はベイズ理論が機械学習でどれだけ強力であるかということです。
ベイズ理論の基本を抑えれば、PRMLが何をやっているのかの手がかりを掴めるかと思います。個人的にPRMLが難しいとされているのは、そのあたりの概念を知らないまま普通の機械学習だと思って始めてしまうからだと思います。無論数学的な面でもハイレベルなのは間違いありませんが、概念をまず掴まないことには取っ掛かりも悪くなってしまいます。
この本では終始、確率的なモデルを考え、そしてそれをベイズの枠組みで説明していくことを行っています。ベイズを真剣にやりたいのならば、単に機械学習のバイブルというだけでなく、この本は最もおすすめできるものです。
しかしベイズ推定を展開していくと、どうしても数式は複雑極まりなくなります。
そこが応用へ大きく発展していない原因でもあると言えるでしょう。
ベイズ信号処理
数式の展開が非常に丁寧です。
機械学習ではなく信号処理の本なので、主にBlind Source Separationに対するベイズ推定の方法を解説しています。しかし、数学的な面においては機械学習もコレも同じです。
ただカバー範囲は非常に狭いです。PRMLで言うならば第12章「連続潜在変数」に関する部分のみだと考えればよく、その分解説は手厚いです。
具体的には因子分析を扱っており、PRMLでは主成分分析と因子分析を完全なベイズの取り扱いまではしていませんが、本書では最後まで書ききっています。
基礎からのベイズ統計学
基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門
- 作者: 豊田秀樹
- 出版社/メーカー: 朝倉書店
- 発売日: 2015/06/25
- メディア: 単行本
- この商品を含むブログ (5件) を見る
最も簡単、かつ分かりやすい。
機械学習からは若干は慣れますが、純粋にベイズ統計がどういうものかというところから始めたい場合はオススメです。具体的な応用のためにソフトウェアの話まで入っているので、一番とっつきやすいかと思います。
ベルヌーイ分布で最大事後確率推定の導出
簡単な問題で手を動かすのが理解には一番早いでしょう。
基本的にやることは同じなので(数式の複雑さは異なれど)、まずは具体的な流れを把握するのが良いです。
ベイズ推定の基本的な流れ
machine-learning.hatenablog.com
ベイズを実践している方なのでブログ全体を通してベイズに関して(私なんかよりよっぽど)しっかり書かれています。
私はあくまでベイズの綺麗な面までしか書いていませんが、実践するとなると計算された数式自体が複雑すぎて近似しなければならなかったり、それに応じたサンプリング手法が必要ななったりしてきます。それらに関して「作って遊ぶ機械学習。」では掲載されているので非常に参考になるはずです。