量子コンピュータを活用してデータ社会を乗り切りたいですよね。今日は量子機械学習を始めるにあたってのヒントを考えてみたいと思います。
よく量子機械学習といわれるには二種類ある
理想的な量子コンピュータを想定した汎用量子アルゴリズムと現在のエラーありの量子コンピュータを活用したパラメタライズド量子回路PQCを活用した量子機械学習があります。理想的な量子コンピュータは将来的に手に入るのは先ですし、まだできるかわからないので、PQCをメインに見てみます。
PQCメインの量子機械学習
まず量子回路を準備しますが、そこにはパラメタライズド量子回路といわれるだけあり、パラメータを導入します。パラメータは角度として導入され、任意回転ゲートと呼ばれるものを利用します。パラメータ数はいくつ入れるかとかがノウハウになるわけですが、任意回転ゲートには1量子ビットゲートのほかに、最近は2量子ビットゲートでもパラメータが導入されます。
ハイブリッドで学習
回路は量子コンピュータで動かしますが、学習は既存コンピュータを利用します。主に最適化計算を中心に行います。パラメトリック量子回路自体は角度を導入します。入力データは量子ゲートの形で通常はパラメタライズド回路の前に量子状態の準備として導入されます。量子コンピュータは理想的には状態ベクトルと呼ばれる値を最適化しますが、現実には直接状態ベクトルをとることはできないので、代わりにサンプリングを通じた期待値を計算します。その後、期待値になおると古典ラベルとの比較ができますので、入力データに対応したラベルを損失関数を通じて誤差計算します。そして、その誤差は微分を通じて最適化されます。最適化されるのは角度パラメータなので、パラメタライズド回路が更新され、学習が続きます。
サンプリングと期待値
本来量子コンピュータで計算したいのはスカラー値ではなく、状態ベクトルと呼ばれる場合の数に対応した複素数で書かれたベクトルです。そして、そのベクトルの要素の絶対値の二乗がそれぞれ出現確率に対応しています。状態ベクトルを取得することは原理的にできませんので、実際にはサンプリングと言って複数回同じ量子回路を動かして操作します。そして出てきた答えの分布を利用してそれをラベルと比較できるスカラーの値になおします。
スカラーの値に直す方法は、軸への射影といって測定を行います。測定はたとえばZ軸への射影やX軸への射影など、軸を選べます。好きな軸を設定して測定します。通常はZ軸への射影でいいと思います。
最適化
最適化は微分係数を求めて損失関数が最小・極小に向かうようにパラメータを更新します。微分係数は差分法のほかに、パラメータシフト法を利用して厳密微分を利用します。誤差の精度やパラメータの精度によって変わってきますが、微分を利用するのが無難かと思います。実際の微分を求めた後の最適化手法に関しては通常の深層学習で利用されるようなSGDとその派生アルゴリズムを利用するのがよいと思います。
実機
実機を利用するのは正直大変だと思います。パラメタライズド回路の角度パラメータの精度やサンプリング回数と期待値計算など実機を利用するハードルや課題は多いです。
まとめ
企業として個人として量子コンピュータを利用した機械学習を学ぶ必要がある人は、目的を明確にして辛抱強く進めることが必要になりそうです。PQC自体は既存機械学習との共通項も多いので、量子と古典の両方を同時に学んでおくのが無難かもしれません。