Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm
Qiskit advocate demo qsvm

Editor's Notes

  • #2 I'm very honored to present at Qiskit Demo. My name is Yuma Nakamura. I am now working for IBM Japan as Data Scientist
  • #3  Please allow me to briefly introduce myself. I was a double master degree student with a background in chemistry and physics. I was mainly working on material simulation. Please Let me advocate my papers a little bit, I started quantum material calculations in China. If you have been working on materials simulation and are interested in it, please read this paper.
  • #4 While I was working in the U.S. for 10 months, I continued my research on materials at Oak Ridge National Laboratory. The materials we were working on were called topological materials, and they were candidates for topological quantum computers.
  • #5 When I was at Oak Ridge, I also did some quantum annealing research. At this time, I was solving an optimization problem called the nurse scheduling problem by annealing.
  • #6 After that I joined IBM Japan as a data scientist, mainly working on data analysis machine learning in the field of healthcare life sciences. I launched a study community for quantum machine learning within the IBM Japan. This community helped me a lot to become a Qiskit advocate and to understand QSVM.
  • #7 When I became a Qiskit Advocate, I was involved in the following activities. I volunteered to translate the Qiskit textbook into Japanese and wrote a blog about quantum machine learning. I also volunteered to teach quantum computing to high school students.
  • #8 This is agenda for this presentation. The concept of a kernel is important in quantum SVMs, so I will use the classical explanation to look at it in detail. The first half of this agenda will explain classical SVMs, and the second half will focus on the concept of quantum kernels to explain how quantum SVMs work. Finally, I will show you how to actually execute the code of a quantum SVM.
  • #9   Let's start with the classic SVM. We have a dataset that belongs to the blue and red groups.   When we divide them by the following boundary, which way should we divide them, left or right?  Can anyone answer me? (Ask why).   The hint is to focus on the data points close to the boundary.  In the figure on the left, the blue point is the closest point to the boundary. In the figure on the right, the red and blue points on either side of the boundary are the nearest neighbor points. 
  • #10 Looking at the points near the boundary, the left figure shows that the boundary line is too biased toward the blue data points. On the other hand, on the right side, the blue and red data points near the boundary are not biased to either side, and their distance from the boundary is equal. In other words, for each group, the distance between the nearest point to the boundary and the boundary line is maximized. This distance between the boundary and the nearest data point is called the margin. The longer this distance is, the more stable the division is, which is the idea behind SVM.
  • #11 In other words, SVM is an analytical method to classify data by defining the boundary surface between groups. By optimizing the margin M to be as large as possible, it is possible to maintain the classification ability for unknown data. In machine learning, maintaining the ability to classify against unknown data is called increasing the generalization performance. Let's take a look at what we can do to maximize the margin M.
  • #12    First, the SVM determines the equation of the boundary surface such that the margin is maximized.    This can be expressed as W・X+b=0.  This means that the coefficient w and the intercept b are to be calculated.     Let's consider the case where there are N data points and classification into two classes.  In this case, the distance between a point x_j and the boundary is the absolute value of w・x_j +b divided by the absolute value of w.  The smallest distances between each point and the boundary is the distance between the nearest neighbor point and the boundary.  So the margin is the smallest of the distances between all the points and the boundary.
  • #13  Here, the coefficients w and the intercept b are arbitrary with constant multiplicity.  In order to be able to determine them uniquely, we put a constraint such that the absolute value of the minima, w・X_i + b, is 1.     In this case, the margin is 1 over absolute value w.     Next, in order to quantitatively express the classification of the red group or the blue group, we add the following classification condition. t_i is set to -1 if x_i is in the blue group, and +1 if it is in the red group.    Combining this constraint and the classification condition, we get condition t_i times (w・x_i +b) is greater than or equal to 1.   Under this condition, maximize the margin M = 1 over absolute value of w.
  • #14 This constraint introduces inequalities and makes the optimization inconvenient, so we will convert it into a form that is easier to solve.  Originally, it was maximization of the margin M, which is equivalent to minimization of the square of the denominator w.    The function to be maximized or minimized is called the objective function.  Using the optimization problem technique called the Lagrange multiplier method, we can include constraints in the objective function using the parameter α.     When the transformed objective function is L, the minimization and maximization will be swapped again, so the problem is to find the parameter alpha which maximum value of L.  After the transformation, the three maximization conditions are now given by equations.   The third condition allows us to express each component w_i of vector w using the parameter α, and the objective function L can be expressed using the parameter α.  Now, if we set the parameter α to maximize L, we can find the coefficient w that determines the boundary plane.     Keep in mind that the inner product of x_i and x_k appears in the function of L since it appears again in the next few pages.
  • #15   You may also notice something from the first of the maximization conditions I just listed.    Remember that we have constrained the t_i times (w ・ x_i + b) to be 1 at the data point closest to the boundary.  For all other supervised data points, the parameter α_i will be zero.    The parameter α_i takes a non-zero meaningful value for the supervised data only when t_i times (w・ x_I + b) is 1.  In other words, the rest of the data is meaningless to the model. These meaningful supervised data points are called support vectors.
  • #16    言い換えると、SVMとはグループ間の境界面を定めてデータを分類する分析手法と言えます。  このマージンMをできるだけ大きく取るように最適化をすることで、未知のデータに対して判別能力を保つことができます。     機械学習では未知のデータに対して判別能力を保つことを汎化性能を高くすると呼びます。    ではこのマージンM最大限に大きくするためには何をしたらいいのかを見ていきます。
  • #17    言い換えると、SVMとはグループ間の境界面を定めてデータを分類する分析手法と言えます。  このマージンMをできるだけ大きく取るように最適化をすることで、未知のデータに対して判別能力を保つことができます。     機械学習では未知のデータに対して判別能力を保つことを汎化性能を高くすると呼びます。    ではこのマージンM最大限に大きくするためには何をしたらいいのかを見ていきます。
  • #18    言い換えると、SVMとはグループ間の境界面を定めてデータを分類する分析手法と言えます。  このマージンMをできるだけ大きく取るように最適化をすることで、未知のデータに対して判別能力を保つことができます。     機械学習では未知のデータに対して判別能力を保つことを汎化性能を高くすると呼びます。    ではこのマージンM最大限に大きくするためには何をしたらいいのかを見ていきます。
  • #19    ここまで話した方法では境界は直線や平面などの線形である必要がありました。    しかし、このままだと次のような2つのグループを正しく分類することができません。    この場合、どうしたらよいでしょうか?
  • #20     ここで非線型SVMというものが登場します。  データを高次元へ特徴量マッピングすることで、線形な境界面を作ることができ、分類が可能になります。     例えば、先ほどの例だとz軸にx^2+y^2を追加することで、z軸に垂直な平面でデータを分類できるようになりました。
  • #21     ただ、この方法の欠点はマッピングする特徴量を高次元にするほど計算コストがかかってしまうことです。   先ほどの最大化問題で出てきた内積部分が重くなってしまいます。
  • #22     カーネル関数の例を1つ紹介します。多項式カーネルでは1+aドットbのd乗をaとbの関数として与えます。   例えばd=2としてカーネルを計算すると、これは6次元の特徴量マッピングに対応することが分かります。      もちろん実際の計算ではマッピングを行うわけでなく内積の結果のみ利用しています。  
  • #25 ここで計算量を減らすために使える手法がカーネルトリックです。   従来の方法だと高次元へマッピングした後に、内積計算を行うという2段構成でした。   一方でカーネル法では内積に対応するカーネル関数という量を定義して、計算に突っ込むだけの1ステップになります。   これで最大化問題が右側のように置き換わりました。
  • #26  ここまでで古典SVMの概要を説明しました。    まとめると、次の3点が理解の上で重要になります。    SVMは境界を引いて分類問題を解く手法です。    また、汎化性能の向上を目指してマージンMを最大化していきます。    そして、カーネルトリックを使うことで、特徴量マッピングをすることなくカーネル関数への代入結果を使うだけで最大化問題を設定できます。
  • #27  量子SVMではカーネルの概念が重要なので古典の説明を使って詳しく見ていきます。   今回のアジェンダは古典のSVMを前半で説明し、後半では量子カーネルという概念を中心に量子SVMの仕組みの説明をしていきます。  最後に実際に量子SVMのコードを回すところをお見せします。
  • #28  ノイズフリーな量子コンピュータを想定した量子SVMの理論は2013年頃から提案され古典SVMに比べて計算時間の削減が見込まれていました。 これは位相推定アルゴリズムを利用した逆行列計算が精度良く実行可能なこと前提としていました。    しかし位相推定アルゴリズムはエラーに弱いアルゴリズムであり、実装は現実的ではありませんでした。    その後、ノイズのある量子コンピュータ、通称NISQデバイスでの量子アルゴリズム実装が注目され始めました。  さらに機械学習ブームも伴い、2018年にはNISQ版の量子SVMが提案され、実際に実機で実装されました。     NISQデバイスでは一定の精度を保てる範囲の数の量子ゲートで実装する必要があります。   そこで、方針が計算の高速化から古典で再現が難しいカーネルの実装へと変わっていきました。
  • #29 ノイズフリー版とNISQ版の量子SVMの違いについてまとめました。 ノイズフリー版のQSVMでは位相推定を利用した逆行列計算を行なっていましたが、NISQ版では行なっていません。 その代わり、内積計算の方法に工夫が加わりました。ノイズフリー版ではSWAPテストと呼ばれる方法を用いて内積計算をしていましたが、これは3量子ゲートを使って実装するので、量子ゲート演算としては高コストです。 一方でNISQ版のアルゴリズムでは改良アルゴリズムが採用され、少数の2量子ゲートを利用することで内積計算が可能になりました。 またノイズフリー版では計算の高速化に焦点を置いていますが、NISQ版では特徴量マッピングの高度化に焦点が置かれています。 ノイズフリー版では古典と同様のカーネルを使うことが想定されており、カーネル生成において量子特有の工夫がされているわけではありません。 NISQ版では量子カーネルを作成し、量子特有の特徴量マッピングについて議論を展開しております。
  • #30 ではNISQ版の量子SVMについて詳しく説明していきます。 まずSVMの実行フローについて確認していきます。 まず訓練データを準備し、次にカーネル行列を計算します。 その後マージンMを最大化するパラメータを決定し、分類の境界面を決定します。 そして作られた境界面をもとに新たなデータを分類していきます。 量子SVMはこのうちのカーネル行列を量子版のカーネル行列に置き換えたものです。 古典版のカーネルでは先ほど話した多項式カーネルやガウスカーネルなどがあります。 一方で量子版では次のような量子状態の内積の2乗でカーネルを定義します。 この量子カーネルが古典では再現が難しいとされており、かつNISQデバイスでも動作するようなゲートすうで構築されています。
  • #31 量子カーネルに対応する特徴量マッピングを考えてみます。 それは特徴量空間のデータ点x_i を量子状態|φ>にマッピングします。 特徴量が1次元の場合で考えてみましょう。 この時特徴量マッピングによってx_iは位相Aの|0>状態プラス位相Bの|1>状態という量子状態に変換されます。 1次元では量子状態はブロッホ級の面上に表現可能です。 例えばこの図ではwを地軸として赤道を境界面とします。 この時、北半球に存在する量子状態が赤色で示され、+1と分類されています。 一方で、南半球に存在する量子状態が青色で示され、-1と分類されています。
  • #32 量子SVMでの状態のマッピングはGroverとの状態マッピングとは大きく異なることに注意してください。 まず、Groverのアルゴリズムでは検索インデックス0,1,2,3が量子状態|00>、|01>,|10>,|11>にマッピングされていました。 これは不連続な値を量子状態にエンコードする方法です。 これに対して、量子SVMのマッピングは、連続な状態を量子状態の位相にエンコードする方法です。 2次元の特徴量だった場合、それぞれの基底状態の係数は特徴量α_i とβ_i で決まる位相A, B ,C, Dで定まります。
  • #33 では位相に特徴量をエンコードするにはどうしたらいいでしょうか? その部分が量子SVMの実装論文の核心です。 そして次の形で定義される回路でのマッピングだと古典で再現が難しいものになると提案しています。 回路図のようにアダマールゲートで全ての状態の重ね合わせを作り、Uφという行列を作用させるものを1レイヤーとします。 それをd回繰り返します。このdを回路のdepthと定義しています。 このUφは次のように定義されています。 ここで1行目のφ_SのSはエンタングルさせるビットの組み合わせで、特徴量の中から1成分を取り出す組み合わせだったり、2成分を取り出す組み合わせだったりします。 2行目のφ_iはパウリ行列P_iの係数です。 このSとφ_iとP_iの決めかたがマッピングの自由度になります。 ここまでのの説明だとまだイメージが湧きにくいと思うのでいくつか特徴量マッピングの例をみていきます。
  • #34 一番簡単な例だと、Z-FeatureMapというマッピングがあります。 ここではエンタングルする組み合わせはなく、1量子ビットのみで構築されます。 2行目のφ_ijやφ_ijkは全て0になるように設定しています。 そして係数φ_Sはx_iとしています。パウリ行列P_kは全てZゲートに設定しています。 一番下にQIskitでこの回路を表示したものを載せています。 この例では繰り返しの数を2としています。 赤で囲った部分がexpのiサムx_i Z_iです。ここがU_φの行列に対応します。 シンプルで理解はしやすいのですが、残念ながらこの特徴量マッピングでは量子の優位性はなく、古典でも簡単に再現できてしまうことがわかっています。
  • #35 では次にZZ-FeatureMapという特徴量マッピングをみていきます。 回路の繰り返し数が2で、このZZーFeatureMapを使ったものが実装論文での設定です。 この特徴量マッピングでは古典での再現が難しくなることを論文の著者が主張しています。 この設定ではφ_Sはもう少し複雑になり、Sがiの時、係数φ_iはx_iとなり、Sが特徴量のうち2つを取り出す組み合わせの場合、 φ_ijは(π-x_i) かける(πーx_j)となります。 パウリ行列はz行列だけを使う点は前のページと同様ですが、Z_ijの場合は下の赤色で囲った部分がexp⁡(iϕ_12 Z_12 ) に対応します。
  • #36 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #37 また、特徴量マッピングの自由度をさらに上げることもできます。 それはPauli-FeatureMapで実現することができます。 先ほどまでは、パウリゲートのうち、Zゲートしか利用していませんでしたが、XゲートやYゲートも利用することができます。 下の図の例では、1量子ゲートではZ回転ゲートとX回転ゲートを使い、2量子ゲートでYZゲートの回転を使っています。 Xの回転ゲートとY_1Z_2の回転ゲートの具体的なゲート実装方法は下の図の赤枠で囲まれた部分です。
  • #38 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #39 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #40 ここまでで、特徴量を量子状態にマッピングする方法を学びました。 量子SVM実装論文ではZZーFeatureMapが採用されています。 次にカーネル関数を計算するために必要な内積の計算方法を説明していきます。
  • #41 今、私たちは量子状態|φ(x)>を準備することができます。 量子カーネルは量子状態|φ(x_i)>と|φ(x_k)>のブラケット内積の2乗で定義されます。 この計算方法を理解するために、初期状態|00>にユニタリ行列Aをかけた状態|ψ>の観測を考えます。 |ψ>は基底状態|00>から|11>までの状態に位相a,b,c,dを加えて重ね合わせたものになります。 それぞれの基底状態が観測で得られる確率は、それぞれ、|a|^2, ..|d|^2となります。 これは量子力学の観測のルールです。 基底状態はそれぞれ直行するので、行列Aを状態|00>で挟んでやると|a|^2が得られます。 これを観測して得られるヒストグラムに対応させると右の図のようになります。 00のバーが行列Aを状態|00>で挟んだもので観測確率は|a|^2となります、 同様に01のバーが行列Aを状態|00>と|01>で挟んだもので観測確率は|b|^2となります。
  • #42 このルールを使って状態|φ(x_i)>と|φ(x_k)>の内積を考えてみます。 この内積は、行列Uφ(x_i)ダガーUφ(x_k)を初期状態|0>で挟んだものの2乗になります。 ここでのUは先ほどのHUφを繰り返したものを指します。 特徴量が2次元の場合、次のような回路が対応します。 この回路をラージR回測定して、スモールr回出現した時、カーネルKはラージR分のラージrとなります。右図で言うと、赤枠の00のバーがカーネルに対応しています。
  • #43 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #44 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #45 この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  • #46 ではこのカーネル計算の計算オーダーについてみていきます。 まず、訓練データ数Nに対して、十分な精度を得るためにはN^2オーダーの回数の観測が必要になります。 そして、カーネル行列を得るためには訓練データ点の全ペアN^2オーダーの回数量子回路の構築・実行が必要になります。 すなわち、全体での計算コストはN^4となります。 例として、データ数N=5の場合を見てみます。 一つのマスが訓練データ点の1ペアを表します。 この一つのマスを計算するために下の図のような回路を構築し実行する必要があります。 その各実行に対してN^2オーダーの観測を行う必要があります。 また、このテーブルのうち、薄い赤色の部分を計算しなければなりません。 これは、対角成分は常に1で、右上の成分は左下の成分と同じになるからです。 赤色のマスの数は一般にはN*(N-1)/2で求まりN^2のオーダーになります。
  • #47 では最後のパートでPythonで量子SVMを回したみたものを紹介します。
  • #50 データ生成の境界面とSVMの分類面は異なる。
  • #51 データ生成の境界面とSVMの分類面は異なる。
  • #52 V(回転行列)と境界面(1次元)の関係性
  • #53 V(回転行列)と境界面(1次元)の関係性
  • #54 V(回転行列)と境界面(1次元)の関係性
  • #56    こちらがBreat_Cancerのデータで古典SVMと量子SVMを比較したものです。 まず、見方として、赤と青色のところが訓練データとテストデータです。 そのうち●が訓練データで、■がテストデータです。白色のバツがついているところは、間違った分類をしてしまっている部分です。 オレンジと水色の部分が予測データで、x方向に50、y方向に50と合計2500点でマス目状に用意しました。 赤と同じ分類をされたところをオレンジで、青と同じ分類をされたところが水色になっています。 このオレンジと水色の部分の集まりの境界を見ることでSVMの分類の境界を可視化することができます。 結果としては古典SVMの方が性能が良くなっていることが分かります。 また、Mac PCを使って計算したのですが、2500点の予測の計算に、古典では0.2秒ほどなのに対して、量子SVMでは90分ほどかかります。 また、分類の境界もかなり複雑なものになってしまいました。
  • #59    こちらがBreat_Cancerのデータで古典SVMと量子SVMを比較したものです。 まず、見方として、赤と青色のところが訓練データとテストデータです。 そのうち●が訓練データで、■がテストデータです。白色のバツがついているところは、間違った分類をしてしまっている部分です。 オレンジと水色の部分が予測データで、x方向に50、y方向に50と合計2500点でマス目状に用意しました。 赤と同じ分類をされたところをオレンジで、青と同じ分類をされたところが水色になっています。 このオレンジと水色の部分の集まりの境界を見ることでSVMの分類の境界を可視化することができます。 結果としては古典SVMの方が性能が良くなっていることが分かります。 また、Mac PCを使って計算したのですが、2500点の予測の計算に、古典では0.2秒ほどなのに対して、量子SVMでは90分ほどかかります。 また、分類の境界もかなり複雑なものになってしまいました。
  • #62 次に境界面について着目してみます。 このオレンジと水色の部分の集まりの境界を見ることでSVMの分類の境界を可視化することができます。 元の生成データの境界面に対して、古典SVMでは境界面を単純化しすぎている傾向があり、量子SVMでは複雑化しすぎている傾向があります。 量子SVMでは過学習気味なので、それを抑える方法を探索する必要があります。 その探索も第三回の課題とします。