田口善弘@中央大学:単にカーネルというだけだと、2本のベクトルx.yに対して、値(スカラー)を与える関数k(x,y)は全てカーネルと呼ぶことができてしまいます。機械学習によく出て来るということなので、カーネルトリックのことなのかな、と思うのでその説明をします。詳しくは拙著「はじめての機械学習」の「第5章 次元をあげる」をご覧下さい。
データサイエンスではいろいろな対象物に多くの属性が付与されています。例えば一枚の画像には画像を構成する全ピクセルに対してRGB(赤緑青)三原色の値が付与されています。しかし、どんなに解像度が高い画像データでも、それは現実を離散的に近似したものにすぎません。
カーネルトリックはこの問題を解決する枠組みを与えてくれます。2枚の画像を完全に特徴付ける未知のベクトルx‘,y‘があったとします。この2つのベクトルの内積(というのは難しいものですが)が画素ベクトルx,yで計算されるあるカーネルk(x,y)でよく近似できるとします。すると元のベクトルx‘,y‘が分からなくても「x‘,y‘を使って2つの画像が同じ(例えば両方とも犬が写っている、とか)か、同じでないか(例えば、一方は犬の写真で他方はネコの写真とか)を区別することを試みると、どれくらい正しく判断できますか?」みたいなことに答える事ができます。もとのx',y'がわからないのにこういうことができるのは不思議な感じがしますが、こういうことができるからこそ、カーネルトリックが機械学習で多用されているのです。ちなみに「どんなk(x,y)を使ったら未知のベクトルx',y'の内積をうまく近似できるか?」ということを正確に知る方法はなく、みんな適当なk(x,y)を使って計算しうまく行ったらそれが正解だと思う、みたいなことしかしていません。もうちょっと専門的にはカーネル法
- Wikipediaや機械学習におけるカーネル法について - めもめも (hatenablog.com)をご覧ください。