プログラミング初心者の勉強日記

情報科学専攻です. 機械学習と競技プログラミングについて日々勉強しています.

MENU

パターン認識と機械学習 : 線形回帰 線形基底関数

線形回帰 線形基底関数

今回はビショップ本の第3章の線形回帰モデルです.

その中でも基底関数のお話.

第3章からは教師あり学習の話になります. その中でも回帰の問題を取り扱っています.

回帰問題とは、入力をD次元ベクトルxとし、そのベクトルから1つあるいは複数の目標変数tの値を予測することです.

いくつか前に紹介した多項式曲線フィッティングは回帰の一例にあたります. (最も単純な線形モデルは入力変数に関しても線形な関数です.)

www.tatsumiya-blog.tokyo

基底関数

一般的には、入力変数を基底関数と呼ばれる非線形な関数に与え、入力変数に関しては非線形な形にした方が有用であることが知られています.

入力ベクトルに関しては非線形でありかつ、パラメータに関しては線形のため、今まで通りの議論が成り立ち解析が容易であるという利点があります

回帰の最も単純なアプローチは、x \rightarrow tとなる適当な関数y(x)を構成することです. より一般的な確率論的な見方では条件付き確率を用いてp(t|\boldsymbol{x})をモデル化します.

これは予測分布と呼ばれます. この条件付き分布を使えば、適切に選んだ損失関数の期待値を最小にするように任意のxの新たな値に対するtを予測することができます.

まず、最も単純な線形回帰モデルを紹介します.

それは、入力変数の線形結合

\displaystyle y(\boldsymbol{x},\boldsymbol{w}) = w_0 + w_1 x_1 + \cdots + w_D x_D

で表されます.

このモデルは、(入力変数に対しても線形であるが)パラメータに関して線形であるという重要な性質があります.

しかし、入力変数に関して線形であると表現能力に乏しいため、入力変数に関して非線形な関数の線形結合を考えます.

それは基底関数\phi_j を用いて

\displaystyle y(\boldsymbol{x},\boldsymbol{w}) = w_0 + w_1 \phi_1 (\boldsymbol{x}) + \cdots + w_D \phi_D (\boldsymbol{x})
\displaystyle y(\boldsymbol{x},\boldsymbol{w}) = \boldsymbol{w}^{T}\boldsymbol{\phi(x)} 

と表すことができます.

こうすることで、入力変数に関しては非線形だが、パラメータに関しては線形である形が表現できます.

多項式フィッティングの例では、\phi_j (x) = x^{j}という基底関数を用いていました.

他にも基底関数はたくさんあり、ビショップ本では以下の2つが紹介されています.

ガウス基底関数

まずは、ガウス基底関数です.

\displaystyle \phi_j (x) = exp\{- \frac{(x-\mu_{j})^{2}}{2s^{2}}\} 

\mu_jは入力空間における基底関数の位置を表し、sは空間的な尺度を表します.

シグモイド基底関数

もう一つにシグモイド基底関数があります.

\displaystyle \phi_j (x) = \sigma(\frac{x - \mu_j}{s}) 

ただし\sigma(a)はロジスティックシグモイド関数と呼ばれ、

\displaystyle \sigma(a) = \frac{1}{1+exp(-a)} 

で定義されます。

最尤推定

後は、\displaystyle y(\boldsymbol{x},\boldsymbol{w}) = \boldsymbol{w}^{T}\boldsymbol{\phi(x)} の式に対して最尤推定でパラメータ\boldsymbol{w}を推定すれば良いことになります.

最尤推定についてはいつも通りパラメータで偏微分してイコール0と置き、\boldsymbol{w}について解くだけです.

最尤推定による回帰はこのように基底関数をかます事で表現力を高めることができます.

またパラメータに関しては線形なので閉じた形で推定値が求まるという利点もあります.

基底関数の実装例

ガウス基底関数とシグモイド関数の図とそのプログラムを以下に載せておきます.

ガウス基底関数

f:id:linearml:20171101041535p:plain

シグモイド基底関数 f:id:linearml:20171101041544p:plain