SlideShare una empresa de Scribd logo
1 de 37
QuantumTokyo
Qt
Last updated: 2020-09-25
QSVM (量子サポートベクターマシン)
Yuma Nakamura
Qiskit Advocate
QuantumTokyoアジェンダ
2
1. 古典SVMについて
1. SVMの概要
2. カーネルトリックについて
2. 量子SVMについて
1. 量子SVMの概要(理想版 vs NISQ版)
2. 量子カーネルについて
1. 量子状態への特徴量マッピング
2. カーネル関数決定のパラメータ (量子カーネルの候補)
3. 内積の計算方法
4. 計算コスト
3. Pythonで実行
QuantumTokyoSVMの特徴
3
Q:青と赤のグループのデータセットがあります。これを下図のように分けるとき、どちらの方が良いでしょうか?
QuantumTokyoSVMの特徴
4
境界線付近の拡大図
• 右図の方が境界線と最近接データ点との距離(マージン)が長い→左図より安定した分け方
マージン
QuantumTokyoSVMの特徴
SVM
• グループ間の境界面を定める分析手法
• マージンMをできるだけ大きく取るように最適化→汎化性能をできるだけ高くする
目的:max 𝑀
5
QuantumTokyoSVMのアルゴリズム
SVMが決定するのはマージンが最大化されるような境界面の方程式: 𝒘 ⋅ 𝒙 + 𝑏 = 0
• つまり、係数𝒘と切片𝑏を計算する
データ数Nのデータセットにおいて2値分類を考える
• 各データ点:𝒙𝑖 (𝑖 = 1, 2, … , 𝑁)
• マージン:𝑀
𝒘 ⋅ 𝒙 + 𝑏 = 0
𝒙𝒊
𝒙𝒋
𝑀 = min
𝑖
|𝒘⋅𝒙 𝒋+𝑏|
|𝒘| 𝑴
|𝒘 ⋅ 𝒙𝒋 + 𝑏|
|𝒘|
𝑴
6
QuantumTokyoSVMのアルゴリズム
𝒘, 𝑏には定数倍の任意性があるため、一意に決まるように以下の制約条件を設定
• min
𝑖
𝒘 ⋅ 𝒙𝑖 + 𝑏 = 1
• これにより𝑀 = 1/|𝒘|
分類条件を下記の式𝑡 𝒙𝑖 として表す。
このとき上記の制約条件と分類条件を合わせて、
上記条件下で、𝑀 = 1/|𝒘|を最大化する
𝑡𝑖 = 𝑡 𝑥𝑖 =
−1 … (𝑥𝑖が青グループ)
1 … (𝑥𝑖が赤グループ)
𝑡 = −1
𝑡 = 1
𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 ≥ 1
7
QuantumTokyo
8
最適化問題をラグランジ未定係数法で解きやすい形に変換
SVMのアルゴリズム
元の問題
目的関数: max
𝑤,𝑏
𝑀: =
1
𝒘
⟺ min
𝑤,𝑏
1
2
𝒘 2 制約条件: 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 ≥ 1
変換後の問題
max
𝛼 𝑖≥0
𝐿 𝜶 : =
1
2
𝒘 2 −
𝑖
𝛼𝑖 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 − 1目的関数: 最大化条件:
𝜕𝐿
𝜕𝑤𝑖
= 𝑤𝑖 − 𝛼𝑖 𝑡𝑖 𝑥𝑖 = 0
𝜕𝐿
𝜕𝑏
=
𝑖
𝛼𝑖 𝑡𝑖 = 0
= max
𝛼 𝑖≥0
𝐿 𝜶 : =
𝑖
𝛼𝑖 −
1
2
𝑖,𝑘
𝛼𝑖 𝛼 𝑘 𝑡𝑖 𝑡 𝑘 𝒙𝑖 ⋅ 𝒙 𝑘
𝑤𝑖 = 𝛼𝑖 𝑡𝑖 𝑥𝑖を代入
これを解くと境界面を定める𝒘が決定する
𝛼𝑖 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 − 1 = 0
QuantumTokyoサポートベクトルとは
1つ目の最大化条件:
制約条件:𝛼𝑖 ≥ 0より
• 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 ≠ 1となる教師データについては必ず𝛼𝑖 = 0
• 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 = 1となる教師データにおいてのみ𝛼𝑖 ≠ 0
すなわち、モデルにとって意味のあるデータは図のようになる
…意味のない教師データ
…意味のある教師データ
𝛼𝑖 = 0
サポートベクトル
9
𝛼𝑖 𝑡𝑖 𝒘 ⋅ 𝒙𝑖 + 𝑏 − 1 = 0
QuantumTokyoSVMの問題点
SVMの問題点
• 境界面は線形である必要があり、下記のようなグループを分けることができない
10
QuantumTokyo非線形SVM
非線形SVM
• 特徴量を高次元化(特徴量マッピング)することで、線形な境界面で切り分ける
x
y
𝑥2
+ 𝑦2
𝑧 = 𝑥2 + 𝑦2を追加
𝒙 → 𝜙 𝒙 = (𝑥, 𝑦, 𝑥2
+ 𝑦2
)
11
QuantumTokyo非線形SVMの問題点
特徴量を高次元化するほど、計算コストがかかる!!
max
𝛼
𝑖
𝛼𝑖 −
1
2
𝑖,𝑘
𝛼𝑖 𝛼 𝑘 𝑡𝑖 𝑡 𝑘 𝜙(𝒙𝑖) ⋅ 𝜙(𝒙 𝑘)
次元が増えると内積の計算も増えてしまう
12
QuantumTokyoカーネルトリック
カーネル法…特徴量を高次元化することなく、その計算結果だけを使う手法
x
y
� + �
高次元へ写像
max
𝛼
𝑖
𝛼𝑖 −
1
2
𝑖,𝑘
𝛼𝑖 𝛼 𝑘 𝑡𝑖 𝑡 𝑘 𝜙(𝒙𝑖) ⋅ 𝜙(𝒙 𝑘)
内積計算
𝒙 → 𝜙 𝒙
max
𝛼
𝑖
𝛼𝑖 −
1
2
𝑖,𝑘
𝛼𝑖 𝛼 𝑘 𝑡𝑖 𝑡 𝑘 𝑘(𝒙𝑖, 𝒙 𝑘)
𝒙𝑖 𝒙 𝑘 → 𝑘(𝒙𝒊, 𝒙 𝒌)
カーネル関数kを定義し計算へぶち込むだけ
従来の手法
カーネル法
13
QuantumTokyoカーネルトリック
カーネル関数の例1…多項式カーネル
• d=2とすると…
𝑘 𝒂, 𝒃 = 1 + 𝒂 ⋅ 𝒃 𝑑
𝑘 𝒂, 𝒃 = 1 + 2𝒂 ⋅ 𝒃 + (𝒂 ⋅ 𝒃) 𝟐
= 1, 2𝑥 𝑎, 2𝑦𝑎, 𝑥 𝑎
2
, 𝑦𝑎
2
, 𝑥 𝑎 𝑦𝑎 ⋅ 1, 2𝑥 𝑏, 2𝑦 𝑏, 𝑥 𝑏
2
, 𝑦 𝑏
2
, 𝑥 𝑏 𝑦 𝑏
x
y
𝑎 = (𝑥 𝑎, 𝑦𝑎)
𝑏 = (𝑥 𝑏, 𝑦 𝑏)
変換𝜙により6次元化
𝑘 𝒂, 𝒃 = 𝜙 𝒂 ⋅ 𝜙(𝒃)
2次元→6次元
変換を実際には行わず、内積の結果のみを使用する
14
𝜙 𝒂 𝜙 𝒃
QuantumTokyo古典SVMのまとめ
• 分類問題を解く分析手法
• 汎化性能の向上を目的としてマージンを最大化する
• カーネルトリックを使うことで、特徴量マッピングをすることなく、その計算結果だけを使用できる
15
QuantumTokyoアジェンダ
16
1. 古典SVMについて
1. SVMの概要
2. カーネルトリックについて
2. 量子SVMについて
1. 量子SVMの概要(理想版 vs NISQ版)
2. 量子カーネルについて
1. 量子状態への特徴量マッピング
2. カーネル関数決定のパラメータ (量子カーネルの候補)
3. 内積の計算方法
4. 計算コスト
3. Pythonで実行
量子SVMの概要(理想版 vs NISQ版)
理想的(ノイズフリー)な量子コンピューターでは、古典版SVMと比べて計算時間の削減が見込まれていました。
しかし実際は理想的(ノイズフリー)な量子SVMは不可能で、NISQデバイス版での量子SVMが提案されます。
ノイズフリーな量子SVM
時期: 2013年頃*1
要件: 位相推定(QPE)を使った逆行列計算が精度良く実行可能
目標: 計算の高速化
NISQデバイスの量子SVM
時期:2018年*2~
要件: 少数のゲート数で実装する必要がある(QPEが使えない)
目標: 古典で再現が難しいカーネルを実装する
17
(1) S. Lloyd et. al., arXiv:1307.0411 (2013).
(2) V. Havlíček et. al., Nature 567, 209 (2019)
ノイズフリー(1) NISQ(2)
逆行列計算
(*位相推定を利用)
◯ ×
(位相推定はNISQでは不可)
内積計算 △
(SWAPテストで高コストな3量子
ゲートを利用)
◯
(改良アルゴリズムで少数の
2量子ゲートを利用)
高速化 ◯
(指数的な高速化)
△
(特に優位性なし*)
特徴量マッ ピング △
(古典と同様、量子特有の工夫なし)
◯
(量子カーネルを作成)
*量子の計算方法を古典で再現すると優位性が「示唆」されるが古典本来の方法と比べると優位性はない
量子SVMの概要(理想版 vs NISQ版)
NISQ版のQSVMでは高速化ではなく特徴量マッピングの高度化に焦点が置かれています。
18
(1)P. Rebentrost, M. Mohseni and S. Lloyd, PRL 113, 13050 (2014)
(2)V. Havlíček et. al., Nature 567, 209 (2019)
QuantumTokyoNISQ版量子SVMについて
19
古典SVMのカーネル計算を、量子カーネル(量子状態の内積)で置き換えたものを量子SVMと呼びます。
SVMの実行フロー
訓練データの準備
カーネル行列𝐾 𝒙𝑖, 𝒙 𝑘 を計算
マージンMを最大化するパラメータを決定
分類の境界面を決定
予測用データを分類
ココを量子版に置き換え 古
典
版
多項式カーネル 𝐾 𝒙𝑖, 𝒙 𝑘 = 𝒙𝑖
𝑇
𝒙 𝑘 + 𝑐
𝑑
・𝑑次以下の全種類の単項式を
各成分に持つ特徴ベクトル𝜙が対応
ガウスカーネル 𝐾 𝒙𝑖, 𝒙 𝑘 = exp(−
𝒙 𝑖−𝒙 𝑘
2
2𝜎2 )
・無限次元の特徴ベクトル𝜙を用いていることと等価
・有用な特徴量も含まれていると期待できる
量
子
版
量子カーネル 𝐾 𝒙𝑖, 𝒙 𝑘 = Φ 𝒙𝑖 Φ 𝒙 𝑘
2
・古典での再現が難しい(とされる)
・回路を深くせずに実現できる
QuantumTokyo量子状態への特徴量マッピング
量子カーネルに対応する特徴量マッピングは、量子状態Φ ∶ 𝒙𝑖 → Φ 𝒙𝑖 へのマッピングです。
特徴量(1次元の場合) 𝒙𝑖 = 𝛼𝑖
𝒙𝑖 →
Φ
𝐴 𝛼𝑖 0 + 𝐵 𝛼𝑖 1
V. Havlíček et al., Nat., 567 209 (2019)
・ 1次元ではブロッホ球に対応
・ この図ではwを地軸として赤道が境界面
・ 北半球を+1、南半球を-1と分類
QuantumTokyo量子状態への特徴量マッピング
21
量子SVMでは、Groverの量子状態マッピングとは考え方が異なります。
Groverでのマッピング
検索index
(古典情報)
0 → 00
1 → 01
2 → 10
3 → 11
量子状態
不連続な値を量子状態にエンコードする
量子SVMでのマッピング
特徴量
(2次元の場合)
量子状態
連続な値を量子状態の位相にエンコードする
𝒙𝑖 = 𝛼𝑖, 𝛽𝑖 → 𝐴 𝛼𝑖, 𝛽𝑖 00 + 𝐵 𝛼𝑖, 𝛽𝑖 01
+ 𝐶 𝛼𝑖, 𝛽𝑖 10 + 𝐷 𝛼𝑖, 𝛽𝑖 11
QuantumTokyo量子SVMについて
22
量子SVMの実装論文では、
次の形で定義される量子状態へのマッピングだと古典での再現が難しいと提案しています。
d 𝑤ℎ𝑒𝑟𝑒 𝑈Φ 𝑥 = exp 𝑖
𝑠
𝜙 𝑆 𝒙 Π 𝐾∈𝑆 𝑃 𝐾
= exp 𝑖
𝑖
𝜙𝑖(𝒙)𝑃𝑖 + 𝑖
𝑖,𝑗
𝜙𝑖𝑗(𝒙)𝑃𝑖𝑗 +
𝑖,𝑗,𝑘
𝜙𝑖𝑗𝑘(𝒙)𝑃𝑖𝑗𝑘 + ⋯
・S はエンタングルさせるビットの組み合わせ
・𝜙𝑖(𝒙)はパウリ行列𝑃𝑖の係数
マッピングの自由度
𝒙 ∶→ | 𝛷 𝒙 = 𝛱 𝑑 𝑈Φ 𝑥 𝐻 𝑛 0
QuantumTokyo量子SVMについて(Z-FeatureMap)
23
一番簡単な例としてZ-FeatureMapがありますが、これでは量子の優位性がありません。
d 𝑤ℎ𝑒𝑟𝑒 𝑈Φ 𝑥 = exp 𝑖
𝑠
𝜙 𝑆 𝒙 Π 𝐾∈𝑆 𝑃 𝐾
= exp 𝑖
𝑖
𝜙𝑖(𝒙)𝑃𝑖 + 𝑖
𝑖,𝑗
𝜙𝑖𝑗(𝒙)𝑃𝑖𝑗 +
𝑖,𝑗,𝑘
𝜙𝑖𝑗𝑘(𝒙)𝑃𝑖𝑗𝑘 + ⋯
・S はエンタングルさせるビットの組み合わせ
・𝜙𝑖(𝒙)はパウリ行列𝑃𝑖の係数
𝜙 𝑆 𝒙 = 𝜙𝑖 𝒙 = 𝑥𝑖
𝑃 𝐾 = 𝑍𝑖
𝑈Φ 𝑥 = exp 𝑖
𝑖
𝑥𝑖 𝑍𝑖
𝒙 ∶→ | 𝛷 𝒙 = 𝛱 𝑑 𝑈Φ 𝑥 𝐻 𝑛 0
QuantumTokyo量子SVMについて(ZZ-FeatureMap)
24
量子SVMの実装論文ではZZ-FeatureMapが採用されており、
d=2(2回の繰り返し)以上で古典での再現が難しくなると主張しています。
d 𝑤ℎ𝑒𝑟𝑒 𝑈Φ 𝑥 = exp 𝑖
𝑠
𝜙 𝑆 𝒙 Π 𝐾∈𝑆 𝑃 𝐾
= exp 𝑖
𝑖
𝜙𝑖(𝒙)𝑃𝑖 + 𝑖
𝑖,𝑗
𝜙𝑖𝑗(𝒙)𝑃𝑖𝑗 +
𝑖,𝑗,𝑘
𝜙𝑖𝑗𝑘(𝒙)𝑃𝑖𝑗𝑘 + ⋯
・S はエンタングルさせるビットの組み合わせ
・𝜙𝑖(𝒙)はパウリ行列𝑃𝑖の係数 𝜙 𝑆 𝒙 =
𝑥𝑖 𝑆 = {𝑖}
𝜋 − 𝑥𝑖 𝜋 − 𝑥𝑗 𝑆 = {𝑖, 𝑗}
𝑃 𝐾 =
𝑍𝑖 𝐾 = 𝑖
𝑍𝑖𝑗 𝐾 = 𝑖𝑗
exp 𝑖𝜙12 𝑍12
𝒙 ∶→ | 𝛷 𝒙 = 𝛱 𝑑 𝑈Φ 𝑥 𝐻 𝑛 0
QuantumTokyo量子SVMについて(ZZ-FeatureMap)
25
論文での設定ではd=2でのZZ-FeatureMapが使用され、
𝐻, 𝑒 𝑖𝜃𝑍, 𝐶𝑁𝑂𝑇ゲートのみで構成ができます。
𝒙 → | 𝛷 𝒙 = 𝑈Φ 𝑥 𝐻 𝑛 𝑈Φ 𝑥 𝐻 𝑛|0
| 𝛷 𝒙 = 𝑒 𝑖 𝛼𝑍1+𝛽𝑍2+ 𝜋−𝛼 𝜋−𝛽 𝑍1 𝑍2 𝐻2 2
|0
H
H
𝑒 𝑖𝛼𝑍
𝑒 𝑖𝛽𝑍 𝑒 𝑖 𝜋−𝛼 (𝜋−𝛽)𝑍
2
入力データ𝒙 = 𝛼, 𝛽 に対応する量子状態
QuantumTokyo量子SVMについて(Pauli-FeatureMap)
26
さらに自由度の高い特徴量マッピングとしてPauli-FeatureMapもあります。
d 𝑤ℎ𝑒𝑟𝑒 𝑈Φ 𝑥 = exp 𝑖
𝑠
𝜙 𝑆 𝒙 Π 𝐾∈𝑆 𝑃 𝐾
= exp 𝑖
𝑖
𝜙𝑖(𝒙)𝑃𝑖 + 𝑖
𝑖,𝑗
𝜙𝑖𝑗(𝒙)𝑃𝑖𝑗 +
𝑖,𝑗,𝑘
𝜙𝑖𝑗𝑘(𝒙)𝑃𝑖𝑗𝑘 + ⋯
・S はエンタングルさせるビットの組み合わせ
・𝜙𝑖(𝒙)はパウリ行列𝑃𝑘の係数 𝜙 𝑆 𝒙 =
𝑥𝑖 𝑆 = {𝑖}
𝜋 − 𝑥𝑖 𝜋 − 𝑥𝑗 𝑆 = {𝑖, 𝑗}
𝑃 𝐾 =
𝑋𝑖 𝑍𝑖 𝐾 = 𝑖
(𝑌𝑍)𝑖𝑗 𝐾 = 𝑖𝑗
exp 𝑖𝜙12 𝑍𝑌 12
exp 𝑖𝜙1 𝑋1
詳しくは以下参照
https://github.com/Qiskit-Challenge-
India/2020/blob/master/Day%206%2C%207%2C8/VQC_notebook.ipynb
𝒙 ∶→ | 𝛷 𝒙 = 𝛱 𝑑 𝑈Φ 𝑥 𝐻 𝑛 0
QuantumTokyoアジェンダ
27
1. 古典SVMについて
1. SVMの概要
2. カーネルトリックについて
2. 量子SVMについて
1. 量子SVMの概要(理想版 vs NISQ版)
2. 量子カーネルについて
1. 量子状態への特徴量マッピング
2. カーネル関数決定のパラメータ (量子カーネルの候補)
3. 内積の計算方法
4. 計算コスト
3. Pythonで実行
QuantumTokyo
28
量子カーネル(内積)の計算方法
| 𝜓 = 𝐴|00 = 𝑎 00 + 𝑏 01 + 𝑐 10 + 𝑑 11
初期状態|00 にユニタリ行列𝐴をかけた状態| 𝜓 の観測考えます
これで| 𝛷 𝒙 の実装方法を学びました。
次は量子カーネル𝐾 𝒙𝑖, 𝒙 𝑘 = Φ(𝒙𝑖) Φ(𝒙 𝑘) 2の計算方法です。
𝐴
このとき観測される状態が 00 , …, 11 となる確率は
それぞれ 𝑎 2
, … , 𝑑 2
となります(量子力学のルール)。
𝑖 𝑗 = 𝛿𝑖𝑗なので、 00 𝐴 00 2 = 𝑎 2です。
00 𝐴 00 2
𝑎 2
Shot=1000 (千回観測)したときのヒストグラム
01 𝐴 00 2
𝑏 2
𝑐 2 𝑑 2
10 𝐴 00 2
11 𝐴 00 2
QuantumTokyo
29
量子カーネル(内積)の計算方法
量子カーネル𝐾 𝒙𝑖, 𝒙 𝑘 = Φ(𝒙𝑖) Φ(𝒙 𝑘) 2 = 0 𝑈Φ 𝒙 𝑖
†
𝑈Φ 𝒙 𝑘
0
2
より同様に計算できます。
をR回測定して|00 がr回出現したとき、
𝐾 𝒙𝑖, 𝒙 𝑘 =
𝑟
𝑅
となります。
特徴量が2次元の場合( 0 ≔ 00 )、次のように計算できます
𝑈Φ 𝒙 𝑘
𝑈Φ 𝒙 𝑖
†
00 𝑈𝑖
†
𝑈 𝑘 00
2
𝐾 𝒙𝑖, 𝒙 𝑘
Shot=1000 (千回観測)したときのヒストグラム
𝒙1= (2, 3), 𝒙2= (1, 1)で
を𝐾 𝒙1 𝒙2 を実際に計算
QuantumTokyo
30
計算コスト
|Φ(𝒙1) |Φ(𝒙2) |Φ(𝒙3) |Φ(𝒙4) |Φ(𝒙5)
Φ 𝒙1 | 1
Φ 𝒙2 | 1
Φ 𝒙3 | 1
Φ 𝒙4 | 1
Φ 𝒙5 | 1
例: データ数𝑁 =5の場合
𝑈Φ 𝒙1
𝑈Φ 𝒙2
†
十分な精度を得るために
𝑂(𝑁2
)回の観測が必要
訓練データ数𝑁に対し、十分な精度を得るために𝑂(𝑁2)回の観測が必要で、
カーネル𝐾 𝒙𝑖, 𝒙 𝑘 の全ペア𝑂(𝑁2)回の量子回路の構築・実行が必要なため計算コストは𝑂(𝑁4)
カーネル行列の対角成分は常に1で、
対象行列なので計算が必要なペアは𝑁(𝑁 − 1)/2
QuantumTokyoアジェンダ
31
1. 古典SVMについて
1. SVMの概要
2. カーネルトリックについて
2. 量子SVMについて
1. 量子SVMの概要(理想版 vs NISQ版)
2. 量子カーネルについて
1. 量子状態への特徴量マッピング
2. カーネル関数決定のパラメータ (量子カーネルの候補)
3. 内積の計算方法
4. 計算コスト
3. Pythonで実行
QuantumTokyoPythonで実行
32
詳しくはQiitaの記事にも書いてあります
https://qiita.com/ucc_white/items/f2ea0d019979dd675f82
QuantumTokyoPythonで実行
33
Pythonで試したこと
古典SVMと量子SVMで次のことを実施
2つのデータセット(Breast_cancer/ad_hoc_data)でモデル作成・予測
訓練データ数:20 ;テストデータ数: 10 ; 予測データ数: 2500 (境界面を可視化するため)
分類モデルの性能評価
指標: Accuracy(分類の正解率)
Precision(正と予測したデータのうち,実際に正であるものの割合) :TP/(TP+FP)
Recall(実際に正であるもののうち,正であると予測されたものの割合): TP/(TP+FN)
Specificity(実際に負であるもののうち,負であると予測されたものの割合): TN/(FP+TN)
F-1 Score(RecallとPrecisionの調和平均): 2Recall*Precision/(Recall+ Precision)
境界面の可視化
真の結果
正 負
予測
結果
正 TP FP
負 FN TN
TP:真陽性 FP:偽陰性
FN:偽陰性 FP:真陰性
QuantumTokyoGithubのコードで実際に実行してみた (量子シミュレータ[仮想版])
古典SVM 量子SVM
データセット: Breast_cancer (sklearn)
Accuracy: 0.85
Precision: 0.77
Recall: 1.00
Specificity: 0.70
F1-score: 0.87
実行時間(Mac PC):
モデル作成 3分11秒
予測 90分
実行時間(Mac PC):
モデル作成 + 予測 0.2秒
Accuracy: 0.65
Precision: 0.60
Recall: 0.90
Specificity: 0.40
F1-score: 0.72
●/●: 訓練データ(n=20) ■/■: テストデータ(n=10) ■/■予測データ(n=2500) × 誤分類
34
QuantumTokyoGithubのコードで実際に実行してみた (量子シミュレータ[仮想版])
古典SVM 量子SVM
●/●: 訓練データ(n=40) ■/■: テストデータ(n=20) ■/■予測データ(n=2500) × 誤分類
Accuracy: 0.80
Precision: 0.80
Recall: 0.80
Specificity: 0.80
F1-score: 0.80
実行時間(Mac PC):
モデル作成 3分11秒
予測 90分
実行時間(Mac PC):
モデル作成 + 予測 0.2秒
データセット: ad_hoc_data(qiskit.ml.datasets; 量子SVM用のデータセット)
Accuracy: 0.50
Precision: 0.50
Recall: 0.60
Specificity: 0.40
F1-score: 0.5535
QuantumTokyoハイパーパラメータ調整
36
Depth vs Time
*ad_hoc_dataを利用
Depth
Score
Depth vs モデル性能
Time(second)
Depth
特徴量を量子状態にマッピングする際のパラメータ、depthを調整することで性能が向上する
QuantumTokyo結論
37
結論
・量子SVMはカーネルを置き換えてる
・古典では再現が難しいカーネルを作った
・depthをパラメータでチューニングすると精度上がる

