こんにちは、量子コンピュータはNISQと呼ばれるエラーありのマシンからFTQCと呼ばれるエラー訂正ありのマシンの開発のほうにシフトし始めている関係でアルゴリズムを見直す必要があります。
技術発展と市場規模の変遷
2019年のボストンコンサルティンググループの見通しでは、NISQ時代、量子超越時代、FTQC完成時代と段階的な技術発展とともに市場規模が拡大すると見込まれています。
誤り訂正技術の発展
最新ハードウェアであるイオントラップ方式はそもそものエラー率が低いため、誤り訂正がしやすいといわれており、IonQは16:1もしくは32:1のオーバーヘッドでの誤り訂正を予定しており、2020年には15量子ビットで1論理量子ビットを作る実験に成功しており、従来の見込みよりも少ない量子ビットで誤り訂正をするというロードマップを提供しています。同様にhoneywellのQCCDイオントラップマシンも途中測定を利用した誤り訂正の論文を出すなど、各社FTQCへ向けて少しずつ進んでいます。
多様化するハードウェアと台頭する中国勢
ハードウェアはこれまでの超伝導量子ビット以外に最新のイオントラップ方式、そして次世代の半導体量子ビットと順調にハードウェア開発が発展しており、ナノフォトニクスを利用した光量子コンピュータの開発も全世界で進んでいます。
また、中国も本源量子などのベンチャー企業や大手企業がこぞって量子コンピュータに参入しており、ハードウェアの開発も米国に追いつく勢いでの開発が進んでいます。
継続的に投入される国家予算と民間資金
量子コンピュータは米国の予算、中国の予算、EUの予算など国ごとの巨大予算が投資されるとともに、最近では民間での初の上場によって量子コンピュータは国家の予算と民間の投資予算の両方を獲得し、ますます発展しています。IonQはNY証券取引所に初の上場となりました。
NISQからFTQCへと変化するソフトウェア
市場規模は技術の段階的な変遷とともに拡大していますが、NISQと呼ばれるエラーの多いマシンからFTQCと呼ばれるエラーの少ないマシンへと開発が移行するにつれ、ソフトウェアも変更をする必要があります。
これまで主流であったVQEやQAOAと呼ばれる量子古典ハイブリッド計算はNISQマシンに最適化されていたことから、今後はFTQC向けのアルゴリズムへと変遷をしていきます。その代表格が量子位相推定アルゴリズムです。量子位相推定アルゴリズムは暗号解読や量子化学計算に利用されるため、今後も主流のアルゴリズムとして研究開発が進むと思われます。特にNISQ時代のVQEでは暗号は解けなかったため、暗号の理論はあまり重視されませんでしたが、量子位相推定では暗号解読に利用が可能ということもあり、セキュリティの議論が再燃しています。
拡大する量子コンピュータ実機の利用
これまでは気軽に量子コンピュータを利用することは困難でした。しかし2020年から大手各社が量子コンピュータのサービスを展開し始め、最近ではかなり手軽に量子コンピュータを利用できるようになりました。
量子コンピュータの開発は、4ステップで行われます。まずは、プログラミンをして、シミュレータでテストします。次に実機にかけて、その結果を再度普通のコンピュータで処理します。
早速次世代のアルゴリズムの代表格である量子位相推定をみます
量子位相推定アルゴリズムの重要なところは暗号が解読できるというキラーアプリであるというところにあります。ある行列Uに対して、固有値問題を解くことができます。固有値問題はある与えられた行列Uに対して、固有値を位相と呼ばれる角度シータで求めます。
暗号を解読するにはshorのアルゴリズムを利用します。こちらは、別のスライドを参照してください。
量子化学計算ではこのUが与えられます。また、組合せ最適化問題ではUは自分で作ります。このようにして、Uと対応する固有値を求める問題が解ければ様々な問題が解けるので、これまでのコンピュータでできなかったサイズの問題を効率的に解くことが期待されています。
量子回路
今回はgithubのblueqatのtutorialをベースに解説をします。
Blueqat-tutorials/120_phase_kick_back_ja.ipynb at master · Blueqat/Blueqat-tutorials (github.com)
量子位相推定は量子回路と呼ばれる量子コンピュータに論理ゲートを時間ごとに割り当てる方法で実装されます。ステップは主に上記のとおりです。
上側に結果を取り出す出力回路を。下側に量子状態を入れる入力回路を作ります。ここでポイントは入力量子状態は常に用意されているという前提の資料が多いということです。正直どうやって量子状態を作るのかが難しいのですが、ここでは作れることになっています。今後はこのあたりをどう作っていくのかも研究開発のポイントとなりそうです。今回は事前に準備をします。
そして、出力側回路は重ね合わせ状態というのを作ります。
つぎに位相キックバック回路です。制御ゲートを使って位相を入力回路から出力回路へと部分的に移します。
最後に量子状態はそのままでは結果が取り出せませんので、工夫をして取り出します。
回路の詳細1
今回は求めたい行列Uを位相シフトゲートにします。角度は自分で決められますが、ランダムで作り、それを推定します。また、今回量子状態は事前準備することになっていますので、対応する固有状態である|1>を準備します。
まず最初に上の出力回路をHゲートで重ね合わせ状態にします。|0>と|1>の重ね合わせになります。係数の1/√2は省略しています。
次に位相キックバックをしますが、今回は対応するUに対してCUゲートを準備しますが、位相シフトゲートの制御ゲートとして、制御位相シフトゲートを準備しました。
位相キックバック
まずは位相キックバックです。今回一番重要な回路です。出力回路側が重ね合わせ状態になっており、そこにCUゲートを適用することで、|0>状態に影響を与えず、|1>状態のほうにだけUゲートを適用します。そうすることにより、固有値が|1>状態に確率振幅として現れます。これが位相キックバックです。
ただ、これだけでは量子状態の確率振幅の絶対値は1/√2のままなので、この確率振幅を取り出します。ここでは軸を回転させて、Hゲートをかければよいことになります。
位相の取り出し
Hゲートを適用することで、確率振幅から位相を取り出すことができるようになりました。今回はきれいに|0>状態もしくは|1>状態の出現回数から位相を推定することができます。これは、複数回同じ回路を実行し、そのうち0が出た回数を測定し、全体の回数から割ることで、三角関数の逆関数を利用し、シータの値を推定することができます。
位相推定では、逆量子フーリエ変換をつかうという教科書の記述もありますが、量子ビットを消費しますし、逆量子フーリエ変換を現在のマシンで実行するのは結構なハードルがあるため、今回はサンプリング手法を使って推定を行いました。逆量子フーリエ変換については別の機会で説明をしたいと思います。
今回の説明は以上ですが、実機を使ってrigettiやionqで位相推定を動かすことができます。まだまだ精度が出ませんが、ぜひ実機を使って試してみてください。以上です。