Slide 1

Slide 1 text

任意の 2 qubit ユニタリの ゲートでの実装 〜KAK分解を使って〜 加藤拓己1, 中田真秀2, 森野慎也, 須郷聖也3, 湊雄一郎1 1 MDR株式会社, 2 理化学研究所, 3 株式会社Quemix 2020/4/28 1

Slide 2

Slide 2 text

読んだ論文 [1] An Introduction to Cartan's KAK Decomposition for QC Programmers, Robert R. Tucci https://arxiv.org/abs/quant-ph/0507171 [2] The ubiquitous Kronecker product, Charles F. Van Loan https://www.sciencedirect.com/science/article/pii/S0377042700003939 [3] A universal quantum circuit for two-qubit transformations with three CNOT gates, G. Vidal, C. M. Dawson https://arxiv.org/abs/quant-ph/0307177v2 2

Slide 3

Slide 3 text

復習 - 今回出てくる線形群の種類 実行列(GL n (R)) 複素行列(GL n (C)) (実)対称行列: A = AT エルミート行列: A = A† (実)直交行列(O(n)): AAT = ATA = I ユニタリ行列(U(n)): AA† = A†A = I (実)直交行列の行列式: ±1 ユニタリ行列の行列式 : eiθ 特殊直交群SO(n): O(n)のうち、行列式が1のもの 特殊ユニタリ群SU(n): U(n)のうち、行列式が1のもの 3 [1]を読む上で、実行列が非常に重要であった。

Slide 4

Slide 4 text

復習 - エルミート行列、対称行列の対角化 ● エルミート行列はユニタリ行列によって対角化可能 ● (実)対称行列は(実)直交行列によって対角化可能 対称行列が直交行列で対角化可能である(複素行列にならない)ことは、 [1]を読む上で重要であった。 4

Slide 5

Slide 5 text

復習 - 特異値分解(SVD) 任意の行列Xについて、以下に示すXの分解が存在する Xが複素行列: X = UDV† (U, V: ユニタリ行列, D: 実対角行列) Xが実行列: X = UDVT (U, V: 直交行列, D: 実対角行列) これも、実行列のSVDでは、U, Vが直交行列になることが重要であった。 また、Dは(並べ替えを考慮しなければ)一意に定まるが、U, Vは一意ではない。 通常、Dの成分は大きい順に並べるので、本資料でもそのように考える。 Dの各成分は非負であり、0でない成分の数は行列のrankと一致する。 5

Slide 6

Slide 6 text

復習 - 任意のSU(2)を与える量子回路 これは、例えば -[Rz(λ)]-[Ry(θ)]-[Rz(φ)]- によって、作ることができる。 https://github.com/Qiskit/openqasm/blob/master/spec-human/qasm2.pdf 6

Slide 7

Slide 7 text

目的 任意の2量子ビットに対する操作を、既存のゲートを使って作りたい。 すなわち、任意のU(4)を、任意のSU(2)とCNOTのみで表された量子回路(+グローバル 位相)に分解したい。 次のような手順で、これを行う(グローバル位相は無視する) X∈U(4) eiH (1) 以下の分解を行う。ここで、 e-iH = exp(-i(k 1 σ XX + k 2 σ YY + k 3 σ ZZ )) (2) eiHを与える回路を示す (1)はTucciの論文[1]、(2)はVidalの論文[3]による。 e-iHは[3]での記法で、[1]ではei(k0+k・Σ)と書かれるが、本資料では e-iHに統一する。 7

Slide 8

Slide 8 text

(1) 分解を示す [1]より引用 この証明を追っていく。 8

Slide 9

Slide 9 text

行列Mと準同型Φ [1]より引用 ←M(∈SU(4))を このように定義したとき 左のような写像Φを考えることが できて、この写像は ・全射 ・単射ではないが、  任意のQ∈SO(4)について、  Φ(A, B) = Qならば、  Φ(-A, -B) = Qで、  他にΦ(A’, B’) = Qとなる  (A’, B’)の組は存在しない ・準同型(今回、特に使わない ) ・【重要】SO(4)の左右にM, M† を掛けると、テンソル積になる、 と言っている 9

Slide 10

Slide 10 text

分解の流れを追う [1]より引用 (35) 後々のため、このように置き、 X’(∈U(4))について考える。 (36) Cor. 5 (後述)によると、 X’はSO(4) eiΘ SO(4)に分解できる。(eiΘ は対角ユニタリ行列) (37), (38) 先ほど見たとおり、SO(4)は 左右にM, M†をかけるとテンソル積にな る。 (39) eiΘの左右にM, M†をかけるとe-iHに なる。この回路が作れることを後に示 す。 (40) X = MX’M† = MQ L eiΘQ R TM† = MQ L M†MeiΘM†MQ R TM†より従う。 10

Slide 11

Slide 11 text