Más contenido relacionado

La actualidad más candente

0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
MasanoriSuganuma
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka
 
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
智啓 出川
 

La actualidad más candente (20)

強化学習における好奇心
強化学習における好奇心強化学習における好奇心
強化学習における好奇心
 
[DL輪読会]モデルベース強化学習とEnergy Based Model
[DL輪読会]モデルベース強化学習とEnergy Based Model[DL輪読会]モデルベース強化学習とEnergy Based Model
[DL輪読会]モデルベース強化学習とEnergy Based Model
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリング
 
開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDK開発者が語る NVIDIA cuQuantum SDK
開発者が語る NVIDIA cuQuantum SDK
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"論文紹介 "DARTS: Differentiable Architecture Search"
論文紹介 "DARTS: Differentiable Architecture Search"
 
PRML輪読#1
PRML輪読#1PRML輪読#1
PRML輪読#1
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 
新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには新分野に飛び入って半年で業績を作るには
新分野に飛び入って半年で業績を作るには
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
 
Fisher Vectorによる画像認識
Fisher Vectorによる画像認識Fisher Vectorによる画像認識
Fisher Vectorによる画像認識
 
Deep Counterfactual Regret Minimization
Deep Counterfactual Regret MinimizationDeep Counterfactual Regret Minimization
Deep Counterfactual Regret Minimization
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度敵対的学習に対するラデマッハ複雑度
敵対的学習に対するラデマッハ複雑度
 
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
 
