Upgrade to Pro — share decks privately, control downloads, hide ads and more …

任意の2 qubitユニタリのゲートでの実装〜KAK分解を使って〜

266bb3207004f0cbf3780d32e93affdd?s=47 gyu-don
April 28, 2020

任意の2 qubitユニタリのゲートでの実装〜KAK分解を使って〜

任意の4x4ユニタリ行列を1量子ビットの回転ゲートとCNOTゲートの組み合わせで表す方法を調べ、実装したので、その手法についてまとめました。

266bb3207004f0cbf3780d32e93affdd?s=128

gyu-don

April 28, 2020
Tweet

More Decks by gyu-don

Other Decks in Technology

Transcript

  1. 任意の 2 qubit ユニタリの ゲートでの実装 〜KAK分解を使って〜 加藤拓己1, 中田真秀2, 森野慎也, 須郷聖也3,

    湊雄一郎1 1 MDR株式会社, 2 理化学研究所, 3 株式会社Quemix 2020/4/28 1
  2. 読んだ論文 [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
  3. 復習 - 今回出てくる線形群の種類 実行列(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]を読む上で、実行列が非常に重要であった。
  4. 復習 - エルミート行列、対称行列の対角化 • エルミート行列はユニタリ行列によって対角化可能 • (実)対称行列は(実)直交行列によって対角化可能 対称行列が直交行列で対角化可能である(複素行列にならない)ことは、 [1]を読む上で重要であった。 4

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

  7. 目的 任意の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
  8. (1) 分解を示す [1]より引用 この証明を追っていく。 8

  9. 行列Mと準同型Φ [1]より引用 ←M(∈SU(4))を このように定義したとき 左のような写像Φを考えることが できて、この写像は ・全射 ・単射ではないが、  任意のQ∈SO(4)について、  Φ(A,

    B) = Qならば、  Φ(-A, -B) = Qで、  他にΦ(A’, B’) = Qとなる  (A’, B’)の組は存在しない ・準同型(今回、特に使わない ) ・【重要】SO(4)の左右にM, M† を掛けると、テンソル積になる、 と言っている 9
  10. 分解の流れを追う [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
  11. Lem. 3 X R : Xの実部、X I : Xの虚部 として、

    X = X R + iX I とできる。このとき、X I X R T, X I TX R が対称行列になる ことを後で使う。 導出自体は、ただの計算。 [1]より引用 11
  12. 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
  13. 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
  14. 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
  15. 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]より引用
  16. 再掲 [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
  17. [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
  18. [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
  19. 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
  20. 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
  21. 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
  22. (2) e-iHの量子回路を作る e-iHを示したはいいが、それを作る量子回路は示されていない。 試した方法1→対角ユニタリ行列eiΘはRZとCNOTで作れる。M, M†も作れて、回路がで きた(私が作った方法では、6個のCNOTが必要だった) 試した方法2→論文[3]に示された方法で、3つのCNOTにより作ることができる 論文[3]の方法を以下で説明する。 22

  23. 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†) - と実装すれば、合うことが確認できた。
  24. 結果 [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
  25. 現時点で残っている課題 • 一部、グローバル位相が合わないユニタリ行列がある ◦ どういった場合に合わないか、なぜ合わないか、現時点で掴みきれていないので確認中 • さらに効率化できる場合がある ◦ [3]によると、e-iHのパラメータによっては、 CNOTを2つに減らせることも書かれている

    ◦ また、今の実装では、 SU(2)×SU(2)で表せるユニタリ行列を与えても CNOTを3つ使うようになって いるが、その場合は明らかに CNOTなしで実装可能 • [1]の文献のcanonical class vectorについて ◦ あまり意義が理解できていない ◦ 考慮しなくても実装できてしまったが、なにか見逃していることがあるかもしれない 25
  26. まとめ [1]をベースに、任意のU(4)の量子回路への変換について、実装を行った。 いくつか[1]で示されていない点があったため、実装を行うにあたり、[2], [3]についても調 査する必要があった。 ランダムなユニタリ行列生成も含め、思いつくものをいくつか試したところ、概ねうまく いっているが、グローバル位相がうまく求まらないもの、明らかに効率の悪い回路を求 めているものもあり、それらも含めて完成度を高めたい。 26