波動と機械学習

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

確率の導入

前回まではデータの散らばりを「それっぽい直線」を考えることによって学習する回帰を扱ってきました。

今回からはあるデータ群を複数のグループ(クラスタとも呼ぶ)に分類する問題に取り組みましょう。そのためには確率の考え方が必要不可欠になってきます。

まずは問題を参考にしながらなぜ確率の考え方が必要なのかという点から考えていきましょう。

問題:体重データから性別を推定する。

例えば、下図のような20個のデータがあったとしましょう。

横軸は体重を表していますが、縦軸には今は意味がありません。

 

実はこのデータは男女10人ずつから収集したものと仮定します。

しかし、このままではどのデータが女性のもので、どのデータが男性のものか分かりませんね。なので分かりやすいよう男女を色別に分け、下図のようにしてみます。

これら20個のデータは教師データとして扱い、21個目のデータが男性なのか女性なのか推論していきます。

(※男性を青、女性を赤としてプロットした図)

 

さて、このデータを元に男性・女性を分類するための「判断基準」を手に入れることが学習段階では必要です。では、今までのように線形回帰で問題を解くことはできるでしょうか?

 

答えはNOです。

線形回帰で扱っていた問題は体重のデータ(連続数)をもとに身長の値(連続数)の推定を行ってきました。

しかし、今回推定する問題は体重のデータ(連続数)をもとに性別(離散数)の推定を行います。

取り扱う数字の性質が異なるので、同じ方法で推論しようとしてもうまくいきません。

 

そこで、方針としては体重のデータから男性と女性との変わり目を見つけ、境界線を引くのが分かりやすそうです。下図でいうと、体重60~65の間でだいたい性別が分かれているように見えます。

この境界線を決定境界と呼びます。

f:id:araitbs007:20190408081736p:plain

このままでも良いのですが、ハッキリと2分したことで左側に青点、右側に赤点が紛れ込んでいますね。つまり決定境界周辺は、精度があまり高くないことが分かります。

この多分合ってるんじゃないかな?という不確定さ(もしくは曖昧さ)を数学的に表現できるとシステムの精度を客観的に測ることができますね。

そこで使うのが確率の知識です。

 

ここで、もっと図を見やすくするために性別のデータも交え、しっかりと教師データを見つめてみます。今回は男性を表す値として1、女性を表す値として0を与えています。

ちなみに性別データは男性を1女性を0として値を割り振ることはできますが、割り振った値の数学的な大小関係や性質を使って処理することはできません。

(無論、割り振る数値は男性と女性で逆になっていても構いません。)

f:id:araitbs007:20190405084547p:plain

※今回使う教師データをプロットしたもの。体重と性別の2次元データになっている。

 

シグモイド関数

ここで確率を表現するのに便利な関数を紹介します。

確率は基本的に0から1までの実数で表されるため、特殊な形の関数が必要です。

それがシグモイド関数です。これは漸近線をy=1とy=0の2本とる関数になっているため、確率を表すのに非常に都合の良い関数になっています。

 

式で表すと以下のようになります。

\varsigma _{a}(x)={\frac {1}{1+e^{-ax}}}={\frac {\tanh(ax/2)+1}{2}}

(※wikipediaから引用)

 

実際にpythonで描画したもの↓

f:id:araitbs007:20190408051620p:plain

ちなみに、式の内部にあるαはゲインと呼ばれ、ゲインが1のシグモイド関数標準シグモイド関数と呼びます。

今後シグモイド関数を用いる際は、基本的にこの標準シグモイド関数を使っていきます。

 

このシグモイド関数をデータ点と重ねて表示すると下図のようになります↓

これは「与えられた体重のデータが男性の物である」確率を表していると思ってみてください。

すると、確実に男性の体重しか得られていない65kg以上の範囲ではシグモイド関数はほぼ1に近づいています。

それに対して60kg未満の範囲では女性の体重のみ得られているため、シグモイド関数は0に近づいています。

 

まとめ
  • 分類・グループ化の問題は確率を導入して考える
  • シグモイド関数の知識について

今回は確率の概念の必要性と確率を表現するための関数について記載しました。

次回はデータからシグモイド関数の形を評価する手法をご紹介していきたいと思います。