[DL輪読会]Control as Inferenceと発展
[DL輪読会]Control as Inferenceと発展[DL輪読会]Control as Inferenceと発展
[DL輪読会]Control as Inferenceと発展
 
深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定深層学習による非滑らかな関数の推定
深層学習による非滑らかな関数の推定
 

Similar a Quantum Support Vector Machine

Jokyonokai130531
Jokyonokai130531Jokyonokai130531
Jokyonokai130531
nwpmq516
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
Miyoshi Yuya
 

Similar a Quantum Support Vector Machine (20)

Jokyonokai130531
Jokyonokai130531Jokyonokai130531
Jokyonokai130531
 
逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎逐次モンテカルロ法の基礎
逐次モンテカルロ法の基礎
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元スパースモデリングによる多次元信号・画像復元
スパースモデリングによる多次元信号・画像復元
 
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
 
量子アニーリングを用いたクラスタ分析
量子アニーリングを用いたクラスタ分析量子アニーリングを用いたクラスタ分析
量子アニーリングを用いたクラスタ分析
 
大規模凸最適化問題に対する勾配法
大規模凸最適化問題に対する勾配法大規模凸最適化問題に対する勾配法
大規模凸最適化問題に対する勾配法
 
NN, CNN, and Image Analysis
NN, CNN, and Image AnalysisNN, CNN, and Image Analysis
NN, CNN, and Image Analysis
 
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装するSMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
 
