変分量子固有値ソルバー(VQE)
このレッスンでは、変分量子固有値ソルバー(Variational Quantum Eigensolver、VQE)を紹介し、量子コンピューティングにおける基礎的なアルゴリズムとしての重要性を説明するとともに、その強みと弱みも探っていきます。VQE単体では、補助的な手法なしに現代のユーティリティスケールな量子計算に対応するには不十分な可能性があります。しかしながら、古典-量子ハイブリッド手法の原型として重要であり、より高度なアルゴリズムの多くの基盤となっています。
このビデオは、VQEとその効率性に影響する要因の概要を示しています。以下のテキストでは、さらに詳しい説明と、Qiskitを使ったVQEの実装を行います。
1. VQEとは何か?
変分量子固有値ソルバーは、古典コンピューティングと量子コンピューティングを組み合わせてタスクを達成するアルゴリズムです。VQE計算には主に4つの構成要素があります。
- 演算子:最適化したいシステムの特性を記述するハミルトニアン( と呼びます)であることが多いです。言い換えると、この演算子の最小固有値に対応する固有ベクトルを求めることです。その固有ベクトルを「基底状態」と呼びます。
- 「アンザッツ(ansatz)」(ドイツ語で「アプローチ」を意味する言葉):これは、求めている固有ベクトルを近似する量子状態を準備する量子回路です。アンザッツはある種の量子回路の族(ファミリー)であり、回路内のいくつかのゲートはパラメータ化されています。つまり、変化させることができるパラメータが与えられています。この量子回路の族によって、基底状態を近似する量子状態の族を準備することができます。
- エスティメータ(推定器):現在の変分量子状態における演算子 の期待値を推定する手段です。求めたいものがこの期待値(コスト関数と呼びます)だけの場合もあります。また、1つ以上の期待値から始まるより複雑な関数が必要な場合もあります。
- 古典的オプティマイザ(最適化器):コスト関数を最小化しようとしてパラメータを変化させるアルゴリズムです。
それぞれの構成要素についてさらに詳しく見ていきましょう。
1.1 演算子(ハミルトニアン)
VQE問題の中心には、対象とするシステムを記述する演算子があります。ここでは、この演算子の最小固有値と対応する固有ベクトルが、何らかの科学的または業務上の目的に有用であると仮定します。例えば、分子を記述する化学ハミルトニアンでは、演算子の最小固有値が分子の基底状態エネルギーに対応し、対応する固有状態が分子の形状や電子配置を表します。あるいは演算子が最適化すべき特定のプロセスのコストを記述し、固有状態がルートや手順に対応する場合もあります。物理学などの分野では「ハミルトニアン」はほぼ常に物理系のエネルギーを記述する演算子を指します。しかし量子コンピューティングでは、ビジネスや物流の問題を記述する量子演算子も「ハミルトニアン」と呼ぶことが一般的です。ここではその慣例に従います 。

物理的または最適化問題を量子ビットにマッピングすることは一般的に非自明なタスクですが、その詳細はこのコースの焦点ではありません。問題を量子演算子にマッピングする一般的な議論は Quantum computing in practice で確認できます。化学問題を量子演算子にマッピングする詳細については Quantum Chemistry with VQE を参照してください。
このコースでは、ハミルトニアンの形式が既知であると仮定します。例えば、単純な水素分子のハミルトニアン(特定の活性空間の仮定のもと、Jordan-Wignerマッパーを使用)は次のようになります。
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(
[
"IIII",
"IIIZ",
"IZII",
"IIZI",
"ZIII",
"IZIZ",
"IIZZ",
"ZIIZ",
"IZZI",
"ZZII",
"ZIZI",
"YYYY",
"XXYY",
"YYXX",
"XXXX",
],
coeffs=[
-0.09820182 + 0.0j,
-0.1740751 + 0.0j,
-0.1740751 + 0.0j,
0.2242933 + 0.0j,
0.2242933 + 0.0j,
0.16891402 + 0.0j,
0.1210099 + 0.0j,
0.16631441 + 0.0j,
0.16631441 + 0.0j,
0.1210099 + 0.0j,
0.17504456 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
],
)
上記のハミルトニアンには、ZZII や YYYY のような項が含まれており、互いに非可換です。つまり ZZII を評価するには量子ビット3でパウリZ演算子を測定する必要があります(他の測定も含む)。一方 YYYY を評価するには同じ量子ビット3でパウリY演算子を測定する必要があります。同じ量子ビット上のY演算子とZ演算子の間には不確定性関係があるため、これらを同時に測定することはできません。この点については後で再び取り上げます。
上記のハミルトニアンは の行列演算子です。最小エネルギー固有値を求めるために演算子を対角化することは難しくありません。
import numpy as np
A = np.array(hamiltonian)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print("The ground state energy is ", min(eigenvalues), "hartrees")
The ground state energy is -1.1459778447627311 hartrees
古典的な総当たり固有値ソルバーでは、医薬品やタンパク質のような非常に大きな原子系のエネルギーや幾何学的構造を記述するためにスケールすることができません。VQEは、この問題に量子コンピューティングを活用しようとする初期の取り組みの1つです。
このレッスンでは上記よりはるかに大きなハミルトニアンを扱いますが、このコースの後半でVQEを補完・代替するより高度なツールを紹介する前に、VQEの限界を無理に押し広げることは避けたいと思います。
1.2 アンザッツ
「ansatz(アンザッツ)」はドイツ語で「アプローチ」を意味します。ドイツ語の正式な複数形は「ansätze」ですが、「ansatzes」や「ansatze」とも表記されることがあります。VQEの文脈では、アンザッツは研究しているシステムの基底状態に最も近い多量子ビット波動関数を生成するために使う量子回路であり、演算子の最低期待値を生成するものです。この量子回路は変分パラメータ(変数のベクトル にまとめられることが多い)を含みます。

変分パラメータの初期値 を選択します。回路上でのアンザッツのユニタリ操作を と呼びます。IBM®量子コンピュータでは、デフォルトですべての量子ビットが 状態に初期化されます。回路を実行すると、量子ビットの状態は次のようになります。
(物理系の言語を使うと)最低エネルギーだけが必要であれば、エネルギーを何度も測定して最小値を取ることで推定できます。しかし通常は、最低エネルギーまたは固有値をもたらす配置も知りたいと思います。次のステップはハミルトニアンの期待値の推定であり、これは量子測定によって達成されます。このプロ セスを定性的に理解するには、エネルギー を測定する確率 が期待値と関係していることに注目します。
確率 は、固有状態 と現在のシステム状態 の重なりにも関係しています。
したがって、ハミルトニアンを構成するパウリ演算子を多数測定することで、現在のシステム状態 におけるハミルトニアンの期待値を推定できます。次のステップは、パラメータ を変化させて、システムの最低エネルギー(基底)状態により近づくことです。アンザッツに変分パラメータが含まれているため、これは 変分形式(variational form) とも呼ばれることがあります。
変分プロセスの前に、「良い推測」状態から始めることが有用な場合が多いことに注目してください。システムについて十分な知識があれば、 よりも良い初期推測を行うことができます。例えば、化学応用ではハートリー-フォック状態に量子ビットを初期化することが一般的です。変分パラメータを含まないこの初期推測を 参照状態(reference state) と呼びます。参照状態を生成するために使う量子回路を とします。参照 状態とアンザッツの残りの部分を区別する必要がある場合は、 を使います。同等の表現として
1.3 エスティメータ
特定の変分状態 におけるハミルトニアンの期待値を推定する方法が必要です。演算子 全体を直接測定できれば、多数( 回とします)の測定値を平均するだけで済みます。
ここで 記号は、この期待値が の極限でのみ正確であることを示しています。回路上で何千もの測定が行われれば、期待値のサンプリング誤差は比較的低くなります。ただし、非常に精密な計算ではノイズなどの考慮事項が問題になります。
しかし一般的に、 を一度に測定することはできません。 は互いに非可換なパウリX、Y、Z演算子を複数含む場合があります。そのためハミルトニアンは、同時測定可能な演算子のグループに分解し、各グループを個別に推定してから結果を合算して期待値を得る必要があります。これについては次のレッスンで、古典的・量子的アプローチのスケーリングについて議論する際にさらに詳しく取り上げます。この測定の複雑さが、そのような推定を効率的に実行するための高度なコードが必要な理由の一つです。このレッスン以降では、この目的のためにQiskit Runtimeプリミティブ Estimator を使用します。
1.4 古典的オプティマイザ
古典的オプティマイザは、目的関数の極値(通常は最小値)を見つけるように設計された任意の古典的アルゴリズムです。可能なパラメータの空間を検索して、対象の関数を最小化するセットを見つけます。大まかに分類すると、勾配情報を利用する勾配法と、ブラックボックスとして動作する勾配なし法に分けられます。古典的オプティマイザの選択は、特に量子ハードウェアのノイズが存在する場合に、アルゴリズムの性能に大きく影響します。この分野でよく使われるオプティマイザにはAdam、AMSGrad、SPSAがあり、ノイズ環境で有望な結果を示しています。より伝統的なオプティマイザにはCOBYLAやSLSQPがあります。
一般的なワークフロー(セクション3.3で実演)は、これらのアルゴリズムの一つをscipyの minimize 関数などのミニマイザ内のメソッドとして使用することです。引数として以下のものを取ります。
- 最小化する関数。多くの場合、エネルギー期待値です。ただし一般的には「コスト関数」と呼ばれます。
- 検索を始めるパラメータのセット。多くの場合 または と呼ばれます。
- コスト関数の引数を含む引数群。QiskitによるQCでは、アンザッツ、ハミルトニアン、次のサブセクションで詳しく説明するエスティメータが引数に含まれます。
- 最小化の「メソッド」。パラメータ空間を検索するために使用する具体的なアルゴリズムを指します。ここでCOBYLAやSLSQPなどを指定します。
- オプション。使用可能なオプションはメソッドによって異なりますが、ほぼすべてのメソッドに含まれる例として、検索を終了するまでのオプティマイザの最大反復回数
maxiterがあります。

各反復ステップで、ハミルトニアンの期待値が多数の測定によって推定されます。この推定エネルギーはコスト関数によって返され、ミニマイザはエネルギーランドスケープについての情報を更新します。次のステップを選ぶためにオプティマイザが行う動作はメソッドによって異なります。勾配を使用して最急降下方向を選ぶものもあります。ノイズを考慮して、その方向に真のエネルギーが減少すると判断する前に、コストが大幅に減少することを要求するものもあります。
# Example syntax for minimization
# from scipy.optimize import minimize
# res = minimize(cost_func, x0, args=(ansatz, hamiltonian, estimator), method="cobyla", options={'maxiter': 200})
1.5 変分原理
この文脈では変分原理が非常に重要です。変分原理は、どのような変分波動関数も基底状態波動関数が与えるエネルギー(またはコスト)期待値より低い期待値を与えることはできないと述べています。数学的に表すと、
これは、 のすべての固有状態の集合 がヒルベルト空間の完全基底を形成することに注目すると簡単に確認できます。言い換えると、任意の状態、特に を、 のこれらの固有状態の重み付き(規格化された)和として書くことができます。
ここで は決定すべき定数であり、 です。証明は読者への演習として残します。ただし、その意味に注目してください。最低エネルギー期待値を生成する変分状態こそが、真の基底状態の最良の推定です。
理解度チェック
以下の問題を読んで考えてから、三角形をクリックして解答を確認してください。
任意の変分状態 に対して を数学的に確認してください。
解答:
エネルギー固有状態によって変分状態を展開した
を使うと、変分エネルギー期待値は次のように書けます。
すべての係数について が成り立ちます。したがって、
と書けます。
2. 古典的ワークフローとの比較
N行N列の行列に興味があるとします。行列が非常に大きく、完全な対角化が選択肢にない場合を考えます。さらに、問題について目標固有状態の全体的な構造についていくつかの推測ができるほど十分な知識があり、初期推測に似た状態を探索してコスト・エネル ギーをさらに下げられるかを調べたいとします。これが変分アプローチであり、完全対角化が選択肢でない場合に使われる方法の一つです。
2.1 古典的ワークフロー
古典コンピュータを使用する場合、次のように動作します。
- 変化させるパラメータ を持つ推測状態を作ります:。この初期推測はランダムでも構いませんが、それは得策ではありません。手元の問題についての知識を使い、できる限り推測を絞り込みたいところです。
- その状態における演算子の期待値を計算します:
- 変分パラメータを変更して繰り返します:
- 変分部分空間の可能な状態のランドスケープについて蓄積された情報を使い、より良い推測を行い、目標状態に近づきます。変分原理によって、変分状態は目標基底状態の固有値より低い固有値を与えることができないことが保証されています。したがって、期待値が低いほど基底状態の近似が良くなります。
このアプローチの各ステップの難しさを考察してみましょう。パラメータの設定や更新は計算上容易です。難しいのは、有用で物理的に動機付けられた初期パラメータの選択です。以前の反復から蓄積された情報を使って基底状態に近づくようにパラメータを更新することは非自明です。しかし、これを非常に効率的に行う古典的最適化アルゴリズムが存在します。この古典的最適化は、多くの反復が必要になる可能性があるために高コストなだけです。最悪の場合、反復回数はNに対して指数関数的にスケールする可能性があります。最も計算コストの高いステップは、特定の状態 を使って行列の期待値を計算することでしょう:。
行列は 要素のベクトルに作用する必要があり、最悪の場合 の乗算操作に対応します。これをパラメータの各反復で行う必要があります。非常に大きな行列では、これは高い計算コストとなります。
2.2 量子ワークフローと可換パウリ群
次に、この計算部分を量子コンピュータに委ねることを考えてみましょう。期待値を計算 する代わりに、変分アンザッツを使って量子コンピュータ上で状態 を準備し、測定を行うことで推定します。
これは言うほど簡単ではありません。 は一般的に測定が容易ではありません。例えば、互いに非可換な複数のパウリX、Y、Z演算子から構成される場合があります。しかし、 は測定可能な(例えばパウリ演算子や量子ビットごとに可換なパウリ演算子のグループなど)項 の線形結合として書くことができます。ある状態 における の期待値は、構成する項 の期待値の重み付き和です。この表現は任意の状態 に成り立ちますが、特に変分状態 に使います。
ここで は IZZX…XIYX のようなパウリ文字列か、互いに可換な複数のパウリ文字列です。したがって、量子コンピュータ上での測定の現実により近い期待値の説明は、
変分波動関数の文脈では、
各項 は 回測定され、測定サンプル ()を生成し、期待値 と標準偏差 を返します。これらの項を合算して誤差を伝播させることで、全体の期待値 と標準偏差 が得られます。
これは大規模な乗算も にスケールするプロセスも必要としません。代わりに量子コンピュータ上での複数の測定が必要です。それほど多くの測定が必要でなければ、このアプローチは効率的です。これがVQEの量子的な部分です。
しかし、これが効率的でない理由についても話しておきましょう。測定回数が多くなる理由の一つは、非常に高精度な計算のために推定の統計的不確実性を低減することです。もう一つの理由は、行列全体を表現するために必要なパウリ文字列の数です。パウリ行列(恒等行列を含む:X、Y、Z、I)は、与えられた次元のすべての演算子の空間を張るため、対象とする行列を以前のようにパウリ演算子の重み付き和として書けることが保証されています。
ここで は IZZX…XIYX のようなシステムを記述するすべての量子ビットに作用するパウリ文字列か、互いに可換な複数のパウリ文字列です。Qiskitはリトルエンディアン表記を使用しており、右から 番目のパウリ演算子が 番目の量子ビットに作用することを覚えておいてください。したがって、一連のパウリ演算子を測定することで演算子を測定できます。
しかし、これらのパウリ演算子をすべて同時に測定することはできません。同じ量子ビットに関連付けられた(Iを除く)パウリ演算子は互いに可換ではありません。例えば IZIZ と ZZXZ は同時に測定できます。3番目の量子ビットのIとZを同時に測定でき、1番目の量子ビットのIとXも同時に知ることができるからです。しかし ZZZZとZZZXは同時に測定できません。ZとXは可換でなく、どちらも0番目の量子ビットに作用するからです。

したがって、行列 を異なる量子ビットに作用するパウリの和に分解します。その和のいくつかの要素は同時に測定できます。これを可換パウリ群と呼びます。非可換な項 がいくつあるかによって、多くの群が必要になる場合があります。可換パウリ文字列のグループ数を とします。 が小さければうまく機能します。 に数百万のグループがある場合は、有用ではありません。
期待値推定に必要なプロセスは、Qiskit Runtimeプリミティブ Estimator にまとめられています。Estimatorの詳細については、IBM Quantum® DocumentationのAPIリファレンスを参照してください。Estimatorを直接使用することもできますが、Estimatorは最低エネルギー固有値だけでなく、アンサンブル標準誤差などの情報も返します。したがって、最小化問題の文脈では、コスト関数の中にEstimatorを使うことがよくあります。Estimatorの入力と出力の詳細については、IBM Quantum Documentationのこちらのガイドを参照してください。
パラメータ のセットに対する期待値(またはコスト関数)を記録し、パラメータを更新します。時間をかけて、アンザッツでサンプリングされた状態の部分空間でのコスト関数の勾配を近似するために、推定された期 待値またはコスト関数値を使用することができます。勾配法と勾配なし法の両方が存在します。どちらも、複数の局所最小値や、ゼロに近い勾配を持つ大きなパラメータ空間領域(バレンプラトーと呼ばれる)などのトレーニング可能性の問題に悩まされる可能性があります。

2.3 計算コストを決める要因
VQEは最も困難な量子化学の問題すべてを解決するわけではありません。しかしそれが目的ではありません。計算コストを決める要因をシフトしたのです。

行列の次元だけに依存するプロセスから、必要な精度と行列を構成する非可換パウリ演算子の数に依存するプロセスへとシフトしました。後者は古典コンピューティングには対応するもの がありません。
これらの依存関係に基づくと、疎な行列、または少数の非可換パウリ文字列を含む行列の場合に有用です。これは例えば、スピンが相互作用する系が該当します。密な行列の場合は有用性が低い可能性があります。例えば化学系では、数百、数千、さらには数百万のパウリ文字列を含むハミルトニアンを持つことがよく知られています。この項の数を減らすための興味深い研究が行われていますが、化学系はこのコースで説明する他のアルゴリズムの方が適している可能性があります。
理解度チェック
以下の質問を読み、答えを考えてから、三角形をクリックして解答を確認してください。
4量子ビットのハミルトニアンに、次の項が含まれているとします:
IIXX, IIXZ, IIZZ, IZXZ, IXXZ, ZZXZ, XZXZ, ZIXZ, ZZZZ, XXXX
これらの項を、同じグループ内のすべての項が同時に測定できるようにグループ分けしたいとします。すべての項を含めるために必要な最小のグループ数はいくつでしょうか?
IIXX, IIXZ, IIZZ, IZXZ, IXXZ, ZZXZ, XZXZ, ZIXZ, ZZZZ, XXXX解答:
5つのグループで可能です。なお、このような解は一般に一意ではありません。
IIXX, XXXX
IIXZ, IZXZ, ZZXZ
IIZZ, ZZZZ
IXXZ, ZIXZ
XZXZ
VQEによる量子化学計算を難しくする主な要因として、どちらが一般的だと思いますか:ハミルトニアンの項数、それとも良いアンザッツを見つけること?
解答:
化学的な文脈に高度に最適化されたアンザッツが存在することが分かっています。より多くの問題を引き起こすのは、ハミルトニアンの項数、つまり必要な測定回数の多さです。
3. ハミルトニアンの例
このアルゴリズムを小さなハミルトニアン行列を使って実際に試してみましょう。各ステップで何が起きているかを確認します。Qiskitパターンズのフレームワークを使用します:
- ステップ 1:問題を量子回路と演算子にマッピングする
- ステップ 2:ターゲットハードウェア向けに最適化する
- ステップ 3:ターゲットハードウェアで実行する
- ステップ 4:結果を後処理する