量子コンピュータによるポートフォリオ最適化(Part 2: 量子アルゴリズムによる最適化)

📅 January 19, 2020

⏱️17 min read

0

Photo by Tengy Art on Unsplash

Part 1ではポートフォリオ最適化の理論について紹介しました.ポートフォリオの分散の最小化問題が,

(00R00SRSΣ)(ηθω)=(μpξ0)\begin{aligned} \begin{pmatrix} 0 & 0 & \bm{R}^\top \\ 0 & 0 & \bm{S}^\top \\ \bm{R} & \bm{S} & \Sigma \end{pmatrix} \begin{pmatrix} \eta \\ \theta \\ \bm{\omega} \end{pmatrix}= \begin{pmatrix} \mu_p^\ast \\ \xi \\ \bm{0} \end{pmatrix} \end{aligned}

で表される連立方程式を解くことに帰着することを見ました.

Part 2では量子アルゴリズムを用いてこの連立方程式を解く方法について見ていきます.1古典アルゴリズムではO(N3)O(N^3)の計算量が必要ですが,量子アルゴリズムではO(log(N))O(\log(N))となり,指数加速が得られます.

ちなみに位相推定を行うためにはAAがエルミートでなければならないという条件があります.ですが,AAがエルミートでない場合でも,

B=(0AA0)B = \begin{pmatrix} 0 & A^\dagger \\ A & 0 \end{pmatrix}

で定義されるエルミート行列BBに関して計算を行ってやれば良いので,AAのエルミート性は問題にはなりません.

実はPart 3も予定していて,そちらでは更に現実的な制約を入れたポートフォリオ最適化問題について考えます.制約を入れた場合には,二次錘計画問題(SOCP: Second Order Cone Programming)に帰着させることで,量子内点法と呼ばれるアルゴリズムを用いることができることを見ます.

逆行列計算

今,解きたい問題は行列あるAAとベクトルx,b\bm{x},\bm{b}があって,

Ax=bA\bm{x}=\bm{b}

となっているとき

x=A1b\bm{x} = A^{-1}\bm{b}

を求める問題です.

ブラケットによる表記を用いると上の逆行列計算は

x>=A1b>\left| \bm{x} \right> = \left| A^{-1}\bm{b} \right>

と書くことができます.

このような逆行列計算はHHLアルゴリズムと呼ばれる量子アルゴリズムを用いて計算可能です.

具体的なアルゴリズムの説明の前に,x,b\bm{x},\bm{b}x>,b>\left| \bm{x} \right>, \left| \bm{b} \right>とどう対応付けるか?つまり量子状態をつかって情報をどう表現するかを見てみます.

量子状態への埋め込み

量子状態へ情報を埋め込む方法としては離散化してビット列に埋め込む方法と,振幅として埋め込む方法があります2 前者をデジタルエンコーディング,後者をアナログエンコーディングと呼ぶことにします.

デジタルエンコーディング

ある情報jjを2進数で表したものをbin(j)\mathrm{bin}(j)とすると

bin(j)>\left| \mathrm{bin}(j) \right>

として量子状態に埋め込むことをデジタルエンコードと呼ぶことにします.ただし,以降では表記を簡単にするために,bin\mathrm{bin}省略して

j>\left| j \right>

と表記します. 例えば,3量子ビットの系を考えると,jjが整数88である場合にbin(8)=100\mathrm{bin}(8)=100とあらわされるので,

8>=1>0>0>\left| 8 \right>=\left| 1 \right>\otimes\left| 0 \right>\otimes\left| 0 \right>

というエンコーディングを行うことを指します. もちろん,埋め込みたいデータが厳密に2進表示できる場合は誤差なく埋め込みできますが,2進表示できない場合には丸め誤差が発生します.

アナログエンコーディング

ベクトルx=(x1,x2,,xN)\bm{x}=(x_1,x_2,\dots,x_N)^\topに対して

x>=1jxj2j=1Nxjj>\left| \bm{x} \right> = \frac{1}{\sqrt{\sum_j|x_j|^2}}\sum_{j=1}^Nx_j\left| j \right>

として埋め込むことをアナログエンコードと呼ぶことにします.

HHLアルゴリズム

準備ができたのでHHLアルゴリズムによる逆行列計算を見ていきます.

目標は

x>=A1b>\left| \bm{x} \right> = \left| A^{-1}\bm{b} \right>

