機械学習初心者のために量子カーネルをわかりやすく解説

NISQデバイスでの量子機械学習で注目を集めている分野に量子カーネルがあります。

量子コンピュータに興味を持って量子カーネルにたどり着いたものの、機械学習が専門でないとほぼ必ず同じ感想を持つでしょう。私がそうでした。

そもそもカーネルって何?

量子カーネルはそもそもカーネル法を知らないと理解不能なのですが、カーネル説明が殆ど無くわからないのは当然です。

これでは量子カーネルについて解説してよと言われても困りますよね。私もイベントで話す機会があり非常に焦りました。

なので皆さんが量子カーネルの意義を解説できるように、私が超速でキャッチアップした内容をご紹介します。

スポンサーリンク

カーネル法は非線形な学習モデルを効率的に構築する

カーネル法は複雑なデータの分類問題に用いられる手法です。まずは機械学習における分類問題の取り組み方について振り返ります。

特徴写像による非線形な学習モデルの構築

分類問題では最終的なアウトプットである学習モデルはデータの分類境界を表現します。最もシンプルでモデルが線形モデルです。

しかし、世の中のデータは単純ではないので線形分離できないデータの学習モデルの構築が課題となります。

例えば下のような同心円データですら、どうやっても線形な学習モデルは作れません。

そこで使われるのが特徴写像という手法です。データの特徴的な量を抽出するためにより高次元空間へ写像して分類境界を探します。

同心円データでは2次元から3次元へ写像することで線形境界が現れます。この境界を逆写像で戻せば求めたい学習モデルが構築できます。

このように線形分離不能なデータを高次元空間へ写像して線形な学習モデルを構築します。

ただし特徴写像は計算コストが非常に高いという問題があります。これでは大規模な問題へスケールすることができません。

カーネルを導入して特徴写像の欠点を補う

計算コストの高い特徴写像の欠点を補うために導入されたのがカーネルという概念です。

カーネルの定義自体は直接特徴写像と関係はなく、次の数学的性質を持つ2点間の類似度を指します。

カーネルの定義

任意の集合$D=\{x^1,\cdots x^M\}$に対してグラム行列$K$が半正定値となるもの。

K_{m,m'}=\kappa(x^m,x^{m'}) \\
x^m,x^{m'} \in D

$K$が半正定値の場合以下が成り立ちます。

\kappa(\bm{x^m},\bm{x^{m'}}) \geq 0 \\
\kappa(\bm{x^m},\bm{x^{m'}}) = \kappa(\bm{x^{m'}},\bm{x^{m}})

ここで、特徴写像の内積は必ずカーネルであることが知られています。つまり元の空間で2点間の内積を特徴写像するとカーネルとなります。

\kappa(x^m,x^{m'}) = \langle\phi(x^m), \phi(x^m)\rangle

そしてカーネルの最大の特徴は、基本的な分類問題の学習モデルはカーネルの線形和で表せることです。

f^*(x) = \sum_{m=1}^M\alpha_m \kappa(x, x^m)

これは経験則ではなく表現定理という数学的に導かれる結論です。「基本的な」とつけたのは前提となる分類問題のクラスがあるためです。大抵の問題はこのクラスに該当します。

以上をまとめると、以下の強力な結論が導かれます。

カーネルの意義
  • カーネル計算のみで高コストの写像計算を陽に行わず高次元空間での学習が可能
  • あるカーネルから別のカーネルに置換することで異なる学習モデルを構築可能(カーネルトリック)

機械学習では以下のカーネルがよく使われます。各々が何らかの特徴写像の内積の計算結果と一致します。

カーネル名カーネル
線形カーネル$\bm{x^T}\bm{x}’$
多項式カーネル$(\bm{x^T}\bm{x}’+c)^p$
ガウシアンカーネル$e^{-\gamma||\bm{x}-\bm{x}’||^2}$
シグモイドカーネル$\tanh (\bm{x^T}\bm{x}’+c)$
例題

例えば以下のような写像関数を考えてみます。

\phi: \begin{bmatrix}
   x_1 \\
   x_2
\end{bmatrix}
=
\begin{bmatrix}
   x_1^2 \\
   \sqrt{2}x_1x_2 \\
   x_2^2
\end{bmatrix}

このカーネルは線形カーネルであることがわかります。

\begin{aligned}
\kappa(\bm{x^m}, \bm{x^{m'}}) &= \langle\phi(\bm{x^m}),\phi(\bm{x^{m'}})\rangle \\
&=x_1^mx_1^{m'}+2x_1^mx_1^{m'}x_2^mx_2^{m'}+x_2^mx_2^{m'} \\
&= \langle\bm{x^m},\bm{x^{m'}}\rangle
\end{aligned}

つまり線形カーネルを使った学習モデルも構築は上の特徴空間上でモデルを構築していることになります。

カーネルを量子コンピュータで計算する

本題の量子カーネルは古典カーネルを量子コンピュータで計算する手法です。

量子計算で行う古典データの量子状態への符号化は、高次元ヒルベルト空間への特徴写像とみなせる点でカーネルの概念と非常に相性が良いです。

量子回路によるデータ符号化は特徴量マップ(feature map)と呼び、古典計算でシミュレーションが難しい回路設計が求められます。

カーネルは特徴量の内積なので、量子状態の内積を計算すれば求めることができます。

\begin{aligned}
\kappa(\bm{x^{m}},\bm{x^{m'}}) = |\langle\Phi(\bm{x^{m}})|\Phi(\bm{x^{m'}})\rangle|^2 \\
= |\langle0|^{\otimes N}U^\dagger U|0\rangle^{\otimes N}|^2 \\
\end{aligned}

初期状態$|0\rangle^{\otimes N}$にデータ符号化回路$U^\dagger U$を作用させて測定した際に、$|0\rangle^{\otimes N}$が観測される確率がカーネルの値と一致します。

古典推定が難しい特徴マップ$U$を行えば、量子カーネルは古典手法に対して優位性を持つことが期待されています。

カーネル計算以降は古典機械学習と全く同じ手法で学習モデルを構築します。

まとめ

この記事では量子カーネルについて、カーネルの意味から遡って紹介しました。

量子機械学習の教師あり学習の手法は大きく2つに分けられ、今回は1番目のアプローチを紹介しました。

量子機械学習のアプローチ
  • カーネル法による古典学習モデルを用い、カーネルの計算に量子計算を使う(量子カーネル)
  • 特徴空間での線形境界を変分量子回路を使って直接求める(量子回路学習)

2番目の手法である量子回路学習についてはこちらの記事で解説しているので併せてご覧ください。

参考文献

Qiskit Textbookの内容の解説はQuantum Tokyoの勉強会でお話したのでテキストの行間を埋めるのに役立てば幸いです。

  • 量子コンピュータによる機械学習 / Machine Learning with Quantum Computing

書籍で学習したい方はこちらをおすすめします。内容は難しめですが正しく理解したいという方には非常に有用です。

第2版が出版されていますが洋書のみかつ高額なので、今の所は日本語初版で問題ないです。

量子カーネルの記述は第2版でかなりパワーアップしてはいるので意欲のある方は洋書をご購入ください。

コメント