前回は簡単な紹介をしました。2回目は勉強会のために書き起こした資料です。
初回
https://blueqat.com/yuichiro_minato2/7a9121bd-ce8a-4583-8d53-c945e370bd84
最近の量子コンピュータのプログラミングをする時のコツ
量子計算を学んだ後に何をすればよくわからなくなる人が頻発している一方で、仕事をする私たちは忙しい。違いは、目の前に解きたい問題があるかどうか?が違う。
新・量子コンピュータ入門では、まずは解きたい問題の目的に合わせて計算が変わる。
これまでの量子コンピュータの解き方は目的が曖昧だった。NISQ向けハイブリッドでは特にここでは最適化と機械学習を取り上げる。
最適化問題を解く目的と準備するもの
これまでの量子コンピュータの問題では漠然と状態ベクトルや量子状態の話から入るが、新・量子コンピュータ入門ではそのような漠然とした状態はない。
最適化問題を解く目的とモチベーション
・業務最適化で効率化を果たしてコストを下げたい
最適化問題を解くための解法
・QUBOに対応する固有値・固有ベクトルを求めることで最適解を求める
必要なもの
・社会問題のQUBO式への落とし込み(今回は省略)
・QUBOから固有値を求めてくれるアルゴリズム
最適化を解くアルゴリズム候補
最適化を解く際に、効率的に固有値や固有ベクトルを求めるためには、
・QAOA
・VQE
などが候補に上がる。少し前まではQAOAを覚えておけばよかったこともあるが、最近ではQAOAを実行できるほどのマシンがあまりない。
そのため解答精度を上げるためにVQEも候補に上がる。
つまりいい答えを求めるためには手段は選べない!
QAOAの作り方
最近はいろんなテキストもあるから本当は省略したい。
・量子断熱計算
・時間発展
QUBOから求まる時間発展演算子を量子回路としてプロット(ただこれだけ)
量子回路の作り方は結構厳密に決まっており、初期状態を作成、イジングハミルトニアンから得られる時間発展演算子をプロット、横磁場ミキサーハミルトニアンXやその他工夫されたミキサーハミルトニアンを用意する。
などをして、ステップ数pに対応したパラメータ数2pのパラメータを最適化する。
VQEの作り方
適当に量子回路を作って、最小値を求める。回路に特にルールはない。
QAOAもVQEも何を最小にするのか?
変分原理
<psi | H | psi>
問題設定されたQUBO行列Hと量子状態を記述したベクトルpsiで計算されたもの。
[a b] [1 0 [a
0 -1 ] b]
0と1が出る確率の元となる係数が格納されたベクトルで、求めたい行列を挟むと「期待値」が出る。(期待値) = |a|^2 - |b|^2
これを最小化する。
(期待値) = |a|^2 - |b|^2
を最小化するために、最適化ソルバーを使って最小化する。aとbは普通にパラメータを含む。
つまり、今回量子回路で求めたいのは期待値!
これまでは、目的意識なく状態ベクトルを求めて、そこからサンプルをとったり、期待値を求めたりしていたが、今回はきちんと期待値を求めたいという目的意識を持って量子回路を作る。
期待値<psi | H | psi>の形に量子回路を変更する。