を求めることです.

仮定としては

b>=jbjj>\left| \bm{b} \right> = \sum_jb_j\left|j\right>

がすでに得られていること,AAが疎であること

このアルゴリズムのポイントとしては

  1. b\bm{b}に対してAAの固有ベクトルによる展開を考える.
  2. 量子計算では固有値(の近似値)をデジタルエンコードできる.(量子位相推定)
  3. デジタルエンコードされた状態λj>aj>\left| \lambda_j \right>\left| \bm{a}_j \right>からアナログエンコードされた状態λj1aj>\lambda_j^{-1}\left| \bm{a}_j \right>に変換することができる.(デジタルアナログ変換)

という点が挙げれられます.

1. 固有ベクトルによる展開

AAの固有ベクトルとその固有値を{ai},{λi}\{ \bm{a}_i\}, \{\lambda_i\}とすると

Aai=λiaiA\bm{a}_i =\lambda_i\bm{a}_i

から

A1ai=λi1aiA^{-1} \bm{a}_i =\lambda_i^{-1} \bm{a}_i

がすぐに分かります.

さてb\bm{b}AAの固有ベクトル{ai}\{\bm{a}_i\}で展開します.

b=iβiai \bm{b} =\sum_i \beta_i\bm{a}_i

ここで上の関係を用いると

A1b=iβiλi1aiA^{-1} \bm{b}=\sum_i \beta_i\lambda_i^{-1}\bm{a}_i

となることがわかります.

量子状態を使えば,逆行列計算を求める,という目標は

A1b>iβiλi1ai>\left| A^{-1}\bm{b} \right>\propto\sum_i \beta_i\lambda_i^{-1}\left|\bm{a}_i \right>

を作ってやる,という目標に置き換えることができます.

さて,仮定から

b>=jbjj>\left| \bm{b} \right> = \sum_jb_j\left|j \right>

を持っていますが,基底を取り替えることで

b>=1iβi2iβiai>\left| \bm{b} \right> = \frac{1}{\sqrt{\sum_i|\beta_i|^2}}\sum_i\beta_i\left|\bm{a}_i \right>

を持っている,と解釈することもできます.

そうするとやりたいことは

ai>\left| \bm{a}_i \right>

から

λi1ai>\lambda_i^{-1}\left|\bm{a}_i \right>

を作る演算ができれば,b>\left| \bm{b}\right>に対してその演算を作用させればいい,ということになります.

ということで,ai>λi1ai>\left| \bm{a}_i \right>\rightarrow\lambda_i^{-1}\left|\bm{a}_i \right>を考えたいですが,一度位相推定によりλi>ai>\left| \lambda_i \right>\left| \bm{a}_i \right>を経由するとこれが可能であることを見ていきます.

2. 量子位相推定

ユニタリ演算子UUの固有状態を{uj>}\{\left| \bm{u}_j \right>\}とし,その固有値を{ei2πηj,ηiR}\{e^{i2\pi\eta_j},\eta_i \in \mathcal{R}\}とします.UUがユニタリの場合には常に固有値はこの形にかけることに注意します.

量子位相推定(Quantum Phase Estimation)では

uj>ηj>uj>\left| \bm{u}_j \right> \rightarrow \left| \eta_j \right>\left| \bm{u}_j \right>

として,固有値の位相をデジタルエンコードすることが可能です.

まず,ηi\eta_iを2進小数で表示すると,

ηi=k=1M2kηi,k\eta_i=\sum_{k=1}^M2^{-k}\eta_{i,k}

となります.

M個の補助量子ビットを用いて,Hadamardゲートと制御量子ビットをk>\left|k \right>とするcontrol-UkU^kを用いると,

