Перейти до основного вмісту

Референтні стани

У цьому уроці ми розглянемо, як ініціалізувати систему за допомогою референтного стану, щоб пришвидшити збіжність варіаційного алгоритму. Спочатку навчимося будувати референтний стан вручну, а потім розглянемо кілька стандартних варіантів, які можна використовувати у варіаційному алгоритмі.

Діаграма варіантів референтних станів: стандартний, прикладний та квантовий.

Стандартний стан

Референтний стан — це початкова фіксована точка старту для нашої задачі. Щоб підготувати референтний стан, потрібно застосувати відповідний непараметризований унітарний оператор URU_R на початку квантової схеми так, щоб ρ=UR0|\rho\rangle = U_R |0\rangle. Якщо є обґрунтована здогадка або точка з відомого оптимального розв'язку, варіаційний алгоритм, скоріш за все, збіжиться швидше, якщо використати її як початкову точку.

Найпростіший референтний стан — стандартний, де початковим є стан nn-кубітної квантової схеми: 0n|0\rangle^{\otimes n}. Для стандартного стану унітарний оператор URIU_R \equiv I. Завдяки простоті стандартний стан є прийнятним референтним станом у багатьох сценаріях.

Класичний референтний стан

Припустимо, у тебе трикубітна система і ти хочеш почати зі стану 001|001\rangle замість стандартного 000|000\rangle. Це приклад суто класичного референтного стану: щоб його побудувати, достатньо застосувати гейт X до кубіта 00 (згідно з порядком кубітів у Qiskit), оскільки 001=X0000|001\rangle = X_0 |000\rangle.

У цьому випадку унітарний оператор URX0U_R \equiv X_0, що дає референтний стан ρ001|\rho\rangle \equiv |001\rangle.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.x(0)

qc.draw("mpl")

Вивід попередньої комірки коду

Квантовий референтний стан

Припустимо, ти хочеш почати зі складнішого стану, що включає суперпозицію та/або заплутаність, наприклад 12(100+111)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

Щоб отримати цей стан з 000|000\rangle, можна використати гейт Адамара на кубіті 00 (H0H_0), гейт CNOT (CX) з кубітом 00 як контрольним і кубітом 11 як цільовим (CNOT01CNOT_{01}), і, нарешті, гейт XX на кубіті 22 (X2X_2).

У цьому сценарії унітарний оператор URX2CNOT01H0000U_{R} \equiv X_2CNOT_{01}H_0|000\rangle, а референтний стан ρ12(100+111)|\rho\rangle \equiv \frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)

qc.draw("mpl")

Вивід попередньої комірки коду

Побудова референтних станів за допомогою шаблонних схем

Можна також використовувати різноманітні шаблонні схеми, наприклад TwoLocal, яка дозволяє зручно виражати багато настроюваних параметрів та заплутаностей. Ці шаблонні схеми детальніше розглядаються в наступному уроці, але їх можна застосовувати для референтних станів за умови фіксації параметрів:

from qiskit.circuit.library import TwoLocal
from math import pi

reference_circuit = TwoLocal(2, "rx", "cz", entanglement="linear", reps=1)
theta_list = [pi / 2, pi / 3, pi / 3, pi / 2]

reference_circuit = reference_circuit.assign_parameters(theta_list)

reference_circuit.decompose().draw("mpl")

Вивід попередньої комірки коду

Прикладні референтні стани

Квантове машинне навчання

У контексті варіаційного квантового класифікатора (VQC) навчальні дані кодуються у квантовий стан за допомогою параметризованої схеми, відомої як карта ознак, де кожне значення параметра відповідає точці з навчального набору даних. zz_feature_map — тип параметризованої схеми, що дозволяє передавати точки даних (xx) до цієї карти ознак.

from qiskit.circuit.library import zz_feature_map

data = [0.1, 0.2]

zz_feature_map_reference = zz_feature_map(feature_dimension=2, reps=2)
zz_feature_map_reference = zz_feature_map_reference.assign_parameters(data)
zz_feature_map_reference.decompose().draw("mpl")

Вивід попередньої комірки коду

Підсумок

З цього уроку ти дізнався, як ініціалізувати систему за допомогою:

  • Стандартного референтного стану
  • Класичних референтних станів
  • Квантових референтних станів
  • Прикладних референтних станів

Загальний варіаційний робочий процес виглядає так:

Схема унітарного оператора, що підготовлює референтний стан.

Хоча референтні стани є фіксованими початковими точками, ми можемо використовувати варіаційну форму, щоб визначити анзац — набір параметризованих станів для дослідження варіаційним алгоритмом.