Jij Tech Blog

Jij inc.の開発日記です

IBMのNISQデバイスで量子振幅推定アルゴリズム -数値積分による実証-

量子回路で数値積分する方法

演算子 \mathcal{A}と数値積分

こちらの記事の演算子 \mathcal{A} | 0 \rangle_{n} \otimes | 0 \rangleに作用させます。このとき、求めたい状態 | \psi_1 \rangle_nと求めたくない状態 | \psi_0 \rangle_nが補助量子ビット |1 \rangle, |0 \rangleの前に現れます。しかしこの求めたい状態・求めたくない状態はこれまでの議論から直交している必要はなく、任意の状態を選んでよいことがわかります。よって | \psi_1 \rangle_n = | \psi_0 \rangle_ n = | i \rangle_n とします。ここで | i \rangle = |0 \rangle + |1 \rangleです。すると

 \displaystyle{
 | \Psi \rangle_{n+1} 
= \mathcal{A} | 0 \rangle_n \otimes | 0 \rangle 
= \sum_{i=0}^{2^n-1} \frac{1}{\sqrt{2^n}} | i \rangle_n (\sqrt{1-f(x_i)} | 0 \rangle + \sqrt{f(x_i)} | 1 \rangle)
}

この状態で最後の n+1番目の補助量子ビットを測定すると、 |1\rangleが測定される確率は

 \displaystyle{
\sum_{i=0}^{2^n -1} \frac{1}{2^n} f(x_i^\ast)
}

となります。ここで x_i^\ast i番目の分割領域を代表する x座標です。これは積分を離散化した以下の表式

 \displaystyle{
\sum_{i=0}^{N-1} f(x_i^\ast) \frac{1}{N}
}

において分割数を N= 2^nとしたものに等しいです。よってこれから数値積分が行えることがわかります。

量子回路

以下に \int_0^b f(x) dxを数値積分するための量子回路 \mathcal{A}を示します。

Quantum circuit for operator A
演算子Aの量子回路

最初の一般位相ゲート R_yに現れる \alpha \in [0, 1]は、各分割領域内のどの点を積分のための代表点とするかを表す定数です。例えば分割領域の左端の点を代表点とする場合は \alpha = 0、真ん中の点を代表点とする場合は \alpha = 0.5、そして右端の点を代表点とする場合は \alpha = 1.0とします。

具体例

下図のように \sin^2 x 0 \leq x \leq \pi/4、分割数 2^2 = 4、各分割における代表点を真ん中の点 \alpha = 0.5として、積分することを考えましょう。

Four subintervals (discretization)
sin^2 xを4分割で数値積分する図

演算子 \mathcal{A}を量子回路で表すと以下のようになります。

Quantum circuit for the numerical integral
sin^2 xを4分割で数値積分するための量子回路

それでは | 00 \rangle \otimes | 0 \rangleに演算子 \mathcal{A}を作用させましょう。

 \displaystyle{
\begin{align}
\mathcal{A} | 00 \rangle \otimes | 0 \rangle 
=& \frac{1}{2} |00 \rangle \otimes (\cos (\frac{1}{8} \cdot \frac{\pi}{4}) | 0 \rangle + \sin (\frac{1}{8} \cdot \frac{\pi}{4}) | 1 \rangle)
 + \frac{1}{2} |01 \rangle \otimes (\cos (\frac{3}{8} \cdot \frac{\pi}{4}) | 0 \rangle + \sin (\frac{3}{8} \cdot \frac{\pi}{4}) | 1 \rangle) \\ 
 &+ \frac{1}{2} |10 \rangle \otimes (\cos (\frac{5}{8} \cdot \frac{\pi}{4}) | 0 \rangle + \sin (\frac{5}{8} \cdot \frac{\pi}{4}) | 1 \rangle) 
 + \frac{1}{2} |11 \rangle \otimes (\cos (\frac{7}{8} \cdot \frac{\pi}{4}) | 0 \rangle + \sin (\frac{7}{8} \cdot \frac{\pi}{4}) | 1 \rangle)
\end{align}
}

よって最後の補助量子ビット測定したときに |1 \rangleを得る確率は

 \displaystyle{
(\sin^2 (\frac{1}{8} \cdot \frac{\pi}{4})+ \sin^2 (\frac{3}{8} \cdot \frac{\pi}{4})+ \sin^2 (\frac{5}{8} \cdot \frac{\pi}{4})+ \sin^2 (\frac{7}{8} \cdot \frac{\pi}{4})) \cdot \frac{1}{4}
= \sum_{i=0}^{3} \sin^2 (\frac{i + 1/2}{4} \frac{\pi}{4}) \cdot \frac{1}{4} 
= 0.179636
}

