Jij Tech Blog

Jij inc.の開発日記です

断熱量子計算によるHHLアルゴリズム

問題設定

 N \times Nのエルミート行列 Aとベクトル {\bf b} = (b_1, \dots, b_N)^Tがあったとき、以下の連立一次方程式

 \displaystyle{
A {\bf x} = {\bf b}
}

を満たす {\bf x} = (x_1, \dots, x_N)^Tを求めよ、という問題です。答えとなる

 \displaystyle{
 | {\bf x} \rangle 
:= \frac{\sum_{j=1}^N x_j | j \rangle }{\sqrt{\sum_{j=1}^N |x_j|^2}} 
= \frac{A^{-1} | {\bf b} \rangle}{\|A^{-1} | {\bf b} \rangle \|}
}

という量子状態が求まれば、この問題が解けたことになります。ここで

 \displaystyle{
 | {\bf b} \rangle 
= \frac{\sum_{j=1}^N b_j | j \rangle }{\sqrt{\sum_{j=1}^N |b_j|^2}}
}

です。さらに Aには逆行列が存在し、 \| A \| \leq 1とします。
実際には \epsilonの精度でこの問題を解きたいので、求まった状態 \rho_x

 \displaystyle{
\frac{1}{2} {\rm Tr} | \rho_x - | {\bf x} \rangle \langle {\bf x} | | \leq \epsilon
}

を満たすアルゴリズムを作ることが、この論文のゴールです。

断熱量子計算

ハミルトニアン

ハミルトニアンを

 \displaystyle{
H(s):=
A(s) P^\perp_{\bar{b}} A(s)
}

のように定めます。ここで

 \displaystyle{
A(s) : = (1-s) Z \otimes \mathbb{1} + sX \otimes A \\ 
 | \bar{b} \rangle 
:= | + \rangle \otimes | b\rangle \\
P^\perp_{\bar{b}} 
:= \mathbb{1} - | \bar{b} \rangle \langle \bar{b} |
}

です。さらに X, Zは1量子ビットにおけるパウリ演算子、 | + \rangle Xの固有状態、 s \in [0, 1]はアニーリング時間を表すパラメータです。このハミルトニアンは 2N次元のヒルベルト空間を持ちます。これは N次元の行列 Aに加えて、1つの補助量子ビットを用いるためです。補助量子ビットを用いることで、 A(s)は全ての sに対して逆行列が存在することが保証されます。

基底状態とエネルギーギャップ

基底状態

 \displaystyle{
 | x(s) \rangle 
:= \frac{A(s)^{-1} | \bar{b} \rangle}{\| A(s)^{-1} | \bar{b} \rangle \|}
}

は基底状態で、 H(s) | x(s) \rangle  = 0を満たします。これが唯一存在する基底状態です。 s 0 \rightarrow 1に増加させると

 \displaystyle{
 | {\bf x}(0) \rangle = | - \rangle \otimes | {\bf b} \rangle \rightarrow 
 | {\bf x}(1) \rangle = | + \rangle \otimes | {\bf x} \rangle
}

のように変化します。

エネルギーギャップ

上述のハミルトニアンにおける基底状態と第1励起状態のエネルギーギャップは

 \displaystyle{
\Delta (s) \geq \Delta^\ast (s) := (1-s)^2 + (s/\kappa)^2
}

を満たします。ここで \kappaは行列 Aの条件数です。

条件数とは、その問題のコンピュータでの数値解析しやすさの尺度でその問題がどれだけ数値解析に適しているかを表す指標です。小さな値ほど解析しやすい良条件で、大きな値ほど解析しにくい悪条件となります。

Randomization Method (RM)

通常の量子アニーリングでは sを連続に変化させます。しかしここでは離散的に変化させることで、基底状態の近似射影測定を効果的に計算することができます。このとき、離散的にした sを一定に保つ時間間隔をランダムに決定するため、これをRandomization Method (RM)と呼びます。
RMの計算時間は \mathcal{O} (L^2 / (\epsilon \Delta))であることが知られています。ここで Lはパスの長さ

 \displaystyle{
L 
:= \int_0^1 ds \| | \partial_s x(s) \rangle \|
}

そして \Deltaはハミルトニアンの最小エネルギーギャップです。

アニーリングスケジュール

HHLの断熱量子計算アルゴリズムにおいては

 \displaystyle{
s(v) 
:= \frac{e^{v\frac{\sqrt{1+\kappa^2}}{\sqrt{2} \kappa}} + 2\kappa^2 - \kappa^2 e^{-v \frac{\sqrt{1+\kappa^2}}{\sqrt{2} \kappa}}}{2(1+\kappa^2)} \ 
(v_a \leq v \leq v_b)
}

