Path: blob/main/translations/ja/quantum-machine-learning/kernel.ipynb
3855 views
はじめに
機械学習の一般的なタスクは、データのパターンを見つけて学習することです。多くの機械学習アルゴリズムは、カーネル関数を使用して、入力データセットを高次元の特徴空間にマッピングします。
ここで、はカーネル関数、は次元入力、は次元から次元空間へのマッピングです。は内積を示します。有限データの場合、カーネル関数は行列として表すことができます。
ParseError: KaTeX parse error: Undefined control sequence: \cssId at position 1: \̲c̲s̲s̲I̲d̲{*k-sub-ij}{K*{…2次元に小さな円を持つ大きな円を含む円のデータセットを使用して、データセットをより高次元の特徴空間にマッピングする概念をお見せしましょう。
データセットを見ると、構造があることは明らかですが、2つの円は2次元で線形分離可能ではありません。データを3次元に変換してみましょう。
量子特徴量マップ
量子機械学習では、量子特徴量マップは、古典特徴量ベクトルを量子ヒルベルト空間にマップします。量子特徴量マップはユニタリ変換を使用してを変換します。これは通常パラメーター化された量子回路です。
パラメータ化された量子回路に基づいて古典シミュレーションが難しい量子特徴量マップを構築することは、古典機械学習アプローチよりも有利になる可能性を獲得するための重要なステップであり、現在の研究が活発な分野です。
参考文献1で、著者は古典的にシミュレートするのが難しいと推測され、かつ短期的な量子デバイス上で深さの短い回路として実装できる量子特徴量マップの種類を提唱しています。QiskitはこれらをPauliFeatureMapとして実装します。深さの量子特徴量マップは、ユニタリ演算子によって実装されます。
これには、エンタングリング・ブロック でインターリーブされたアダマールゲートの層が含まれ、
の回路図に示すように、古典的なデータをエンコードします。
エンタングリング・ブロック内で、 : はパウリ行列を表し、インデックス は異なる量子ビットまたはデータポイント間の接続性を表します: 。デフォルトでデータマッピング関数 は以下です。
ParseError: KaTeX parse error: Undefined control sequence: \cssId at position 1: \̲c̲s̲s̲I̲d̲{_map-1}{\phi_S…の場合、これはQiskitのZZFeatureMapです。
Qiskit のadhocデータセットを見てみましょう。これは、参考文献 1 で使用されているZZFeatureMapからサンプリングされた 2 つのクラスのデータセットであり、各クラスから2つの特徴量の20個のトレーニングデータポイントと5個のテストデータポイントを作成します。
左上には、 adhocデータセットの各クラスからの 25個の 2 次元データ ポイントが表示されます。どのデータ ポイントがどのクラスに属しているかについて明確なパターンがないことに注目してください。上の中央は、データセットの作成に使用されたZZFeatureMapによって記述された 16 次元 (実際には 15 次元) の特徴空間の 2 次元射影であり、2 次元でのクラス境界がいかに複雑であるかを示しています。右側には、クラス境界に重ねられたデータ ポイントが表示されています。
量子カーネル
量子特徴量マップは、自然と量子カーネルを導き出します。これは類似性の尺度と考えることができ、は、とが近い場合に大きくなります。
有限データを考える場合、量子カーネルを行列として表すことができます。
遷移振幅を計算することにより、量子コンピューターでこのカーネル行列の各要素を計算できます。
特徴量マップがパラメーター化された量子回路であると仮定すると、これは 量子ビットのユニタリー変換 として説明できます。これにより、サポートベクター分類などのカーネル機械学習アルゴリズムで使用できる量子カーネル行列の推定値が得られます。
前に作成したadhocデータセットのトレーニング データ ポイントのカーネル行列を解析的に計算してプロットしてみましょう。特徴量マップについては、2 つの特徴量に対してZZFeatureMapを 2 回繰り返して使用します。ここでのcalculate_kernel関数は、Qiskit QuantumKernelクラスのevaluate関数の単純なバージョンであることに注意してください。
カーネル行列について注意すべき点がいくつかあります。
各行/列は、データセット内の他のすべてのデータ ポイントとともに、単一のデータ ポイントの遷移振幅を表します
自分自身へのデータ ポイントの遷移振幅は 1 であるため、行列は対角が1です。
行列は対称であり、の遷移振幅はと同じです
量子サポートベクター分類
冒頭で述べたように、多くの機械学習アルゴリズムはカーネル関数を使用して入力データセットをより高次元の特徴空間にマッピングします。よく知られているサポートベクターマシン分類アルゴリズムはその1つです。サポートベクター分類アルゴリズムの詳細については、 scikit-learnユーザーガイドを参照してください。
サポートベクターマシンは特徴空間に超平面を構築します。これは、分類、回帰、またはその他のタスクに使用できます。分類の場合、超平面は、理想的には任意のクラスの最も近いトレーニングデータポイントまでの距離が最大です。次の図は、「サポートベクター」と呼ばれるクラス境界上に 3 つのサンプルがある線形分離可能な問題の決定関数を示しています。
参考文献1および2で紹介されているように、量子カーネルサポートベクター分類アルゴリズムは次の手順で構成されています。
学習を行い量子カーネル行列をテストします。
トレーニング データセット のデータポイントの各ペアに対して、特徴量マップを適用し、遷移確率を測定します: ParseError: KaTeX parse error: Got function '\phantom' with no arguments as superscript at position 60: …(\vec{x}*j)} U^\̲p̲h̲a̲n̲t̲o̲m̲{\dagger}*{\Phi….|^2 $.
各トレーニングデータポイント とテストポイント に対して、特徴量マップを適用し、遷移確率を測定します:ParseError: KaTeX parse error: Got function '\phantom' with no arguments as superscript at position 60: …(\vec{y}*i)} U^\̲p̲h̲a̲n̲t̲o̲m̲{\dagger}*{\Phi….
従来のサポートベクターマシン分類アルゴリズムにおいて、量子カーネル行列を使用して学習およびテストを行います。
前に生成したadhocデータセットに対して、量子カーネルサポートベクター分類アルゴリズムを実行してみましょう。このデータセットは、 depth = 2 、 dimension = 2のZZFeatureMapから作成され、2クラスで構成され、各クラスから20 のトレーニングデータポイントと 5 つのテストデータポイントを持つデータで構成されていたことを思い出してください。
まず、前述のcalculate_kernel関数を使用して、量子カーネル行列の学習とテストをしましょう。
それでは、 scikit-learn svcアルゴリズムでそれらを使用しましょう。
サポートベクターマシンは特徴量空間で超平面を構築することを思い出してください。分類のために、理想的には超平面は任意のクラスの最も近いトレーニングデータポイントまでの距離が最大になります。各クラスの分離超平面に最も近いトレーニングデータポイントは、「サポートベクター」と呼ばれます。ここで、 scikit-learn のsvcアルゴリズムは、各クラスから 20個ずつのデータポイントを持つトレーニング データセットから、最初のクラスのサポートベクトルを9個、 2 番目のクラスのサポートベクトルを10個特定したことになります。
トレーニングデータポイントとテストデータポイントは、量子カーネルサポートベクター分類アルゴリズムで使用されるのと同じ特徴量マップを使用して生成されたため、テストデータポイントを完全に分類できることがわかります。これは、ハードウェアを使用する場合にはノイズのために当てはまらない可能性があり、実際のデータセットには当てはまらない可能性があります。
Qiskitでの実装
QiskitにはQuantumKernelクラスが含まれており、 scikit-learn svcアルゴリズムから直接利用できます。同じデータセットを使った場合の方法は次のとおりです。
量子カーネルアラインメント
これまで見てきたすべての特徴量マップ (データ エンコーディング) 回路には、トレーニング可能なパラメーターが含まれていません。回路内のすべてのパラメーターは、エンコードされるデータによって定義されます。量子特徴量マップには、参照 3 および 4 で説明されているように、カーネルアライメントと呼ばれる手法を使用して最適化できる変分パラメーターを含めることができ、 Qiskit Runtime チュートリアルにある量子カーネルアライメントで説明されています。これは、古典の機械学習におけるカーネルアライメントに似ています。
量子カーネル機械学習
これまで見てきたように、量子カーネルメソッドは、機械学習で量子プロセッサーを使用する方法を提供します。最も普及している量子カーネルアルゴリズムは、2019 年に参考文献 1 および 2 によって導入された量子カーネルサポートベクター マシン (QKSVM) であり、それ以来詳細に研究されてきました。特に:
参考文献1では、カーネルベースの訓練がより少ない量子計算で、変分回路の訓練よりも優れた、または同等の量子モデルを見つけることが示されています。
参考文献5では、QKSVMは特定の入力データクラスに対して古典手法よりも高速化することが証明されています。
参考文献6では、QKSVMを使用して量子機械学習アルゴリズムのデータの計算能力を定量化し、量子モデルが古典モデルを上回ることができる条件を解明しています。
参考文献7では、効果的な量子カーネルアラインメントを可能にする量子メトリック学習と呼ばれる手法が紹介されています。
量子カーネルは、分類だけでなく他の機械学習タスクにも使用できます。量子カーネルを使用したクラスタリングの例については、 Qiskit 量子カーネル機械学習 チュートリアルを参照してください。
参考文献
Vojtech Havlicek, Antonio D. Córcoles, Kristan Temme, Aram W. Harrow, Abhinav Kandala, Jerry M. Chow and Jay M. Gambetta, Supervised learning with quantum enhanced feature spaces, Nature 567, 209-212 (2019), doi.org:10.1038/s41586-019-0980-2, arXiv:1804.11326.
Maria Schuld and Nathan Killoran, Quantum machine learning in feature Hilbert spaces, Phys. Rev. Lett. 122, 040504 (2019), doi.org:10.1103/PhysRevLett.122.040504, arXiv:1803.07128.
Jennifer R. Glick, Tanvi P. Gujarati, Antonio D. Corcoles, Youngseok Kim, Abhinav Kandala, Jay M. Gambetta and Kristan Temme, Covariant quantum kernels for data with group structure, arXiv:2105.03406
Thomas Hubregtsen, David Wierichs, Elies Gil-Fuster, Peter-Jan H. S. Derks, Paul K. Faehrmann and Johannes Jakob Meyer, Training Quantum Embedding Kernels on Near-Term Quantum Computers, arXiv:2105.02276
Yunchao Liu, Srinivasan Arunachalam and Kristan Temme, A rigorous and robust quantum speed-up in supervised machine learning (2020), arXiv:2010.02174.
Hsin-Yuan Huang, Michael Broughton, Masoud Mohseni, Ryan Babbush, Sergio Boixo, Hartmut Neven and Jarrod R. McClean, Power of data in quantum machine learning (2020), arXiv:2011.01938.
Lloyd, Seth, Maria Schuld, Aroosa Ijaz, Josh Izaac, and Nathan Killoran. "Quantum embeddings for machine learning." arXiv preprint available at arXiv:2001.03622 (2020).