はじめに
2020年現在量子コンピュータのアプリケーションの方向性が決まってきました。これまで量子アニーリング、量子ゲートNISQと全世界で産業を巻き込みながら検証が進んできましたが、ハードウェア的な制約、ソフトウェア的な制約が極まりつつありながら、次の時代が見えてきました。
量子アニーリング
2012年にカナダのD-Wave社が商用化したと話題になり、組合せ最適化問題と呼ばれる分野に物理のイジングモデルを導入しました。主に、組合せ最適、機械学習の一部をトライしながら2018年ごろまで盛り上がりました。現在の課題は、ソフトウェア面での調整変数の手間やハードウェア面でのビッグプレイヤー不在のため量子ビット数が伸びないなどの問題があります。また、機械学習もイジングモデルでできることには限界があるため、現在はボルツマンマシンなど一部のモデルに限定されています。一方、量子と古典のハイブリッドシステムにおいては少しずつ進展がありながら、社会問題におけるPoCを日々行っている状況です。
NISQ量子ゲート
量子ゲートマシンのうち、エラーが大きくて量子ビットが少ないマシンで主流で行われているのは、量子化学に利用されるVQEや組合せ最適化に利用されるQAOAと言われる変分アルゴリズムを量子古典のハイブリッドで行います。現状は10-25量子ビット程度の問題を解くのがせいぜいで、量子化学よりも組合せ最適化の方が量子ビットが多くなっています。
現実問題は数万ノードの組合せ最適化が古典計算で利用できることもあるので、現状はそれに追いつくにはまだまだ時間がかかりそうです。理論的な枠組みもハイブリッドでは速度が出ないので次の展開を発見するフェーズに入っています。
現在出回っている論文のほとんどはシミュレータを利用して解を出しており、実機での実行にはまだまだ乗り越えるべき山があります。
量子機械学習
量子アニーリングもNISQもそう速度や実用性がすぐに出ないということで次の試みは、誤り訂正理論もしくは機械学習です。誤り訂正理論はソフトウェアよりもミドル側ですが、実用的なアプリケーション探索の文脈では量子機械学習のフェーズに入っています。
量子機械学習は始まったばかりですが、これまでの量子アニーリングのイジングの枠組みとNISQでのVQE/QAOAの変分アルゴリズムの枠組みの両方の知識を活かしながら、既存深層学習の枠組みを統合する形で進んでいます。
量子変分原理から損失関数へ
これまでのNISQ計算では主に量子変分原理と呼ばれる原理を利用して最小値を求めていました。量子機械学習ではこの変分原理の代わりにターゲットとなる値との誤差を求める損失関数が設定されます。この損失関数のエラーの累計を最小にするように機械学習を利用して学習を行います。
この際に注意すべきなのは、本質的に最適化したいのは量子コンピュータの動作の背景にある状態ベクトル・波動関数と呼ばれるものですが、これは直接測定をすることができず、サンプリングなどを通じて間接的に値を手に入れます。
また、状態ベクトルは量子ビット数が1つ増えるごとにサイズが2倍になります。量子ビット数の増加に対して指数増加する関数を最適化するのはとても大変です。最初からある程度の課題が明らかになってきています。現状は全体最適をいきなり行うのは厳しいので、局所最適を繰り返すことで全体をできるだけ最適化する方向に向かっています。
状態ベクトルとサンプリング
シミュレータでは状態ベクトルを利用できますが、実際のマシンではサンプリングで処理をする必要があります。サンプリングの分布が実際の状態ベクトルときちんと揃うかどうかは現状はエラーが多いので、きれいな分布が取れるとは限らないのが難しいところです。
流石に状態ベクトルを直接サンプリングをするのは将来的な応用を狭めるので、シミュレータとしても測定値のサンプルを重視しますが、ツールでは状態ベクトルを効率的に利用するものもあるようで、統一見解はありません。
理想的にはサンプリングをした方がいいですが、シミュレータの場合には計算できるかぎりは状態ベクトルの確率振幅から直接損失関数に対応する期待値を計算するのがしばらく続くと思います。
パラメタライズド量子回路
これまでの量子古典ハイブリッドアルゴリズムの枠組みを踏襲しながら既存の機械学習の主流はVQE/QAOAと呼ばれる変分アルゴの流れを踏襲した、パラメータ化された量子回路を利用するのが主流です。
1、量子ビットをすべて0からスタート
2、データを量子回路を利用して入力
3、パラメータ化された量子回路を準備
4、測定を行う
5、ターゲットとなるデータで損失関数を計算
6、損失関数が最小になるようにパラメータ化された量子回路のパラメータを最適化
となります。これはVQE/QAOAを行っている人なら馴染みのある手順です。
最適化
これまでは量子古典ハイブリッドの古典側の最適化手法はあまり触れられてきませんでした。一般的にはベイズ最適やネルダーミード、powell、GAなど離散最適化を適用できるアルゴリズムを利用して効率的に大域最適、局所最適を通じてパラメータの最適化を行ってきました。
量子機械学習では多くのパラメータを最適化する必要があるため、基本的には重たい計算を利用するのは難しく、高速なアルゴリズムが利用されるようになってきました。深層学習で一般的な勾配計算が主流となりつつあります。
指数増大する状態ベクトルの要素数
最適化したい状態ベクトルの要素数は量子ビット数に対して指数増大しますので、勾配は量子ビットが増えるにつれて急激に捉えづらくなります。そのため、量子回路をそのまま最適化するには難しく、効率的な局所最適計算を開発する必要もありそうです。
実機の利用はまだ難しい
実機はクラウド利用が主流です。パラメータを更新して再度計算する場合、毎回手元のローカルマシンから命令を投げてインターネット経由で計算をする必要があります。学習計算は膨大な回数を計算します。サンプリングで測定値の期待値を求めるための繰り返し計算、期待値から損失関数を求めて、それを最適化する。期待値の正答率一つを見てもかなり難しいものがあります。実際にシミュレーションは状態ベクトルに沿った形で答えを出すと仮定して進めているので、それが満たされない解がたくさんあり、それらを考慮の上で進めなくてはいけません。
シミュレータでいくか実機でいくか
しばらくはシミュレータ中心となり、ハードウェアの企業から依頼があったときには実機というパターンになるでしょう。量子機械学習で現在重要なのは実機を利用することではなく、どういった問題がどのように使えるのか、一番有用そうなモデルなどを探すフェーズであり、実機を使うために莫大な労力を費やすのはそういった目的をもともと持っている場合ですが、日本国内にいる限りはあまりそういった機会はありません。
まずはシミュレータ中心で行い、実機への適用の順番ですが、明らかに実機への搭載は将来的な可能性や実機の性能確認のために必要なくらいです。
実機の場合には、サンプリングを通じて期待値を求めます。シミュレータの場合には、状態ベクトルの確率振幅から求めます。
また、勾配計算も今後は答えを評価するか、量子回路を評価するか今後見ていきたいとお思います。
既存深層学習ツールとの統合
既存の深層学習のツールがどの程度までそのまま利用できるのか未知数なところはありますが、pytorch/tensorflowをベースに機械学習の既存ツールを、パラメタライズド量子回路に適用して角度パラメータの最適化を行うプロセスを統合してハイブリッド計算を行うのがこのあと3年ほど続くと思います。
まとめ
最近2年は量子機械学習が盛り上がっています。現在、機械学習専用のハイブリッド量子古典計算用のプラットフォームがいくつか存在し、PQCモデル、自動微分技術、およびシミュレーターと既存の量子コンピューターの両方へのインターフェースを提供しています。状況としては10年前のディープラーニング開発を彷彿とさせるとのことで、歴史的な部分から学ぶ必要があるのではないでしょうか。
正直今のところ量子コンピュータは期待が大きくて実際に計算できるものはとても小さいです。ハードウェア数十量子ビットありますと言っても、上記のグラフである通り、エラーが大きすぎて計算できて4量子ビットと行ったところです。QAOAは組合せ最適なので19使ってもあまり計算できてませんので除外してもいいと思います。