というアニーリングスケジュールを組むことで、基底状態を求めることができます。ここで

 \displaystyle{
v_a 
:= \frac{\sqrt{2} \kappa}{\sqrt{1+\kappa^2}} \log (\kappa \sqrt{1+ \kappa^2} -\kappa^2) \\
v_b 
:= \frac{\sqrt{2} \kappa}{\sqrt{1+\kappa^2}} \log (\sqrt{1+ \kappa^2} +1)
}

です。このアニーリングスケジュールを v_a < v^1 < v^2 < \cdots < v^q =v_bのように q個に分割します。ここで v^j = v_a + j\delta \ (j=1, \dots, q), \delta = (v_b - v_a)/q、そして s^0 = s(v_a) = 0, s^q = s(v_b) = 1です。 このRMステップ数は q = \Theta (\log^2 (\kappa) / \epsilon)で与えられます。このように qを選ぶことで

 \displaystyle{
1 - |\langle x(s^j) | x(s^{j+1}) \rangle|^2 
= \mathcal{O}(\epsilon/q)
}

となります。

アルゴリズムと計算時間

 j= 1, \dots, qにおいて、ランダムな時間の長さ t^jの元で状態を時間発展させます。 t^j \in [0, 2\pi / \Delta^\ast (s^j)]の一様乱数です。ここで時間発展させるとは、以下のように演算子を次々に掛け合わせていくことに対応します。

 \displaystyle{
e^{-it^q H(s^q)} \cdots e^{-it^1 H(s^1)} | {\bf b} \rangle
}

この方法で解を求めるのにかかる総計算時間は、 T: = \sum_{j=1}^q \langle t^j \rangleを計算して

 \displaystyle{
T = \mathcal{O} (\kappa^2 \log (\kappa) / \epsilon)
}

と算出されます。

アルゴリズムの改良 (エネルギーギャップの増幅)

シンプルな考え方として、このアルゴリズムを高速化する方法の1つに H(s)のエネルギーギャップを大きくすることが考えられます。そのためには、行列の固有値 \lambda > 0 \ (\lambda \ll 1)を大きくするような、例えば固有値を \lambda \rightarrow \pm \sqrt{\lambda}となるような変換を施せば良いです。
そこで新しいハミルトニアンとして、以下のようなものを考えます。

 \displaystyle{
H'(s) 
:= \sigma^+ \otimes A(s) P^\perp_{\bar{b}} + \sigma^- \otimes P^\perp_{\bar{b}} A(s)
}

ここで \sigma^\pm = (X \pm i Y)/2は1つの補助量子ビットにかかる上昇・下降演算子です。このハミルトニアンは 4N次元のヒルベルト空間を持ちます。さらに

 \displaystyle{
(H'(s))^2 
= \left( \begin{array}{cc}
H(s) & {\bf 0} \\
{\bf 0} & P^\perp_{\bar{b}}(A(s))^2 P^\perp_{\bar{b}}
\end{array} \right)
}

となります。上の行列は各ブロックが 2N\times 2Nの行列となります。 B(s) = A(s) P^\perp_{\bar{b}}を用いると、対角ブロックはそれぞれ B(s)^\dagger B(s), B(s) B(s)^\daggerと書けます。このことから、このハミルトニアンは元々のハミルトニアン H(s)と同じエネルギースペクトルを持ちます。

この変換によって、エネルギーギャップは \Delta^\ast (s) \rightarrow \sqrt{\Delta^\ast(s)}となります。よって、時間間隔も t^j \in [0, 2\pi / \sqrt{\Delta^\ast (s^j)}]の一様乱数として選ぶことができます。このとき同様に T: = \sum_{j=1}^q \langle t^j \rangleを計算して

 \displaystyle{
T = \mathcal{O} (\kappa \log (\kappa) / \epsilon)
}

となり、 \kappaに対して線形時間で計算を終了させることができます。

# 数値実験

数値実験結果を以下に示します。この図の Qの添字のデータは H(s)を用いた計算、 Lの添字のデータは H'(s)を用いた計算結果です。

Numerical results
数値実験結果

横軸はRM step数 q、縦軸はエラーの逆数です。各パネルの Nは行列 Aの次元 N\times N \kappaは行列 Aの条件数、 n_{\rm rep}はアルゴリズムの繰り返し回数です。 qに対してほぼ線形になっていることがわかります。

結言

線形時間で連立一次方程式を解く、その手法として断熱量子計算とRMを組み合わせる方法及びそれを理解するための理論をご紹介しました。

文責

中村翔、株式会社Jij
Sho K. NAKAMURA, Jij inc.
憂いの篩 -Pensieve-
※ 疑問点や間違いなどございましたら、お気軽にブログ上でご質問ください。