機械学習とはなんなのか。小学生でもわかるように説明してみた

 

人間には簡単にできるけどPCにはむずかしいこと

人には簡単にできてPCには難しいこと、それは「世界を認識すること」です。

PCが得意とすることは演算であり、人間をはるかに上回るスピードと完璧な精度でこれを行うことができますが、逆に人間のように認識をうまく行うことはできません。

 

人間は母親のお腹にいるころからすでに母親の声を認識でき、生まれてすぐに自分の母親の母乳と他人の母乳の匂いを嗅ぎ分けるといいます。また顔認識の能力は輪郭や髪型など外側の認識から、徐々に内側のパーツや色合いによっての認識の能力が高まっていき、生後6ヶ月もするとほぼ完璧に母親とそれ以外の人の顔を見分けるようになるといいます。

 

人が猫を猫と認識できるようになるまで

では、人間はどのように認識の精度をあげているのでしょうか。

子供が「猫」を認識できるようになるまでを追ってみましょう。母親と散歩中、生まれて初めて猫を見かけ、母親から「あれは猫っていうのよ」とおしえられます。するとその子供は、人間以外の動物、犬や鳥や虫などをみんな「猫」であると仮定して、人間以外の動物を見るたびに「猫がいる」と言葉を発するかもしれません。そしてそれが猫であれば母親から「そうだね」と言って頭を撫でてもらって認識を強化し、猫以外の動物であれば「あれは猫じゃないのよ」と認識を訂正されるでしょう。そうして正解と間違いを繰り返し、「あれは猫だろうか?そうではないか?」という推測の正解率をあげていくのです。つまり子供の頭のなかには「猫モデル(概念)」が生まれ、経験を積んでいくごとにそのモデルは確かなものになっていくというわけです。おそらく最初は母親の認識に近いものになり、ある程度成長すると今度は学校の先生や友達の認識にちかいものになっていくかもしれません。これは無意識におこなわれていますが、明らかに人間を非常に知的にしています。

この無意識の脳内での処理を、機械が認識能力を得るために応用したものが機械学習と言えるでしょう。たとえば犬と猫を見分けさせる場合、「犬は猫よりも目が小さくはなれている」「猫の黒目は縦に長い」などというルールをあらかじめ決めるわけではありません。そうではなく、実例に対して判断を行うためのモデル(概念)と、判断が誤っていた時にモデルを修正するための手順、この2つを用意し、あとは実例を経験させるだけです。

 

猫をPCに認識させる

では実際に猫の画像をつかって画像を認識させる手順をかんがえてみましょう。

まずこのように画像を分割して明暗で値をつけます。そして左上から下に、次は一つ右の列にといったようにして、ベクトルにします。

x = [0.5, 0.3, 0.8, 0.3, 0.3, 0.3, 0.2, …..0.7]

そしてこの一つ一つの要素にたいして重みをかけたものにθを足したものがモデルになります。これを次のようにあらわします。

h(x, θ) =  -1   if (0.5w1+0.3w2+0.8w3+… +0.7w15 + θ) < 0

       1   if (0.5w1+0.3w2+0.8w3+… +0.7w15 + θ) ≧ 0

つまりxベクトルの全ての要素に重みをかけたものの合計にθを加えて、それが0より小さければ-1を返し、0以上であれば1をかえします。-1であれば「これは猫ではない」という判断であり、1であれば「これは猫である」という判断になります。

さまざまなxを入力して、それについて「これは猫ではない」という判断が当たっていればその重みとθが強化され、間違っていれば重みとθが訂正される。「これは猫である」の場合も同様です。この認識の強化と訂正をくりかえして、「猫モデル(概念)」を人間のそれに近づけていくわけです。

この認識の強化と訂正が、「最適化」という手法です。「最適化」によって誤りが最小化されるまでパラメータの値を繰り返し調整します。最適化には「勾配降下法」などがあります。

 

「.pro」なら、人工知能や機械学習といった最先端の分野を重点的に学習することができます

本気で鍛える180日間 未経験からプロになる【.pro】