1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

第6章 教師あり学習:分類 pg212 ~ 【Pythonで動かして学ぶ! あたらしい機械学習の教科書】

Last updated at Posted at 2019-12-28

絡んでくる知識

  • 最尤推定
  • ロジスティック回帰
  • 交差エントロピー誤差
  • 勾配法
  • 2次元入力2クラス分類
    • ロジスティック回帰
  • 2次元入力3クラス分類

それぞれ、何をしているか
。分類をするのにこれらの計算をなぜ使うのか

最尤推定(pg212)

まずは、最尤推定から、
ある事象(今回の場合1~3回目がt=0, 4回目がt=1)から、それぞれの事象が起こりうる尤もらしい確率を推定する。

$P(t=1|x)=w$
あるxという入力でt=1となる確率wという式。

T=[0,0,0,1]なので、普通に考えれば1/4でしょ!
となるが、これを最尤推定で求める。

w=0.1の時の尤度を求めてみる

$w=P(t=1|x)=0.1$なので、t=1となる確率(尤度)は$0.90.90.9*0.1=0.0729$(それぞれの値が[0,0,0,1]で出てくる確率(w=1の時))

これら4つを掛け合わせる理由は
T=[0,0,0,1]が出る時の確率を求めたいので、
(1回目t=0となる確率0.9)×(2回目t=0となる確率0.9)×(3回目t=0となる確率0.9)×(4回目t=1となる確率0.1)=(T=[0,0,0,1]となる確率)
と表すことができるから。
そして、最尤推定はこの、0.9, 0.1というwが尤もらしいかどうかを求める計算

よって、w=0.1の時の尤度は0.0729

これが、w=0.2のときは??
$0.80.80.8*0.2=0.1024$で
w=0.2の時の尤度は0.1024
どちらの方が尤度が高いかというと、もちろん後者なので、t=1となる確率wが0.2の時の方が尤もらしい。

これが最終的にはw=0.25($1/4$)の時が一番高くなる。

この、どの確率が最もそれらしい確率かを解析的に求めるために0~1の範囲でどこのwが一番良いかを考える
・それを求めるのに、式を一般化して、それぞれの数をぶち込めるようにする。
それが、
$$
P(T=0,0,0,1|x)=(1-w)^3w
$$
で表せる。

これを0~1の入力値wの範囲で表したときに山形になり(P214)
、頂点部分のが最も尤もらしいwであると言える。

それでは、最大値を求めてみよう!

$P=(1-w)^3(w)$の対数をとって計算を楽にして最大値を求めてみる(対数をとっても最大をとる時のwは変わらない)
対数をとったものが↓
$logP=log{(1-w)^3w}=3log(1-w)+log{w}$
(普通に対数をとる時の計算。累乗が降りてきて足し算になる)

微分して傾き=0の箇所を探す

$\frac{\partial}{\partial w}logP=\frac{\partial}{\partial w}[3log(1-w)+log w]=0$iOS の画像.jpg

よってここで言っていることは、$w=\frac{1}{4}$ の時が一番,
T=[0,0,0,1]が最も生成されるであろうモデルパラメータである。ということ

w=1/4が最尤推定。

最尤推定初歩版終了!

ロジスティック回帰モデル(P216)

・ロジスティック回帰モデルを使うことで、入力xを0~1の範囲に圧縮することができるので、分類の確率として使いやすい。

直線モデルにシグモイド関数を通すことで、xがt=1となる確率を次のように表せる
ロジスティック回帰
$$
y=w_0x+w_1\
$$
$$
y=\sigma(w_0x+w_1)=\frac{1}{1+exp(-(w_0x+w_1))}
$$

(平均)交差エントロピー誤差

・ロジスティック回帰を確率とみなす(前回のwの値)
・そこで、入力値xから
・良い感じの重みwを求めたい。次に求めたwを使って、作成したモデルにxの値を入力すると予測値が得られる。

$$
y=\sigma(w_0x+w_1)=P(t=1|x)
$$  
この時のyは、確率を表す。
いきなり、シグモイド関数が出てきたが、これは今まで扱っていた確率wをyに置いたもの。(シグモイド関数を利用することで入力値x($y=w_0x+w_1$)から求められるyを)確率として表せますよ。ということを言っている。

⭐️以上のことから、$y=w=\sigma(w_0x+w_1)=P(t=1|x)$となる。

(重要):
P218ではこのモデルのパラメータ$w_0$と$w_1$が虫のデータに合うように最尤推定する。
「このモデルから虫のデータが生成されたとして、最もあり得る(確率的に高い)パラメータを求める。」

前説では、T=[0,0,0,1]について考えたが、今回は全てのケースに応用できるように考える。

P218

データが1つだけだとし、ある体重xに対してt=1だったら、t=1がモデルから生成される確率は、ロジスティック回帰モデルの出力値yそのものです。

という記載があるがこれはどういうことか。
iOS の画像 (1).jpg

前のページの画像です。
これをみるとロジスティック回帰モデルは直線式モデル(この直線式は入力値xから値yを求める直線式)がシグモイド関数によって1~0の範囲で押し潰されているので確率として扱うことができる。

なので、ここでは
y=(t=1である確率)
1-y=(t=0である確率)
として扱う。

このことを一般化したモデルが矢印
$$
P(t|x)=y^t(1-y)^{1-t}
$$


それで今度はデータ数がN個だった場合を考える
前節でT=[0,0,0,1]というのを考えていたところを
X=[$x_0, x_1,・・・,x_n$]
T=[$t_0, t_1,・・・,t_n$]
(T=[0,0,0,1,1,1,0,1,・・・N個])というパターンを考える。

