量子コンピュータの基本 - 符号化の種類と量子状態の表し方
§ この記事の目的
この記事では、量子コンピュータに必要な特有の手続きである符号化について解説します。
§ 符号化とは
量子コンピューター、特に量子コンピューティング技術を機械学習に応用する量子機械学習の分野において、実データをどのように量子コンピューターに取り込めば良いか?が問題となります。
結論から言うと、量子コンピューター上で様々な計算を行う最小単位のデータが量子ビットであり、古典コンピューター(現在我々が普段使用しているコンピューター)のビットに相当するものですが、この一つ一つの量子ビットに(一定の規則のもと)実データを割り当てる手続きが符号化です。
この割り当ての手続きをイメージで描くと以下のようなイメージとなります。(あくまでイメージで、正しい符号化ではありません)
§ いろいろな符号化
符号化の手続きにはいろいろな手法があるので、そのいくつかを見てみましょう。
(1)計算基底符号化
あるベクトル量または配列の各要素が2進数(0または1)で表されたデータの場合、そのデータをそのまま使用して符号化します。符号化すると以下のような量子状態として表現されます。
元のベクトル量の各要素の状態を計算基底状態と呼ぶことから、計算基底符号化と呼ばれます。
一般的に(文字式で)書くと以下のように表現されます。
(2)振幅符号化
元のベクトル量を規格化した実数値とし、量子ビットに順番に振幅値として割り当てる方法です。
元のベクトル量に対してまず規格化を行います。ここでの規格化とは合計で1となるように換算することです。
以下のベクトル
量子ビットに順番に振幅値として割り当てると、量子状態は以下となります。
さらに、元データが配列(行列)の場合も対応できます。
元データが
行列Aのi行j列目の要素を
ただし、以下の規格化条件を満たすものとします。
(3)量子サンプル状態符号化
確率分布変数
量子状態は以下のように表されます。
確率分布変数
(4)ハミルトニアン符号化
ある行列の元データAに対して、以下のような行列Hを定義します。
行列Hはエルミート行列となります。ここで、記号†はエルミート共役です。
さらにHを指数関数化させるとユニタリ行列
このユニタリ演算子を利用し基底ベクトルと掛け合わせることで、量子状態を作ることができます。これらの手続きをハミルトニアン符号化と呼びます。
例えば、ある基底ベクトルを
ここでtはある量子状態から他の量子状態へ変化する際の時間発展に関する変数です。