uj>HM12n/2k=02M1k>uj>controlUk12n/2k=02M1exp(i2πk(k=1M2kηj,k))k>uj>=12n/2k=02M1exp(i2πkηj)k>uj>\begin{aligned} \left| \bm{u}_j \right> &\stackrel{H^{\otimes M}}{\rightarrow} \frac{1}{2^{n/2}}\sum_{k=0}^{2^M-1}\left| k \right>\left| \bm{u}_j \right> \\ & \stackrel{\mathrm{control-}U^k}{\rightarrow} \frac{1}{2^{n/2}}\sum_{k=0}^{2^M-1}\exp\left(i2\pi k\left(\sum_{k'=1}^M2^{-k'}\eta_{j,k'}\right)\right)\left| k \right>\left| \bm{u}_j \right>\\ & = \frac{1}{2^{n/2}}\sum_{k=0}^{2^M-1}\exp\left(i2\pi k\eta_j\right)\left| k \right>\left| \bm{u}_j \right> \end{aligned}

が得られます.

これに量子逆フーリエ変換を行ってやると

12n/2k=02M1exp(i2πkηj)k>uj>IQFTηj>uj>\begin{aligned} \frac{1}{2^{n/2}}\sum_{k=0}^{2^M-1}\exp\left(i 2\pi k\eta_j\right)\left| k \right>\left| \bm{u}_j \right> \stackrel{I-QFT}{\rightarrow}\left| \eta_j \right>\left| \bm{u}_j \right> \end{aligned}

となります.

さて,HHLのサブルーチンとしてはU=ei2πAU=e^{i2\pi A}に対して量子位相推定を用いると

ai>λi>ai>\left| \bm{a}_i \right> \rightarrow \left| \lambda_i \right>\left| \bm{a}_i \right>

として,固有値をデジタルエンコードすることが可能です.eiAe^{iA}がユニタリになる必要があるために,AAがエルミートである,という条件が出てきます.

3. デジタルアナログ変換

制御回転ゲートにより,

λi>ai>λi>(ai>λi10>+1λi21>)\left| \lambda_i \right>\left| \bm{a}_i \right>\rightarrow\left| \lambda_i \right>\left(\left| \bm{a}_i \right>\lambda_i^{-1}\left| 0 \right>+\sqrt{1-\lambda_i^{-2}}\left|1 \right>\right)

とすることが可能です.その後余計なレジスタλi>\left| \lambda_i \right>を位相推定の逆演算により0>\left| 0 \right>に戻し,一番右の量子ビットに対して射影測定を行ってやれば,

λi1ai>\lambda_i^{-1}\left| \bm{a}_i \right>

が得られます.

ここまでをまとめると

b>=1iβi2iβiai>QPE1iβi2iβiλi>ai>DAconv.1iβiλi12iβiλi1ai>\begin{aligned} \left| \bm{b} \right> = \frac{1}{\sqrt{\sum_i|\beta_i|^2}} \sum_{i}\beta_i\left| \bm{a}_i \right> &\stackrel{\mathrm{QPE}}{\rightarrow} \frac{1}{\sqrt{\sum_i|\beta_i|^2}}\sum_{i}\beta_i\left| \lambda_i \right> \left| \bm{a}_i \right> \\ &\stackrel{\mathrm{DA conv.}}{\rightarrow}\frac{1}{\sqrt{\sum_i|\beta_i\lambda_i^{-1}|^2}}\sum_{i}\beta_i \lambda_i^{-1} \left| \bm{a}_i \right> \end{aligned}

となり,目標であった

A1b>=1iβiλi12iβiλi1ai>\left| A^{-1}\bm{b}\right> = \frac{1}{\sqrt{\sum_i|\beta_i\lambda_i^{-1}|^2}}\sum_{i}\beta_i \lambda_i^{-1} \left| \bm{a}_i \right>

を得ることができました.

計算量について

このHHLアルゴリズムについてはAAの最大固有値と最小固有値の比κ\kappaAAの次元NNに関してO(polylog(N))O(\mathrm{poly}\log(N))かつO(poly(κ))O(\mathrm{poly}(\kappa))となるため,古典のアルゴリズムに対して指数加速が得られることがわかってます.

注意点

このHHLアルゴリズムにはいくつか注意点があって,

  1. 行列AAがスパースである必要があります.
  2. 古典の情報x\bm{x}が与えられたとき,量子状態x>\left| \bm{x} \right>をどう用意するか?という問題があります.単純に考えると,この「準備」にO(N)O(N)かかってしまうので,指数加速が得られなくなってしまいます.
  3. 同様に,得られた状態A1b>\left| A^{-1}\bm{b} \right>の振幅を読み出そうとするとO(N)O(N)かかってしまいます.そのため,量子加速を得るためには得られた状態を使って何かしらの統計量を求めたり,射影測定によって情報の一部だけを抽出する必要があります.ポートフォリオ最適化に関して言うとポートフォリオのリスク指標などを求めたり,あるセクターに関するウエイトを推定したりする必要があります.
0