{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "d59934c8-76a1-4eda-97ba-4fcfb6f15776",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Estimator を使用してノイズ管理を設定する\"\n",
        "description: \"IBM Quantum のEstimatorプリミティブを使用して、ノイズ管理を設定する方法。\"\n",
        "---\n",
        "\n",
        "<span id=\"configure-noise-management-with-estimator\" />\n",
        "\n",
        "# Estimator を使用してノイズ管理を設定する\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8f3a25e1-b73d-48d1-8b82-9c57095c9108",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "{/*\n",
        "  DO NOT EDIT THIS CELL!!!\n",
        "  This cell's content is generated automatically by a script. Anything you add\n",
        "  here will be removed next time the notebook is run. To add new content, create\n",
        "  a new cell before or after this one.\n",
        "  */}\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"パッケージ・バージョン\">\n",
        "    このページのコードは、以下の要件に基づいて開発されました。\n",
        "    これらのバージョン以降のご利用をお勧めします。\n",
        "\n",
        "    ```\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3f1ea669-4144-4071-a4e9-88e01056f465",
      "metadata": {},
      "source": [
        "ノイズを管理するにはいくつかの方法があり、一般的には、エラーが発生する前に未然に防ぐために、さまざまなエラー軽減やエラー抑制の手法を用います。  これらの手法は通常、前処理のオーバーヘッドを伴います。  したがって、成果を完璧に仕上げることと、作業を妥当な時間内に完了させることとのバランスをとることが重要です。\n",
        "\n",
        "Estimatorは、以下のノイズ管理手法に対応しています。 それぞれの説明については、 「[エラーの軽減および抑制手法](error-mitigation-and-suppression-techniques) 」を参照してください。 これらの機能を有効にする方法については、 「[カスタムエラー設定](#advanced-error) 」のセクションを参照してください。\n",
        "\n",
        "* [動的デカップリング](/docs/api/qiskit-ibm-runtime/options-dynamical-decoupling-options#dynamicaldecouplingoptions)\n",
        "* [パウリのくるくる](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "* [PEA](/docs/api/qiskit-ibm-runtime/options-zne-options)\n",
        "* [PEC](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#pec)\n",
        "* [`resilience_level`](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience_level)\n",
        "* [TREX](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#measure_mitigation)\n",
        "* [ZNE](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#zne)\n",
        "\n",
        "<span id=\"resilience\" />\n",
        "\n",
        "<span id=\"resilience-level\" />\n",
        "\n",
        "## レジリエンスレベル\n",
        "\n",
        "ここでは、エラーに対してどの程度の`resilience_level`耐性を備えるかを指定します レベルが高いほど、処理時間は長くなりますが、\n",
        "より正確な結果が得られます。 レジリエンスレベルを設定することで、\n",
        "プリミティブクエリにノイズ管理を適用する際の\n",
        "コストと精度のバランスを調整できます。 ノイズ管理は、関連する回路群（アンサンブル）からの出力を処理することで、\n",
        "結果における誤差（バイアス）を低減します。 誤差の低減度は、適用される手法によって異なります この耐障害性レベルは、ノイズ管理手法の具体的な選択を抽象化することで、\n",
        "ユーザーが自身のアプリケーションに適したコストと精度のトレードオフについて\n",
        "検討できるようにする。\n",
        "\n",
        "したがって、各レベルは、量子サンプリングのオーバーヘッドが\n",
        "段階的に増加する1つまたは複数の手法に対応しており、\n",
        "時間精度のトレードオフを自由に試すことができます。 次の表は、\n",
        "各プリミティブで利用可能なレベルと、\n",
        "それに対応するメソッドを示しています。\n",
        "\n",
        "<span id=\"resilience-table\" />\n",
        "\n",
        "| レジリエンスレベル  | 説明                                                 | 技法                                                                                              |\n",
        "| ---------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------- |\n",
        "| 0          | 緩和策なし                                              | なし                                                                                              |\n",
        "| 1 \\[デフォルト] | 最小限の是正コスト：読み取りエラーに伴う誤差を是正する                        | [TREX（ eXtinction ）](/docs/guides/error-mitigation-and-suppression-techniques#trex) 測定のツイリング    |\n",
        "| 2          | 中程度の緩和コスト。 通常、推定量のバイアスを低減させるが、バイアスがゼロになることは保証されない。 | レベル1 + [ゼロノイズ外挿（ZNE）](/docs/guides/error-mitigation-and-suppression-techniques#zne) およびゲートツイリング |\n",
        "\n",
        "<Admonition type=\"info\" title=\"重要\">\n",
        "  レジリエンスのレベルは現在ベータ版であるため、サンプリングのオーバーヘッドや\n",
        "  ソリューションの品質は回路ごとに異なります。 新機能、\n",
        "  高度なオプション、および管理ツールは、順次\n",
        "  リリースされます。 特定の騒音対策が、各レジリエンスレベルにおいて\n",
        "  必ず適用されるとは限りません。\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"configure-estimator-with-resilience-levels\" />\n",
        "\n",
        "### 耐障害性レベルを設定してEstimatorを構成する\n",
        "\n",
        "レジリエンスレベルを使用してノイズ管理手法を指定することもできますし、「 [カスタムエラー設定](#advanced-error)」 の説明に従って、個別にカスタム手法を設定することもできます。\n",
        "\n",
        "<Admonition type=\"note\" title=\"重要\">\n",
        "  レジリエンスレベルに加えて手動で指定したオプションは、レジリエンスレベルによって定義された基本オプションセットに追加して適用されます。 したがって、原則として、レジリエンスレベルを1に設定し、測定の緩和機能を無効にすることも可能ですが、これは推奨されません。\n",
        "\n",
        "  たとえば、レジリエンスレベルを0に設定すると無効になりますが `zne_mitigation`、その値は `estimator.options.resilience.zne_mitigation = True` 上書きされます。\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### 例\n",
        "\n",
        "以下のコードでは、\n",
        "を設定することで `resilience_level 2`、ZNE、TREX、およびゲート・トゥワリングを有効にします。\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "841b526d-55b8-4125-bd2c-758d9db8dbb3",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "# Setting options during primitive initialization\n",
        "estimator = Estimator(backend, options={\"resilience_level\": 2})"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "c497a0e5-bcb7-4954-8096-70b4514ea498",
      "metadata": {},
      "source": [
        "<span id=\"advanced-error\" />\n",
        "\n",
        "<span id=\"custom-noise-management-settings\" />\n",
        "\n",
        "## ノイズ管理のカスタム設定\n",
        "\n",
        "「 [Estimator」オプション](/docs/guides/estimator-options)を使用すると、個々のノイズ管理手法を有効または無効にすることができます。\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  すべての回路で、すべてのオプションが互いに連携するわけではありません。  詳細については[、機能互換性表](estimator-options#options-compatibility-table)をご確認ください。\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### 例\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "89f1827d-92a1-40a4-bd71-6d67a18f0932",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            ">>> gate twirling is turned on: True\n",
            ">>> measurement error mitigation is turned on: True\n"
          ]
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "estimator = Estimator(backend)\n",
        "options = estimator.options\n",
        "# Turn on gate twirling.\n",
        "options.twirling.enable_gates = True\n",
        "# Turn on measurement error mitigation.\n",
        "options.resilience.measure_mitigation = True\n",
        "\n",
        "print(\n",
        "    f\">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}\"\n",
        ")\n",
        "print(\n",
        "    f\">>> measurement error mitigation is turned on: \"\n",
        "    f\"{estimator.options.twirling.enable_gates}\"\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0eba7825-2725-4406-82b7-3911c33957c5",
      "metadata": {},
      "source": [
        "<span id=\"turn-off-all-error-mitigation\" />\n",
        "\n",
        "## すべてのエラー緩和機能を無効にする\n",
        "\n",
        "すべてのエラー抑制機能を無効にする方法については、『Estimator オプションガイド』の 「[すべてのエラー抑制および緩和機能を無効にする](estimator-options#no-error-mitigation) 」のセクションを参照してください。\n",
        "\n",
        "<span id=\"next-steps\" />\n",
        "\n",
        "## 次のステップ\n",
        "\n",
        "<Admonition type=\"tip\" title=\"推奨事項\">\n",
        "  * IBM Quantum Learning の「 [コスト関数](/learning/courses/variational-algorithm-design/cost-functions) 」のレッスンで、エラー緩和機能を使用した例を順を追って見ていきましょう。\n",
        "  * [エラーの軽減および抑制の手法](error-mitigation-and-suppression-techniques)について詳しく知る。\n",
        "  * [見積もりツールのオプション](/docs/guides/estimator-options)を確認する。\n",
        "  * ジョブ[を実行](/docs/guides/execution-modes)するモードを決定します。\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}