PennyLane : キー概念 : 量子埋め込み

PennyLane キー概念 : 量子埋め込み (翻訳)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 10/14/2019

* 本ページは、PennyLane : Key Concepts の次のページを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

キー概念 : 量子埋め込み

量子埋め込みは古典的データを 量子特徴マップ を通して Hilbert 空間の量子状態として表します。それは古典的データポイント $x$ を取りそれを量子状態 $| \psi_x \rangle$ を作成して量子回路のゲート・パラメータのセットの中へ変換します。このプロセスは量子アルゴリズムの設計の重要なパートでそれらの計算パワーに影響を与えます — より詳細については、[schuld2018supervised] と [schuld2018quantum] を見てください。

それぞれが $N$ 特徴を持つ、$M$ サンプルから成る古典的入力データを考えましょう、

$$\mathcal{D}=\{x^{(1)}, \ldots, x^{(m)}, \ldots, x^{(M)}\},$$

ここで $x^{(m)}$ は $m=1,\ldots,M$ に対する $N$-次元ベクトルです。このデータを $n$ 量子サブシステム (離散- そして連続-変数量子計算のためにそれぞれ $n$ 量子ビットや $n$ qumode) に埋め込むために、様々な埋め込みテクニックを使用できます、 それらの幾つかは下で簡潔に説明されます。

 

基底埋め込み

基底埋め込みは各入力を量子ビット系の計算基底状態と関連付けます。従って古典的データはバイナリ文字列の形式であらねばなりません。埋め込み量子状態はバイナリ文字列の量子サブシステムの対応する状態への bit-wise 変換です。例えば、$x=1001$ は 4-量子ビット量子状態 $| 1001 \rangle$ により表わされます。このため、古典的情報の 1 ビットは 1 量子サブシステムにより表わされます。

上で言及されたデータセット $D$ を考えましょう。基底埋め込みについては、各サンプルは $N$-bit バイナリ文字列でなければなりません ; $x^{(m)}=(b_1,\ldots,b_N)$ ここで $i=1,\ldots,N$ に対して $b_i \in \{0,1\}$。総ての特徴が単位バイナリ精度 (1 bit) で表わされると仮定すると、各入力サンプル $x^{(m)}$ は量子状態 $| x^{(m)}\rangle$ に直接マップできます。これは、量子サブシステムの数 $n$ が少なくとも $N$ に等しくなければならないことを意味します。 データセット全体は計算基底状態の重ね合わせとして次のように表せます :

$$| \mathcal{D} \rangle = \frac{1}{\sqrt{M}} \sum_{m=1}^{M} |x^{(m)} \rangle.$$

例えば、2 つのサンプル $x^{(1)}=01$ と $x^{(2)}=11$ を含む古典的データセットを持つとします。対応する基底エンコーディングは $| x^{(1)} \rangle=|01 \rangle$ と $| x^{(2)} \rangle=|11 \rangle$ を表わすために 2 つの量子ビットを使用します、結果として :

$$| \mathcal{D} \rangle = \frac{1}{\sqrt{2}}|01 \rangle + \frac{1}{\sqrt{2}} |11 \rangle.$$

Note
$N$ ビットに対して、$2^N$ の可能な基底状態があります。$M \ll 2^N$ が与えられたとき、$D$ の基底埋め込みはスパースです。

 

振幅埋め込み

振幅-埋め込みテクニックでは、データは量子状態の振幅内にエンコードされます。正規化された古典的 $N$-次元データポイント $x$ は $n$-量子ビット状態 $| \psi_x \rangle$ の振幅により次のように表わされます :

$$| \psi_x \rangle = \sum_{i=1}^{N} x_i |i \rangle,$$

ここで $N=2^n$、$x_i$ は $x$ の $i$ 要素、そして $| i \rangle$ は $i$-th 計算基底状態です。この場合、けれども、$x_i$ は異なる数値データ型, e.g., 整数 or 浮動小数点を持つことができます。例えば、振幅埋め込みを使用して 4-次元浮動小数点配列 $x=(1.0, 0.0, -5.5, 0.0)$ をエンコードすることを望むとしましょう。最初のステップはそれを正規化することです、i.e., $x_{norm}=\frac{1}{\sqrt{31.25}}(1.0, 0.0, -5.5, 0.0)$。対応する振幅エンコーディングは $x_{norm}$ を表わすために次のように 2 つの量子ビットを使用します :

$$| \psi_{x_{norm}} \rangle = \frac{1}{\sqrt{31.25}}\left[|00 \rangle – 5.5|10 \rangle\right].$$

上で言及された古典的データセット $D$ を考えましょう。その振幅埋め込みは、総ての入力サンプル $x^{(m)}$ を一緒に次の一つのベクトルに結合するのであれば容易に理解できます :

$$\alpha = C_{norm} \{ x^{(1)}_1, \ldots, x^{(1)}_N, x^{(2)}_1, \ldots, x^{(2)}_N, \ldots, x^{(M)}_1, \ldots, x^{(M)}_N \},$$

ここで $C_{norm}$ は正規化定数です ; このベクトルは正規化されなければなりません $|\alpha|^2=1$。今では入力データセットは計算基底で次のように表わすことがでけいます :

$$| \mathcal{D} \rangle = \sum_{i=1}^{2^n} \alpha_i |i \rangle,$$

ここで $a_i$ は振幅ベクトル $\alpha$ の要素で $| i \rangle$ は計算基底状態です。エンコードされる振幅の数は $N \times M$ です。$n$ 量子ビット系は $2^n$ 振幅を提供しますので、振幅埋め込みは $\boldsymbol{n \geq \log_2({NM})}$ 量子ビットを必要とします

Note
埋め込む振幅の総数, i.e. $N \times M$ が $2^n$ より小さい場合、non-informative 定数が $\alpha$ にパッドできます [schuld2018supervised]。

例えば、それぞれ 2 特徴を持つ 3 サンプルを持つ場合、埋め込む $3\times 2= 6$ 振幅を持ちます。けれども、$2^3=8$ の利用可能な状態を伴い、少なくとも $\lceil \log_2(6)\rceil = 3$ 量子ビットを使用しなければなりません。従って $\alpha$ の最後に $2^3-6=2$ 定数を連結しなければなりません。

Important
同様の埋め込みプロトコルを持つ多くの他の埋め込みテクニックがあります。

例えば、squeezing 埋め込みと displacement 埋め込みは連続変数量子計算モデルで使用されます、そこでは古典的情報は squeezing と displacement 演算子パラメータ内でエンコードされます。Hamiltonian 埋め込みは量子系の evolution で情報をエンコードすることにより暗黙的なテクニックを使用します [schuld2018supervised]。

See also
PennyLane は組込みの埋め込みテンプレートを提供します ; より詳細については pennylane.templates.embeddings を見てください。

 

以上