hwakのトリビアルな雑記集

初めまして、個人研究者のhwakです。個人的に量子アルゴリズムの研究をしております。

blueqatにおけるショットノイズの実装

今回はQiskit_Aquaにおけるレガシーであるスタティスチカルノイズを実装しました[1]。ブルーキャットにはステートベクトル出力が実装されています。実際の量子計算では有限の観測回数で解の存在確率分布を出力しなくてはなりません。ステートベクトル出力はその観測回数を無限大の極限に増大させた結果だと解釈可能です。それ故に、現実の計算ではなくとも、それらにおける存在確率分布の差分がそれらの不確定揺らぎとして出てきます。それがショットノイズです。これは十分な回数観測を行うならほぼ無視できるようになりますが、現実の計算では計算時間が長くならないように少ない回数に抑えます。

そのため、このノイズは実機での計算をシミュレートする強力なツールです。このノイズは、ハミルトニアン [tex: H = \sum{j} c{j} H{j} ] のj番目の要素の不確定性揺らぎを [tex: \Delta H{j} ] とすると、

 \Delta H_{j} = H_{j} - \langle H_{j} \rangle

となります。ここで、  \langle H_{j} \rangle はステートベクトルでとった期待値です。

ここから、ショットノイズは

 S(H) = \sum_{j} c_{j}^2 \langle \Phi \mid \Delta H_{j} \mid \Phi \rangle^2

となります。今回、水素分子のエネルギーにおける基底状態のエネルギーを水素原子間距離を0.1から2.5(Å)まで0.1刻みで変化させてショット数=10,50,100,1000において計算しました。なお、ハミルトニアンクラスターの深さは両方2として、クラスターにはUCCSDを使用し、最適化手法にはBFGS法を使用し、その計算反復回数は50回としました。

図1を見るに、原子間距離が1.5までは精度に大差ないですが、そこからは少し違いが出ます。それ以降はランダムでショット数に関係なく低精度の値がたまに出てきます。これは、水素分子におけるステートベクトルにはゼロではない物のわずかに存在確率を有する状態が多く存在し、これらがショット数を増やすと出てくる上にステートベクトルの値より大きくなるからであると考えられる。

図1 ショット数を10,50,100,1000にした場合におけるショットノイズがある場合の基底エネルギー準位。

図2 ショット数を10,50,100,1000にした場合におけるショットノイズがある場合の基底エネルギー準位における対数エラー。

今回、blueqatにおいてショットノイズを実装してわかったことがあります。blueqatはノイズ周りはほとんどバックエンドだよりで独自のノイズシミュレーションが全く実装されていないということです。ノイズのシミュレーションは量子計算のシミュレーションをするうえで避けては通れない過程です。実機における計算の回数は無料利用枠が設定されているか、従量課金制です。そのため、無料で実機の計算を再現する機能はあってほしいというのが本音です。ショットノイズだけでは実機におけるノイズを再現するには不十分であり、相互作用ノイズ、フリップ、位相シフトなど、細かく設定してノイズをシミュレーションする機能の実装をこの場を借りて求めます。

[1]Ibe, Y., Nakagawa, Y. O., Yamamoto, T., Mitarai, K., Gao, Q., & Kobayashi, T. (2020).

【PR】初心者も安心のサポート充実【DMM FX】

楽天Kobo