양자컴퓨터 큐비트는 한번 만든 상태를 계속 유지하지 못합니다. 주변 환경과 지속적으로 상호작용하기 때문인데요. 이해를 위해 이번 글에서는 큐비트를 로 만든 뒤 시간을 늘려가며 상태가 으로 가는 과정을 봅시다.

일반 컴퓨터의 메모리는 전원이 정상적으로 공급되는 동안 0과 1을 비교적 안정적으로 보관합니다. 그렇다면 양자컴퓨터의 큐비트도 한번 1로 만들어 두면 그대로 유지될까요?
실제 양자컴퓨터에서는 그렇지 않습니다. 큐비트는 주변 환경과 계속 상호작용하고 있기 때문에 시간이 지나면서 처음 준비했던 양자상태에서 벗어날 수 있습니다. 이번 실험에서는 큐비트를 |1⟩ 상태로 만든 뒤 기다리는 시간을 점점 늘려가며 얼마나 빨리 |0⟩으로 돌아가는지 확인해 보겠습니다.
큐비트가 기억을 잃는다는 것은 무슨 뜻일까?
양자컴퓨터에서 말하는 ‘기억 손실’은 스마트폰이나 컴퓨터에서 파일이 삭제되는 것과는 조금 다릅니다. 큐비트가 처음 준비된 양자상태를 시간이 지나면서 유지하지 못하는 현상을 의미합니다.
예를 들어 큐비트를 |1⟩ 상태로 만든 뒤 아무 연산도 하지 않고 기다렸다고 생각해 보겠습니다. 이상적인 양자컴퓨터라면 나중에 측정해도 계속 1이 나와야 합니다. 하지만 실제 큐비트에서는 시간이 길어질수록 0이 측정될 가능성이 높아질 수 있습니다.
이처럼 외부 환경과의 상호작용 때문에 양자상태가 무너지는 현상을 넓게는 디코히런스(decoherence), 즉 결맞음 상실이라고 부릅니다.
T1과 T2는 무엇이 다를까?
| 구분 | 의미 | 쉽게 표현하면 |
|---|---|---|
| T1 | |1⟩ 상태가 |0⟩ 상태로 완화되는 시간척도 | 저장한 1이 점점 0으로 돌아가는 현상 |
| T2 | 중첩 상태의 위상 관계가 유지되는 시간척도 | 0과 1의 정교한 양자관계가 흐트러지는 현상 |
이번 실험에서는 눈으로 결과를 확인하기 쉬운 T1 현상에 집중합니다. 큐비트를 |1⟩ 상태로 준비한 뒤 대기시간을 늘리고, 측정했을 때 여전히 1로 남아 있는 확률을 계산합니다.
이번 실험에서 확인할 질문
- 큐비트를 |1⟩ 상태로 만든 뒤 기다리면 정말 0으로 변할까?
- 대기시간이 길어질수록 |1⟩이 측정되는 확률은 어떻게 변할까?
- T1 값과 대기시간 사이에는 어떤 관계가 있을까?
- 이 현상이 실제 양자컴퓨터 성능에 어떤 영향을 줄까?
실험 조건
| 큐비트 수 | 1개 |
| 초기 상태 | |1⟩ |
| T1 | 100 μs |
| T2 | 80 μs |
| 대기시간 | 0, 25, 50, 75, 100, 150, 200 μs |
| 반복 측정 | 각 조건 5,000회 |
| 실행 환경 | Qiskit Aer 노이즈 시뮬레이터 |
T1과 T2 값은 실제 특정 양자컴퓨터의 측정값이 아니라 상태변화를 쉽게 관찰하기 위해 설정한 실험 조건입니다. 따라서 이번 결과는 실제 IBM 양자프로세서의 성능 측정값으로 해석해서는 안 됩니다.