Variational autoencoder
Variational autoencoderVariational autoencoder
Variational autoencoder
 
パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)パターン認識と機械学習6章(カーネル法)
パターン認識と機械学習6章(カーネル法)
 
RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習RBMを応用した事前学習とDNN学習
RBMを応用した事前学習とDNN学習
 
人工知能2018 強化学習の応用
人工知能2018 強化学習の応用人工知能2018 強化学習の応用
人工知能2018 強化学習の応用
 
Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)Coreset+SVM (論文紹介)
Coreset+SVM (論文紹介)
 
PRML読み会第一章
PRML読み会第一章PRML読み会第一章
PRML読み会第一章
 
L0TV: a new method for image restoration in the presence of impulse noise
L0TV: a new method for image restoration in the presence of impulse noiseL0TV: a new method for image restoration in the presence of impulse noise
L0TV: a new method for image restoration in the presence of impulse noise
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定
 
Prml sec6
Prml sec6Prml sec6
Prml sec6
 
データ解析3 最適化の復習
データ解析3 最適化の復習データ解析3 最適化の復習
データ解析3 最適化の復習
 

Último

Último (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Quantum Support Vector Machine

Notas del editor

  1.  量子SVMではカーネルの概念が重要なので古典の説明を使って詳しく見ていきます。   今回のアジェンダは古典のSVMを前半で説明し、後半では量子カーネルという概念を中心に量子SVMの仕組みの説明をしていきます。  最後に実際に量子SVMのコードを回すところをお見せします。
  2.   では古典のSVMから説明をしていきます。青と赤のグループに属するデータセットがあります。    これらを以下のように境界で分ける時、左右どちらの分け方がよいでしょうか?  誰か答えてくれる人いらっしゃいますか??(理由聞く)   ヒントは境界に近いデータ点に着目することです。  左の図では青色の点が境界に最も近い点です。右の図では境界の両側の赤と青の点が最近傍の点です。 
  3.    境界付近の点に着目すると、左の図の場合は境界線が青色のデータ点に偏りすぎています。  一方で右側では境界に近い青と赤のデータ点がどちらかに偏ることなく、境界線との距離が等しくなっています。     つまり、それぞれのグループで境界に最近傍の点と境界線の距離が最大限に引き離されています。  この境界線と最近傍のデータ点の距離をマージンとよびます。  これが長いほど安定した分け方という考え方がSVMです。
  4.    言い換えると、SVMとはグループ間の境界面を定めてデータを分類する分析手法と言えます。  このマージンMをできるだけ大きく取るように最適化をすることで、未知のデータに対して判別能力を保つことができます。     機械学習では未知のデータに対して判別能力を保つことを汎化性能を高くすると呼びます。    ではこのマージンM最大限に大きくするためには何をしたらいいのかを見ていきます。
  5.    まず、SVMが決定するのはマージンが最大化されるような境界面の方程式です。    これはWドットXプラスb=0で表せます。  つまり、係数wと切片bを計算することになります。     データ点がN個の場合で2クラスへの分類を考えてみます。  この時ある点x_jと境界の距離は、wドットx_j +bの絶対値を、wの絶対値で割ったものです。  これは高校時代に習ったと思われる、点と直線の距離ですね。  各点と境界の距離のうち最小のものが、最近傍点と境界の距離になります。  なので、マージンは全ての点と境界の距離のうち最小のものとなります。
  6.  ここで、係数wと接点bには定数倍の任意性があります。  一意に決めれるために、ミニマムの絶対値のWドットX_iプラスbが1となるような制約をつけます。     この時マージンは絶対値w分の1となります。     次に、赤のグループか青のグループかの分類を定量的に表現するため、次の分類条件をつけます。 t_iはx_iが青グループなら-1、赤グループなら+1とします。    この制約条件と分類条件を合わせて、 t_iかけるw x_i プラスbが1以上という条件でかけます。   この条件下でマージンM=絶対値のW分の1を最大化します。
  7. この制約条件では不等式が登場し、最適化が扱いにくいので、解きやすい形に変換していきます。  元々はマージンMの最大化でしたが、これは分母wの2乗の最小化と等価です。    この最大化もしくは最小化する関数を目的関数と呼びます。  ここでラグランジ未定係数法という最適化問題のテクニックを使うと、パラメータαを用いて目的関数に制約条件を含めることができます。     変換後の目的関数をLとした時、(双対問題となるので)minとmaxがまた入れ替わり、Lの最大値を求めることになります。  変換後には3つの最大化条件が等式で与えられるようになります。   3つ目の条件によりwの各成分w_iをパラメメータαを使って表すことができ、目的関数Lをパラメータαで表すことができます。  あとはLを最大化するようにパラメータαにを決めると、そこから境界面を決める係数wが求まります。     ここでL の関数にx_iとx_kの内積が出てきているのを数ページ先のために覚えておいてください。
  8.   また、先ほど挙げた最大化条件のうち1つ目を見ると気づくことがあります。    境界面に一番近いデータ点でt_i かけるwドットx_I + bが1になるように制約をつけたのを思い出してください。  それ以外の教師データ点ではパラメータα_iが0となります。    t_i かけるwドットx_I + bが1の時の教師データに対してのみパラメータα_iが0以外の意味のある値をを取ります。  つまりそれ以外の教師データはモデルに対して意味のない教師データとなっています。 この意味のある教師データ点のことをサポートベクトルと言います。
  9.    ここまで話した方法では境界は直線や平面などの線形である必要がありました。    しかし、このままだと次のような2つのグループを正しく分類することができません。    この場合、どうしたらよいでしょうか?
  10.     ここで非線型SVMというものが登場します。  データを高次元へ特徴量マッピングすることで、線形な境界面を作ることができ、分類が可能になります。     例えば、先ほどの例だとz軸にx^2+y^2を追加することで、z軸に垂直な平面でデータを分類できるようになりました。
  11.     ただ、この方法の欠点はマッピングする特徴量を高次元にするほど計算コストがかかってしまうことです。   先ほどの最大化問題で出てきた内積部分が重くなってしまいます。
  12. ここで計算量を減らすために使える手法がカーネルトリックです。   従来の方法だと高次元へマッピングした後に、内積計算を行うという2段構成でした。   一方でカーネル法では内積に対応するカーネル関数という量を定義して、計算に突っ込むだけの1ステップになります。   これで最大化問題が右側のように置き換わりました。
  13.     カーネル関数の例を1つ紹介します。多項式カーネルでは1+aドットbのd乗をaとbの関数として与えます。   例えばd=2としてカーネルを計算すると、これは6次元の特徴量マッピングに対応することが分かります。      もちろん実際の計算ではマッピングを行うわけでなく内積の結果のみ利用しています。  
  14.  ここまでで古典SVMの概要を説明しました。    まとめると、次の3点が理解の上で重要になります。    SVMは境界を引いて分類問題を解く手法です。    また、汎化性能の向上を目指してマージンMを最大化していきます。    そして、カーネルトリックを使うことで、特徴量マッピングをすることなくカーネル関数への代入結果を使うだけで最大化問題を設定できます。
  15.  ではここから量子SVMの説明に入っていきます。 まずはノイズのない理想版の量子SVMと、ノイズのあるNISQ版の量子SVMについての違いを簡単に説明します。
  16.  ノイズフリーな量子コンピュータを想定した量子SVMの理論は2013年頃から提案され古典SVMに比べて計算時間の削減が見込まれていました。 これは位相推定アルゴリズムを利用した逆行列計算が精度良く実行可能なこと前提としていました。    しかし位相推定アルゴリズムはエラーに弱いアルゴリズムであり、実装は現実的ではありませんでした。    その後、ノイズのある量子コンピュータ、通称NISQデバイスでの量子アルゴリズム実装が注目され始めました。  さらに機械学習ブームも伴い、2018年にはNISQ版の量子SVMが提案され、実際に実機で実装されました。     NISQデバイスでは一定の精度を保てる範囲の数の量子ゲートで実装する必要があります。   そこで、方針が計算の高速化から古典で再現が難しいカーネルの実装へと変わっていきました。
  17. ノイズフリー版とNISQ版の量子SVMの違いについてまとめました。 ノイズフリー版のQSVMでは位相推定を利用した逆行列計算を行なっていましたが、NISQ版では行なっていません。 その代わり、内積計算の方法に工夫が加わりました。ノイズフリー版ではSWAPテストと呼ばれる方法を用いて内積計算をしていましたが、これは3量子ゲートを使って実装するので、量子ゲート演算としては高コストです。 一方でNISQ版のアルゴリズムでは改良アルゴリズムが採用され、少数の2量子ゲートを利用することで内積計算が可能になりました。 またノイズフリー版では計算の高速化に焦点を置いていますが、NISQ版では特徴量マッピングの高度化に焦点が置かれています。 ノイズフリー版では古典と同様のカーネルを使うことが想定されており、カーネル生成において量子特有の工夫がされているわけではありません。 NISQ版では量子カーネルを作成し、量子特有の特徴量マッピングについて議論を展開しております。
  18. ではNISQ版の量子SVMについて詳しく説明していきます。 まずSVMの実行フローについて確認していきます。 まず訓練データを準備し、次にカーネル行列を計算します。 その後マージンMを最大化するパラメータを決定し、分類の境界面を決定します。 そして作られた境界面をもとに新たなデータを分類していきます。 量子SVMはこのうちのカーネル行列を量子版のカーネル行列に置き換えたものです。 古典版のカーネルでは先ほど話した多項式カーネルやガウスカーネルなどがあります。 一方で量子版では次のような量子状態の内積の2乗でカーネルを定義します。 この量子カーネルが古典では再現が難しいとされており、かつNISQデバイスでも動作するようなゲートすうで構築されています。
  19. 量子カーネルに対応する特徴量マッピングを考えてみます。 それは特徴量空間のデータ点x_i を量子状態|φ>にマッピングします。 特徴量が1次元の場合で考えてみましょう。 この時特徴量マッピングによってx_iは位相Aの|0>状態プラス位相Bの|1>状態という量子状態に変換されます。 1次元では量子状態はブロッホ級の面上に表現可能です。 例えばこの図ではwを地軸として赤道を境界面とします。 この時、北半球に存在する量子状態が赤色で示され、+1と分類されています。 一方で、南半球に存在する量子状態が青色で示され、-1と分類されています。
  20. 量子SVMでの状態のマッピングはGroverとの状態マッピングとは大きく異なることに注意してください。 まず、Groverのアルゴリズムでは検索インデックス0,1,2,3が量子状態|00>、|01>,|10>,|11>にマッピングされていました。 これは不連続な値を量子状態にエンコードする方法です。 これに対して、量子SVMのマッピングは、連続な状態を量子状態の位相にエンコードする方法です。 2次元の特徴量だった場合、それぞれの基底状態の係数は特徴量α_i とβ_i で決まる位相A, B ,C, Dで定まります。
  21. では位相に特徴量をエンコードするにはどうしたらいいでしょうか? その部分が量子SVMの実装論文の核心です。 そして次の形で定義される回路でのマッピングだと古典で再現が難しいものになると提案しています。 回路図のようにアダマールゲートで全ての状態の重ね合わせを作り、Uφという行列を作用させるものを1レイヤーとします。 それをd回繰り返します。このdを回路のdepthと定義しています。 このUφは次のように定義されています。 ここで1行目のφ_SのSはエンタングルさせるビットの組み合わせで、特徴量の中から1成分を取り出す組み合わせだったり、2成分を取り出す組み合わせだったりします。 2行目のφ_iはパウリ行列P_iの係数です。 このSとφ_iとP_iの決めかたがマッピングの自由度になります。 ここまでのの説明だとまだイメージが湧きにくいと思うのでいくつか特徴量マッピングの例をみていきます。
  22. 一番簡単な例だと、Z-FeatureMapというマッピングがあります。 ここではエンタングルする組み合わせはなく、1量子ビットのみで構築されます。 2行目のφ_ijやφ_ijkは全て0になるように設定しています。 そして係数φ_Sはx_iとしています。パウリ行列P_kは全てZゲートに設定しています。 一番下にQIskitでこの回路を表示したものを載せています。 この例では繰り返しの数を2としています。 赤で囲った部分がexpのiサムx_i Z_iです。ここがU_φの行列に対応します。 シンプルで理解はしやすいのですが、残念ながらこの特徴量マッピングでは量子の優位性はなく、古典でも簡単に再現できてしまうことがわかっています。
  23. では次に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 ) に対応します。
  24. この論文で使われているZZ-FeatureMapですが、先ほどのイラストからも分かるように、 必要なゲートはアダマールゲートH、CNOTゲート、e^iθZゲートです。 e^iθZゲートはU1ゲートかRzゲートで実装することができます。 特徴量が2次元の場合、次のような形でUφを実装できます。 これで特徴量マッピングxから量子状態|φ(x)>へのマッピングの実装方法がわかりました。
  25. また、特徴量マッピングの自由度をさらに上げることもできます。 それはPauli-FeatureMapで実現することができます。 先ほどまでは、パウリゲートのうち、Zゲートしか利用していませんでしたが、XゲートやYゲートも利用することができます。 下の図の例では、1量子ゲートではZ回転ゲートとX回転ゲートを使い、2量子ゲートでYZゲートの回転を使っています。 Xの回転ゲートとY_1Z_2の回転ゲートの具体的なゲート実装方法は下の図の赤枠で囲まれた部分です。
  26. ここまでで、特徴量を量子状態にマッピングする方法を学びました。 量子SVM実装論文ではZZーFeatureMapが採用されています。 次にカーネル関数を計算するために必要な内積の計算方法を説明していきます。
  27. 今、私たちは量子状態|φ(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となります。
  28. このルールを使って状態|φ(x_i)>と|φ(x_k)>の内積を考えてみます。 この内積は、行列Uφ(x_i)ダガーUφ(x_k)を初期状態|0>で挟んだものの2乗になります。 ここでのUは先ほどのHUφを繰り返したものを指します。 特徴量が2次元の場合、次のような回路が対応します。 この回路をラージR回測定して、スモールr回出現した時、カーネルKはラージR分のラージrとなります。右図で言うと、赤枠の00のバーがカーネルに対応しています。
  29. ではこのカーネル計算の計算オーダーについてみていきます。 まず、訓練データ数Nに対して、十分な精度を得るためにはN^2オーダーの回数の観測が必要になります。 そして、カーネル行列を得るためには訓練データ点の全ペアN^2オーダーの回数量子回路の構築・実行が必要になります。 すなわち、全体での計算コストはN^4となります。 例として、データ数N=5の場合を見てみます。 一つのマスが訓練データ点の1ペアを表します。 この一つのマスを計算するために下の図のような回路を構築し実行する必要があります。 その各実行に対してN^2オーダーの観測を行う必要があります。 また、このテーブルのうち、薄い赤色の部分を計算しなければなりません。 これは、対角成分は常に1で、右上の成分は左下の成分と同じになるからです。 赤色のマスの数は一般にはN*(N-1)/2で求まりN^2のオーダーになります。
  30. では最後のパートでPythonで量子SVMを回したみたものを紹介します。
  31. 今回はGoogle Colabを使って実行しているのですが、途中でメモリがリセットされるので、うまくいかない場合はご容赦ください。 Pythonで実行したことはこちらの記事に詳細があります。実際に回してみたい方は私が書いたQiitaの記事を参照してみてください。
  32.    こちらがBreat_Cancerのデータで古典SVMと量子SVMを比較したものです。 まず、見方として、赤と青色のところが訓練データとテストデータです。 そのうち●が訓練データで、■がテストデータです。白色のバツがついているところは、間違った分類をしてしまっている部分です。 オレンジと水色の部分が予測データで、x方向に50、y方向に50と合計2500点でマス目状に用意しました。 赤と同じ分類をされたところをオレンジで、青と同じ分類をされたところが水色になっています。 このオレンジと水色の部分の集まりの境界を見ることでSVMの分類の境界を可視化することができます。 結果としては古典SVMの方が性能が良くなっていることが分かります。 また、Mac PCを使って計算したのですが、2500点の予測の計算に、古典では0.2秒ほどなのに対して、量子SVMでは90分ほどかかります。 また、分類の境界もかなり複雑なものになってしまいました。