@yuichirominato 2018.08.11更新 90views

量子コンピュータで量子化学計算

VQE 量子ゲート 量子コンピュータ 量子化学

はじめに

現在、1980年代に量子のシミュレーションや計算用途で考案された量子ゲートモデルの量子コンピュータというものを、Google、IBM、Alibabaなどが開発しており、現在このマシンを活用した量子化学計算が広まり始めていますので、まとめて見たいと思います。


引用:https://gigazine.net/news/20170612-google-49-qubit-quantum-computing/

参考文献

下記のGoogleが出している量子化学計算の実験の論文がわかりやすいので参考にします。

Scalable Quantum Simulation of Molecular Energies
(Received 7 April 2016; published 18 July 2016)
https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

アプリケーション

OpenFermionという量子ゲートマシン向けの量子化学計算用の有名なPythonパッケージがあります。
https://github.com/quantumlib/OpenFermion

MDRからも上記OpenFermionにつながるOpenFermion-Blueqatというパッケージを提供しています。
https://github.com/mdrft/OpenFermion-Blueqat

量子コンピュータでの量子化学計算手順の概要

上記が現在の量子コンピュータで計算を行うフローで、求めたいのは分子軌道計算の安定基底状態です。手順は、

「古典計算機での前処理」
1、ハミルトニアンを準備
2、ボルンオッペンハイマー近似
3、第二量子化
4、ブラビ・キタエフ変換(ジョルダン・ウィグナー変換)

「量子計算機での量子計算」
A、VQE(Variational Quantum Eigensolver)
B、PEA(Phase Estimation Algorithm)

のどちらかで解くことになりますが、PEAアルゴリズムは現在の量子ゲートマシンではエラーが多すぎて計算が難しいので、実質的にVQEを使用することになります。1つ注意はVQEは純粋な量子計算ではなく、量子計算機と古典計算機を順番に繰り返し使用して計算を行うハイブリッドシステムです。

計算結果

Googleによる計算結果は比較的分子のサイズが小さいのでいい結果が出ています。小さいH2分子で計算したところ、理論値の厳密解解と近いものが得られているのがわかります。


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

1、ハミルトニアンの準備

早速内容を見ていきたいと思います。ときたい問題のハミルトニアンは下記のものを使用します。

$H = -\sum_i\frac{\nabla^2_{R_i}}{2M_i}-\sum_i\frac{\nabla^2_{r_i}}{2}-\sum_{i,j}\frac{Z_i}{|R_i-r_j|}+\sum_{i,j>i}\frac{Z_iZ_j}{|R_i-R_j|}+\sum_{i,j>i}\frac{1}{|r_i-r_j|}
$

原子の位置、重さ、電荷を$R_i,M_i,Z_i$として、電子の位置を$r_i$とします。

2、ボルンオッペンハイマー近似

ボルン–オッペンハイマー近似は、原子核の質量が電子の質量よりも遥かに大きいことを使って、電子と原子核の運動を分離して運動を表し、電子状態については、原子核が固定されているものとして、電子波動関数とエネルギー固有値を求めます。上記式で原子の位置を固定すると下記の式が得られます。

$H = -\sum_i\frac{\nabla^2_{r_i}}{2}-\sum_{i,j}\frac{Z_i}{|R_i-r_j|}+\sum_{i,j>i}\frac{1}{|r_i-r_j|}+C
$

3、第二量子化

第二量子化で、上記式を生成消滅演算子で記述される場の量子論に置き換えます。上記近似式を第二量子化すると下記のようになります。

$
H = \sum_{pq}h_{pq}a^{\dagger}_pa_q + \frac{1}{2}\sum_{pqrs}h_{pqrs}a^{\dagger}_pa^{\dagger}_qa_ra_s + C
$

ただし、上記係数は下記のようになります。

$
h_{pq} = \int d \sigma \phi^*(\sigma)\left(\frac{\nabla^2_r}{2}-\sum_i\frac{z_i}{| R_i-r |} \right) \phi_q (\sigma)\\
h_{pqrs} = \int d \sigma_1 d \sigma_2 \frac{\phi^*_p(\sigma_1)\phi^*_q(\sigma_2)\phi_s(\sigma_1)\phi_r(\sigma_2)}{r_1-r_2}
$

4、ブラビ・キタエフ変換(ジョルダン・ウィグナー変換)

第二量子化された式を量子ゲートで計算できるようにマッピングを行う必要があり、その変換は、ブラビ・キタエフ変換もしくはジョルダン・ウィグナー変換が使用されます。以前はジョルダン・ウィグナー変換が使用されていましたが、最近ではより少ない量子ビットで記述できるブラビ・キタエフ変換が広く使用されています。また、STO-nG基底関数系は単一のスレーター型軌道(STO)に対してn個の原始ガウス型軌道をフィッティングするもので、これを利用します。

