量子コンピュータでの機械学習を仕事でする機会が増えてきました。
初心者?向けに少し状況を確認してみたいと思います。
量子コンピュータを使って機械学習をするのはとても大変なこと
まずはこれを理解していただきたいのが、量子コンピュータを使って機械学習をするのはとても大変なことです。理由はたくさんありますが、
1.現在の量子機械学習は求めたい値を何回もサンプルを取る必要があり、値段が高い量子コンピュータはかなりの負担
2.エラーが多いので収束が難しい
3.結局量子コンピュータのシミュレータを使って計算をするが、それでもかなりの計算量になり、ショートカットを多用することになる
あたりです。計算できなくはないですが、優位性というのがよくわからん研究段階ですので、やった割にあまり成果が出てるのかどうか、量子コンピュータに普段から触れている人にしかわからない恩恵が多いです。
ある程度量子コンピュータの大変さに触れている人なら、これくらい計算できたりデータを学習できるのがすごいと感じる人もいますが、一般の人で量子コンピュータは普通のコンピュータよりもものすごい高速であると期待して取り掛かった人はかなりの失望感を得る可能性があります。
手法は変分量子機械学習がメイン
今の量子機械学習は見事な解法で見事に解いてくれなくて、かなりの泥臭い作業を強いられます。現在ポピュラーな変分量子機械学習はVQEやQAOAといったハイブリッドの流れをくむ方法で計算し、かなり計算量を必要とします。パラメータは角度に実装するため、連続量を取り扱うことはできます。
ただ、実機ではそんな精度が出るわけでもなく、ただひたすらサンプルを取ってテクニックを重ねることで実機で機械学習ができます。それ以外はシミュレータを使うことになりますが、大概のシミュレータではサンプルを取らずに理想的な状態ベクトルの値を取って期待値を計算します。
期待は、量子機械学習でよく使われる値で、特に実数で取り出す場合にはハミルトニアンの期待値と呼ばれる値を計算し、主に特定の量子ビットの0や1の出る回数に依存する値です。この値は0から1までの連続値などを取ることができるので、学習の対象としてよく利用されます。期待値は状態ベクトルからは効率的に計算できますが、サンプリングで求めるにはある程度の精度を取るためにはものすごい数実行する必要があります。
やはり層を重ねる必要が
量子ビットを組合わせていろいろな計算手法がありますが、やはりディープに層を重ねることで精度が上がっていきます。パラメータ数も小さな回路でかなり多くなりますので、シミュレーションを使って実行するのがメインになっています。層を重ねるごとに計算量はかなり増えますので、シミュレータといえども簡単な計算をするだけでも苦労をします。果たしてこれが本当の量子コンピュータの実機でやるとなるとどうなるかというと、1回の学習だけでもやはり軽く数百万円を超えるような計算になります。
ディープな回路はやはり学習には聞きそうですが、その分お金も必要になるというきつい分野です。
量子データを扱うのはよい
量子データという量子の重ね合わせやもつれと呼ばれる状態を含んだデータを扱うのはよさそうです。既存のコンピュータが扱うようなデータを扱うのはなかなか骨が折れます。もちろん将来的にどうなるのかはまだまだわからない状態です。日々新しい機械学習が開発されている状況ですが、とにかくハードウェアの取り扱いとデータの取り扱いが難しいです。
一回はトライしてみてもいいのでは?
量子機械学習はなかなか骨が折れる分野ですが、それでも一度はやってみてこういう感じなのかと楽しむのは大いにありかと思います。だいぶツールもこなれてきたので、楽しくできると思います。以上です。