Lem. 3 X R : Xの実部、X I : Xの虚部 として、 X = X R + iX I とできる。このとき、X I X R T, X I TX R が対称行列になる ことを後で使う。 導出自体は、ただの計算。 [1]より引用 11

Slide 12

Slide 12 text

Thm. 4 (Eckart-Young) ここでは、実の場合のみを使うので、実の場合を追う。 AをSVDすると、A = UD 1 VTとなるような対称行列 U, Vと対角行列D 1 が得られるが、U, Vの選び方は一意では なく、複数存在しうる。 U, Vの選び方のうち、 B = UD 2 VT, D 2 は対角行列、となるような U, Vが、ABTとATBが対称行列のとき、またそのときに限り存在する ことを主張している。 [1]より引用 12

Slide 13

Slide 13 text

Thm. 4 導出(1) (⇒): 自明 (⇐): (16): SVDする。 A = U A A’V A T (17): 先ほど得たU A , V A を使って、 B’ := U A TBV A を作る。 B’は対角行列になる場合もあるが、一般には ならない。 なので、(17)にあるようにG, K, L, Hをおく。 (18), (19): 計算しただけ (20): これにより、L, Kは0で、G, Hのみを考 えればよくなった。 (21): (18), (19)より導ける。 [1]より引用 13

Slide 14

Slide 14 text

Thm. 4 導出(2) [1]より引用 (22), (23): 実の場合、g ji *=g ji で、同様の議 論が成り立つ。Gは対称行列だと分かっ た。 (24): Gを対角化する。Gは対称行列なの で、Pは直交行列(P†はPTと読み替える)と なる。 また、Dは対角行列で、PTP = Iなので、 PTDP = Dも分かる。 (GとDが同時に対角化できた ) (25): HをSVDする。 H = U H D H V H T (26): このようにU, Vを作ることで、 A = UD 1 VT, B = UD 2 VTが成り立っている ことがわかる。 ただし、D 2 は、D G とD H を合わせた対角行 列。 また、U, Vは直交行列であることも容易 に確かめられる。 14

Slide 15

Slide 15 text

Cor. 5 Lem. 3, Thm. 4を使って、任意の ユニタリ行列Xが、 Q L , Q R : 直交行列 eiΘ: 対角ユニタリ行列 によって、X = Q L eiΘQ R Tと表せるこ とを主張している。 (27): Lem. 3より、Xを実部X R と虚 部X I に分けたとき、X I X R T, X I TX R は 対称行列となる。 これは、Thm. 4の分解をするため の必要十分条件であった。 よって、Thm. 4で示した手順で、 (27)式が作れる。Q L , Q R は直交行 列。 (28): eiΘをこのように定義 (29): X = X R +iX i なので(27), (28) より成り立つ。 15 [1]より引用

Slide 16

Slide 16 text

再掲 [1]より引用 (35) 後々のため、このように置き、 X’(∈U(4))について考える。 (36) X’はSO(4) eiΘ SO(4)に分解でき る。(eiΘは対角ユニタリ行列) (Cor. 5) (37), (38) SO(4)は左右にM, M†をかけ るとテンソル積になる。(Thm. 2) (39) eiΘの左右にM, M†をかけるとe-iHに なる (40) X = MX’M†    = MQ L eiΘQ R TM†    = MQ L M†MeiΘM†MQ R TM† より従う。 16

Slide 17

Slide 17 text

[1]の行間を埋める - O(4)をSO(4)に直す Cor. 5では、X∈SU(4), Q L , Q R ∈O(4), eiΘ∈対角SU(4)として、X = Q L eiΘ Q R を示した。 Thm. 2では、O(4)ではなく、SO(4)とSU(2)×SU(2)の関係を示している。 どのようにして、この飛躍を解決するか? ダメだった方法→気にせずにO(4)にM, M†をかける→SU(2)×SU(2)にならなかった 良かった方法→O(4)の行列式は±1である。 Q L の行列式をとり、+1だった場合はそのまま、-1だった場合はQ L の1行目とeiΘの第1成 分を-1倍する。 Q R の行列式をとり、+1だった場合はそのまま、-1だった場合はQ R の1列目とeiΘの第1成 分を-1倍する。 →X = Q L eiΘ Q R の関係を保ったまま、Q L , Q R をSO(4)に変換できた。 17

Slide 18

Slide 18 text

[1]の行間を埋める - A⊗BをAとBに分解する Thm. 2より、Q∈SO(4)について、 MQM† = A⊗Bを示すことができた。 だが、A⊗BからA, Bを求める方法は、それほど自明ではない。 今回、文献[2]に示されている方法を使って、A⊗BをAとBに分解した。 例: 右図下のRx(π/4)⊗Rx(π/4) を見て、右 図上のRx(π/4)2つのテンソル積をとったも のだと分かるだろうか? より複雑なものだと、どうだろう? 18

Slide 19

Slide 19 text