STO-6G基底関数系をつかうと上記ハミルトニアンは、ブラビキタエフ変換を用いて生成消滅演算子がパウリ演算子に書き換えられて、

$
H = f_01+f_1Z_0+f_2Z_1+f_3Z_2+f_1Z_0Z_1\\
+f_4Z_0Z_2+f_5Z_1Z_3+f_6X_0Z_1X_2+f_6Y_0Z_1Y_2\\
+f_7Z_0Z_1Z_2+f_4Z_0Z_2Z_3+f_3Z_1Z_2Z_3\\
+f_6X_0Z_1X_2Z_3+f_6Y_0Z_1Y_2Z_3+f_7Z_0Z_1Z_2Z_3
$

なんかこれはさらに変形できて、

$
\tilde{H} = g_01+g_1Z_0+g_2Z_1+g_3Z_0Z_1+g_4X_0X_1+g_5Y_0Y_1
$

これにより、量子ゲートモデルで量子シミュレーションができるパウリ演算子の形に変形できました。これを実際に量子コンピュータにかけていきます。Jordan-Wigner変換に関しては別途あとで見たいと思います。


引用:https://arxiv.org/pdf/1208.5986.pdf

この変換は通常フェルミオン演算子を使って導き出す答えを、量子ゲートマシン向けにパウリ演算子に書き換えて計算してから、フェルミオンの結果に戻すというフローに基づいてます。

以下まだまとめきれてませんが、備忘録。少しずつ整理します。VQE(Variational Quantum Eigensolver)


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

VQEはある波動関数を特定のパラメータ$\theta$に対して用意して、その最小の固有値$E_0$になる時の$\theta$から変分法で次の$\theta$を予想して再度次の固有値を求めることをルーチンで行う。

数十回繰り返し計算することで固有値$E$が一定値に漸近するところで大体の値を選ぶ。

パラメータ$\theta$に対応する波動関数はUCC理論により下記のように置けるという。


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007
また、固有値は測定より、


として求められるという。

PEA(Phase Estimation Algorithm)

初期状態の波動関数を選択するという状況は同じで、そこから時間発展操作にトロッタ展開を利用して、ハミルトニアンを作用させていく。

余剰量子ビットはsuperpositionに設定しておき、式は、


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

Jordan-Wigner変換とは?

Jordan-Wigner変換が大事だと量子化学計算の方に伺ったので、これに関してまとめておきたいと思います。有名なBravi-Kitaev変換はJordan-Wigner変換を見てからやった方がいいとのこと。

Jordan-Wigner変換は、スピン演算子をフェルミオンの生成消滅演算子にマッピングする変換で、Pascual JordanとEugene Wignerによって1次元格子モデルが提案された。

引用:https://en.wikipedia.org/wiki/Jordan%E2%80%93Wigner_transformation

生成消滅演算子とパウリ演算子の変換によって、量子コンピュータ分野では特定の問題をゲートマシンで解ける形に変換できるようです。

パウリ行列

パウリ行列(パウリぎょうれつ, 英: Pauli matrices)、パウリのスピン行列(パウリのスピンぎょうれつ, 英: Pauli spin matrices)とは、下に挙げる3つの2×2複素行列の組みのことである。σ(シグマ)で表記されることが多い。量子力学のスピン角運動量や、部分偏極状態の記述方法に関連が深い。1927年に物理学者ヴォルフガング・パウリによって、スピン角運動量の記述のために導入された。

引用:https://ja.wikipedia.org/wiki/%E3%83%91%E3%82%A6%E3%83%AA%E8%A1%8C%E5%88%97

$
\sigma_x = \left(
\begin{array}{cc}
0 & 1 \\
1 & 0
\end{array}
\right),
\sigma_y = \left(
\begin{array}{cc}
0 & -i \\
i & 0
\end{array}
\right),
\sigma_z = \left(
\begin{array}{cc}
1 & 0 \\
0 & -1
\end{array}
\right)
$

環論、結合多元環

交換子というのがでてきますので先に確認しておきます。commutator/anticommutator

commutator 交換子
$[a,b]=ab-ba$

anticommutator 反交換子、交換和
$\{a,b\}=ab+ba$

スピンとフェルミオンのアナロジー

1Dチェーンのj番目のスピン1/2系のパウリ演算子を$\sigma_j^+,\sigma_j^-,\sigma_j^z$とすると、$\{\sigma_j^+,\sigma_j^-\}=1$を満たすので、下記のようにおいてみる。

