"機械学習","信号解析","ディープラーニング"の勉強

HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学などをテーマに扱っていきます

書籍紹介:ベイズ信号処理

 

 

ベイズ理論を使うとハイパーパラメータの推定をアルゴリズムの中に組み込むことができるため、交差検定などで試行錯誤的に得ていたパラメータを最適化で得られることになります。機械学習や信号処理の分野で、データをベイズ理論を使って解析していく試みが盛んに行われるようになってきたため、このことを詳しく取り上げている「ベイズ信号処理」という書籍を紹介します。

各章の紹介と共に、基本的な手法の概念を僕の言葉で説明していくので、本自体に興味がなくてもこの記事を読んでみると得られるものがあると思います。

 

 

 

 

ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―

ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―

 

 

信号処理と機械学習は元々違う目的で生まれた概念であるものの、数理的な部分はかなり似通っています。有名な「パターン認識と機械学習」の冒頭によればパターン認識は工学的分野で、機械学習は計算機科学の分野で独立に発展してきたが、同じものを違う側面から見てきただけだという説明がされています。実際、この「ベイズ信号処理」という書籍を見ると、機械学習とやっていることはほとんど同じだというのが分かります。

 

書籍の特徴

詳しい数式の展開

「パターン認識と機械学習」では数式を基礎から追っていくものの、重要な数式を並べている印象が強く、その途中の導出過程は省かれていることが多いです(一部演習に回されているが、解答は全て公開されているわけではない)。そこで多くの場合、独学は非常に難しく、むしろ一度機械学習の勉強を終えた人が、復習のために使うのに向いています。

一方でこの「ベイズ信号処理」は、かなり詳しく数式を追っていくため、確率と線形代数の数式の取り扱いさえ知っていれば独学でも学べるようになっています。

数値実験の例も掲載

詳しく数式を載せて理論を教えて終わるのではなく、最後に実際にデータを使って数値実験を行っていることで、ベイズ的手法の有用性を具体的に示してくれます。

しかも、その数値実験で使ったプログラムのソースコードを共立出版のサイトで無料配布しています。言語はMatlabなので、実行できる環境が整っている人は少ないかもしれませんが、プログラムに慣れた人であれば、これを他の言語に書きなおしてみることもできるでしょう。とにかくコードが公開されているのは良いことです。

薄くて読みやすい

本編は僅か120ページ程度。これならば挫折することなく読めるはずです。

あれもこれも網羅するのではなく、ベイズ信号処理の重要な部分に絞って解説が行われています(簡単な内容の紹介は後述)。結局、枝葉的なテクニックはすぐに変わっていくので、論文など最新の方法を参照するしかありません。ですから、本当に重要な基礎をしっかり抑えていく上では必要十分な量だと思います。

難易度はまあまあ高い

非常に丁寧なので、線形代数と確率の基礎を知っていれば読めるはずですが、扱っている内容自体は決して簡単というものではないです。確率の基礎や、数学の補足に章が割かれていますが、最低限学部1.2年の基礎的な数学は一通り知っている方が良いと思います。特に全ての章が多次元のデータ(つまりベクトル)を扱っていますので、線形代数の計算はできなければ全く数式が追えなくなってしまうかもしれません。

数式が追えさえすれば読めるかと思いますが、書籍のまえがきでは「大学院生と実際の現場で働く技術者」を対象としていると書かれています。しかし意欲的な3年生や研究が始まっている4年生でも、基礎を知っていれば読めるように丁寧な作りになっていると思います。

扱っている内容

確率と確率分布

確率と確率分布を説明したあと、ベクトル型の確率(多次元のデータを扱う)と多次元正規分布の説明をしています。確率の勉強を一通りやっている人は復習程度にさらっとで良いと思います。正規分布はあらゆるところで現れる最も重要な分布ですから、しっかり勉強しておきましょう。

最尤推定と正則化ミニマムノルム解

本ブログでも、最尤推定や正則化に関することは紹介しました。

 

s0sem0y.hatenablog.com

 

最尤推定がガウスノイズの生じたデータへの最小二乗法になっていることを説明したあと、ノイズに強い推定が行える方法として正則化が紹介されます。上記の記事では数式は要点に絞って書かれていますが、それらの数式が如何にして得られるのか、その過程もしっかり説明されていて理解が深まるはずです。また、多くの応用ではあまり意識されませんが、観測データの次元よりも未知量の次元が多いような場合にも正則化が有効であることが説明されます。

またL_2,L_1ノルム、そしてより一般的にL_pノルムがどのような推定になるかを、それぞれのノルムの図を使って説明しています。

ベイズ推定の基礎

ベイズの定理を説明してから、応用上重要なMAP推定とMMSE推定が紹介されます(MMSE推定は事後分布の期待値に相当していますが、普通は事後分布を求めるときにその期待値を求める必要があるため、事後分布を計算する過程でMMSE推定は終わっていることになります)。

最後に具体例で線形正規モデルの事後分布の導出を行います。正規分布の場合は非常に性質がいいため、新しい方法を学ぶときにはうってつけの題材です。一つくらいは手で追ってみるということをしてみてもイイと思います。

EMアルゴリズム

EMアルゴリズムは非常に強力な逐次最適化アルゴリズムです。本当に多くの場所で応用されているので、是非とも抑えておいてください。これは特定の問題にしか使えないようなものではなく、確率的に推定をする場合には一般的に利用できるものです。音声認識で使われている隠れマルコフモデルの「バウム・ウェルチのアルゴリズム」はEMアルゴリズムの一種です。

一般的なEMアルゴリズムの枠組みを説明したあとに、線形正規モデルを事前分布に使って具体的に数式を展開しています。この線形正規モデルを使った推定解が、L_2ノルムを正則化を用いた最適解と一致することを見ますが、これは本ブログの記事でも一度紹介しているので、一度見ていると理解が早いと思います(記事は上部のリンクと同じもの)。