となります。これと実際に積分を離散化したもの

 \displaystyle{
\int_0^{\pi/4} \sin^2 x dx \simeq \sum_{i=0}^{3} \sin^2 (x_i^\ast) \frac{\pi/4}{4} 
= \frac{\pi}{4} \sum_{i=0}^{3} \sin^2 (\frac{i + 1/2}{4} \frac{\pi}{4} ) \cdot \frac{1}{4}  
}

を比較すると、量子回路を用いた積分値はこれを \pi/4で割ったものになっていることがわかります。

ここから精度を上げるためには?

分割数は N=2^nより、1量子ビット増やすごとに積分範囲の分割数が2倍され、数値積分の精度が上がることがわかります。しかし、現状では限られた量子ビットの資源しか持ち合わせていないため、これを単純に数を増やすというのは困難です。
よってこの数値積分の精度を上げる手法として、測定を繰り返す手法 Iterative Quantum Amplitude Estimation, IQAE や異なる増幅回数の結果から最尤推定を用いる方法 Maximum Likelihood Quantum Amplitude Estimation, MLQAE などがあります。

この論文の主張

この論文ではIQAEとMLQAEによる数値積分をIBM Qに実装し、2つのどちらがより精度良く数値積分を求めることができるかを比較検証したものです。

2量子ビットでの実装

以下に2量子ビットで増幅演算子 {\mathcal Q}をQiskitで実装したときの図を示します。

Quantum circuit implementation of A and Q of 2-qubit in Qiskit
Qiskitにおいて、2量子ビットで演算子Qを実装したもの

左から順に \mathcal{A},  S_\chi,  A^{-1} (= A^{\dagger}), S_0,  \mathcal{A}となります。元論文とこの記事の表記を合わせると

 \displaystyle{
U_w = S_\chi, \ U_s = \mathcal{A}^\dagger S_0 \mathcal{A}, 
{\mathcal Q} 
= U_s U_w = \mathcal{A}^\dagger S_0 \mathcal{A} S_\chi
}

となります。

MLQAE

tech.j-ij.com

MLQAEにおいて重要なパラメータである \mathcal{Q}を作用させる回数を表す数列には、最も精度良く計算できる等差数列的な増やし方(EIS)を採用します。すなわち {\mathcal A}, {\mathcal QA}, {\mathcal Q^2A}, {\mathcal Q^4A}\cdotsのような量子回路を選びます。

IQAE

tech.j-ij.com

IQAEでは a = \sin \theta_aを計算するための精度を入力する必要があります。ここではその精度を \epsilon = 0.01とします。

数値計算結果

2量子ビットの場合
Error for n=2-qubit domain for MLQAE and IQAE on IBM Q Vigo and the simulator.
IBM Q Vigoとシミュレータにおいて2量子ビットを用いてMLQAEとIQAEで数値積分したときのエラー

縦軸は真の値からのエラーの大きさ、横軸は測定回数です。上左図がMLQAE, そして上右図がIQAEの結果を表しています。Vigo, Q simulatorのどちらを見てもIQAEの方が精度良く数値計算を行えていることがわかります。

3量子ビットの場合
Same as previous figure, but n=3-qubit domain
3量子ビットを用いて先ほどと同じ図

2量子ビットの場合と同じ図を、今度は3量子ビットでプロットしたものです。こちらもやはりIQAEの方が良い結果を出しています。

10量子ビットの場合

こちらはIBM Q simulatorのみの結果をプロットしています。

Error for n=10-qubit domain for MLQAE and IQAE on IBM Q simulator.
IBM Q シミュレータにおいて10量子ビットを用いてMLQAEとIQAEで数値積分したときのエラー

10量子ビットを用いた場合だと、どちらも同じくらいの精度が出ています。

考察: なぜMLQAEは精度が発揮できないのか

MLQAEで良い精度を出すための \mathcal{Q^4 A}回路が深さを持ってしまうことに対して、IQAEは \mathcal{Q}^2をせいぜい4回も繰り返せばその精度を実現できるからであると主張しています。

結言

IQAE, MLQAEの2つの手法のどちらがNISQデバイスにおいて有効であるかを検証した論文をご紹介しました。この論文の主張では、同じ量子振幅推定であってもIQAEの方が良いという結果でした。

文責

中村翔、株式会社Jij
Sho K. NAKAMURA, Jij inc.
憂いの篩 -Pensieve-

※ 疑問点や間違いなどございましたら、お気軽にブログ上でご質問ください。