KDOG Notebook

どうも、古くからの友人です。

線形回帰

はじめに

多峰性の出力値をもつデータに対する線形回帰モデルを実装しました。ここで多峰性の出力値とは下図のようなデータのことを考えています。 緑のデータ点から青およびオレンジの実線で示された2種類の入出力の関係を見つけることが目的となります。

f:id:kdog08:20181119010126p:plain:w300

モデル

データ数およびクラスタ数をそれぞれNおよびKとします。入出力のデータセットおよび潜在変数をそれぞれ

f:id:kdog08:20181120125601p:plain:h55

とします。線形回帰モデルを用いるわけですから入出力{x_n, y_n}は次式のように表現します。

f:id:kdog08:20181120125634p:plain:h26

ここで、重みパラメータw_kと精度パラメータλ_kを導入しました。 今回のモデルではλ_kはハイパーパラメータとして扱い、w_kは次のようなガウス分布で表現します。

f:id:kdog08:20181120125854p:plain:h60

ここで、m_kおよびΣ_kはハイパーパラメータとします。

続いて、潜在変数s_n(n=1,...,N)はカテゴリ分布に従うとします。

f:id:kdog08:20181120130238p:plain:h60

ここで、パラメータπを導入しました。πに対しては次のディリクレ分布を与えます。

f:id:kdog08:20181120130341p:plain:h21

ここで、αはハイパーパラメータとします。

以上より、今回のモデルは次式のように表すことができます。

f:id:kdog08:20181120131013p:plain:h60

変分推論

今回は、以上のモデルに対して変分推論によるアルゴリズムの定式化を行いました。 変分推論では変数およびパラメータの事後分布を次のように近似します。

f:id:kdog08:20181120132938p:plain:h50

変数およびパラメータに用意した事前分布は共役な分布であるため、事後分布もそれぞれ同様の分布をもつことになります。

潜在変数s_nの事後分布q(s_n)は

f:id:kdog08:20181120132958p:plain:h160

となります。パラメータw_kおよびπの事後分布はそれぞれ

f:id:kdog08:20181120135435p:plain:h320

となります。

最後に、各変数およびパラメータの期待値は次のように求まります。

f:id:kdog08:20181120143847p:plain:h170

ここで、ψはディガンマ関数を表します。

実験

下図に示したような20個のデータ点(緑のクロス)を用意しました。真の関数も青およびオレンジの実線で示しています。

f:id:kdog08:20181120112340p:plain:w300

今回は入力としてx = (1, x, x2)'を用いました。 学習で得られたパラメータの事後分布から求めた予測分布は下図のようになりました。 青およびオレンジの点線は各カテゴリの関数の期待値、薄いグレーは(標準偏差)x2の範囲を表しています。

f:id:kdog08:20181120144323p:plain:w300

ちなみに、上の予測分布は次式から計算しました。

f:id:kdog08:20181120164327p:plain:h100

さらに、得られたパラメータの事後分布から各カテゴリの予測分布を求めました。下図のようになりました。

f:id:kdog08:20181120151905p:plain:w600

上の予測分布は次式から計算しました。

f:id:kdog08:20181120164419p:plain:h150