Референтні стани
У цьому уроці ми розглянемо, як ініціалізувати систему за допомогою референтного стану, щоб пришвидшити збіжність варіаційного алгоритму. Спочатку навчимося будувати референтний стан вручну, а потім розглянемо кілька стандартних варіантів, які можна використовувати у варіаційному алгоритмі.
Стандартний стан
Референтний стан — це початкова фіксована точка старту для нашої задачі. Щоб підготувати референтний стан, потрібно застосувати відповідний непараметризований унітарний оператор на початку квантової схеми так, щоб . Якщо є обґрунтована здогадка або точка з відомого оптимального розв'язку, варіаційний алгоритм, скоріш за все, збіжиться швидше, якщо вико ристати її як початкову точку.
Найпростіший референтний стан — стандартний, де початковим є стан -кубітної квантової схеми: . Для стандартного стану унітарний оператор . Завдяки простоті стандартний стан є прийнятним референтним станом у багатьох сценаріях.
Класичний референтний стан
Припустимо, у тебе трикубітна система і ти хочеш почати зі стану замість стандартного . Це приклад суто класичного референтного стану: щоб його побудувати, достатньо застосувати гейт X до кубіта (згідно з порядком кубітів у Qiskit), оскільки .
У цьому випадку унітарний оператор , що дає референтний стан .
# 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")
Квантовий референтний стан
Припустимо, ти хочеш почати зі складнішого стану, що включає суперпозицію та/або заплутаність, наприклад .
Щоб отримати цей стан з , можна використати гейт Адамара на кубіті (), гейт CNOT (CX) з кубітом як контрольним і кубітом як цільовим (), і, нарешті, гейт на кубіті ().
У цьому сценарії унітарний оператор , а референтний стан .
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 — тип параметризованої схеми, що дозволяє передавати точки даних () до цієї карти ознак.
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")
Підсумок
З цього уроку ти дізнався, як ініціалізувати систему за допомогою:
- Стандартного референтного стану
- Класичних референтних станів
- Квантових референтних станів
- Прикладних референтних станів
Загальний варіаційний робочий процес виглядає так:
Хоча референтні стани є фіксованими початковими точками, ми можемо використовувати варіаційну форму, щоб визначити анзац — набір параметризованих станів для дослідження варіаційним алгоритмом.