Path: blob/main/translations/ja/quantum-machine-learning/training.ipynb
3855 views
パラメータ化された量子回路の訓練
このセクションでは、勾配情報を使った手法を使用して量子回路ベースのモデルを訓練する方法を詳しく見ていきます。これらのモデルの制約と、どのように克服するのかを見ていきます。
はじめに
古典モデルと同様に、パラメーター化された量子回路モデルを訓練して、データ駆動型のタスクを実行できます。データから任意の関数を学習するタスクは、数学的にはパラメーターベクトルParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{theta_vec}{\ve…に関して、コストまたは損失関数ParseError: KaTeX parse error: Undefined control sequence: \class at position 3: f(\̲c̲l̲a̲s̲s̲{theta_vec}{\ve…(目的関数としても知られています)の最小化として表されます。一般に、パラメーター化された量子回路モデルを訓練する場合、最小化しようとしている関数は期待値です:ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_bra_psi_theta…
変分回路ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{u_theta}{\math…のパラメーターを最適化するために使用できるアルゴリズムにはさまざまな種類があります(勾配ベース、進化的、および勾配のない方法)。このコースでは、勾配情報を用いた手法について説明します。
勾配
関数 ParseError: KaTeX parse error: Undefined control sequence: \class at position 3: f(\̲c̲l̲a̲s̲s̲{theta_vec}{\ve… があり、初期点から開始して関数の勾配 にアクセスできる場合、関数を最小化する最も簡単な方法は、関数の最急降下ParseError: KaTeX parse error: Undefined control sequence: \class at position 35: …\vec\theta_n - \̲c̲l̲a̲s̲s̲{eta}{\eta}\cla… の方向に向かってパラメータを更新することです。ここで は学習率で、更新のサイズを制御する小さな正のハイパーパラメーターです。関数の局所的最小値ParseError: KaTeX parse error: Undefined control sequence: \class at position 3: f(\̲c̲l̲a̲s̲s̲{theta_vec_star… に収束するまで、これを続けます。
この手法は最急降下法または*バニラ(通常の)最急降下法*と呼ばれます。これは単純な勾配であるため、特別なことは何もしていません。
Qiskitには、期待値の勾配を計算するためのさまざまな方法が用意されています。調べてみましょう。
まず、パラメーター化された状態ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{ket_psi_theta}…を定義する必要があります。このページでは、ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{u_theta}{U(\ve…は2量子ビット上のRealAmplitudes回路を定義しています。
次に、ハミルトニアンを定義する必要があります。ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{h_hat}{\hat H}…を利用します。
これらを組み合わせて期待値ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{_bra_psi_theta…を計算します。
次に、期待値の測定をシミュレートする関数を記述します。
具体的にするために、点とインデックスを固定してみましょう。このとき点におけるパラメーターに関する期待値の導関数は何でしょう。
ParseError: KaTeX parse error: Undefined control sequence: \class at position 1: \̲c̲l̲a̲s̲s̲{partial_deriva…ランダムな点とインデックスを選択します(0からカウントすることを忘れないでください)。
有限差分勾配
おそらく、勾配を近似する最も簡単な方法は、有限差分を利用することです。これは、おそらく非常に複雑であろう関数の内部構造とは独立して計算することが出来ます。
もしでの勾配の推定に興味があれば、小さな距離を選択して、 と を計算し、2つの関数の値の差を距離で割ります: 。
これを手動で行う代わりに、QiskitのGradientクラスを使用できます。
有限差分勾配は、ノイズの多い関数では不安定になる可能性があり、勾配に正確な式を使用するとより安定する可能性があります。このことは上で確認することができます。2つの計算は同じ式を使用していますが、ショットノイズのために異なる結果が得られています。下の例の画像では、「ノイズの多い有限差分勾配」が実際には真の勾配の反対方向を指していることがわかります。
解析的勾配
分析勾配は、勾配の分析式を評価します。一般に、手動で計算する必要があるため、これはかなり困難ですが、回路ベースの勾配については、参考文献 1 に、勾配を計算するための簡単な式を与える優れた理論的結果が紹介されています:これは、パラメータ シフトルールです。
このルールでは、係数を含まずパウリ回転のみで構成される単純な回路の場合、解析勾配が次のように計算されることを示しています。
これは、有限差分勾配の式と非常によく似ています。
手計算してみましょう。
そしてQiskitのGradientクラスを使用します。
計算された解析勾配は、計算された有限差分勾配とかなり類似していることがわかります。
それでは勾配計算を理解できたところで、期待値の最適化に移りましょう。
まず、再現性の観点から初期点を固定します。
期待値を評価する関数と同様に、勾配を評価する関数が必要になります。
オプティマイザーの収束を比較するために、コールバック関数を使用して各ステップでの損失を追跡できます。
そして最適化を開始し、損失をプロットします!
自然勾配
上記の例では、勾配降下法を使用して関数の最小値を見つけることができることがわかります。ただし、勾配降下法が常に最適な戦略であるとは限りません。

たとえば、左側の図を見ると、損失ランドスケープの端にある初期点 と学習率 が与えられると、中心の最小値に近づくことができます。
しかし、損失状況が 次元で押しつぶされている右側の図を見ると、同じ初期点と学習率を使用しても、最小値を見つけることができないことがわかります。これは、損失の状況が各パラメーターに関して同じ割合で変化すると誤って想定しているためです。どちらのモデルも、 の間で同じユークリッド距離を示していますが、モデル B ではこのメトリックが相対的な感度を捉えることができないため、これは不十分です。
自然勾配の考え方は、モデルの感度を考慮して からの決定の仕方を変更することにあります。通常の勾配ではユークリッド距離を使用しました:ParseError: KaTeX parse error: Undefined control sequence: \class at position 5: d = \̲c̲l̲a̲s̲s̲{euclidean_dist…、しかしこれは損失の等値線を考慮に入れていないことがわかりました。自然勾配では、代わりにモデルに依存した距離を使用します。

この指標は、 量子フィッシャー情報量 と呼ばれ、ユークリッドパラメーター空間における最急降下をモデル空間における最急降下に変換します。これは量子自然勾配と呼ばれ、参考文献2で紹介されています。ここでParseError: KaTeX parse error: Undefined control sequence: \class at position 38: …c\theta_n-\eta \̲c̲l̲a̲s̲s̲{}{g^{-1}}(\vec…です。

QiskitではGradientの代わりにNaturalGradientを使用して自然勾配を評価できます。
勾配を計算する関数と同様に、自然勾配を評価する関数を記述できるようになりました。
確かに異なる値です!
これが収束にどのように影響するかを見てみましょう。
これは素晴らしいですね!量子自然勾配は、通常の勾配降下よりも速くターゲットに近づくことがわかります。ただし、これには、さらに多くの量子回路を評価する必要があるという代償が伴います。
同時摂動確率近似
関数をベクトルとして見て、勾配を評価する場合は、 の偏導関数を各パラメーターに関して計算する必要があります。つまり勾配を計算するには、パラメーターに対して回の関数評価が必要になります。
同時摂動確率近似(SPSA)は、評価の数を減らすために、勾配からランダムにサンプリングする最適化手法です。正確な値は気にせず収束のみに気を払うので、偏りのないサンプリングは平均して同じようにうまく機能するはずです。
実際には、正確な勾配は最小値まで滑らかな収束パスをたどる一方で、SPSAはランダムサンプリングのため収束パスはジャンプします。しかし勾配と同じ境界条件が与えられると収束します。
では、どのように機能するのでしょうか? QiskitではSPSAアルゴリズムを使用します。
SPSAは基本的に最急降下曲線に従い、わずかなコストで実行できることがわかります。
参考文献3で説明されているように、自然勾配についても同じことができます。ここでは詳細をスキップしますが、勾配だけでなく、量子フィッシャー情報量からサンプリングするよう拡張することで、自然勾配に対しても実行可能です。
QiskitではQNSPSAアルゴリズムとして実装しています。パフォーマンスを比較してみましょう。
クイッククイズ
実際の訓練
近い将来の量子コンピューティングの時代では、回路の評価はコストが高くつき、デバイスのノイズの性質のために読み出しは完全ではありません。したがって実際には、SPSAがしばしば使われます。収束を改善するために、一定の学習率ではなく、指数関数的に減少する学習率を使用します。次の図は、一定の学習率(点線)と指数関数的に減少する学習率(実線)の典型的な収束を示しています。一定の学習率の収束は滑らかな減少線であるのに対し、指数関数的に減少する学習率の収束はより急で、よりふらついていることがわかります。これは、損失関数の振舞いを知っている場合にうまく機能します。
Qiskitでは学習率を指定しない場合、モデルに合わせて学習率を自動的に調整しようとします。
小さなモデルにおいては、この方法が最もよく機能することがわかります。より大きなモデルの場合、収束の様子はおそらく自然勾配のようになります。
制約
勾配を使用した訓練は、小さなサンプルモデルでうまく機能することを確認しました。しかし、量子ビットの数を増やしても同じことが期待できるでしょうか?これを調査するために、さまざまなモデルサイズに対して勾配の分散を測定します。考え方は単純です。分散が非常に小さい場合、パラメーターを更新するための十分な情報がないということになります。
指数関数的な勾配消失(不毛な台地)
標準的なパラメーター化された量子回路( RealAmplitudes )を選び、量子ビットと層の数を増やす、つまり回路の幅と深さを増やして勾配を計算するとどうなるかを見てみましょう。
2量子ビットから12量子ビットまでプロットしてみましょう。
なんと!分散は指数関数的に減少します!これは勾配に含まれる情報がますます少なくなり、モデルの訓練が困難になっていることを意味します。これは「不毛な台地問題」または「指数関数的な勾配消失」として知られており、参考文献4および5で詳細に説明されています。
試してみよう
自然勾配には不毛な台地があるでしょうか? IBM Quantum Labで、普通の勾配ではなく、自然勾配に対して上記のような不毛な台地を作成してみてください。勾配の代わりに自然勾配を計算する新しい関数sample_natural_gradientsを作成する必要があります。
これらの不毛な台地について私たちにできることはあるでしょうか?これは現在の研究のホットトピックであり、不毛な台地を緩和するためのいくつかの提案があります。
グローバルおよびローカルのコスト関数とansatzの深さが不毛な台地にどのように影響するかを見てみましょう。最初に、グローバル演算子を使用した短い深さの単層回路を見ていきます。
グローバル演算子による短い深さの単層回路は、依然として不毛な台地問題を引き起こしていることがわかります。
ローカル演算子を使用するとどうなるでしょうか?
ローカル演算子を用いた回路も不毛な高原台地が発生しています。
短い深さ、単層、ローカル演算子を用いた回路はどうでしょうか?
ローカル演算子を用いた一定の深さの回路勾配の分散は消失しない、つまり、不毛な台地問題は起きないことがわかります。ただし、これらの回路は通常シミュレートが容易であるため、従来のモデルに勝る点はありません。
クイッククイズ
勾配の分散は、どのタイプの回路で消えないでしょう?
グローバル演算子、線形な深さ
グローバル演算子、一定の深さ
ローカル演算子、線形な深さ
ローカル演算子、一定の深さ
これは、層ごとのトレーニングのインスピレーションです。ここでは、量子的な利点を提供しない可能性がある基本的な回路から始め、ローカル 演算子を使用して1層の回転を行います。これらのパラメーターを最適化して修正し、次のステップでローカル演算子を使用して回転の 2 番目の層を追加し、それらを最適化して修正し、必要な数の層について続行します。これにより、各最適化ステップでローカル 演算子を使用した一定の深さの回路のみが使用されるため、不毛の台地が回避される可能性があります。
これは、次の方法でQiskitに実装できます。
回路の深さを増やすと、損失関数が-1に向かって減少することがわかります。したがって、不毛な台地問題は見られません。
参考文献
Maria Schuld, Ville Bergholm, Christian Gogolin, Josh Izaac and Nathan Killoran, Evaluating analytic gradients on quantum hardware, Physical Revview A 99, 032331 (2019), doi:10.1103/PhysRevA.99.032331, arXiv:1811.11184.
James Stokes, Josh Izaac, Nathan Killoran and Giuseppe Carleo, Quantum Natural Gradient, Quantum 4, 269 (2020), doi:10.22331/q-2020-05-25-269, arXiv:1909.02108.
Julien Gacon, Christa Zoufal, Giuseppe Carleo and Stefan Woerner, Simultaneous Perturbation Stochastic Approximation of the Quantum Fisher Information, arXiv:2103.09232.
Jarrod R. McClean, Sergio Boixo, Vadim N. Smelyanskiy, Ryan Babbush and Hartmut Neven, Barren plateaus in quantum neural network training landscapes, Nature Communications, Volume 9, 4812 (2018), doi:10.1038/s41467-018-07090-4, arXiv:1803.11173.
M. Cerezo, Akira Sone, Tyler Volkoff, Lukasz Cincio and Patrick J. Coles, Cost Function Dependent Barren Plateaus in Shallow Parametrized Quantum Circuits, Nature Communications 12, 1791 (2021), doi:10.1038/s41467-021-21728-w, arXiv:2001.00550.