Qiskit Aer로 큐비트 상태 변화 실험하기
Google Colab을 사용한다면 먼저 Qiskit과 Qiskit Aer를 설치합니다.
!pip install -q qiskit qiskit-aer matplotlib
다음 코드는 큐비트를 |1⟩ 상태로 만든 뒤 서로 다른 시간만큼 열적 완화 노이즈에 노출시키고, 최종적으로 1이 측정되는 비율을 계산합니다.
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit_aer.noise import thermal_relaxation_error
import numpy as np
import matplotlib.pyplot as plt
# 실험 조건: 단위는 모두 마이크로초(μs)로 통일
T1 = 100.0
T2 = 80.0
times_us = np.array([0, 25, 50, 75, 100, 150, 200], dtype=float)
shots = 5000
simulator = AerSimulator()
p1_results = []
for t_us in times_us:
qc = QuantumCircuit(1, 1)
# |0> → |1>
qc.x(0)
# 기다리는 동안 발생하는 열적 완화 노이즈
if t_us > 0:
relaxation = thermal_relaxation_error(
T1,
T2,
t_us
)
qc.append(relaxation, [0])
# 최종 상태 측정
qc.measure(0, 0)
result = simulator.run(
qc,
shots=shots
).result()
counts = result.get_counts()
p1 = counts.get("1", 0) / shots
p1_results.append(p1)
print(
f"대기시간 {t_us:6.1f} μs : "
f"P(1) = {p1:.4f}"
)
# T1 지수감쇠 이론값
expected = np.exp(-times_us / T1)
# 결과 그래프
plt.figure(figsize=(8, 5))
plt.plot(
times_us,
p1_results,
"o-",
label="Qiskit Aer 측정값"
)
plt.plot(
times_us,
expected,
"--",
label="이론값 exp(-t/T1)"
)
plt.xlabel("대기시간 (μs)")
plt.ylabel("P(1)")
plt.title("시간에 따른 큐비트 |1> 상태 유지 확률")
plt.ylim(0, 1.05)
plt.grid(True)
plt.legend()
plt.show()
코드가 실제로 하는 일
- 큐비트 하나를 |0⟩ 상태에서 시작합니다.
- X 게이트를 적용해 |1⟩ 상태로 만듭니다.
- 설정한 시간만큼 열적 완화 노이즈를 적용합니다.
- 큐비트를 측정합니다.
- 같은 조건을 5,000회 반복합니다.
- 전체 측정 중 1이 나온 비율을 계산합니다.
- 대기시간별 결과를 그래프로 그립니다.
실험 전 예상할 수 있는 변화
단순한 T1 완화 모델에서는 |1⟩ 상태가 살아남을 확률을 대략 다음과 같이 표현할 수 있습니다.
P(1) ≈ exp(-t/T1)
따라서 이번처럼 T1을 100 μs로 설정했다면 대기시간이 정확히 100 μs가 되었을 때 |1⟩ 상태가 남아 있을 확률은 약 36.8%까지 내려갑니다.
| 대기시간 | 이론적인 P(1) | 실제 실행 결과 |
|---|---|---|
| 0 μs | 100.0% | 100.0% |
| 25 μs | 77.9% | 78.6% |
| 50 μs | 60.7% | 60.2% |
| 75 μs | 47.2% | 47.7% |
| 100 μs | 36.8% | 36.1% |
| 150 μs | 22.3% | 21.0% |
| 200 μs | 13.5% | 14.5% |