The nearest Kronecker product problem (NKP) 記号を[2]に合わせて、 AをB⊗Cで表すことを考える。写像Φを以下で定義する。([1]の Thm. 2で定義したΦとは全く異なるので注意すること) Φ(B, C) = ||A - B⊗C|| F ||●|| F はフロベニウスノルム(全成分の2乗和のルート) Φが最小となるようなB, Cを求めるのが、この問題の目的である。 便宜上、写像vec: n×m行列→nm次元ベクトル を次で定義する。 vec(A) := Aの列を1列目, 2列目, … と順に、縦につなぎ合わせたもの vec 19

Slide 20

Slide 20 text

NKPを解く(1) 数式変形 [2]より引用 ←単にΦ(B, C) = ||A - B⊗C|| F を書き下しただけ。 ←トリッキーな変形をしている。  見ていけば、確かにそうなっていることは確認できる。  vec(B)vec(C)Tに対応するように、Aを並び替えている。 行列Aを A 11 A 12 A 21 A 22 A 31 A 32 というブロック行列で考えている。 (Cと同じ大きさに分けると、 Bと同じ数だけ出てくる ) 20

Slide 21

Slide 21 text

NKPを解く(2) - SVDによる最小化 (9): 先ほどの、Aを並び替えた行列R(A)をSVDし、UΣV†=R(A)を得た。 ランクを1に落として近似すると、 U, V†の1列目、1行目の√σ 1 倍がちょうど、vec(B), vec(C)に対応し、また、このよ うにして得られたB, Cがフロベニウスノルムを最小にする。 (σ 1 は対角行列Σの第1成分) ※A = B⊗Cと厳密に表せる場合は、ランクは 1になり、フロベニウスノルムは 0となる。  そうでない場合はランク > 1となり、それをランク 1で近似するのでノルム > 0となる。 [2]より引用 21

Slide 22

Slide 22 text

(2) e-iHの量子回路を作る e-iHを示したはいいが、それを作る量子回路は示されていない。 試した方法1→対角ユニタリ行列eiΘはRZとCNOTで作れる。M, M†も作れて、回路がで きた(私が作った方法では、6個のCNOTが必要だった) 試した方法2→論文[3]に示された方法で、3つのCNOTにより作ることができる 論文[3]の方法を以下で説明する。 22

Slide 23

Slide 23 text

e-iHの量子回路 23 [3]より引用 書かれているとおりに実装したが、 合わなかった。 ・h x , h y , h z の符号の調整 ・U3ゲートの手前にSゲートを挟む が必要となった。 これらの調整の結果、 ZParams = [0, -hx, -hy, -hz]として、 c = Circuit() c.cx[0, 1].rx(-2 * ZParams[1] - math.pi)[0].h[0].rz(-ZParams[3] * 2)[1] # - CNOT - (u 2 ⊗v 2 ) - c.cx[0, 1].s[0].h[0].rz(ZParams[2] * 2)[1] # - CNOT - (u 3 ⊗v 3 ) - c.cx[0, 1].sdg[0].h[0].sdg[0].s[1].h[1].s[1] # - CNOT - (w⊗w†) - と実装すれば、合うことが確認できた。

Slide 24

Slide 24 text

結果 [1]より引用 (35) 後々のため、このように置く。 (36) X’はSO(4) eiΘ SO(4)に分解でき る。(eiΘは対角ユニタリ行列) (Cor. 5と「行間を埋める」による) (37), (38) SO(4)は左右にM, M†をかけ るとテンソル積になる。(Thm. 2) [2]の方法により、テンソル積は2つの SU(2)に分解できる。 (39) eiΘの左右にM, M†をかけるとe-iHに なる。e-iHは[3]の方法により量子回路が 作れる。 (40) Xの量子回路への分解が示され た。 24

Slide 25

Slide 25 text

現時点で残っている課題 ● 一部、グローバル位相が合わないユニタリ行列がある ○ どういった場合に合わないか、なぜ合わないか、現時点で掴みきれていないので確認中 ● さらに効率化できる場合がある ○ [3]によると、e-iHのパラメータによっては、 CNOTを2つに減らせることも書かれている ○ また、今の実装では、 SU(2)×SU(2)で表せるユニタリ行列を与えても CNOTを3つ使うようになって いるが、その場合は明らかに CNOTなしで実装可能 ● [1]の文献のcanonical class vectorについて ○ あまり意義が理解できていない ○ 考慮しなくても実装できてしまったが、なにか見逃していることがあるかもしれない 25

Slide 26

Slide 26 text

まとめ [1]をベースに、任意のU(4)の量子回路への変換について、実装を行った。 いくつか[1]で示されていない点があったため、実装を行うにあたり、[2], [3]についても調 査する必要があった。 ランダムなユニタリ行列生成も含め、思いつくものをいくつか試したところ、概ねうまく いっているが、グローバル位相がうまく求まらないもの、明らかに効率の悪い回路を求 めているものもあり、それらも含めて完成度を高めたい。 26