common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing
DEEPSCORE
Translation

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

量子振幅推定、量子振幅増幅

Yuichiro Minato

2021/01/23 02:56

#量子ゲート

はじめに

量子コンピュータで目的の精度であるシミュレーションをしたい場合など、その結果としての振幅を精度よく取得するための方法として量子振幅推定があります。

用途

用途は金融や実問題などの社会問題を効率的に解くことができそうです。この量子振幅推定や量子振幅増幅の発展形としてグローバーのアルゴリズムがあります。量子振幅推定、量子振幅増幅はグローバーのアルゴリズムの一般化と言えるでしょう。

参考

MUFG、みずほ銀行(順不同)の方々が論文を出しています。 https://arxiv.org/abs/1904.10246

日本語解説もありました。 「量子コンピュータを用いた高速数値積分」 https://www.mizuho-ir.co.jp/publication/giho/pdf/010_01.pdf

Quantum Amplitude Amplification and Estimation https://arxiv.org/abs/quant-ph/0005055

量子振幅増幅

初期状態の振幅を増幅させることができます。ある関数を設定して、所望の状態を導き出します。

参考: https://whyitsso.net/physics/quantum_mechanics/AA_AE_Grover.html

初期状態

初期状態は任意の量子状態と設定しますが、0状態と1状態の重ね合わせで複素数として、

ψ=cosθψ0+eiϕsinθψ1\mid \psi \rangle = cos \theta \mid \psi_0 \rangle + e^{i\phi} sin \theta \mid \psi_1 \rangle

マーキング

マーキングはψ1\mid \psi_1 \rangleのみにマイナスをつけます。

Umarkingψ0=ψ0Umarkingψ1=ψ1U_{marking}\mid \psi_0 \rangle = \mid \psi_0 \rangle\\ U_{marking}\mid \psi_1 \rangle = -\mid \psi_1 \rangle

次のようにした時、

ψ=[cosθeiϕsinθ]\mid \psi \rangle = \begin{bmatrix}cos \theta \\ e^{i\phi} sin \theta \end{bmatrix}

マーキングの回路は、

Umarking=[1001]U_{marking} = \begin{bmatrix} 1&0 \\ 0&-1 \end{bmatrix}

となれば、

Umarkingψ=[1001][cosθeiϕsinθ]=[cosθeiϕsinθ]U_{marking} \mid \psi \rangle = \begin{bmatrix} 1&0 \\ 0&-1 \end{bmatrix} \begin{bmatrix}cos \theta \\ e^{i\phi} sin \theta \end{bmatrix} = \begin{bmatrix}cos \theta \\ - e^{i\phi} sin \theta \end{bmatrix}

となるようです。

振幅増幅

マーキングした指定の量子状態の振幅を増幅します。

Uaa=2ψψIU_{aa} = 2\mid \psi \rangle \langle \psi \mid - I

とすれば、指定の量子状態の周りでの反転になるので、

Uaa=[2α212αβeiϕ2αβeiϕ2β21]U_{aa} = \begin{bmatrix} 2 \alpha^2 -1 & -2 \alpha \beta e^{-i\phi}\\ -2 \alpha \beta e^{i \phi} & 2 \beta^2 - 1 \end{bmatrix}

となるようです。

複数回の繰り返し

これを複数回繰り返すので、

(UaaUmarking)n=([2α212αβeiϕ2αβeiϕ2β21][1001])n=[2α212αβeiϕ2αβeiϕ12β2]n(U_{aa}U_{marking})^n = (\begin{bmatrix} 2 \alpha^2 -1 & -2 \alpha \beta e^{-i\phi}\\ -2 \alpha \beta e^{i \phi} & 2 \beta^2 - 1 \end{bmatrix} \begin{bmatrix} 1&0 \\ 0&-1 \end{bmatrix})^n \\= \begin{bmatrix} 2 \alpha^2 -1 & -2 \alpha \beta e^{-i\phi}\\ 2 \alpha \beta e^{i \phi} & 1- 2 \beta^2 \end{bmatrix}^n

固有値固有ベクトルをおいて、

量子状態に対して、n回操作した結果は、

cos(2n+1)θψ0+eiϕsin(2n+1)θψ1cos(2n+1)\theta \mid \psi_0 \rangle + e^{i\phi}sin(2n+1)\theta \mid \psi_1 \rangle

こうなりました。所望の回数操作をした後に、振幅がこのようになりました。シミュレーションで使ってもよし、検索で使ってもよし、組合せ最適化で使っても良さそうです。

具体的な利用例としてグローバーのアルゴリズムを見てみます。

グローバーのアルゴリズム

グローバーのアルゴリズムは上記の振幅増幅回路を使って、所望の量子状態の振幅を最大にするように操作をします。

初期状態を+N\mid + \rangle^{\otimes N}とすると、振幅は量子ビット数Nに応じて、12N\frac{1}{\sqrt{2^N}}となり、等分されます。初期のsinθsin\thetaがわかるので、それから試行回数のnがわかります。

最終的な振幅はsinの値を1に持っていきたいので、角度(2n+1)θ=π/2(2n+1)\theta = \pi/2を目指します。

これがグローバーのアルゴリズムで、量子振幅増幅回路の具体例になります。

量子振幅推定

話をグローバーのアルゴリズムから量子振幅増幅に戻します。上記グローバーは振幅を最大化することを目指していました。一方必ずしも振幅を最大化する必要はありません。

あるシミュレーションをした時に、その精度が保証されているので、ある一定の操作を量子オラクルを通じて行った後の振幅を取得したいという需要があります。

金融ではモンテカルロシミュレーションをした後のサンプリング用途で需要があります。振幅がわかれば精度を落とさずに確率分布を求めることができます。

https://arxiv.org/pdf/2006.10656.pdf

量子振幅推定では、位相推定の技術を使うことで、振幅を精度よく求めることができます。出力回路は重ね合わせを準備しておき、振幅増幅回路を位相キックバックで写し、最後に逆量子フーリエ変換で位相を取り出します。

ある量子状態Aを準備。出力回路にはHゲートを適用して起きます。 次に、入力回路に振幅増幅の操作を2k回行いますが、それぞれの結果を出力回路に落としていきます。最終的に、回路を逆量子フーリエ変換で位相を取り出します。

シミュレーションなどに利用することができ、精度を評価することで、速度がルートで速くなるようです。10000回計算が必要な問題が100回で良くなります。

参考:位相キックバック、位相推定

https://qiita.com/YuichiroMinato/items/462bb42283fc642bea9d

今回は振幅増幅、振幅推定、グローバーを確認しました。

以上です。

© 2024, blueqat Inc. All rights reserved