실제 실행 결과 기록
| 대기시간 | 이론 P(1) | 실행 결과 P(1) | 1 측정 횟수 |
|---|---|---|---|
| 0 μs | 1.0000 | 1.0000 | 5,000회 |
| 25 μs | 0.7788 | 0.7860 | 3,930회 |
| 50 μs | 0.6065 | 0.6022 | 3,011회 |
| 75 μs | 0.4724 | 0.4766 | 2,383회 |
| 100 μs | 0.3679 | 0.3610 | 1,805회 |
| 150 μs | 0.2231 | 0.2104 | 1,052회 |
| 200 μs | 0.1353 | 0.1448 | 724회 |
실험 결과, 대기시간이 0 μs일 때 P(1)은 1.0000이었고, 100 μs에서는 0.3610, 200 μs에서는 0.1448로 측정되었습니다.
큐비트를 |1⟩ 상태로 만든 직후에는 5,000회 측정에서 모두 1이 관측됐지만, 대기시간이 길어질수록 1이 측정되는 비율이 뚜렷하게 감소했습니다. 100 μs에서는 5,000회 중 1,805회만 1이 측정됐고, 200 μs에서는 724회까지 줄었습니다.
전체적인 그래프 형태는 이론적인 지수감쇠 곡선과 매우 비슷하게 나타났습니다. T1을 100 μs로 설정했을 때 이론적으로 100 μs 지점의 P(1)은 약 0.3679인데, 이번 실행에서는 0.3610으로 측정되어 약 0.0069의 차이를 보였습니다.
200 μs에서도 이론값은 약 0.1353이었고 실제 측정값은 0.1448로 나타났습니다. 이처럼 각 지점에서 약간의 차이는 있었지만, 대기시간이 증가할수록 |1⟩ 상태의 유지 확률이 지수적으로 감소한다는 전체적인 경향은 분명하게 확인할 수 있었습니다.
이 차이는 각 조건을 5,000회라는 유한한 횟수로 반복 측정했기 때문에 발생하는 통계적 변동입니다. 측정횟수를 더 늘리면 결과는 이론적인 지수감쇠 곡선에 더욱 가까워지는 경향을 보입니다.
왜 정확히 T1 시간이 되면 완전히 사라지지 않을까?
T1이 100 μs라고 해서 100 μs가 지나는 순간 모든 큐비트가 갑자기 0으로 바뀌는 것은 아닙니다.
T1은 확률적인 감소를 나타내는 대표적인 시간척도입니다. T1만큼 시간이 지났을 때 처음 |1⟩ 상태가 약 1/e, 즉 약 36.8% 남는 지수적인 감소 형태가 나타납니다.
따라서 큐비트의 수명이 100 μs라는 표현을 ‘정확히 100 μs 뒤에 작동이 멈춘다’는 의미로 받아들이면 안 됩니다.
그렇다면 양자연산은 최대한 빨라야 할까?
이번 실험에서 볼 수 있듯 큐비트의 양자상태는 무한정 유지되지 않습니다. 따라서 실제 양자컴퓨터에서는 필요한 연산을 양자상태가 충분히 유지되는 동안 수행하는 것이 중요합니다.
하지만 단순히 게이트를 빠르게 실행한다고 모든 문제가 해결되는 것은 아닙니다. 게이트 오류, 측정 오류, 큐비트 연결구조, 주변 큐비트와의 간섭 등도 함께 영향을 줍니다.
T2가 짧으면 어떤 일이 생길까?
이번 실험은 |1⟩이 |0⟩으로 변하는 현상을 측정했기 때문에 주로 T1을 관찰합니다. 그러나 양자컴퓨터에서는 에너지 상태뿐 아니라 중첩 상태의 위상정보도 중요합니다.
예를 들어 (|0⟩+|1⟩)/√2와 같은 중첩 상태가 유지되어야 간섭을 이용한 양자알고리즘을 실행할 수 있습니다. T2가 짧으면 0과 1의 상대적인 위상관계가 흐트러져 원하는 양자간섭을 만들기 어려워집니다.
실제 양자컴퓨터에서는 결과가 더 복잡한 이유
이번 실험에서는 열적 완화만을 단순화해서 적용했습니다. 실제 QPU에서는 여러 종류의 오류가 동시에 나타날 수 있습니다.
- T1 에너지 완화
- T2 결맞음 상실
- 단일 큐비트 게이트 오류
- 2큐비트 게이트 오류
- 측정 오류
- 큐비트 사이의 크로스토크
- 시간에 따른 하드웨어 특성 변화
따라서 실제 장비의 성능은 큐비트 수 하나만으로 판단하기 어렵습니다. 각 큐비트의 T1과 T2, 게이트 정확도, 측정 정확도와 회로의 깊이를 함께 살펴봐야 합니다.

이번 실험에서 확인한 핵심
- 큐비트는 준비한 상태를 무한정 유지하지 못합니다.
- |1⟩ 상태는 시간이 지나면서 |0⟩으로 완화될 수 있습니다.
- T1은 이러한 에너지 완화를 나타내는 대표적인 시간척도입니다.
- T1 시간이 지났다고 상태가 완전히 사라지는 것은 아닙니다.
- 대기시간이 늘어나면 |1⟩ 상태가 남을 확률은 지수적으로 감소합니다.
- 중첩 상태의 위상정보 손실은 T2와 관련되어 있습니다.
- 양자 오류수정과 오류완화가 필요한 이유도 이러한 불안정성과 연결됩니다.
같이 읽어볼 글
참고문헌
- IBM Quantum Documentation, View backend details – Qubit T1 and T2 properties
- IBM Quantum Documentation, Build noise models – T1/T2 thermal relaxation model
- IBM Quantum Documentation, Refresh backend properties with real-time benchmarking – T1 and T2 characterization
- Qiskit Aer Documentation, thermal_relaxation_error
- Qiskit Aer Documentation, Building Noise Models
이번 실험은 실제 특정 양자프로세서의 성능을 측정한 것이 아니라 Qiskit Aer에서 설정한 T1·T2 값을 이용해 큐비트의 시간에 따른 상태변화를 이해하기 위한 시뮬레이션입니다.