Path: blob/master/site/ko/quantum/tutorials/qcnn.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
양자 컨볼루셔널 신경망
설정
TensorFlow Quantum을 설치합니다.
이제 TensorFlow 및 모듈 종속성을 가져옵니다.
1. QCNN 빌드하기
1.1 TensorFlow 그래프에서 회로 어셈블링하기
TensorFlow Quantum(TFQ)는 그래프 내 회로 구성을 위해 설계된 레이어 클래스를 제공합니다. 한 가지 예는 tfq.layers.AddCircuit
에서 상속되는 tf.keras.Layer
레이어입니다. 이 레이어는 다음 그림과 같이 회로의 입력 배치 앞이나 뒤에 놓일 수 있습니다.
다음은 이 레이어를 사용하는 코드 조각입니다.
입력 텐서를 검사합니다.
이제 출력 텐서를 검사합니다.
tfq.layers.AddCircuit
을 사용하지 않고 아래 예를 실행할 수 있지만 복잡한 기능을 TensorFlow 컴퓨팅 그래프에 포함할 수 있는 방법을 이해할 수 있는 좋은 기회입니다.
1.2 문제 개요
클러스터 상태를 준비하고 "여기"되었는지 여부를 감지하도록 양자 분류자를 훈련합니다. 클러스터 상태는 심하게 얽혀 있지만 기존 컴퓨터에서 처리하기에 꼭 어렵지만은 않습니다. 여기서는 이해를 돕기 위해 논문에서보다 간단한 데이터세트를 사용합니다.
이 분류 작업을 위해 다음과 같은 이유로 심층적인 MERA와 같은 QCNN 아키텍처를 구현할 것입니다.
QCNN과 마찬가지로 링에서 클러스터 상태는 변환적으로 불변합니다.
클러스터 상태는 심하게 얽혀 있습니다.
이 아키텍처는 얽힘을 줄이고 단일 큐비트를 읽어 분류를 실현하는 데 효과적이어야 합니다.
"여기된" 클러스터 상태는 cirq.rx
게이트가 큐비트에 적용된 클러스터 상태로 정의됩니다. Qconv 및 QPool은 이 튜토리얼 뒷부분에서 논의합니다.
1.3 TensorFlow의 빌딩 블록
TensorFlow Quantum으로 이 문제를 해결하는 한 가지 방법은 다음을 구현하는 것입니다.
모델에 대한 입력은 빈 회로 또는 여기를 나타내는 특정 큐비트의 X 게이트인 회로 텐서입니다.
모델의 양자 구성 요소 중 나머지는
tfq.layers.AddCircuit
레이어로 구성됩니다.추론을 위해
tfq.layers.PQC
레이어가 사용됩니다. 이 레이어는 을 읽고 이를 여기 상태의 레이블 1 또 여기 상태가 아닌 레이블 -1과 비교합니다.
1.4 데이터
모델을 빌드하기 전에 데이터를 생성할 수 있습니다. 이 경우에는 클러스터 상태에 대한 여기가 데이터에 해당합니다(원래 논문에서는 더 복잡한 데이터세트를 사용함). 여기는 cirq.rx
게이트로 표현됩니다. 충분히 큰 순환은 여기로 간주되고 1
의 레이블이 지정되는 반면, 충분히 크지 않은 순환은 -1
의 레이블이 지정되고 여기가 아닌 것으로 간주합니다.
일반적인 머신러닝과 마찬가지로 여기서도 모델을 벤치마킹하는 데 사용할 훈련 및 테스트 세트를 만듭니다. 다음을 통해 일부 데이터 포인트를 빠르게 살펴볼 수 있습니다.
1.5 레이어 정의하기
이제 TensorFlow에서 위의 그림에 표시된 레이어를 정의합니다.
cirq.GridQubit
의 사각형에 대한 클러스터 상태 회로를 표시합니다.
1.5.2 QCNN 레이어
Cong 및 Lukin QCNN 논문을 사용하여 모델을 구성하는 레이어를 정의합니다. 전제 조건으로 다음을 이용한다고 가정합니다.
Tucci 논문의 1-큐비트 및 2-큐비트 매개변수화된 단일 행렬
일반적인 매개변수화된 2-큐비트 풀링 연산
생성 결과를 보기 위해 1-큐비트 단일 회로를 출력합니다.
그리고 2-큐비트 단일 회로입니다.
그리고 2-큐비트 풀링 회로입니다.
1.5.2.1 양자 컨볼루션
Cong 및 Lukin의 논문에서와 같이 1D 양자 컨볼루션은 하나의 간격만큼 떨어진 인접한 큐비트의 각 쌍에 2-큐비트 매개변수화된 단일 행렬을 적용한 것으로 정의됩니다.
(매우 수평적인) 회로를 표시합니다.
1.5.2.2 양자 풀링
양자 풀링 레이어는 위에서 정의한 2-큐비트 풀을 사용하여 큐비트에서 큐비트까지 풀링합니다.
풀링 구성 요소 회로를 검사합니다.
1.6 모델 정의
이제 정의된 레이어를 사용하여 순수 양자 CNN을 구성합니다. 8개 큐비트로 시작하여 1개 큐비트까지 풀링한 다음 을 측정합니다.
1.7 모델 훈련하기
이 예를 단순화하기 위해 전체 배치에 대해 모델을 훈련합니다.
2. 하이브리드 모델
양자 컨볼루션을 사용하여 8개 큐비트에서 1개 큐비트까지 모두 진행할 필요는 없습니다. 대신, 양자 컨볼루션을 1~2회 수행하고 그 결과를 고전적 신경망에 제공할 수 있습니다. 이 섹션에서는 양자-고전 하이브리드 모델을 살펴봅니다.
2.1 단일 양자 필터가 있는 하이브리드 모델
모든 비트에서 을 읽고 밀집 연결된 신경망이 뒤따르는 하나의 양자 컨볼루션 레이어를 적용합니다.
2.1.1 모델 정의
2.1.2 모델 훈련하기
보는 바와 같이 약간의 고전적 모델을 도입한 하이브리드 모델에서 일반적으로 순수한 양자 버전보다 수렴이 더 빠릅니다.
2.2 다중 양자 필터를 사용한 하이브리드 컨볼루션
이제 다중 양자 컨볼루션과 고전적 신경망을 사용하여 이 두 가지를 결합하는 아키텍처를 시도해 보겠습니다.