量子線形回帰
はじめに
線形回帰
, との組 が個与えられたとき
を満たすベクトルを求めることが目的である(としてあり、バイアス項は考慮されているとする)。最小化すべき損失関数は
である。で偏微分した値を0と置くと
を得る。いま行列を定義すると上式より
を得る。任意のについて上式が成り立つから
となり、これより
を得る。である。ところで、任意の行列は特異値分解できるから(特異値分解の詳細はこちらの説明を見てほしい)
と書くことができる。ここで、である。とは直交行列であり
を満たす。また、として
と書くことができる()。式(2)を使うと
を示すことができる。であり、(3)式右辺のに挟まれた行列は行列なので、上の行列は全体として行列の行列になる。式(3)を式(1)に代入すればの解析解を得ることができる。
未知のデータが与えられたときの出力値は以下のように計算される。
ここで、の成分をとした。また、式(2)より
成分をとると
ここで、行列の第j列の列ベクトルをと書くと
を得る。すなわち、の固有値はであり、それに対応する固有ベクトルはである。
線形回帰の量子アルゴリズム
ここでは、前節の定式化を量子コンピュータ上で行う手順を示す。まず最初に、入力データを振幅エンコーディングした状態を用意する。
ここで、添字のは量子ビットを収めるレジスタであり、独立した2つの状態空間であることを示す。式(2)より
を得る。ここで、はそれぞれ行列の第列の列ベクトルである。の密度行列は
となり、Bレジスタの空間でトレースを取ると以下のようになる。
すなわち、行列を埋め込んだ密度行列を得ることできる。式(5)より次式が成り立つことも分かる。
さて、式(6)に、複数ビットからなる3つ目のレジスタを加える。
上の状態のレジスタにユニタリー行列を施し、の固有値をレジスタに入れる(量子位相推定)。
4つ目のレジスタを加えレジスタの値を入力とし算術演算を行う(算術演算や次の回転ゲートの詳細な手順はここを参照のこと)。
さらに、1ビットからなるレジスタを加え、レジスタの各ビットを制御ビットとしレジスタに回転ゲートを施す。
レジスタを測定し0が観測されたとき、上の状態は次の状態に収縮する。
は規格化定数
である。各種演算の逆演算を施しレジスタを初期化する。
レジスタ部分を取り出し、これをと置く。
ここまでの計算で式(3)を振幅に埋め込んだ状態が得られたことになる。さて、未知データが与えられたときの出力値を計算するため次の状態を用意する。
内積を計算すると
を得る。これは式(4)で得た出力値を倍したものである。は求めることができる値なので、内積を計算できれば、未知データに対する出力を得ることができる。今回は、内積計算の量子アルゴリズムには言及しない。
まとめ
線形回帰の量子アルゴリズムについて説明した。上の量子位相推定を行う際にをに施す必要がある。このとき、ここで説明したDensity Matrix Exponentiationを利用する。