野良DSの適当な解説~機械学習で推測するって何?
最初のQA
質問)
機械学習の推測って実際のところ何やってるの?
回答)
学習データの分布を参考にしてデータのラベルを決めてそれを返しているよ。
解説しよう
まぁ、正直もデルによって色々あるんで、個々のアルゴリズムに踏み込むことはしません。そうじゃ無くって、概念的なところを説明していきたいと思います。
実は、「機械学習の学習って何?」に通じるところがあるわけですが、学習によって分割された高次元空間の指定位置のラベルを返すというのが機械学習で結果を推測するということです。
でも、大抵の人は思い浮かべて精々3次元なので、多次元なんかわかるわけねーじゃん!って思いますよね。私も昔はそうでした。
でも、機械学習で必要になる程度の多次元空間の理解で良いなら、それほど難しくはありません。
で、なれたらもっと先に行きましょう。多次元空間で歪みも伴っていてそんなところで微分とかしたりしたくなってくるとちょいと腰を据えて頑張ろうかなって気分になるしかありませんが。ん?私が高次元のクラスタリングするときは、高次元で歪みを伴う空間をイメージしつつ考えますよ。さすがにそこで微分はやっていませんが、変化量がわかれば簡易的に微分も出来るしどうせ非線形の微分なんだから綺麗に出来るわけないからこれぐらいでいいのです。
話を戻そう。
ここで書くレベルの空間の理解は平面上(2次元)で十分です。さすがに直線状(1次元)だと逆にイメージ湧きにくくなるので、2次元あたりが適切かなと思います。
さて、機械学習の学習ってこの二次元空間上にばらまかれたラベルの区切り方を求めることだったりします。だから、機械学習の推測って、興味のある点(今回は平面上にある)にどんなラベルが設定されているのかな?を調べて返すという処理になります。
なお、学習データに変な奴が混じっていると、このラベルが腐るので、データは取っても大事です。また、どっちでも良いやっていう領域は、本当にどっちが帰ってくるかわかんないので、結果に惑わされる未来しか見えません。潰してしまうことをお薦めします。
細かい実装のレベルでは、かなーり面倒くさいことをやっています。それに、世の中そう簡単にはいかないといういつもの話はここでも発揮されるんで、正直嫌になることがいっぱいです。でもまぁ、それはモデルを作りたい人とか、モデルを改良したい人とかになったら、改めて気にしてください。
もちろん。
知っているに越したことはありません。ですが、知っていなくても先に進めるならば、勇気を持って棚の上に隠してしまうことも大事なんですよ。
確信度とかって何?
これは 2D 空間を一枚の紙で考えました。今度は、ラベルごとに紙を分けることを考えましょう。
すると、ある紙には犬というラベルがポチポチとあちこちに書かれています。でも、学習するときには別の紙にある猫とか大仏といったラベルも与えられます。
そうすると、この犬の紙には、実は犬っぽさで何らかのグラデーションが描かれているというイメージになります。同様のグラデーションは猫にも大仏にもあります。
というわけで、ある点が決まると、グラデーションを元に「犬」「猫」「大仏」の色の濃さがわかります。黙ってそのまま使うこともあるんですが、足して1になる方が便利なので補正することもあります。
でもまぁ、こんな感じです。
なお、イメージとしての説明なので、実際にはグラデーションがあるわけでもなんでもない点は注意しておいてくださいね。
紙の外側は?
いわゆる外挿領域ですね。他にも、データが見当たらないところも外挿領域です。
今までの話がイメージできたならラベルが無いから答えようが無いというのがわかるはずです。そして、実際そんなもんです。
ただ、機械学習の欠点である意地でも知らないと言わないが発動するので、適当な回答が返されます。
今日の結論
「機械学習は学習した結果を空間みたいなイメージで持っていてそこのラベルを返すよ」
「ラベルは学習で適当に決めているよ」
「ラベルの強さを数値化すると確信度みたいな数値が得られるよ」
覚えときましょう。