양자역학2020. 3. 11. 01:03

 양자역학의 얽힘과 관측으로 인한 확률함수 붕괴는 아직 모든 것이 명확하게 이해되는 현상은 아니다. 관측은 전 우주를 대상으로 해당 입자의 정보가 흘러감을 의미한다고 하는데, 사실은 이 설명도 그다지 와닿지 않을 수 있다.

 

 개인적으로 양자역학에 대한 이해는 연관된 실험에 대한 정확한 Fact에 대한 확인과 그 틀 속에서 그 의미를 탐구하는 과정에서 더 강해지지 않는가 싶다. 앞서 설명된 이중 슬릿 실험이 그래서 아주 소중한 이유이다.

 

 여기서는 좀더 괴상한 실험을 소개해본다. 이름하여 A delayed choice quantum eraser라는 제목의 실험이다. 짧게 설명해보면 이미 확률함수가 붕괴된 실험장치를 구성한 상태(회절무늬가 사라진)에서 실험 장치를 추가해 다시 회절무늬를 만드는 기이한 현상에 대한 실험이다. (흥미롭게도 이 실험은 또한 한국인이 제1저자인데, 포항공대 물리학과 김윤호 교수라는 분이다.)

 

우선 이 실험을 설명한 두가지 동영상을 먼저 소개해보자(나중에 보면 된다) 이 영상의 사진들을 활용했다.

두개중 먼저 소개된 영상이 훨씬 더 간략화되었고 후자가 조금 더 자세하다.

 

https://www.youtube.com/watch?v=iyN27R7UDnI

https://www.youtube.com/watch?v=U7Z_TIw9InA&t=7s

 

아래 신기한 실험장치가 있다. 레이저로 빛을 쏘면 A,B 두 슬릿으로 빛이 입사 된다. 이중슬릿 실험과 동일하다. 그리고 BBO는 좀 신기하게 하나의 광자가 입사되면 두개의 얽힌 입자를 생성하고(높은 에너지의 광자가 낮은 2개의 광자로 분할된다고 한다) 프리즘을 통해(Glan-Thompson prism) 각기 방향으로 나가게 한다 (슬릿 별로 빨간색과 형광색의 경로를 각각 보자)

 

"D?"들은 모두 관측 장치이다. 아래 이제 실제 그림을 보자.

먼저 A,B로 어디로 들어왔는지 모르는 경우에 D0에는 어떤 무늬가 생길까? 익숙한 설정이다. 회절무늬가 생긴다.

(나중에 살펴볼 D4같은 검출기가 없다고 가정한다.)

 

여기서 또 알고 있어야 하는 내용은 A슬릿으로 온 광자와 B슬릿으로 온 광자는 각기 BBO(어떤 특수 크리스탈을 쓰면 된다고 한다)에 의해 얽힌 광자쌍을 만들어낸다는 사실이다. 아래 그림은 B로 들어온 광자가 얽힌 광자 2개로 나뉘어 나아가는 모습이다(빛나는 밝은 두 원을 보라). 얽힌 광자는 당연하게도 하나가 확정되면 또 다른 하나가 즉시 확정된다. 즉 이 실험은 이중슬릿과 얽힌 광자입자가 동시에 등장하는 실험이다.

 

이 실험도구를 이제 좀더 아래 그림처럼 확대해보자. 이제 BBO를 거쳐 가는 얽힌 입자들이 프리즘(PS)을 거쳐 BSb, BSa라는 각각의 거울을 거쳐 D4나 D3에 도달하게 된다(영상에서는 애니메이션이 제공되어 더 길을 잘 알 수 있다, 나중에 Bsa, BSb는 반투명 거울-beal splitter-로 바뀌지만, 지금은 거울이라고 하자) 

