meltyyyyy / qiita

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Qiita

Qiitaへ投稿した記事の中で主に機械学習系の再現コードを置いているレポジトリです。

マルコフ連鎖モンテカルロ法(Markov chain Monte Carlo methods) は、解析的に計算することが難しい事後分布からサンプリングしたいときに用いられる手法です。この記事ではMCMC法を用いたサンプリングアルゴリズム(M-H法、HMC法、ギブスサンプリング)を紹介しました。2次元ガウス分布を目標分布として、3つのアルゴリズムの振る舞いや性能を比較を行いました。

非自明な関数の最大値、または最小値を求める手法は Black-Box最適化 と呼ばれます。Black-Box最適化の中でもベイズの枠組みを用いて、関数の最大値、または最小値を求めていく方法を、 ベイズ最適化(Bayesian Optimization) と呼びます。この記事ではベイズ最適化を実行するプログラムをゼロから実装し、ベイズ最適化のアルゴリズムへの理解を深めました。

bo

ガウス過程シリーズ

ガウス過程(Gaussian Process) はノンパラメトリックなモデルの一つで、一般的に「関数を出力する箱」というような例えられ方をします。このようにたとえられる理由は、ガウス過程では関数 f(x) を確率変数と見立てて、 f(x) の確率分布を出力するためです。

ガウス過程は、ベイズ最適化や空間統計学の文脈でよく用いられます。また、最近になって深層学習が発展するにつれて、ニューラルネットワークとガウス過程の等価性が示され(Lee et al, 2018)、注目を集めるようにもなりました。具体的には、隠れ層が1層のニューラルネットワークで隠れ層のユニット数を∞にすると、中心極限定理によりニューラルネットワークの出力はガウス過程と等価になります。

この記事では、ガウス過程の導出とプログラムのスクラッチ実装を行いました。

image

ガウス過程を用いる場合とき、通常は事前に最適なハイパーパラメータは分かりません。

この記事では、ガウス過程のハイパーパラメータ最適化に関する数式を導出し、最適化を実行するプログラムをゼロから実装を行いました。

一般的にガウス過程のハイパーパラメータ最適化の文脈で用いられるのは、 マルコフ連鎖モンテカルロ法(Markov chain Monte Carlo method)勾配法(Gradient Decent method) です。この記事では、MCMCによる最適化と勾配法による最適化の両方の実装を行いました。

特に何も工夫をしないままのガウス過程ではトータルの計算量として を必要としてしまいます。このままではNが小さいうちは大きな問題にはなりませんが、Nが大きくなると手に途端に負えなくなってしまいます。

この記事では コレスキー分解(Cholesky decomposition) を用いることでガウス過程の計算量を から まで削減していきます。

通常のガウス過程では、関数 と出力 の関係 がガウス分布 に従うという前提のもと、出力を計算していました。

この記事では、尤度 がコーシー分布に従う場合を考え、データに予期しない外れ値が含まれていてもうまく回帰できるようなロバストなガウス過程を実装しました。

image

ガウス過程力学モデル(Gaussian Process Dynamical Model) はガウス過程による教師なし学習の一つで、 ガウス過程潜在モデル(Gaussian Process Latent Variable Model) を拡張したモデルのうちの一つです。

GPLVMでは、潜在変数 の独立性を仮定していました。これに対してGPDMは、潜在変数 が時系列データであるという仮定を導入して、潜在空間での構造を学習します。

この記事では、GPDMの原論文を参考にしながら、GPDMをゼロから実装し、PCAやGPLVMなどの他の次元圧縮手法と比較を行いました。

image

シミュレーテッド・アニーリング(Simulated Annealing) は、「焼きなまし法」とも呼ばれ、大域的最適化問題へのアプローチ方法の一つです。「焼きなまし」の名称から察せられる通り、金属を高温の状態にして、徐々に温度を下げることで秩序がある構造を作り出す焼きなましの技術をコンピュータ上で再現したアルゴリズムになります。

この記事では、シミュレーテッド・アニーリングのスクラッチ実装を行いました。

sa

馬蹄分布は確率変数がスパースであるという事前知識があるときに用いられる分布になっています。

馬蹄分布そのものは平均0のある分散の値を持った正規分布から生成されるものですが、縮小係数は τ=1 のときにBeta分布から生成され、その形が馬の蹄に似ていることから馬蹄分布という名前がつきました。

この記事では馬蹄分布の基本的な事柄について解説を行いました。

horseshoe

線形回帰の解がスパースである(0が多い)ことが事前にわかっているとき、 ベイズ線形回帰(Bayesian Linear Regression) において重みの事前分布に対して、 馬蹄分布(Horseshoe Distribution) を用いるのが一般的です。

正規分布などを事前分布に用いたベイズ線形回帰と比べて、馬蹄分布を事前分布に用いたベイズ線形回帰では、事後分布からのサンプリングには比較的複雑なコードが必要になります。

この記事では、 マルコフ連鎖モンテカルロ法(Markov chain Monte Calro method) のアルゴリズムの一つである ギブスサンプリング(Gibbs Sampling) を用いた、最も基本的な馬蹄事後分布からのサンプリング方法を解説しました。

bhs-tp

非自明な関数の最大値、または最小値を求める手法は Black-Box最適化 と呼ばれます。Black-Box最適化の中でもベイズの枠組みを用いて、関数の最大値、または最小値を求めていく方法を、 ベイズ最適化(Bayesian Optimization) と呼びます。

ベイズ最適化を用いて組み合わせ最適化問題を解くには、 獲得関数(Activation Function)代理関数(Surrogate Function) に工夫をし、高次元のスパースな解をうまく求められるようにする必要があります。

この記事では Bayesian Optimization of Combinatorial Structures(BOCS) というアルゴリズムを原論文を引用する形で紹介します。

About


Languages

Language:Python 100.0%