ガウス過程の基礎と使用法

はじめに

この記事は機械学習において、深層学習に匹敵する表現力を持つ、
ガウス過程について概説するものです。

Example-of-a-Gaussian-process-posterior-in-12-with-20-training-samples-denoted-by.png

図は https://www.researchgate.net/figure/Example-of-a-Gaussian-process-posterior-in-12-with-20-training-samples-denoted-by_fig1_260637079

構成は

  • ガウス過程とは?
  • ガウス過程の仕組み
  • ガウス過程の実践

です。

ガウス過程とは?

性能

深層学習と同じ性能を持つことが証明されています。
(深層学習がどんなネットワーク構造を持っていても。
CNN、Attention、BERT、それらの組み合わせ、でも)

証明記事へのリンク https://twitter.com/Spike23645/status/1202943370068234245?s=20

歴史と計算量

数学、確率過程の分野で、ガウス過程の関数近似力が、中間層無限の3層パーセプトロンに匹敵することは、古くから知られていました。

それが、アルゴリズムの改善(主にWilson氏の「愛の三部作」:KISS-GP、SKI、LOVE←本当にこういう名前です)によって、
計算量が爆発的に減り(たとえば学習にO(n+m)以下、n入力データ数、m推測点数)、今に至ります。

確率過程から機械学習へ

ランダムウォークなどで用いられる確率過程

ガウス過程はもともとこの一種です(インデックス、時間相当の横軸tの時間発展と、縦軸の値yの関係が、数式であらわされるもの)

確率過程は、インデックス(横軸)を入力データxにしても良いので、そうすると、
入力データが前後した時の、出力データyの関係を表せます。

つまり、そこに、観測値と推定値との差を低くするよう、
パラメータを調節するオプティマイザをつけてやれば。

確率過程であるガウス過程は、学習器になるわけです。

ガウス過程の仕組み

信頼度の表示

Illustration-of-Gaussian-process-regression-in-one-dimension-for-the-target-test.png

図は https://www.researchgate.net/figure/Illustration-of-Gaussian-process-regression-in-one-dimension-for-the-target-test_fig1_327613136

図のように、赤い点で観測データが入力されたとき、青い線が出力となる推測した値です。
黒い線は実際の真の値。

水色の帯の部分が信頼区間を表しています(これがきちんと計算されるのは、「精度」「SOTA」という言葉がひとり歩きしがちの深層学習とは異なる特徴です

具体的には、上の図の、

  • 赤い観測点がそもそも少ない区間
  • 同じxの値でも、y軸の値のぶれが大きい区間

これらにおいて、信頼度を示す水色の帯が広がっているのがわかると思います。

このために、

  • 観測データが足りないところ
  • 観測データが信頼できない/ノイズが大きいところ

視覚的にわかり、

  • 観測データを、特にどこにおいて増やすべきか
  • 観測データのノイズが大きいので、センサや計測法を変えるべきか

が明示的にわかります。

実際にデータ活用をするうえで(研究やビジネスにも有効な)定量的な指針を与えてくれるというわけです!

ガウス過程の実践

インストール

Python、PyTorchのインストールは前提とします(他に山ほど参考記事があるでしょうし)

ここでは、GPyTorch(ガウス過程ライブラリ)のインストールを説明します
(Pyroから動かす方法もありますが、今回はそうします)

Python>=3.6、PyTorch>=1.3の依存関係を満たしている場合、

pip install gpytorch

conda install gpytorch -c gpytorch

でインストールできます。

詳しくは公式 https://github.com/cornellius-gp/gpytorch

あとは、公式ドキュメント

https://gpytorch.readthedocs.io/en/latest/examples/01_Exact_GPs/Simple_GP_Regression.html

の、サイン関数にノイズを加えたものの回帰を行う、をご覧ください。

それからのさらに応用的な記事は......

これから書きます......(お待ちください)

終わりに

ガウス過程、いかがだったでしょうか。

実は、私のTwitterアカウントから検索すれば、ここに書いたことはほとんど書いてあります(この記事はまとめです)

検索結果 https://twitter.com/search?q=%E3%82%AC%E3%82%A6%E3%82%B9%E9%81%8E%E7%A8%8B%20from%3A%40Spike23645&src=typed_query

また、前の記事

https://qiita.com/Spring24/items/efb9fb790d9863aeb491

の終わりに「リプはTwitterのほうが反応速いです」

私のTwitterアカウント https://twitter.com/Spike23645

とか書いてしまいましたが、こちらQiitaも(できるだけ)見るようにするので、

忌憚のないご意見お願いいたします。

間違いあれば訂正いたします。対応遅れたら申し訳ありません。

なお、これから私は、

ガウス過程、パーシステントホモロジー・Topological Data Analysis、深層学習機構の代数による記述、数理ファイナンスと力学系、などの記事を連載予定です!

あと、はてぶにもミラー作るかもしれません(?)

運用体制はおいおい考えます......

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
コメント
この記事にコメントはありません。
あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした