Path: blob/main/translations/ja/ch-applications/qaoa.ipynb
3861 views
QAOA を利用して、組合せ最適化問題を解く
このチュートリアルでは、組合せ最適化問題を紹介し、近似最適化アルゴリズムの説明、量子近似最適化アルゴリズム(Quantum Approximate Optimization Algorithm、QAOA)の動作説明、及びシミュレーターもしくは実際の量子システムで動作する実装例の紹介をします。
組合せ最適化問題
組合せ最適化問題には、有限のオブジェクトセットから最適なオブジェクトを見つけることが含まれます。有限のビット列の中から0と1で構成される「最適な」ビット列を見つけることを含む問題に焦点を当てます。グラフに対応するそのような問題の1つは、Max-Cut問題です。
Max-Cut 問題
Max-Cut問題とは、グラフの頂点を2つのセットに分割し、その集合間の枝の数が最大となるようにする問題です。以下の例では、4つの頂点を持つグラフで、「赤」と「青」の2つの集合に分割する方法をいくつか示しています。
4個の頂点に対して、各頂点は「赤」と「青」のどちらかの集合に割り当てられるので、割り当ての可能性は 個あり、その中から「赤」と「青」の集合間の枝の数が最大となるものを探さなければなりません。図中の2つの集合の間の枝の数は、左から順に、0、2、2、4です。考えられる 個の割り当てをすべて列挙した結果、一番右の図が、2つの集合の間の枝の数が最大になる割り当てであることがわかります。したがって、「赤」を0、「青」を1としてエンコードすると、どちらかの集合に頂点を割り当てることを表すビット列「0101」「1010」が解となります。
お気づきのように、グラフの頂点数が増えれば増えるほど、解を求めるために調べなければならない割り当ての可能性が指数関数的に増えていくのです。
QAOA
Farhi et al.[1]が発表したQAOA(Quantum Approximate Optimization Algorithm、量子近似最適化アルゴリズム)は、このような組合せ問題を解決しようとする量子アルゴリズムです。
これはパラメーター で特徴付けられるユニタリー を用いて量子状態 を準備する変分アルゴリズムです。アルゴリズムの目的は、量子状態 {latex} \lvert \psi(\boldsymbol{\beta}_{\text{opt}}, \boldsymbol{\gamma}_{\text{opt}}) \rangle が問題の解をエンコードするような最適なパラメーター {latex} (\boldsymbol{\beta}_{\text{opt}}, \boldsymbol{\gamma}_{\text{opt}}) を見つけることです。
ユニタリー は特定の形式を持ち、2つのユニタリー および で構成されています。ここで、 はミキシングハミルトニアン、 は問題のハミルトニアンです。このようなユニタリーの選択は、量子アニーリングと呼ばれる関連スキームからインスピレーションを得ています。
これらのユニタリーを、2つのユニタリーを交互に 回適用したブロックとして、以下のように適用し、状態を準備します。
ここで、 は適当な初期状態です。
これらのステップを、上述したMax-Cut問題を用いて説明します。そのために、我々はまず、上に示した問題の基礎となるグラフを定義することになります。
ここで、定数を除いて、Max-Cut問題に特有の問題ハミルトニアンは次の通りです。
このようなハミルトニアンを問題に対して構築するためには、このページの後のセクションで説明するいくつかのステップを踏む必要があります。
ミキサーハミルトニアン は通常、次のような形式です。
と の和の個々の項がともに交換するので、ユニタリーを次のように書くことができます。
上の積の各項は、各量子ビットのX回転に対応することに注意してください。そして、 を次のように書くことができます。
では、2つのユニタリーの回路がどのようなものかを見てみましょう。
ミキシングユニタリー
問題ユニタリー
初期状態
QAOAで使用される初期状態は、通常、すべての基底状態の等しい重ね合わせです。つまり、
このような状態は、量子ビットの数が4 ()のとき、以下の回路に示すように、すべてゼロの状態からアダマールゲートを適用して準備することができます。
QAOAの回路
これまで、QAOA時の量子状態の準備は、次の3つの要素で構成されていることを見てきました。
初期状態の準備
問題ハミルトニアンに対応するユニタリー
{latex} U(H_P) = e^{-i \gamma H_P}の適用そして、ミキシングユニタリー
{latex} U(H_B) = e^{-i \beta H_B}の適用
例題に対して、どのように見えるか見てみましょう。
次のステップでは、期待値
が最小になるような最適なパラメーター {latex} (\boldsymbol{\beta_{\text{opt}}}, \boldsymbol{\gamma_{\text{opt}}}) を探します。このような期待値は、Z基底で測定を行うことで得ることができます。最適なパラメーターを見つけるために、古典的な最適化アルゴリズムを使用します。模式図に示すように、以下のステップが含まれます。

と を適当な実数値に初期化する。
何らかの適切な収束基準が満たされるまで繰り返す。
qaoa回路を使って状態 を準備する。
状態を標準基底で測定する。
を計算する。
新しいパラメーターセット
{latex} (\boldsymbol{\beta}_{new}, \boldsymbol{\gamma}_{new})を古典的な最適化アルゴリズムで求める。現在のパラメーター を新しいパラメーター
{latex} (\boldsymbol{\beta}_{new}, \boldsymbol{\gamma}_{new})に等しくする。
以下のコードは、上記のステップを実装したものです。
qiskitには古典的なオプティマイザーの異なる選択肢が存在することに注意してください。ここでは古典的な最適化アルゴリズムとしてCOBYLAを選びます。
結果の分析
ビット列「0101」と「1010」は最も確率が高く、2つの分割の間に4本の枝を与える(最初にそこから始めた)グラフの割り当てであることに気づきます。
付録
1.1 対角ハミルトニアン
コスト関数は、計算基底において対角なハミルトニアンにマッピングすることが出来ます。コスト関数 が与えられると、ハミルトニアンは次のように記述できます:
ここで は、計算基底 でのラベルです。仮にコスト関数が高々個の重み付き項しかない場合、つまり が高々 ビットしか含まない時には、この対角ハミルトニアンは、 個の重み付きパウリ 演算子の和になります。
のパウリ 演算子への展開は、コスト関数 の正規展開において、全てのバイナリ変数 を行列 {latex} x_i \rightarrow 2^{-1}(1 - Z_i) に置き換えることで得られます。ここで、 は量子ビット に作用し、その他には自明なパウリ 演算子、すなわち次の通りです。
これは、古典コスト関数をエンコードするスピン-ハミルトニアンが と記述され、ローカル量子スピンハミルトニアンがパウリ 演算子しか含まないことになります。
ここで、数少ない( の多項式) のみが非ゼロであると想定します。また、集合 は有界であり、大きくないと想定します。これは、コスト関数とハミルトニアン が 個のローカル項 の和として書けることを意味します。
ここで、 と の台は妥当性のある有界値です。
2 様々な例
ここでは組合せ最適化問題を2つ例示します。最初の例のみQiskitで実装しますが、演習問題を通じて2番目の例の実装方法を示します。
2.1 (重みつき) MAXCUT
個の頂点の無向グラフ G = (V, E) (|V| = n) で、枝の重みが ParseError: KaTeX parse error: Expected 'EOF', got '&' at position 7: w_{ij}&̲gt;0 で に対して {latex} w_{ij}=w_{ji} であるものを考えます。カットとは、元の集合Vを2つの部分集合に分割することです。最適化されるコスト関数は、この場合、2つの異なる部分集合の点を結び、カットを横切る枝の重みの合計です。各頂点 に または を割り当てることにより、大域的利益関数を最大化しようとします(以下、和は1,2,...,nのインデックスをとります)。
表記を簡単にするために、以下では に対して均一の重み を仮定します。量子コンピューター上でこの問題の最適解を見つけるためには、上記で説明したように、まずこれを対角ハミルトニアンにマッピングする必要があります。集合 の枝の総和を以下のように記述します。
これをスピンハミルトニアンにマップするために {latex} x_i\rightarrow (1-Z_i)/2 の変換を行います。ここで、 は固有値 をもつパウリZ演算子で、 を得ます。
この式が意味することは、ハミルトニアンは次の 個のローカル項の和として記述できるということです。
ここで です。
2.2 制約充足問題と
組合せ最適化問題の別の例として、 があります。ここで、コスト関数{latex} C(\textbf{x}) = \sum_{k = 1}^m c_k(\textbf{x}) は、節に参加するいくつかの のうちの ビット分の値を制約する節 の総和です。例えば、ビット列 に対する次のような 節を考えます。
この節は 、 および の時のみ充足します。 問題は、 個の節をすべて充足するビット列が存在するか、存在しないかを問うものです。この決定問題は、 完全な問題の主要な例です。
密接に関連する最適化問題 は、 に含まれる節のうち、充足する節の数を最大化するビット列 を求めるものです。もちろん、 個の節のうち 個以上を満たすビット列がどこに存在するかを問えば、再び決定問題となり、これも 完全となります。
3. 近似アルゴリズム
これまでに紹介した と の両者はNP困難として知られています 3。実は、一般的に組合せ最適化問題の多くは、解を求めることが計算上困難です。この事実に照らし合わせてみると、効率的なアルゴリズム、つまり問題のサイズに対して多項式時間でこれらの問題を解くアルゴリズムを見つけることは期待できません。これは量子アルゴリズムにも当てはまります。このような問題を扱うには、主に2つのアプローチがあります。1つ目のアプローチは、多項式時間内に指定された品質の解を見つけることが保証されている近似アルゴリズムです。2つ目のアプローチは、多項式の実行時間は保証されていないものの、一部の問題例で良好なパフォーマンスを発揮するヒューリスティックなアルゴリズムです。
近似最適化アルゴリズムは効率的であり、近似解が問題の実際の最適解にどの程度近いかの理論保証を与えます。保証は典型的には、近似比 で示されます。確率的近似最適化アルゴリズムの場合、高い確率で正の {latex} C_\text{max} = \max_{\textbf{x}}C(\textbf{x}) を持つビット列 を生成することを保証します。
問題に関しては、Goemans および Williamson 2 による有名な近似アルゴリズムがあります。このアルゴリズムは元の問題のSDP緩和と確率的丸めのテクニックを組み合わせて、 という近似比の近似解を高い確率で出力します。この近似比は量子アルゴリズムをもってしても改善することができない最適な値と考えられています。
4. QAOA
Farhi、Goldsone、Gutmann 1 による量子近似最適化アルゴリズム (Quantum approximate optimization algorithm, QAOA) は、ヒューリスティック・アルゴリズムの一例です。Goemans-Williamsonアルゴリズムとは異なり、QAOAでは性能が保証されていません。QAOAは古典的な近似アルゴリズムの考え方を取り入れ、高確率で良い近似比 が期待できる古典的なビット列 を同様に生成する量子的類似物を探します。詳細を議論する前に、まずこのアプローチの一般的な考え方を紹介しましょう。
4.1 概要
我々は、問題のハミルトニアン に対して期待値が最大になるような、実数パラメーター を持つ量子状態 を見つけたいと考えています。この試行状態が与えられたとき、{latex} F_p(\vec{\gamma},\vec{\beta}) = \langle \psi_p(\vec{\gamma},\vec{\beta})|H|\psi_p(\vec{\gamma},\vec{\beta})\rangle を最大化するパラメーター を探します。
このような状態と対応するパラメータが得られたら、量子コンピューター上で状態 を準備し、 基底 {latex} |x \rangle = |x_1,\ldots x_n \rangle で状態を測定してランダムな出力 を得ます。
このランダムなビット列 は、期待値 {latex} M_p = F_p(\vec{\gamma}^*,\vec{\beta}^*) に高確率で近くなります。したがって、もし が に近いならば、 も同様です。
4.2 QAOA の構成要素
4.2.1 QAOA の試行状態
QAOAの中心となるのは、量子コンピュータ上に用意される試行状態 です。理想的には、この状態が問題のハミルトニアン に対して、大きな期待値 {latex} F_p(\vec{\gamma},\vec{\beta}) = \langle \psi_p(\vec{\gamma},\vec{\beta})|H|\psi_p(\vec{\gamma},\vec{\beta})\rangle をもたらすことが望まれます。Farhi 1 では、試行状態 は一量子ビットのパウリ 回転と問題のハミルトニアン から構築されます。つまり、計算基底で対角な問題のハミルトニアン
と、横磁場のハミルトニアン
が与えられたとき、試行状態は、 となる の積状態 に以下のように交互に 回 と に関するユニタリー行列をかけることで用意します。
のように交互に 回 と に関するユニタリー行列をかけることで用意します。
この特定のansatzの利点は、{latex} M_p = F_p(\vec{\gamma}^*,\vec{\beta}^*) としたときに極限 が{latex} \lim_{p \rightarrow \infty} M_p = C_\text{max} となるようなベクトル が明確に存在することです。これは、試行状態 を、 と横磁場ハミルトニアン に関して断熱発展をトロッター展開をして得られる状態とみなせます(参考文献 1)。
この試行状態の欠点は、一般的にあまり深くない量子回路から生成された状態が生成されることです。ここで、深さは量子チップ上に直接作用するゲートの数で決まります。したがって、量子チップのハードウェアにより合わせた試行状態の提案があります (参考文献 4、 5) 。
4.2.2 期待値の計算
このアプローチの重要な構成要素は、以下の期待値を計算もしくは推定することです。
これにより、パラメーター の最適化をします。
古典的な期待値の評価方法
なお、 の試行状態の回路があまり深くない場合、期待値 を古典的に評価できる場合があります。
例えば、次数が制限されたグラフに対する MAXCUT で、 の回路を考える場合です。セクション 5.2にてQiskitでの実装例を見て、期待値を計算する演習問題を提供します。
このアイデアを説明するにはハミルトニアンが、{latex} H = \sum_{k = 1}^m \hat{C}_k のように個々の項の和として記述されることを思い出してください。期待値の線形性により、個々の被加数の期待値を考えれば十分です。 の場合は、以下の通りです。
{latex} B = \sum_{i = 1}^n X_i において、ユニタリー行列 は、実際のところ角度 での単一量子ビットの回転 の積であることに注意してください。これを、{latex} X(\beta)_k = \exp(i\beta X_k) と記述します。
の台である量子ビットに作用しない全ての個々の回転は、 と可換で、すなわちキャンセルされます。これは演算子 の台を増やしません。これは、ユニタリー・ゲート {latex} e^{ -i\gamma_1 H } = \prod_{l=1}^m U_l(\gamma) の第2集合が、演算子 {latex} e^{ i\beta_1 B } \hat{C}_k e^{ -i\beta_1 B } と可換な、ゲート {latex} U_l(\gamma) = e^{ -i\gamma_1 \hat{C}_l } の大きな集合であること意味します。期待値に寄与するゲート {latex} U_l(\gamma) = e^{ -i\gamma_1 \hat{C}_l } だけが、元の の台である量子ビットを含むゲートになります。
これ故、制限された次数での相互作用において、{latex} e^{ i\gamma_1 H } e^{ i\beta_1 B } \hat{C}_k e^{ -i\beta_1 B } e^{ -i\gamma_1 H } の台は、 の相互作用の次数により与えられる量によってのみ拡張します。すなわちシステムのサイズとは独立です。つまり、これらのより小さい部分問題において、期待値は と独立で、古典的に推定できることを意味します。一般的な次数 のケースは、参考文献 1 にて考察されています。
これは一般的な見解であり、試行状態の準備に使われている回路がハミルトニアンのそれぞれの項の台を定数しか増やさない場合、コスト関数は直接推定できることを意味します。
この様な場合、かつ試行状態の準備に数個のパラメーター だけが必要な場合は、単純なグリッド探索で簡単に見つけることができます。さらに、 の厳密な最適値を用いて、近似比の上限
から の推定値を取得できます。この場合、QAOAは問題サイズの多項式時間で保証つきの近似比が得られる従来の近似最適化アルゴリズムと同じ特徴を持ちます。
量子コンピューター上での評価方法
量子回路が深すぎて古典的に評価できない時、もしくは問題ハミルトニアンの結合が高すぎる時は、期待値を推定する別な手段を利用します。量子コンピューター上 で を直接推定する方法を含みます。ここでは、VQE 4 で用いられていた、量子コンピューター上に直接試行状態 を用意し、サンプリングから期待値を求める、従来の期待値推定の手法を踏襲しています。
QAOAは対角ハミルトニアン を持つので、期待値を推定するのは実に簡単です。計算基底の試行状態からサンプルを入手するだけでよいのです。 であることを思い出すと、
のサンプリング推定値を、 基底での状態 の単一量子ビット測定を繰り返すことで、取得することができます。分布 から得られた各ビット文字列 について、コスト関数 を評価し、サンプルの総数で平均化します。結果として得られる経験的平均は、状態の分散内にある加法性サンプリング誤差まで期待値を近似します。分散については後述します。
期待値を計算できると、参考文献 6 のような古典的な最適化アルゴリズムを実行することで、を最適化できます。
このアプローチは、の理論的近似保証を与えませんが、最適化された関数値から近似比率 を推定することができます。
4.3.3 高確率で所定の近似比率の解を得ること
このアルゴリズムは、本質的に確率的であり、確率分布 からランダムなビット列を生成します。では、最適化された期待値 の値に近い近似値 をサンプリングすることをどのように確認できるのでしょうか?この質問は、そもそも量子コンピューター上での の推定にも関連していることに注意してください。もし から引き出したサンプルの分散が大きすぎる時、平均を決定するためには多くのサンプルが必要です。
変数であるエネルギーの分散が少ないときに、平均 に近いビット文字列 を高確率で引き出します。
ハミルトニアン {latex} H = \sum_{k=1}^m \hat{C}_k の項数は 以下になることに注意してください。つまり個々の被加数 は、全て の に対し の形で共通の定数で制限される演算子ノルムを持つと仮定します。次に、以下を考えます。
ここで {latex} \langle \psi_p(\vec{\gamma},\vec{\beta})|\hat{C}_k \hat{C}_l |\psi_p(\vec{\gamma},\vec{\beta})\rangle \leq \tilde{C}^2 を使用しました。
これは、どんな期待値 の分散も 以下になることを意味します。これは にも当てはまります。さらに が量子ビット数 の多項式的にしか増えない場合、 から、多項式的に増える数 のサンプルを引き出せば、 に近い を導く を得るのに十分です。
5. 問題
QAOAはビット文字列を生成しますが、この文字列はそのグラフにとって最適解でしょうか?実機上の実験結果とローカルQASMシミュレーターの結果を比較してください。
セクション 5.2 で、コスト関数 を解析的に計算しました。ステップを検証し、 ならびに を計算してください。
Qiskitでの実装において の正確な式が与えられました。
結果で得られたサンプルから期待値 を推定するルーチンを作成してください (ヒント: セクション 5.4 での cost_function_C(x,G)関数 と セクション 5.a / 5.bのデータの評価を使用します)。
問題2のルーチンを使って、 に対しコスト関数 を評価してください。実機上での実行でどうなると思いますか?
参考文献 4 のハードウェアに特化した試行状態を参考にして、この節で取り上げた試行状態のクラスを他の波動関数の候補に一般化してください。
様々な例のセクションで説明した の例を考え、それに応じて を計算するために使用したセクション 5.4のcost_function_C(x,G)関数を修正してください。ハードウェアに特化したアルゴリズムを使用して、この のインスタンスに対してQAOAを実行し、その結果を分析してください。
参考文献
Farhi, Edward, Jeffrey Goldstone, and Sam Gutmann. "A quantum approximate optimization algorithm." arXiv preprint arXiv:1411.4028 (2014).
Goemans, Michel X., and David P. Williamson. Journal of the ACM (JACM) 42.6 (1995): 1115-1145.
Garey, Michael R.; David S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman. ISBN 0-7167-1045-5
Kandala, Abhinav, et al. "Hardware-efficient variational quantum eigensolver for small molecules and quantum magnets." Nature 549.7671 (2017): 242.
Farhi, Edward, et al. "Quantum algorithms for fixed qubit architectures." arXiv preprint arXiv:1703.06199 (2017).
Spall, J. C. (1992), IEEE Transactions on Automatic Control, vol. 37(3), pp. 332–341.
Michael Streif and Martin Leib "Training the quantum approximate optimization algorithm without access to a quantum processing unit" (2020) Quantum Sci. Technol. 5 034008