はじめに
量子コンピュータを学ぶというのは大事ですが、基本的にどの書籍も基礎から学びます。もちろんベストですが、一方でツールは発達し、量子コンピュータや量子計算の教科書は少し古くなりつつあります。
そもそも話題になっている組み合わせ最適化問題などは当初考慮されていない分野なので教科書などに記載はありません。しかし、現実にgoogle社などの先端企業は組合せ最適を取り扱っていますし、大事なテクニックがたくさんあいります。
ここでは、MDR社に参加したい人も含めて、やるべきことをちょっとまとめてみたいと思います。
youtubeでちょっと話し合ったりもしました。
https://www.youtube.com/watch?v=XD7tpvEhn80&list=PLiZkp9vIC8ye-3KbXHyyY6A48Blb_eUfb&index=3
アプリケーションは4種類
アプリケーションは主に4種類あります。
1、組み合わせ最適化問題
2、量子化学計算
3、機械学習
4、暗号
5、その他
現在のコンピュータは様々なアプリがありますが、今の量子コンピュータの分野ではそんなにたくさんありません。もちろん、たくさんいろいろなのは作れるのですが、現在のマシンの性能の都合上大きく分けて上の4つがあります。
暗号はおもにshorのアルゴリズムと呼ばれるものを使いますが、基本的にはシミュレータを使いますし、専門性が高くて、利用も範囲が限られるので、ここでは割愛したいと思います。詳しく知りたい方は、こちらをみてみてください。
https://speakerdeck.com/gyudon/shorfalsearugorizumu
主に組合せ最適、量子化学計算、機械学習をみてみたいと思います。
基礎から考えると、、、
基礎から考えるとやるべきことは、たくさんあります。
1、量子計算の基本を覚える(量子計算、量子ゲート、測定、状態ベクトルなど)
2、量子計算を利用した応用アルゴリズムの基礎を覚える(時間発展)
3、上記時間発展を変形した変分アルゴリズムを学ぶ
4、変分アルゴリズムに実問題や上記問題をマッピングするフローを覚える
5、シミュレータや実機をつかって解く
です。これをやっていると数年かかりそうです。根つめてやっても結構時間がかかりそうです。ここでは、分野別に最短を目指して考察してみたいと思います。
組合せ最適化
業務効率化を量子コンピュータで考える際に、現在日本では量子コンピュータを使った組み合わせ最適化問題の最先端技術はうまく入ってきていません。
組み合わせ最適化問題を量子コンピュータで実装するには、
1、定式化
2、組合せ最適化アルゴリズムを使う
(3、組合せ最適化アルゴリズムを改造する)
の2、もしくは3ステップが必要です。現在では、量子アニーリングマシンと呼ばれる専用機もあるので、定式化ができればほとんど仕事が終わることが多いです。
ですので、まずは定式化と呼ばれるときたい問題を式の形に落とし込むところを覚えます。量子アニーリングマシンはこれさえできればほぼやることが終わります。
そこからゲート方式の量子コンピュータと呼ばれるマシンでは、組合せ最適化のアルゴリズムを作る必要があります。通常はツールを提供する各社から合わせて提供されていますが、より性能を上げたい場合にはまだ自分で作れますので、作ります。
QAOAというアルゴリズムを作ります。これの中身は角度パラメータがついた回路を交互に実行するもので、論文があるので、それらをpythonなどで再現します。
ステップの3番目では、改造しますが、改造の仕方はいくつかあります。現在世界で一番流行っているのは、Quantum Alternating Operator Ansatzという問題の定式化をちょっと改造するタイプで、興味ある人はこの辺りも見てみてください。
https://qiita.com/YuichiroMinato/items/46839cdaabbb452f2fa1
日本ではなかなか量子ゲートモデルの組合せ最適化をやっている企業が少ないので、もったいないと思っています。
量子回路が分からなくてもいきなりQAOAのライブラリを使うのでもとりあえずは問題は解けますので、量子計算は不要かと思います。
量子化学計算
量子化学計算も手順が決まっています。弊社でも材料メーカーと仕事をしていますが、一番学ぶべきは、
1、VQE
2、PEA
です。VQEは行列の固有値を求めるためのアルゴリズムで、これを使って主に分子軌道計算をします。手順は既存のソフトウェアと量子計算ソフトウェアやシミュレータを組み合わせて使いますが、VQEを使うステップは主に、
1、量子状態の作成
2、ハミルトニアンの時間発展
3、変分計算
です。量子状態の作成とハミルトニアンの時間発展は量子化学計算をしている人なら馴染みがあるので、だいたい困ることは少なくて、変分計算も似たような計算があるようで、困らないこともありますが、知らなくても、だいたい定式化されているので式変形のパターンを覚えることで簡単に対応できます。
量子化学計算は変分計算を覚えることで固有値の期待値を求めることができます。
機械学習
これが一番厄介ですが、いきなり量子機械学習に入ろうとしても困ると思いますが、最適化計算から入るとか、特定のモデルから入るとかがいいと思います。現在は変分計算が主流なので、機械学習も基本的には変分計算を使います。
ボルツマンマシンは一番有名ですが、こちらはRBMなど古典マシンでの理論を参照することも多いので、GANとかVAEとかBMとか機械学習の中でも生成モデルから入ると変分計算と相性が良いのではないでしょうか。
1、ボルツマンマシン
2、その他の生成モデル
などが良いと思います。最近の機械学習はかなりの速度で理論が構築されているので、ついていくのは大変ですが、新しい理論での機械学習の実行など、楽しいことも増えているので、興味ある人はぜひ参入してみてください。
基本は機械学習モデルでのネットワークモデルをゲート操作を使って表現をするというのが主体になっていて、古典計算機で採用されるモデルとはちょっと違ったモデルが流行っています。
量子計算はとりあえずは必要かと思います。
まとめ
やりたいアプリケーションを決めるのが一番大事です。それによって取り掛かりかたが変わります。上記以外の問題も量子計算機で実行はできますが、基本的には定式化やアルゴリズムの開発が必要になりちょっと苦労が増えます。