カーネル行列(グラム行列とも呼ばれる)は、機械学習において高次元空間に写像されたデータ点同士の内積(類似度)を表す正方行列です。サポートベクターマシンなどのカーネル法で中心的な役割を果たし、データを高次元に直接写像する計算コストを回避しながら、非線形な境界やパターンの認識を可能にします。
カーネル行列とは
カーネル行列とは、データセット内のすべてのペア(データ点の組み合わせ)に対してカーネル関数を適用し、その算出された類似度をグリッド状に並べた対称行列(正方行列)のことです。
詳しく解説
機械学習では、線形に分離できない複雑なデータを高次元の特徴空間に写像して処理することがあります。しかし、実際に高次元への写像を直接計算すると計算量が膨大になります。ここで「カーネルトリック」が利用されます。カーネルトリックとは、高次元空間での内積を、元の低次元空間の入力データに対するカーネル関数の計算のみで代替する技術です。このとき、データ点同士のすべての内積結果を並べたものがカーネル行列(またはグラム行列)です。データ数をNとすると、カーネル行列はN×Nのサイズを持つ対称行列であり、さらに数学的には半正定値行列という重要な性質を持っています。これにより、最適化問題が凸計画問題となり、大局的最適解を安定して得ることができます。このアプローチ全体をカーネル法と呼びます。
具体例・使われ方
サポートベクターマシンによる画像分類や、カーネル主成分分析による非線形な次元削減においてカーネル行列が直接構築・利用されます。例えば、テキスト分類において文書間の類似性を計算してカーネル行列を作成し、それをもとに分類を行います。
似た用語との違い
カーネル行列と共分散行列は混同されやすいですが、共分散行列は特徴量(変数)間の線形な関係性を示す行列であるのに対し、カーネル行列はサンプル(データ点)間の類似度を示す行列です。また、ニューラルネットワークの「重み行列」が学習パラメータを保持するのに対し、カーネル行列は入力データ自体の関係性を表す静的な行列(カーネル法において)となります。
注意点
カーネル行列はデータ数Nに対してN×Nのメモリ空間を必要とするため、データ数が数万〜数十万規模に肥大化すると、メモリ消費量が爆発的に増加するという限界があります。また、適切なカーネル関数やハイパーパラメータを選択しないと、過学習を起こしたり、モデルの性能が著しく低下したりする点に注意が必要です。