Path: blob/master/site/ko/quantum/tutorials/quantum_data.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
양자 데이터
MNIST 튜토리얼에 비교한 내용을 바탕으로, 이 튜토리얼은 서로 다른 데이터세트가 성능 비교에 어떻게 영향을 미치는지 보여주는 Huang et al.의 최근 연구를 살펴봅니다. 그 연구에서, 저자들은 기존 머신러닝 모델이 양자 모델과 마찬가지로(또는 그 이상으로) 잘 학습할 수 있는 방법과 경우에 대해 이해하고자 합니다. 연구는 또한 면밀히 만들어진 데이터세트를 통해 기존 머신러닝 모델과 양자 머신러닝 모델 사이의 실증적인 성능 분리를 소개합니다. 여러분은 다음을 수행합니다.
축소된 차원 Fashion-MNIST 데이터세트를 준비합니다.
양자 회로를 사용하여 데이터세트에 레이블을 다시 지정하고 Projected Quantum Kernel(PQK) 기능을 컴퓨팅합니다.
레이블이 다시 지정된 데이터세트에서 기존 신경망을 훈련하고 PQK 기능에 액세스할 수 있는 모델과 성능을 비교합니다.
설치
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
1. 데이터 준비
양자 컴퓨터에서 실행할 fashion-MNIST 데이터세트를 준비하는 것으로 시작하겠습니다.
1.1 fashion-MNIST 다운로드
첫 번째 단계는 기존 fashion-mnist 데이터세트를 받는 것입니다. tf.keras.datasets
모듈을 사용하여 받을 수 있습니다.
데이터세트를 필터링하여 T-shirts/tops 및 dresses만 유지하고 다른 클래스는 제거합니다. 동시에 레이블 y
를 0은 True, 3은 False에 대응하는 부울로 변환합니다.
1.2 이미지 축소하기
MNIST 예시와 같이, 현재 양자 컴퓨터의 경계 내에 있게 하려면 이러한 이미지의 크기를 축소해야 합니다. 하지만 이번에는 tf.image.resize
연산 대신 FCA 변환을 사용하여 차원을 축소하겠습니다.
마지막 단계는 데이터세트 크기를 1,000개의 훈련 데이터 포인트와 200개의 테스트 데이터 포인트로 축소하는 것입니다.
2. PQK 기능 다시 레이블 지정 및 컴퓨팅
이제 양자 구성요소를 결합하고 위에서 생성한 잘라낸 fashion-MNIST 데이터세트를 다시 레이블 지정하여 "부자연스러운" 양자 데이터세트를 준비합니다. 양자와 기존 메서드를 최대한 분리하기 위해, 우선 PQK 기능을 준비한 다음 그 값에 따라 출력을 다시 레이블 지정합니다.
2.1 양자 인코딩 및 PQK 기능
다음 모든 큐비트에서 1-RDM로 정의된 x_train
, y_train
, x_test
및 y_test
를 바탕으로 새로운 일련의 기능을 생성합니다.
여기에서 가 단일 큐비트 회전 벽이고
우선, 다음과 같은 단일 큐비트 회전 벽을 생성할 수 있습니다.
다음 회로를 살펴봄으로써 이 작업을 빠르게 확인할 수 있습니다.
다음으로 모든 대체 cirq.PauliSum
객체를 기하급수적으로 증가시킬 수 있는 tfq.util.exponential
의 도움을 통해 를 준비할 수 있습니다.
이 회로는 확인하기 약간 더 어려울 수 있지만 두 개의 큐비트 케이스를 검사하여 어떤 일이 일어나는 중인지 확인할 수 있습니다.
이제 전체 인코딩 회로를 함께 조합하는 데 필요한 모든 구성 요소를 갖췄습니다.
몇몇 큐비트를 선택하고 데이터 인코딩 회로를 준비하세요.
다음으로, 위의 데이터세트 회로의 1-RDM을 바탕으로 한 PQK 기능을 컴퓨팅하고 결과를 rdm
, 모양이 [n_points, n_qubits, 3]
인 tf.Tensor
에 저장하세요. 항목은 i
가 데이터포인트에서 색인을 생성하고, j
가 큐비트에서 색인을 생성하고k
가 에서 색인을 생성하는 rdm[i][j][k]
= 에 있습니다.
2.2 PQK 기능을 바탕으로 다시 레이블 지정
이제 x_train_pqk
및 x_test_pqk
에서 생성된 기능인 이러한 양자를 갖췄으므로 데이터세트를 다시 레이블 지정할 때입니다. 양자와 기존 성능을 최대한 분리하기 위해 x_train_pqk
및 x_test_pqk
에 있는 스펙트럼 정보를 바탕으로 데이터세트를 다시 레이블 지정할 수 있습니다.
참고: 기존 및 양자 모델 간 성능을 확실히 최대한 분리하도록 데이터세트를 준비하는 것은 속임수처럼 느껴질 수 있지만 기존 컴퓨터에는 어렵고 양자 컴퓨터가 모델링 하기 쉬운 데이터세트의 존재에 대한 매우 중요한 증거를 제공합니다. 장점을 보여주기 위해 이와 같은 것들을 우선 생성할 수 없다면 QML에서의 양자의 장점을 찾는 것은 의미가 없을 것입니다.
이제 데이터세트의 레이블을 다시 지정하는 데 필요한 모든 것이 갖춰졌습니다! 이제 플로 차트를 참고하여 데이터세트를 다시 레이블 지정할 때 성능을 최대한 분리하는 방법에 대해 더 잘 이해할 수 있습니다.
양자와 기존 모델 간의 성능을 최대한 분리하기 위해 S_pqk, V_pqk
및 S_original, V_original
을 사용하여 기존 데이터세트와 PQK 기능 Kernel 행렬 간의 기하학적 차이를 극대화하도록 시도할 것입니다. 값이 크면 처음에 플로 차트에서 오른쪽으로 이동하여 양자 케이스에서 예측 우위를 얻을 수 있습니다.
참고: 및 에 대한 양을 컴퓨팅하는 것은 또한 성능 분리를 더 잘 이해하는 데 아주 유용할 수 있습니다. 이 케이스에서 성능 분리를 볼 수 있도록 값이 충분히 커야 합니다.
3. 모델 비교하기
데이터세트를 준비했으므로 모델 성능을 비교할 차례입니다. 두 개의 소규모 피드 포워드 신경망을 생성하고 x_train_pqk
에 있는 PQK 기능에 액세스가 주어지면 성능을 비교하겠습니다.
3.1 PQK 강화 모델 생성
표준 tf.keras
라이브러리 기능을 사용하여 이제 x_train_pqk
및 y_train_new
데이터 포인트에서 모델을 생성하고 훈련할 수 있습니다.
3.2 기존 모델 생성
위의 코드와 유사하게 이제 또한 여러분의 부자연스러운 데이터세트의 PQK 기능에 액세스가 없는 기존 모델을 생성할 수 있습니다. 이 모델은 x_train
및 y_label_new
를 사용하여 훈련될 수 있습니다.
3.3 성능 비교하기
두 모델을 훈련했으므로 두 가지 모델 간 검증 데이터의 성능 차이를 빠르게 나타낼 수 있습니다. 일반적으로 두 모델 모두 훈련 데이터에서 0.9를 초과하는 정확도를 달성합니다. 하지만 검증 데이터에서 PQK 기능의 정보만이 모델을 보이지 않는 인스턴스로 잘 일반화하기에 충분하다는 것이 분명해집니다.
성공: 공정한(하지만 부자연스러운) 설정에서 기존 모델을 의도적으로 이길 수 있는 부자연스러운 양자 데이트세트를 엔지니어링했습니다. 다른 기존 모델 유형을 사용하여 결과를 비교해 보세요. 다음 단계는 직접 엔지니어링 할 필요 없이 기존 모델을 이길 수 있는 새롭고 흥미로운 데이터세트를 찾을 수 있는지 시도하고 확인해 보는 것입니다!
4. 주요 결론
이것과 MNIST 실험에서 도출할 수 있는 다음과 같은 몇 가지 주요 결론이 있습니다.
오늘날의 양자 모델이 기존 데이터에서 기존 모델 성능을 능가하는 것은 아주 드뭅니다. 특히 백만 개 이상의 데이터 포인트를 가질 수 있는 오늘날의 기존 데이터세트에서 말입니다.
데이터가 고전적으로 시뮬레이션하기 어려운 양자 회로에서 나올 수 있다고 해서 기존 모델에서 데이터를 학습하는 것이 반드시 어려워지지는 않습니다.
사용되는 모델 아키텍처 또는 훈련 알고리즘에 관계없이 양자 모델이 학습하기 쉽고 기존 모델이 학습하기 어려운 데이터세트(궁극적으로 사실상의 양자)가 존재합니다.