$\sigma_j^+ = (\sigma_j^x+i\sigma_j^y)/2 = f_j^\dagger$
$\sigma_j^- = (\sigma_j^x-i\sigma_j^y)/2 = f_j$
$\sigma_j^z = f_j^\dagger f_j -1$

ただ、これだと、$\{f_j^\dagger,f_j\} = 1$はみたすが、$[f_j^\dagger,f_j]=0,j \neq k$となってしまって、フェルミオンの条件を正しくみたさないので、1928年にJordanとWignerによって提案された。

$a_j^\dagger = e^{(+i\pi\sum_{k=1}^{j-1}f_k^\dagger f_k)}\cdot f_j^\dagger$
$a_j = e^{(-i\pi\sum_{k=1}^{j-1}f_k^\dagger f_k)}\cdot f_j$
$a_j^\dagger a_j = f_j^\dagger f_j$

位相

上記式の違いは位相差で、フェルミオンの占有するモードの数に依存する。また、$f_k^\dagger f_k \in \{0,1\}$より、

$
e^{(\pm i \pi \sum_{k=1}^{j-1}f_k^\dagger f_k)} = \prod_{k=1}^{j-1}e^{\pm\pi f_k^\dagger f_k} = \prod_{k=1}^{j-1}(1-2f_k^\dagger f_k) = \prod_{k=1}^{j-1}(-\sigma_k^z)
$

ここで、

$
\{a_i^\dagger,a_j\} = \delta_{i,j},\{a_i^\dagger,a_j^\dagger\} = 0,\{a_i,a_j\} = 0
$

を満たしている。また、逆変換は、

$\sigma_j^+ = e^{(-i\pi \sum_{k=1}^{j-1}a_k^\dagger a_k)} a_j^\dagger$
$\sigma_j^- = e^{(-i\pi \sum_{k=1}^{j-1}a_k^\dagger a_k)} a_j^\dagger$
$\sigma_j^z = 2a_j^\dagger a_j-1$

Bravi-Kitaev変換概要

量子シミュレーション分野は種々の問題を解く可能性がある。Jordan-Wigner変換は、O(n)量子ビット操作によるフェミニオン演算子の表現を可能にする一方、Bravyi-Kitaev変換によって、O(log n)の量子ビット操作によって同じ問題を解けることを確認する。

VQE


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

量子計算と古典計算を組み合わせて短い量子回路と余剰量子ビットの必要ない回路で、エラーの多いNISQ(Noisy Intermediate-Scale Quantum Computer)現代世代で計算できるように工夫されている。

PEA


引用:https://journals.aps.org/prx/pdf/10.1103/PhysRevX.6.031007

一方PEAは位相推定で求めたい問題をトロッタ展開して余剰量子ビットを活用してシミュレーションするので、長い量子回路と余剰量子ビットを含む多くの量子ビットを必要とするので、ノイズの多い現行世代には不向き。

参考・引用資料まとめ

変換関連
The Bravyi-Kitaev transformation for quantum computation of
electronic structure
https://arxiv.org/pdf/1208.5986.pdf

Jordan-Wigner transformation
https://en.wikipedia.org/wiki/Jordan%E2%80%93Wigner_transformation

VQE関連
「A variational eigenvalue solver on a quantum processor」
https://arxiv.org/pdf/1304.3061.pdf

数値計算関連
「PyQuanteで第二量子化Hamiltonianの係数数値計算」
https://qiita.com/N-H-Shimada/items/7157d1b186d5f986986f

「OpenFermionでBravyi-Kitaev変換」
https://qiita.com/N-H-Shimada/items/dd038980b988c6be3cff

「OpenFermion+Psi4でH2分子の基底エネルギー計算 (厳密対角化)」
https://qiita.com/N-H-Shimada/items/c13a7538b577a71b0f8a

あわせて読みたい

SERVICE

汎用量子コンピュータ向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

汎用量子コンピュータ向け高速シミュレータ

詳しく見る

量子コンピュータ向けクラウドサービス(準備中)

詳しく見る

イジングマシン向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

COMMUNITY

量子コンピュータのことを学びたい、仕事としたいなどの情報交換の場を設け、コミュニティの形成を進めています。オフラインの勉強会と、オンラインのチャットコミュニティの2種類あります。オフラインのConnpassは1400名、オンラインのSlackは880名を超える参加があります。どちらも無料ですのでお気軽にご参加ください。

CONNPASS SLACK

CONTACT

弊社あての連絡はinfo@mdrft.comより用件を明記の上、メールで連絡を頂けますと幸いです。

ブログトップに戻る

Recent Posts