また汎関数を使ったEMアルゴリズムの導出も行っており、これは「変分ベイズ法」と呼ばれる手法の準備になっています。変分法は物理学で発達した数学的手法ですが、これは数学的な問題で一般的に使えるものです。変分法は汎関数(関数の関数)の変量を見ていく手法ですから、ここで一旦汎関数というものの取り扱いに慣れておくといいと思います。

スパースベイズ推定

独立で同一な多次元の正規モデルを事前分布に使うとL_2ノルム正則化を使った最適解と一致することを前章説明しました。

一方で、分散が各要素ごとに異なった値を持つような正規モデル(各要素の分散が同じであれば上記の問題と一緒)を事前分布に使った場合はどうなるのかを見ていきます。実はこれがL_1ノルム正則化を使った最適解に一致するのですが、L_1ノルムを使う最適化はいわゆるスパースコーディングに相当します。スパースコーディングと言えば、たった一つの学習理論として有名ですし、実際に多くの応用で活躍しています。L_1ノルムなんてものが本当に良い推定に関与してくるのかと疑いたくもなりますが、実は確率的な推定をしてみると、むしろL_2ノルムよりもより一般的な事前分布を仮定しているものであることが分かるのです。

推定の計算にはEMアルゴリズムと凹関数の性質を利用した方法の2つが示されています。EMアルゴリズムは一般的に使えるものですが凹関数の性質を利用した方法は(評価関数が凹関数でなければ当然いけませんが)、より高速にアルゴリズムが収束することが知られています。

また、なぜ要素ごとに分散の異なる正規モデルを事前分布にするとスパースな解が得られるのかを数式を用いて説明しています。これを見ると、実はL_0ノルムとL_1ノルムの間くらいの性質を持っていて、この間でデータのノイズの具合に合わせて性質が変化することが分かります。

ベイズ因子分析

因子分析とは、観測データベクトルyが因子ベクトルxの線形変換Aを受けた後に得られていると考え、そのたくさんの観測データベクトルから因子ベクトルを得る方法です。ここまでは(哲学的な考え方は置いておくとして)主成分分析と数理的な違いはあまりありません(ちなみに因子分析は、観測データから本来観測データを説明する線形変換を受ける前の因子を見つけるという方法であり、主成分分析は手持ちのデータの線形変換が上手い説明をするベクトルになっていると考えます。データに対する解釈は違っても、数式を追う上ではあまり変わりません)。大きな違いは、因子分析では観測の際に加法的なノイズベクトルεが混入していると考えることもできます。

これも因子ベクトルの事前分布に正規分布を仮定して、EMアルゴリズムで具体的に計算をしています。

変分ベイズ法

ベイズ因子分析では、観測データyがある場合にその因子xの事後分布p(x|y)を求めようとします。その際にxの事前分布に正規分布を指定していました。この事前分布は平均と分散によって決まりますが、この平均と分散について適当に指定していたのが今までの方法です。

これに対して事前分布の平均と分散(ハイパーパラメータ)の事後分布p(ハイパーパラメータ|y)すらも求めてしまおうと考えたくなります。なぜなら、ハイパーパラメータだって未知量のはずだからです。これを勝手に決めてしまうのは統一性に欠けています。実際には因子とハイパーパラメータの同時事後分布p(x,ハイパーパラメータ|y)を求めることになります。

これは解析的には求まらないため、汎関数を考えて変分法を使うことになります。ここでは変分ベイズ法を使ったEMアルゴリズムが導出されます。

変分ベイズ因子分析

観測データベクトルyが因子ベクトルxの線形変換Aを受けた後に得られていると考えた場合に、線形変換Aのランクは幾つになっているでしょうか。行列の形は勝手に指定していいものなのでしょうか?

Aの事後分布も求めたいということです。つまりp(x,A|y)を計算することわけですね。これを変分ベイズEMアルゴリズムを使って計算するのがこの章です。

変分ベイズ因子分析では、因子の次元が幾つであるか(行列Aのランクに相当)という問題すらも多めに初期値を設定しておけば上手く推定してくれます。

ベイズ判別分析

フィッシャーの線形判別から入り確率的な判別方法を説明した後、ベイズ的な方法(事後分布を使う方法)を紹介していきます。特にスパースベイズ判定について詳しく数式を追ってアルゴリズムを導出していきます。

数値実験

ベイズ因子分析と変分ベイズ因子分析の数値実験の結果が記されています。(ソースコードは共立出版のサイトで入手可)

実際に数値実験をして図を見ると、その成果がしっかり確認できます。推定のための因子の次元を適当に設定してしまっても、変分ベイズ因子分析では、適切に次元を設定したベイズ因子分析と同等の結果が得られているのが分かります。

 

まとめ

この本は具体的にプログラムに必要な数式も書かれているだけでなく、その導出をしっかり行っているために、それぞれの手法の理解がかなり進みます。ベイズ的な取り扱いをしている本はやはり「パターン認識と機械学習」がかなり有名ですが、数式の丁寧さは比べ物になりません。

扱っている内容はかなり選別されていますが、選びぬかれた手法について一通り学んでおけば、他の手法を学ぶときもだいぶ楽になるはずです。網羅的な本を持っておくのも良いと思いますが、1つ薄くて丁寧な本を読んでおくと良いと思います。

 

(フーリエ変換とか線形システムとか、ローパスフィルタとかスペクトル解析とか、信号処理の基本となっている話は一切出てきません。パターン認識のための信号処理手法のみを取り扱っています。ですから信号処理なんて知らないよ、って人でも、機械学習をやっている人ならば絶対に参考になる一冊です)

 

 

ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―

ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―