양자 미니랩 2/4 · 중첩과 측정

측정하기 전엔 정해지지 않았습니다

1편의 큐비트는 늘 0 아니면 1 이었죠. 여기에 H 게이트를 걸면 큐비트는 0도 1도 아닌 중첩 상태가 됩니다. 그래도 0·1(계산 기저)로 측정하면 결과는 언제나 0 아니면 1 하나로 나옵니다. 여러 번 재면 그 비율이 50:50에 가까워집니다.

이것만 기억하세요한 번 재면 0 또는 1
여러 번 재면 50 : 50

횟수를 고르고 측정하세요

회로 0 ─ H ─ 측정

측정 횟수
55.0%측정 = 055
45.0%측정 = 145

점선 = 이론 확률 50%

100번 중 0이 55.0%, 1이 45.0%. 많이 잴수록 이론값 50:50에 가까워집니다.

이 데모는 잡음이 없는 이상적 1큐비트 시뮬레이션이며, 측정 결과의 난수도 실제 양자 난수가 아니라 이론 확률(50:50)을 재현한 의사난수입니다. 다음 편에서는 똑같이 50:50으로 보이는 두 상태가 사실은 서로 다르다는 걸 봅니다.

이 데모에 대하여

같은 상태를 1회부터 1,000회까지 재 봅니다

이 화면은 |0> ─ H ─ 측정 회로 하나만 반복합니다. 측정 횟수를 바꿔 가며 눌러 보면, 한 번의 결과와 여러 번의 분포가 서로 다른 종류의 정보라는 것이 눈에 들어옵니다. 막대에 붙은 점선은 실측이 아니라 이론값 50% 를 그린 기준선입니다. 앞 편에서 확률이 100% 로 고정돼 있던 것과 달리, 여기서는 같은 상태를 재도 결과가 매번 달라지기 때문에 화면을 값 하나가 아니라 분포로 바꿔 그립니다.

  1. 측정 횟수를 1 로 두고 ‘측정’을 여러 번 누릅니다. 결과가 0 과 1 사이를 오갑니다.
  2. 10 으로 올려 몇 번 눌러 봅니다. 7:3 이나 8:2 처럼 치우친 표본이 흔하게 나옵니다.
  3. 100 과 1,000 으로 올려 같은 일을 합니다. 막대가 점선에 붙기 시작합니다.
  4. 1,000 회에서도 정확히 500:500 이 되지는 않는다는 점을 확인합니다.
  5. 같은 횟수로 여러 번 눌러 봅니다. 횟수가 클수록 눌러도 막대가 덜 움직입니다.

이 화면이 숫자를 만드는 방식

01

H 게이트가 반반의 상태를 만듭니다.

H 는 (1/√2)[[1,1],[1,−1]] 행렬이고, |0>에 걸면 두 진폭이 모두 1/√2 가 됩니다. 확률은 진폭의 제곱이므로 각각 정확히 0.5 입니다. 화면의 점선 50% 는 사람이 적어 넣은 상수가 아니라 이 계산을 그대로 돌려 얻은 값이라, 엔진이 틀어지면 점선도 함께 틀어집니다. 기준선을 하드코딩하지 않고 계산 결과로 둔 이유가 여기 있습니다. 눈으로 비교할 대상이 실제 이론값이어야 막대가 수렴하는지 아닌지를 의미 있게 볼 수 있습니다.

02

상태는 한 번만 계산하고 측정만 반복합니다.

1,000 회를 고르면 회로를 1,000 번 다시 도는 것이 아니라, 회로를 한 번 적용해 얻은 최종 상태에서 독립적인 측정을 1,000 번 뽑습니다. 게이트 연산은 결정론적이라 몇 번을 다시 돌려도 같은 상태가 나오고, 무작위가 끼어드는 곳은 측정 한 군데뿐이기 때문입니다. 이렇게 두면 계산량이 횟수와 무관하게 일정해져서 1,000 회를 골라도 화면이 멈추지 않습니다.

03

난수는 시드가 있는 의사난수입니다.

