Path: blob/master/site/ja/quantum/tutorials/noise.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
ノイズ
現代の量子コンピュータにはノイズが存在します。量子ビットは、周囲の環境からの干渉、不完全な製造、TLS、場合によってはガンマ線による影響を受けやすくなっています。大規模にエラー訂正が行われるまで、現在のアルゴリズムはノイズが存在する場合でも機能する必要があります。そのため、現在のノイズがある量子コンピュータでの量子アルゴリズムとモデルの機能の検証は、重要なステップです。
このチュートリアルでは、高レベルの tfq.layers
API を介して、TFQ でのノイズの多い回路のシミュレーションの基本を見ていきます。
セットアップ
1. 量子ノイズを理解する
1.1 基本的な回路ノイズ
量子コンピュータのノイズは、そこから測定されるビット文字列サンプルに影響を与えます。直感的には、ノイズの多い量子コンピュータは、下の図のようにランダムな場所でゲートを「挿入」、「削除」、または「置換」すると考えてみてください。
ノイズに対処するには、単一の純粋な状態 を使用せず、使用する回路で発生する可能性のあるすべてのノイズのアンサンブル、 を処理すると考えます。ここで、 は、システムが にある確率を示します。
上の図を再度検討してみましょう。90% の場合にシステムが完全に実行され、つまり、10% の場合にこの 1 つの障害モードだけでエラーが発生したことが事前にわかっていた場合、アンサンブルは次のようになります。
回路でエラーが発生する可能性のある場合が 1 つ以上ある場合、アンサンブル には 2 つ以上の項が含まれます(発生する可能性のあるノイズごとに 1 つ)。 は、ノイズの多いシステムを表す密度行列と呼ばれます。
1.2 チャネルを使用して回路ノイズをモデル化する
残念ながら、実際には、回路でエラーが発生する可能性のあるすべての場合とその正確な確率を知ることはほぼ不可能です。単純には、回路の各演算後に、その演算がどのようなエラーを発生するかをを大まかに捕らえるチャンネルがあると考えることができます。簡単なノイズのある回路を作成します。
以下のようにノイズのない密度行列 を調べます。
以下のようにノイズのある密度行列 を調べます。
2 つの異なる を比較すると、ノイズが状態の振幅(結果としてサンプリング確率)に影響を与えていることがわかります。ノイズのない場合は、常に 状態をサンプリングすることを期待します。しかし、ノイズの多い状態では、 または または もサンプリングする確率がゼロ以外になります。
ノイズのない場合は常に になります。
ノイズをもう少し増やすと、希望する動作( のサンプリング)とノイズを区別するのがますます難しくなります。
注意: 回路内のさまざまなチャネルを試して、ノイズを生成してみてください。Cirq と TFQ の両方でサポートされている共通チャネルはこちらをご覧ください。
2. TFQ の基本ノイズ
ノイズが回路の実行にどのように影響するかを理解することで、TFQ でノイズがどのように機能するかを調べることができます。TensorFlow Quantum は、密度行列シミュレーションの代わりに、モンテカルロ/軌道ベースのシミュレーションを使用します。これは、密度行列シミュレーションのメモリの複雑さにより、従来の完全密度行列シミュレーション方法では、大規模なシミュレーションが 20 キュービット未満に制限されるためです。モンテカルロ/軌道では、メモリコストを増やす代わりに時間コストを低減します。backend='noisy'
オプションは、すべての tfq.layers.Sample
、tfq.layers.SampledExpectation
、および tfq.layers.Expectation
で使用できます。(Expectation
の場合、これは必要な repetitions
パラメータを追加します)。
2.1 TFQ でのノイズの多いサンプリング
TFQ と軌道シミュレーションを使用して上記のプロットを再作成するには、tfq.layers.Sample
を使用します。
2.2 ノイズの多いサンプルベースの期待値
ノイズの多いサンプルベースの期待値計算を行うには、tfq.layers.SampleExpectation
を使用します。
回路からのサンプリングを介して、ノイズのない期待値の推定値を計算します。
ノイズの多いバージョンと比較します。
ノイズが特に に影響を与えていることがわかります。my_really_noisy_circuit
は 0 に向かって非常に速く集中します。
2.3 ノイズの多い分析的期待値の計算
ノイズの多い分析的期待値の計算は、上記とほぼ同じです。
3. ハイブリッドモデルと量子データノイズ
TFQ でいくつかのノイズの多い回路シミュレーションを実装したので、ノイズのあるパフォーマンスとノイズのないパフォーマンスを比較対照し、ノイズが量子およびハイブリッド量子の古典的モデルにどのように影響するかを実験できます。モデルまたはアルゴリズムがノイズに対してロバストであるかどうかを確認するためには、まず、次のような回路全体の脱分極モデルでテストしてみます。
回路の各タイムスライス(モーメントと呼ばれることもあります)には、そのタイムスライスの各ゲート演算の後に脱分極チャネルが追加されています。脱分極チャネルは、確率 で のいずれかを適用するか、確率 で何も適用しません(元の演算を維持する)。
3.1 データ
この例では、tfq.datasets
モジュールで準備された回路をトレーニングデータとして使用できます。
小さなヘルパー関数を作成すると、ノイズの多い場合とノイズのない場合のデータを生成するのに役立ちます。
3.2 モデル回路を定義する
回路の形状で量子データができたので、このデータをモデル化するための回路が必要になります。データと同様に、オプションでノイズを含むこの回路を生成するヘルパー関数を記述します。
3.3 モデルの構築とトレーニング
データとモデル回路を構築しました。必要な最後のヘルパー関数は、ノイズの多いまたはノイズのないハイブリッド量子 tf.keras.Model
の両方をアセンブルできる関数です。
4. パフォーマンスを比較する
4.1 ノイズのないベースライン
データ生成とモデル構築コードを使用して、ノイズのない設定とノイズの多い設定でモデルのパフォーマンスを比較対照できるようになりました。最初に、ベースラインとなるノイズのないトレーニングを実行します。
結果と精度を調べます。
4.2 ノイズの多いモデルを比較する
ノイズの多い構造を持つ新しいモデルを作成し、上記と比較します。コードはほぼ同じです。
注意: モデル図では、脱分極確率がゼロではなくなったため、tfq.layers.PQC
の代わりに tfq.layers.NoisyPQC
が表示されます。 ノイズの多いシミュレーションはノイズのないシミュレーションよりもはるかにコストがかかるため、トレーニングにはかなり長い時間がかかります。
成功: ノイズの多いモデルは、軽度の脱分極ノイズの下でトレーニングを行うことができました。さまざまなノイズモデルを試して、トレーニングがいつどのように失敗するかを確認してください。また、tfq.layers
と tfq.noise
の下のノイズの多い機能にも注意してください。