前節でやったようにT=[0,0,0,1]のときは[$0.80.80.8*0.2=0.1024$]みたいに求めてたものを、一般化した式でも同じように最尤推定を求めるべきなので、$x_0~x_n$までの全パターンを全て掛け合わせれば良い

これがP219のところで言っている「1つ1つのデータの生成確率を全てのデータで掛け算すれば良いので、式(6-15)のようになる。これが尤度です。」

の箇所である。

なので式(6-15)は以下のようになる(全て掛け合わせているから
$$
P(T|X)=\prod_{n=0}^{N-1}P(T|X)=\prod_{n=0}^{N-1}y_n^{t_n}(1-y_n)^{1-t_n}
$$
となり、これが尤度を表す。(P214の山形のグラフのこと)

これを、前回同様対数をとって式を簡単にすると、対数尤度が↓
$$
logP(T|X)=\sum_{n=0}^{N-1}[{t_nlogy_n+(1-t_n)log(1-y_n)}]\hspace{70pt}(6-16)
$$

それでもってこれも前回同様、のこの確率値の最大のものを選べば良い(それが最大尤度だから$w_0とw_1$が求められる。)

これに、-1をけかけて上下逆転させ、Nで割ったものを「平均交差エントロピー誤差($E(n)$)」とよあれる

$$
E(n)=-\frac{1}{N}logP(T|X)=-\frac{1}{N}\sum_{n=0}^{N-1}[{t_nlogy_n+(1-t_n)log(1-y_n)}]\hspace{70pt}(6-17)
$$

あとは計算して、この最小値の時の$w_0, w_1$が適切なwなので解析かいで$w_0=1, w_1=1$と適当に入れてそこから偏微分で傾きを調べて、傾きが小さい方に進んでいけばOK!

2次元入力2クラス分類(P228)

虫で例えると、重量($x_1$)と体長($x_2$)の入力があり(2次元入力)、オスかメス(2クラス)を見分ける。

1ofK符号法

それぞれのクラスのどこに分類されるかを表す表し方
iOS の画像 (2).jpg

ロジスティック回帰モデル(2次元入力ver.)

前回までは1次元入力で考えていたので、今回は2次元入力を考える。

P232$y=\sigma(a)$を考える
$$
y=\sigma(a)
$$
前回までは、このaは$w_ox+w_1$と表されていて、1次元入力だったが、これを2次元入力で考える。
そうなるとa=の部分が[$a=w_0x+w_1$]から→[$a=w_0x_0+w_1x_1+w_2$]となる。

前回同様に、これをシグモイド関数に通したものがt=1ort=0の確率(y)となる。
(今回はt=0の時の確率をy、t=1の時の確率を1-yとしている)

よって、
$P(t=0|x)=\sigma(a)=y$
$P(t=1|x)=\sigma(a)=1-y$
というモデルになる。

一般化したモデルが、これも前回同様に$P(t|x)=y^t(1-y)^{1-t}$となるので、これの平均交差エントロピー誤差を求める損失関数は
$$
E(w)=logP(T|X)=\sum_{n=0}^{N-1}[{t_nlogy_n+(1-t_n)log(1-y_n)}]\hspace{70pt}
$$
をそのまま使える。

この交差エントロピー誤差の最小値を勾配法で求めれば適切な値$w_0,w_1,w_2$が求めれる。

最終的に、これを計算した$w_0,w_1,w_2$を使ってそれぞれ$y=\sigma(a)$($a=w_0x_0+w_1x_1+w_2$)のwにその値を入れることで、誤差が少ない分類モデルを作成できる。

その作成した分類モデルのグラフが、P238にあるグラフで、その境界線がそれぞれのクラスを分ける境界線となる。

2次元入力3クラス分類

ここからは、入力が2次元のままだが、分類するクラスが3つある場合を考える。
これは、モデルの出力にシグモイド関数の変わりに、ソフトマックス関数を導入することで3クラス以上の分類に対応させることができる。

例えば、3クラスの分類問題であれば、3つのクラスに対応する入力総和$a_k(k=0,1,2)$を考える
$$
a_k=w_{k0}x_0+w_{k1}x_1+w_{k2}\hspace{20pt}(k=0,1,2)\hspace{40pt}(6-40)
$$

現状では$X=[x_0,x_1]$と2つの入力だが、そこに常に1をとるダミー入力値$x_2$を設定してあげる。そうすると
$$
a_k=w_{k0}x_0+w_{k1}x_1+w_{k2}x_2=\sum_{i=0}^{D}w_{ki}x_{i}\hspace{10pt}(k=0,1,2)
$$
となる。

それで前回同様に、シグモイド関数に入れてた手順を、$a_k$をソフトマックス関数に入れるようにする。
$$
ソフトマックス関数=y_i=\frac{exp(x_i)}{\sum_{j=0}^{K-1}exp(x_j)}
$$
このxのところが総和$a_k$に変わるので、今回使うモデルは
$$
y_i=\frac{exp(a_k)}{\sum_{k=0}^{K-1}exp(a_k)}
$$
となる。
下辺の和の部分をuと置く
$u=exp(a_0)+exp(a_1)+exp(a_2)$
それで得られる式は

$$
y_k=\frac{exp(a_k)}{u}\hspace{20pt}(k=0,1,2)
$$

となる。

あとは、前節でやったことと同じことをやってあげる ・それぞれの確率の式を出してそれを一般化した式を作成$P(t|x)=y_0^{t_0}y_1^{t_1}y_2^{t_2}$(P242) ・そして、Nこのデータが生成された確率を出すのに全て掛け算してあげる ・最後に対数尤度をとって最小値を求め、適切なwを導き出す。 ・そのwを使って分類するためのモデルを作成(分類線を表示させることができる式を得られる)

訓練データを使って分類するためのモデルを作る、そのモデルにテストデータを入れればクラス分類が出されるような仕組み

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?