만약에 D4에 입자가 나타났다면 이중슬릿에서 A로 통과되어 들어온 것이므로 입자의 위치가 들통나면서 어떻게 될까? 이제 회절무늬가 사라지겠다. D3에 입자가 나타났어도 B를 통과해서 들어온것이므로 회절무늬는 사라진다. D4, D3에도 그냥 입자처럼 관측된다 확률함수는 이미 붕괴된 것이다.

 

 이것이 왜 신기할까? 이미 슬릿은 통과되었는데 뒤에 관측한 사실때문에 회절무늬가 사라진셈이다. 다른 과거의 실험 예처럼 이중슬릿에서 관측하지 않고, 이번에는 뒷 선에서 관측을 해도 회절무늬는 사라지게 된다. 즉 입자로부터 정보를 얻는 시점은 상관없이 정보가 생기면 확률붕괴가 발생한다는 사실이다.

 

 그리고 또 하나 신기한 것은 아예 D3,D4가 뒤로 아무리 멀게 배치해도 간섭무늬가 사라진다고 한다(개인적으로 이것이 잘 이해가 가지 않긴 하다). D0에 이미 충돌했는데 D3,D4가 검출이 가능하게되면 간섭무늬가 사라지는 모양새이다. 광자의 과거에 영향을 미치는 모습이다. (즉 양자역학의 얽힘과 그 효과가 결국에는 과거와 미래가 한 방향으로 흐른다는 것이 의미가 없다는 것을 시사한다고 생각한다. 정보는 시간을 거꾸로 넘어 상호작용한다. 마치 모든 시간의 일이 한 순간에 펼쳐지는 느낌이다. 이런 것들을 Retro Casuality라고 부른다고 한다.)

 

그리고 한단계 더 나아가보자.

 

아예 BSb와 BSa를 이제 반투명 거울로 바꾸어보자. 설명하기는 복잡하지만 상기 실험의 구성에서는 반투명의 구성때문에 결국 D2, D1에 상이 맺히더라도 어느 경로로 들어온 것인지를 알 수 없게 된다. 온갖 측정장치가 앞에 달려있어도 마지막에는 그 정보를 알 수 없게 된 상태가 된 것이다. 그리고 이제 BSb, BSa를 통과한 광자만 따로 모아서 무늬를 관찰해보자(한번에 광자를 1개 수준으로 쏘면 그렇게 따로 모을 수 있다고 한다). 그러면 다시 회절무늬가 나타난다. 관측장치가 있어도, 결국은 어느 슬릿에서 왔는지 알 수 없으면 회절 무늬를 띄게 된다.

 

여기서 또 재미있는 것은 이때의 D0이다. D1/D2에서 반응한 광자의 얽힌 쌍은 D0에서도 회절무늬를 보인다. 그런데 가만.. 이 그림의 경로 길이는 실제와 유사하게 표현되어 있는데, D2나 D1에는 D0보다 나중에 충돌되게 된다. 그런데 D1과 D0에 충돌되기도 전인데 D0에는 회절무늬가 생긴다.

 

무엇이라? 이 D0의 회절무늬는 마치 미래에 이 광자가 D2나 D1에 맺힌다는 것을 미리 알고있는것처럼 행동한다는 것이다. 만약에 이 D4,D2,D3,D1을 10광년정도 뒤로 배치했다고 치자. 영상들의 설명에서는 여전히 유효하다고 한다. 대체 이것이 우리 상식으로 어떻게 이해가 가는가.. 

 

https://www.youtube.com/watch?v=0ui9ovrQuKE  (7분20초부터 8분 30초 사이의 설명)

 

 

무언가 우리가 아는 우주의 인과 관계라는 것이 뒤집어 지는 모양새이다. 그런데 실험 결과가 정확히 위 설명과 일치한다고 한다. 섣불리 양자역학에서의 관측이라는 것을 이해했다고 말하기 힘든 이유이다. 이것은 인과 관계나 시간의 앞과 뒤도 상관없다. 양자는 정보를 얻을 수 있느냐로 그 결과만 귀신같이 따져서 알고 확률함수가 붕괴될지 아닐지를 결정한다. 

 

 리처드 파인만 교수의 말대로 "양자역학을 이해하는 사람은 아무도 없다"라는 말이 이해가는 순간이 아닐까.

 

