波動と機械学習

人間の声を色相の変化を利用して3次元プロットした図に美しさを感じて、そのまま音声解析の道を進んでいます。自分なりに調べて実装できたものから更新していきます。アドバイス、アイデアなどあれば是非お願いします。

線形基底関数モデル(理論編)

前回:勾配降下法(理論編)まではデータ点がある直線的な分布で得られると仮定してフィッティングを行ってきました。

しかし、データの中には明らかに直線的な分布にならないデータもあるはずです。

そこで、複雑に曲がったデータの分布を線形回帰で表現するための方法をご紹介します。

 

線形基底関数モデル

下図のようにデータの分布が曲線を描いているようなものについて考えていきます。

f:id:araitbs007:20190309072213j:plain

線形回帰ではこのデータの分布にそれっぽい線を引くことによって、未知のデータに対して推論することができるのでした。このアイデアについては最小二乗法(理論編)でも解説しました。

ここで引きたい線は次の図のような線ですね。

f:id:araitbs007:20190309072532j:plain

この関数(曲線)の式が分かれば推論ができるのですが、実験するたびにデータの分布がどんな関数で表せるか調べるのは手間ですし、もっと複雑でたくさんの要素が絡み合った結果得られるデータは、単純な関数で表せないことがほとんどです。

 

そのため、とても単純な関数を用意し、その重ね合わせで表現してやります。

この時用意した単純な形の関数を基底関数と呼び、基底関数を用いたフィッティング方法を基底関数モデルと呼びます。

 

正規関数

ここで関数の紹介です。

次回:線形基底関数モデル(実装編)でも基底関数として使うのが正規関数です。

機械学習の勉強をしていると必ず出会うことになる重要な関数の一つです。

この関数は確率密度を表す目的でも使うことができ、今後記事にするであろう教師なし学習ではこの正規関数(確率の世界では正規分布と呼ぶ。)なしでは話が進みません。

ちなみに、正規関数のことをガウス関数と呼ぶ場合もありますが、全く同じもののことを指します。

 {\displaystyle f(x)={\frac {1}{\sqrt {2\pi \sigma ^{2}}}}\exp \!\left(-{\frac {(x-\mu )^{2}}{2\sigma ^{2}}}\right)\quad (x\in \mathbb {R} )}

wikipediaより引用

実際にプロットしてみると以下の通りです。

f:id:araitbs007:20190309075342j:plain

山のような形をしており、-∞から∞までの積分を行うと1になります。(つまり面積が1。確率を表すのに都合が良いことが分かります。)

 

正規関数は一般にN[µ,σ]と表します。

μは正規関数の平均値で、山形の頂点に当たる部分がどこにあるのかを表しています。上図だと頂点が横軸の0の地点にありますね。(μ=0)

σは正規分布のなだらかさを表します。値が大きくなればなるほど平たい正規分布になっていきます。

今回のフィッティング法ではあまりにも複雑になってしまうのでσは固定し、μは任意の値を我々で指定していきます。

 

さて、この正規分布をいくつか用意し重ね合わせます。

下図は赤、青、緑の3つの正規関数を合成し、黄色の曲線を作った図です。

f:id:araitbs007:20190309081636j:plain

N[μ,σ] → N[-6,3] N[0,3] N[5,5]

このようにいくつかの正規関数を合成し、目的のデータ点とぴったり合うような曲線を作っていきます。

 

複数の正規関数を合成してフィッティングしていきます。そこでは各正規関数に重みをつけて合成しますが、この重みをパラメータとして学習していきます。

つまり、今回調べたい「それっぽい線」とは以下のように表せるはずです。

aN[μ,σ]+bN[μ,σ]+cN[μ,σ]+...

この正規関数にかけられている[a,b,c,...]を勾配降下法で推定していきます。

 

次回:線形基底関数モデル(実装編)では勾配降下法で分かりやすいように記述していたところを、行列式を使って一般化していきますので違いもお伝えしていきます。