親です。

読んだ本とかについて書いてます

【数学】パーセプトロン完全に理解した

おつです。機械学習における分類手法ひとつ「パーセプトロン法」の勉強をしたので、まとめるよ。

(「やさしく学ぶ 機械学習を理解するための数学のきほん」より)

①分類する とは

機械学習における分類とは、訓練データをもとに対象データがグループAとBのどちらに分類できるかを判定すること。

たとえば、ある長方形が縦長か横長かを分類するケースを考える。 訓練データにはx1, x2, yが与えられている。x1は横の長さ、x2は縦の長さ、yは分類結果で1のとき長方形が横長、-1のとき長方形が縦長であることを表す。 んで、このデータをx1, x2の座標にプロットすると、これらのデータはある直線によって分類できるということが分かる。 これを線形分離可能と呼ぶ。

f:id:MaximoNelson49:20180922102233p:plain
{赤の点が縦長(y=-1)のデータ、青の点が横長(y=1)のデータ。斜めの線で分類できている。)

つまり私たちは分類をするために、この赤点と青点を分類する線を見つけてあげる必要がある。

②「線」の定義

この線について、とりあえず以下のように定義する。

w・x = 0 (式2-1)
(太字はベクトルを表す)

wは重みを意味するベクトルでw1, w2という要素を持つ。 xは、すでに出てきているx1, x2を要素に持つベクトルだ。 いきなりベクトルとか出てきてハァ? って感じだが、2-1の式を開いてあげるとそこそこ理解できる式になる。

w1x1 + w2x2 = 0 (式2-2)

これは馴染みのある一次関数、 y = ax + b とほとんど同じだ。式2-2を同じような感じに変形してやるなら、

x2 = (-w1/w2)x1 + 0 (式2-3)

となる。

以上で、今回見つけたい線が式2-1であるととりあえず納得できたと思う。 で、式2-1について以下みっつのことが言える。

  1. 式2-1はwを法線ベクトルに持つ。
  2. wx = |w|・|x|・cosθ= 0
  3. (2の発展)wx < 0のとき、90°<θ<270°、wx < 0のとき、θ<90°, θ>270°

1は法線ベクトルって単語が新しいけど、言いたいことは単純だ。wxwのなす角は直角ですよ、ということ。 式2-3を見て欲しいんだが、式2-1の傾きは-w1/w2だった。んで、wは〔w1, w2〕だ。 たとえばwが〔1, 2〕のときを考える。  f:id:MaximoNelson49:20180922102247p:plain
(式2-1の傾きは-1/2、wの傾きは2。直角だ。)

そして2も実は同じことを言っている。 |w|・|x|・cosθ= 0 となるときってのはcosθがゼロになるときだ。そしてcosθがゼロになるwxの成す角θは90°もしくは270°である。つまり直角。

最後の3は2の発展。 wxが正の値をとるときってのはcosθが正のとき、つまりθ<90°, θ>270°。 反対に、wxが負の値をとるときはcosθが負の値をとるときで、90°<θ<270°。

このみっつの性質、考えてみれば当たり前すぎて、だからなんやねんという気持ちになるんだが、後々生きる。

③識別関数

xを与えると分類結果を返してくれる関数を下記のように定義する。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1)

なんかこれ、いきなりそんなこと言われても全然納得できないと思うんだけど、どういうことかっていうと、下記のイラストの通り。
(細かくなりそうだったので手書き。xベクトルの要素x1, x2と一つ目のxベクトルを表すx1,x2が大変紛らわしくなってしまった。ごめん、文脈で読み取ってほしい、スンマセン)  f:id:MaximoNelson49:20180922102401j:plain
まずw1, w2の座標にwx = 0の直線と法線ベクトルwがある。  f:id:MaximoNelson49:20180922102523j:plain
x1がとwのなす角θがθ<90°, θ>270°のとき、w・x1 > 0である。 w・x1 > 0のとき、x1は分類する線wx = 0より左側にくる。  f:id:MaximoNelson49:20180922102532j:plain
x2がとwのなす角θが90°<θ<270°のとき、w・x2 < 0である。 w・x2 < 0のとき、x1は分類する線wx = 0より右側にくる。  f:id:MaximoNelson49:20180922102623j:plain
そんなわけで、wxが正か負かによって、wx = 0のどちら側にxがくるのか分類できる。

で、この時、右側とか左側とか言ってると数学として扱えなくなるので、冒頭のようにあらわすことにする。

fw(x)={ 1 (wx ≧ 0)
-1 (wx < 0) (式3-1) そゆこと。

④更新式

では実際にxを入れて計算してみる。 (ここはテキストの中身と同じデータを使用してます) 例えば、x=〔125, 30〕、y = 1, のデータがあり、仮にw=〔-1, -1〕とする。 計算すると、xw < 0 となり、fw(x) = -1である。 が、実際のyの値は1であり、分類が失敗している。

分類が失敗したということは、wの値が間違っており、もうちょっとマトモな値に修正可能ということだ。 もうちょっとマトモな値に修正してくれる式のことを更新式と呼び、ここでは下記の通り定義される。

w := { w + y(i)x(i) (fw(x(i)) ≠ y(i))
w (fw(x(i)) = y(i)) (式4-1)

オニクソ読みにくい式になってしまったが、要するに、あるxを与えた時の予測値fw(x)と実測値yが異なるとき、wにyxを加えた値を新しいwとするという意味。x(i)はi番目のxであることを示す。

これをi個全てに繰り返すことで、少しずつより良いwに近くというわけだ。

⑤わかんないところ

予測値と実測値が異なるとき、更新式w + y(i)x(i)がより良いwの値となるってのはなんでなんだろう? なんとなく、分類する線wx = 0の反対側にwが行ってくれる気がするし、まあいい気がするんだけど。。
これ、パーセプトロンの収束定理という名前で証明されているらしい。(調べても難しい記号ばかりでどう読めばいいのかわからなかった。。)

最後に参考書籍の紹介。楽しく読めました。 https://www.amazon.co.jp/%E3%82%84%E3%81%95%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%95%B0%E5%AD%A6%E3%81%AE%E3%81%8D%E3%81%BB%E3%82%93-%E3%82%A2%E3%83%A4%E3%83%8E-%E3%83%9F%E3%82%AA%E3%81%A8%E4%B8%80%E7%B7%92%E3%81%AB%E5%AD%A6%E3%81%B6-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E6%95%B0%E5%AD%A6%E3%80%81%E5%AE%9F%E8%A3%85%E3%81%BE%E3%81%A7/dp/4839963525

以上!!!