{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "d59934c8-76a1-4eda-97ba-4fcfb6f15776",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Estimator를 사용하여 노이즈 관리 설정하기\"\n",
        "description: \"IBM Quantum 추정기 프리미티브를 사용하여 노이즈 관리를 구성하는 방법.\"\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",
        "따라서 각 레벨은 양자 샘플링 오버헤드가 점차 증가하는 하나 이상의 방법에 해당하며, 이를 통해 사용자는\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        | 중간 수준의 완화 비용. 일반적으로 추정량의 편향을 줄여주지만, 편향이 반드시 0이 된다는 보장은 없다. | 레벨 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",
        "다음 코드는 다음을 설정하여 ZNE, TREX 및 게이트`resilience_level 2` 트위링을 활성화합니다\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",
        "[‘추정기’ 옵션을](/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
}