자 이제 앞서 소개한 동영상을 살펴보자. 이해가 좀더 명료해지길 바란다.

 

-------------------------------------------------------------------------------------------------------

 

이 소개에 대해 미래의 행위가 과거를 바꾸지 않는 것이라는 지적이 있다. 실험상의 함정이 있다는 이야기이다. 아래 동영상을 참조하자.

https://www.youtube.com/watch?v=RQv5CVELG3U 

 

반응형
Posted by 작동미학
양자컴퓨터2020. 3. 9. 23:42

조금전(20년 3월) Tensorflow Quantum이 발표되었다. IBM나 Azure, Amazon이 여러가지 공개를 하고 있던 터라서 Google쪽도 유사 활동을 하지 않을까 싶었는데, Tensorflow Quantum이라는 S/W 라이브러리 배포 형태로 발표를 했다.

 

Tensorflow Quantum이라는 이름으로 Tensorflow와 같이 쓸 수 있는 library와, 타사에서 제공하는 양자 회로를 제작하고 실행할 수 있는 Cirq라는 오픈소스 프로젝트를 동시에 소개하고 있는게 주요 내용이다.

 

우선 먼저 Cirq를 소개해보자. 문건 상으로는 아직 정식 Google Product이 아니라고 소개하고 있고 버전도 알파이다. 프로젝트 자체는 별로 특이할 것 없이 양자 회로를 코딩하고 시뮬레이션할 수 있는 Python 라이브러리다. 구글이 만드는 Bristlecone(72 qubit, 기존 54 qubit Sycamore의 다음버전인가보다)이라는 양자컴퓨터 상에서 향후에 작동을 확인할 수 있다고 이야기하고 있다. Tensorflow 를 CPU/GPU/TPU에서 돌릴 수 있듯이 Cirq는 이 Bristlecone이라는 장치에서 구동할 수 있다는 이야기다. 물론 예제 코딩을 보면 PC에서 시뮬레이션 기능도 포함되어 있다.

 

