未来の自分が読んだときすぐ思い出せるようにはじパタの内容をまとめていくことにした。
かえってわかりづらくなっている気がするけど気にしない...
イントロ部分
人は五感を用いて「何か」を認識する。
例えば、猫ちゃんを見ればそれを猫ちゃんだ!と判断したり、
何か苦いものを食べたら、生しらすだ!(生しらすは苦くない)と判断したり。んで大事なのは、人は猫ちゃんを見たときに
猫ちゃんそのものの像をそのまま猫ちゃんだとすぐに判断しているわけではなくって、猫ちゃんの像から有効な特徴を抽出する段階を経て
判断をしている。毛が生えている、比較的小さい見た目、しっぽがある、耳が可愛い、とか?こういう特徴を抜き出してようやく猫ちゃんだ!と判断する。
判断しているって言ったけど、猫ちゃんが視界に入って特徴抽出したあとに、猫ちゃんだと判断する識別規則が人には備わっている。
これは生まれた時から備わっているものではなくて、小さいころから猫ちゃんを何度も見てようやく?この識別規則が備わるようになる。
パターン認識とは
「パターン認識」とは「物事の類型を知る働き、およびその内容」ということになる。
本書での定義。
猫ちゃんが現れたとき、それが猫なのか犬なのかは
学習を通して識別規則を鍛えることで判別できるようになる。ただ大事なのは汎化能力で、これまで見てきた猫ちゃんや犬以外もしっかり
判別できないといけない。残念ながら私は以下の生き物を犬なのか猫なのか判断ができなかった。汎化能力の欠如である(犬でも猫でもなくポケモンである)
特徴の型
具体的な話に入ろう。
特徴は2つに分けることができる。
定性的特徴と定量的特徴である。
さらに前者は名義尺度と順序尺度、後者は間隔尺度と比例尺度に分けられる。
名義尺度はざっくり言うと名前、本書では「クラスラベル」と呼ばれている。
犬とか、猫とか、ポケモンとか、山田太郎とか、こういう風にラベル付けすると他と区別できるでしょ?
区別する以外の働きはない。
順序尺度は数値的な情報はないけど順序関係は表せる。
大中小とか、優良可とかそういうの。
間隔尺度は順序尺度みたいにどっちが大きいとかどっちが良いみたいな情報を数値化したって感じかな。
気温とか、日付とかは、どっちが暑いのか、どっちが未来かってのを数字を使って表しているから間隔尺度。
比例尺度は間隔尺度と同じく数字で表せるけど、特に数字同士の比に意味がある。
体重100kgは50kgの2倍だよね。こういう表現ができるのは体重が比例尺度だから。
あれ、気温は比例尺度じゃないの?と思うかもしれないけど、
「えー!今日最高気温20℃なの???昨日10℃だったのに!めっちゃ暑い!昨日の2倍暑いんだね!」
って言ってる人を見かけたらどう思います?つまりそういうことです。
ただ、Celciusではなく絶対温度なら、0って基準がちゃんとあるから比例尺度って言える。
それでも10Kが20Kになったのを2倍「暑くなった」とは言わないけど。暑いの指標は実験心理学とかで用意されてないのかな。まぁいいや。
んで、いきなりコンピューターの話になるけど、定性的な特徴はコンピュータでは扱いにくいので、
0, 1で表現したりする。
これを符号化というんだけど、よくやるのはダミー変数を使った符号化。
目の前の生き物が犬か猫か蛇かハムスターかを判別したいとする。
そしたら配列を左から犬、猫、蛇、ハムスターと決めておいて、
[1, 0, 0, 0]なら犬を意味するようにする。これがダミー変数。
本書では
クラスに対応する変数のみを1とし、ほかをすべて0とするような符号化
と説明されている。簡潔でよい。
特徴ベクトル空間と次元の呪い
特徴ベクトル空間
具体的な話に入るけど、コンピュータにこの16x16の数字のデータをインプットするにはどのようにしたらいいだろうか。目的としては、こういった手書き数字の画像データをインプットして、数字に対する識別規則を学習させたい。
まず画像というのは以下の画像みたいにピクセルで構成されていて、各々のピクセルがある値を持ってる。これらの数値を左上から単純に横に並べて16x16=256個の成分をもった、つまり256次元のベクトルを作ってみる。
$x = (x_1, x_2, ..., x_{256})^T$
単に数字を横に並べただけなんだけど、ここで大事なのは、256次元空間をイメージすること(できない)。この画像から、256個の成分を持ったベクトルを作ったのであった。であればこのベクトルは、256次元の1点を表すベクトルに過ぎないのだ。
次元の呪い
画像の各ピクセルは輝度という値を持っている。もし各ピクセルが0~255の値を持っていて、ピクセル数が256個あるとすると、取り得る画像のパターンとしては$256^{256}$通りある。だから、たった一枚の画像はこの$256^{256}$の中の1つとなって、仮に1000枚の画像があったとしてもこんな巨大な数には遠く及ばない。
パターンがたくさんあるってことは、もちろん学習も同じように多くしないとまともに正解できない。
試験問題と同じで、過去問を解いて毎年10パターンくらいの問題しかなかったら8パターンくらい勉強しておけばまぁ落とされることはないけど、100パターンあったら徹夜して80パターンくらいは身につけておかないと来年も宜しくお願い致しますになってしまう。
まぁこんなふうに、
未知の複雑な関数を学習するために必要なデータが、次元の増加と共に指数関数的に増加することを指摘し、次元の呪いとよんだ。
らしい。
画像だけでなく、自然言語とかでもそうで、例えば文の感情分析をする場合を考えてみる。
文は、
I love you. You love me?
とかにしておく(照)
んで文の特徴を、単語が出てきた頻度で表すとする。
手順としては、
ある辞書の先頭から見出し語を抜き出していってベクトルを作る。辞書のサイズにもよるけど、10万語くらいあるとしよう。この時点で10万要素を持ったベクトルdictionaryができる。
次に同じく10万要素を持ったベクトルsentenceを用意する。これは以下のように、文の各単語の頻度を数えて、1回ならdictionaryの相当するインデックスのとこに1を入れる。2回なら2を入れる。それ以外のところには0を入れる(1回も出てきてない)
まぁ、こんな風にすると特徴抽出の結果として高次元のベクトルが出てきてしまう。
10万次元とか大きい次元の話が出てきたので、ここから本の流れは、一般的にd次元単位超立方体ってどんな形してるんだろう?っていう話にシフトしていく。
中心から頂点までの距離は
$D(d) = \frac{1}{2}\sqrt{d}$
らしい。よくわからないけど、d=2, 3の時は確かに成り立つからそうなんだろう(どなたかこの一般式の導出教えてください)
面白いのは、次元が増えると中心から頂点までの距離が増加していくってことと、次元が増えても面までの距離は$\frac{1}{2}$であるということ。
ってことは、もちろんちゃんとした形はイメージできないけど、次元が増えるにつれてトゲトゲの形になっていくみたい。
面までの距離は一定だけど、頂点まではどんどん距離が伸びていく。
第一章はここまで。間違ってること言ってたらご指摘お願いします~
あと、一緒にはじパタ読んでくれる人募集中なので、
@MAMOMIMOMU
までDMお願いします!!!
参考文献
- 平井有三、はじめてのパターン認識、森北出版株式会社、