측정에는 mulberry32 라는 짧은 의사난수 생성기를 씁니다. 같은 시드를 주면 언제나 같은 수열이 나오므로, 자동 테스트에서 특정 시드의 결과를 정확히 예측하고 검증할 수 있습니다. 무작위가 들어간 코드는 보통 테스트하기 어렵지만, 난수원을 밖에서 주입하는 형태로 만들면 실행할 때만 진짜 무작위를 넣고 검증할 때는 고정 수열을 넣을 수 있습니다.

04

첫 화면의 막대는 고정된 시드로 그립니다.

페이지를 열자마자 빈 화면이 보이지 않도록, 고정 시드로 미리 100 회를 돌린 결과를 초깃값으로 넣어 둡니다. 이 사이트는 미리 만들어 둔 HTML 을 내려주는 방식이라, 서버에서 그린 화면과 브라우저가 처음 그리는 화면이 다르면 경고가 나고 화면이 한 번 깜빡입니다. 그래서 초깃값만은 무작위가 아니라 결정론이어야 하고, 사용자가 ‘측정’을 누른 뒤부터 새 시드로 덮어씁니다.

05

적은 표본에서 결론을 내면 대개 틀립니다.

10 회 측정에서 8:2 가 나오는 일은 드물지 않습니다. 그 표본만 보고 이 큐비트가 0 쪽으로 치우쳐 있다고 판단하면 틀린 결론이 됩니다. 횟수를 올렸을 때 막대가 점선으로 수렴하는 모습이, 확률을 확인하려면 얼마나 재야 하는지를 보여주는 부분입니다. 실제 양자 장치에서 회로를 돌릴 때 샷 수를 크게 잡는 것도 같은 이유이고, 몇 번을 재야 충분한지가 실무에서 먼저 정해야 할 값이 됩니다.

06

한 번의 결과와 분포는 다른 정보입니다.

측정 횟수를 1 로 두면 화면은 0 이나 1 하나만 보여줍니다. 이 값에는 확률에 대한 정보가 거의 들어 있지 않습니다. 반대로 1,000 회 막대는 분포를 잘 보여주지만 다음 한 번이 무엇일지는 알려주지 않습니다. 같은 상태를 두고도 무엇을 알고 싶은지에 따라 봐야 할 화면이 달라진다는 점이, 횟수 버튼을 굳이 네 개나 둔 이유입니다.

07

측정하면 중첩은 사라집니다.

화면은 매 측정을 같은 최종 상태에서 새로 뽑지만, 실제 장치에서는 한 번 측정한 큐비트가 그 결과 쪽으로 무너져 버려 같은 상태를 다시 잴 수 없습니다. 그래서 분포를 얻으려면 회로를 처음부터 다시 돌려 새 큐비트를 준비해야 합니다. 이 데모가 상태를 한 번만 계산하고 측정만 반복하는 것은 계산을 아끼기 위한 최적화이며, 결과의 통계가 같기 때문에 쓸 수 있는 방식입니다.

이론 분포를 흉내 낸 것이고, 양자 난수가 아닙니다.

여기서 나오는 0 과 1 은 실제 양자 측정으로 얻은 값이 아니라, 이론 확률 50:50 을 재현하도록 만든 의사난수입니다. 시드를 알면 다음 값을 그대로 계산할 수 있으므로 난수의 예측 불가능성이 필요한 용도에는 쓸 수 없습니다. 또한 잡음이 없는 이상적 시뮬레이션이라 실제 장비에서 나타나는 편향, 측정 오류, 상태가 시간에 따라 무너지는 현상은 전혀 반영하지 않습니다. 실제 장치라면 충분히 많이 재도 50:50 에서 조금 벗어난 분포가 나오는 것이 정상이고, 그 어긋남이 장치의 잡음 때문인지 표본이 부족해서인지 구분하는 일이 별도의 주제가 됩니다. 이 화면에서는 어긋남의 원인이 언제나 표본 부족 하나뿐이라, 횟수를 올리면 반드시 점선에 가까워집니다. 실제 장치에서는 횟수를 아무리 올려도 좁혀지지 않는 간격이 남고, 그 간격의 크기가 곧 그 장치의 품질 지표가 됩니다. 이 데모로 확률을 재는 감각은 익힐 수 있지만 장치를 평가하는 감각은 익힐 수 없다는 뜻입니다.

참고 자료IBM Quantum Learning — 중첩과 측정IBM Quantum 문서 — 회로 실행과 샷

실험을 마쳤다면