아래 해당 github( https://github.com/quantumlib/Cirq )을 방문해보면 앞서 IBM/Azure에서 소개해한 양자게이트 S/W Framework들과 다르지 않다는 것을 알 수 있다. 큐빗을 선언하고 회로를 구성하고 시뮬레이션하면 결과를 알려준다. 회로를 프린트하는 기능도 있다. (스크린샷 맨 하단) 이 양자 게이트에 대해서 궁금하신 분들은 IBM 개발툴 설명 ( https://infoengineer.tistory.com/22 ) 을 읽어보기를 추천한다. 각 양자 게이트의 세부와 함께 제일 잘 설명되어 있다.

 

나중에는 simulator가 아니라, bristlecone(72qubit quantum computer)을 통해 동작하게 되겠다. 구글이 공개한 사진이라도 봐두자.

 

 

 그러면 Tensorflow Quantum은 무엇일까? 구글이 이야기하는 NISQ(Noisy Intermediate-Scale Quantum)라는 것은, 어차피 양자 컴퓨터의 개별 qubit이 에러때문에 과거에 기대했던 엄청난 고성능을 기대하기 어려운 상황에 대한 대안이다. 즉 이러한 에러(결잃음,decoherence)에도 불구하고 이를 활용할 수 있도록 구성해야 한다고 주장하고 있다. 이것을 NISQ Computing era라고 한다. 이를 위해서 NISQ Computing을 머신러닝과 접목할 수 있게 만든 것이 Tensorflow Quantum이다(머신러닝 외에도 몇가지 추가 응용 분야가 나열되어 있긴 하다). 물론 GPU/TPU도 같이 써야 한다. 그러니 Hybrid quantum classical machine learning library라고 설명한다.

 

 

 NISQ 상황하에서 이런 S/W Framework을 계속 발전시켜야 실제 양자 컴퓨터의 혜택을 극대화할 수 있다는 말하고 있다. 아래 비디오의 6분 부터이다.

https://www.youtube.com/watch?v=16ZfkPRVf2w

양자컴퓨터가 지향하는 바는 오류없는(결잃음) 양자 컴퓨터인데, 아직은 멀었고 이런 결잃음이 약간 있는 양자 컴퓨터로도 뭔가 할 수 있지 않느냐에 대한 가이드로 이 Cirq와 Tensorflow Quantum을 내놓았다는 이야기다.

 

아래가 TensorFlow Quantum의 공식 페이지이고, Tensorflow Quantum이 이러한 NISQ시대(오류 보정없는 적당한 qubit 규모의 양자 컴퓨터)의 하이브리드 머신러닝 라이브러리임을 나타내고 있다.

 

 

동일 페이지 다른 화면의 NISQ 기반의 양자 머신러닝 개념을 설명한 페이지이다.

 

좀 아쉽지만 Tutorial상에 머신 러닝 예시들이 존재하는데 더 확인이 필요하다.

(MNIST 문제중에 3과 6만 발췌하여 저해상도로 만들어서 위 양자 하이브리드 머신러닝을 돌려주는 예시가 존재한다)

 

 일단 구글도 Tensorflow와 Cirq를 통해 양자컴퓨팅 관련 S/W Framework을 시작했다고 볼 수 있겠다. 타 사업자대비 조금 다른 점은 단순히 양자게이트에 의한 회로 뿐 아니라, 머신러닝을 결합해서 우선 시작했다는 점이겠다.

 

다만 양자컴퓨터와 머신러닝의 결합으로 정말 Noise가 존재하는 퀀텀 컴퓨터를 잘 활용할 수 있게 될지는 그 이론적인 배경이나, 실제 그러한 것들이 가능한지 좀더 지켜봐야하겠다. 사실은 IBM이 제공하는 양자컴퓨터 들도 이 노이즈 문제가 있다(error correction은 하지 않음, 대개 절대온도 0도 수준의 냉각과 셋팅 후 수십 마이크로 초가 지나면 노이즈가 심해지는 상태로 흔히들 이야기한다) 이러한 상황에서 좀더 이러한 양자컴퓨터의 가치를 끌어올리려는 노력이 아닌가 싶기도 하다.

 

 제시된 MNIST예제나 Tensorflow Quantum이 지향하는 바는 앞단에 데이터를 Quantum State Set(Quantum Data)으로 변환해서 집어넣은 후에, 후 단의 고전적인 머신러닝을 통해 Quantum State Set들이 Quantum Gate들을 통과한 후의 결과를 보정하는 듯한 구조로 되어 있는데, 실제로 이러한 앞부분이 얼마나 효과적으로 작동할 수 있게 개선할 수 있는지는 아직 필자로서는 이해가 부족하다.

Quantum hybrid Machine Learning 개념도 (Google AI Blog) / 그림만으로 보면 양자 회로의 출력값을 머신러닝을 통해 보정하도록 우리가 일반적으로 아는 머신러닝을 후단에 붙여서 학습시킨다

 

반응형
Posted by 작동미학
양자컴퓨터2020. 2. 1. 01:00

Microsoft Azure에 QDK(Quantum Development Kit) 서비스가 열렸다고 해서 오늘 잠깐 방문해보았다. 생각보다 상당히 자세하게 설명되어 있어서 깊게 보는 것은 무리지만(기존에 IBM 사례보다 더 자세하게 나온다) 전체 소개해보는 글을 써볼까 한다.

 

살펴보니 19년 11월 전후에 오픈을 한 것으로 추정된다.

 

azure.microsoft.com/ko-kr/services/quantum/ 로 들어가 보자. 얼리어답터를 모집중이다. 간단히 가입하고 필요사항을 입력하면 해볼 수 있다. 다만 여기서는 실제 구동을 해보지는 않는다. (설명 문서는 화면상의 Quantum Development Kit 시작하기를 선택해서 jump해 가입없이도 볼 수 있다.)

 

Azure Quantum 첫 페이지, 얼리어답터 되기 파란 버튼을 선택하자

 

 

친절하게도 Azure Quantum의 전체 아키텍쳐가 하단에 표시되어 있다.

Azure Quantum 스택

살펴보면 맨 아래 기반에는 MS도 만들지만 Honeywell이나 IONQ같은 회사들의 양자컴퓨터 장비를 쓴다는 것을 알 수 있다. 응용 분야로는 잘 알려진 Optimization/ML, 양자 시뮬레이션, 암호학 정도를 지정한다. 기존에 IBM의 개발Kit보다 훨씬더 상세한 것이 마음에 든다. IBM은 Qubit 회로를 만들어 관측하는데 초점을 두었다면 여기는 뭔가 더 자세하다. 기대가 된다.

 

QDK 시작하기라는 것을 선택하면 전체 문서를 볼 수 있는데(왼쪽에 문서 메뉴를 보자) 죽 따라가보면 전체의 내용을 알 수 있다. 여기서는 편의상 좀 왔다갔다 해보자. 역시 엔지니어는 어떻게 설치하는가부터가 궁금하다.

MS라고 하면 뭔가 Visual Studio를 깔아야 한다는 선입견이 있는데, 역시 보면 Q#이라는 언어에 대한 소개가 나온다. 그런데 MS가 최근에 많이 변했다. linux도 내장한다는 그 혁신대로, 무려 python을 지원한다. Q#으로 짜도, python에서 실행할 수 있게 제공한다. 그리고 그것을 제일 먼저 설명한다. 마음에 든다.

그러면 Q# 으로 된 가장 간단한 소스를 살펴보자. 아래 양자 난수 생성기 예제는 그냥 Qubit하나를 만들어 상태를 조절하고 중첩상태로 만든 후 관측한다. 0과 1중 하나가 random으로 관측되겠다. 해당 문건을 자세히 살펴보면 무슨 말인지 더 자세히 알 수 있다.

 여기서 중요한 것은 어떻게 선언하고 Qubit을 어떻게 연산시키고 관측하는지 형태를 보는 것이 중요하다. IBM 개발킷과 비교해보면 그렇게 크게 다르지는 않다. 아래 첫번째 소스를 보면 q = Qubit()으로 qubit하나를 할당하고 H(q)를 통해 qubit을 중첩상태로 만든 후 측정한다. 그리고 return한다.

 

Q#의 기본 코드 예시

 

그런데 찾다가 반가운 페이지를 찾았다. Grover 검색 알고리즘 구현이라니! 사실은 Qubit으로 회로를 만드는 것들은 이미 보아왔던 것이고 이를 응용으로 이어줄 예시가 나와있다. 이후 Katas라는 tutorial 페이지를 다시 소개하겠지만, 빠른 시작 안에는 Grover 검색 알고리즘 구현에 대한 간단한 예시가 알고리즘 설명과 함께 나와있다.

 

더 멋진 상세 Tutorial인 Quantum Katas라는게 있다. Grover 검색 알고리즘에 대한 상세한 예시와, BB84 프로토콜도 구현된 것이 있다. Shor 알고리즘에 대해서는 자신들이 가진 하드웨어로는 물리적 구현이 불가능하다고 표현하고 있고 물론 예시도 나오지 않는다. 다만 여러가지 재미있는 예시들이 많이 나와서 더 공부할만하다. 각각의 제목을 선택한 후 github페이지가 열리면 description에 있는 Run tutorial 링크를 각각 선택하면 Jupyter Notebook형태로 볼 수 있다.

 

Azure가 제공하는 개발킷 Tutorial인 Quantum Katas

 

Katas안에 있는 몇가지 페이지를 훑어 보자. 아래는 기본 코스로 Qubit을 생성하고 연산을 조금더 복잡하게 수행하는 Jupyter Notebook화면이다.

X(q), H(q), S(q), Rx, Ry.. 등의 다양한 상태 조절에 대한 함수들이 나온다. 이것은 기존의 IBM 개발킷과 유사하고, 해당 연산들에 대한 대략적인 부분은 해당 블로그 글을 참조하는게 좋다(IBM의 Gates Glossary가 더 쉽게 잘 설명되어 있다)

 

하단은 양자 순간 이동 제목으로 이동한 후 run tutorial을 했을때 나오는 설명이다. 일단 QAlice, QBob 두 Qubit을 얽히면서 시작한다. 사실 양자 컴퓨팅 개발 Kit에 왜 Quantum Teleportation이 등장하는지 약간 의아하긴 한데, 다른 글에서 살펴보기로 하자.

 

Grover 알고리즘도 Katas에서는 좀더 자세하게 다뤄진다.

 

Katas의 또다른 흥미로운 Tutorial은 BB84 protocol이다. 이게 또 왜 여기나오지? 싶은데 (양자컴퓨터와는 다른 주제다) 맨 처음 설명한 Azure Quantum Stack에서 설명한 모든 것들에 대한 개발 Kit을 제공하는 것으로 이해했다. 여하튼 이녀석도 반갑다. 자주 듣던 Alice와 Bob이 등장한다.

 

 

IBM 개발툴을 살펴보았을 때보다 훨씬 흥미로운 것은 단순히 양자 컴퓨터의 logic gate에 그치지 않고 수많은 응용코드가 같이 나오는 점이다. 하나하나 둘러보면 마치 기존에 어셈블리어만 구경하다가 C언어로 된 것을 처음 만나는 느낌처럼 실제 응용을 어떻게 하는지 공부해볼 수 있겠다.

 

끝내기 전에 혹시나 해서 찾아본 결과 AWS도 AWS Braket이라는 양자 컴퓨팅 서비스를 내놓았다('19년 12월에). 다만 여기도 preview 가입을 해야 공개한다. 개괄적인 설명 문서에는 IBM 개발툴 소개와 크게 차이가 없어 보인다. 이 부분은 허가를 받으면 나중에 다시 공유하기로 하자. 아래가 소개하는 URL이다. 

 

https://aws.amazon.com/ko/blogs/korea/amazon-braket-get-started-with-quantum-computing/

 

Amazon Braket – 양자 컴퓨팅 서비스 시작하기 | Amazon Web Services

10여년 전 만우절에 양자 컴퓨팅 클라우드에 관해 쓴적이 있습니다. 그런데, 거짓말 같은 이야기가 현실이 되어서 마침내 양자 알고리즘을 작성하여 실제 양자 컴퓨터에서 실행할 수 있는 기회가 생겼습니다. 오늘 발표할 주제는 바로 진짜 클라우드 기반 양자 컴퓨팅에 관련한 것입니다. Amazon Braket – 과학자, 연구원 및 개발자가 한 곳에서 여러가지 양자 하드웨어 제공 업체의 컴퓨터를 실험 할 […]

aws.amazon.com

그리고 잠깐 검색해본 결과로는 Google은 아직 공개하지 않았다. 지금까지 공개한 기준으로 IBM, MS Azure, Amazon AWS 중에 MS Azure가 가장 풍성하게 오픈한 셈이다. 공개된 페이지에 들어가 시범사용해보면 이구동성이로 이 분야가 초기이며 더 많은 참여자들이 연구하고 활용하여 개선해줄 것을 요구하고 있다. 확실히 제대로된 응용단계에 들기 위해서는 아직도 시간이 많이 필요해보이는 느낌이다.

반응형
Posted by 작동미학