Estados de referencia
En esta lección aprenderemos cómo inicializar nuestro sistema con un estado de referencia para acelerar la convergencia de nuestro algoritmo variacional. Primero aprenderemos a construir un estado de referencia manualmente y luego exploraremos diferentes opciones estándar que pueden utilizarse en un algoritmo variacional.
Estado predeterminado
Un estado de referencia designa el punto de partida inicial y fijo para nuestro problema. Para preparar un estado de referencia, debemos aplicar al inicio de nuestro circuito cuántico el operador unitario no parametrizado apropiado , tal que . Si tienes una estimación fundamentada o un dato de una solución óptima ya conocida, el algoritmo variacional probablemente convergerá más rápido si lo usas como punto de partida.
El estado de referencia más simple posible es el estado predeterminado, en el que usamos el estado inicial de un circuito cuántico de qubits: . Para el estado predeterminado, . Debido a su simplicidad, el estado predeterminado es un estado de referencia válido que se emplea en muchos escenarios.
Estado de referencia clásico
Supongamos que tienes un sistema de tres qubits y deseas comenzar en el estado en lugar del estado predeterminado . Este es un ejemplo de un estado de referencia puramente clásico. Para construirlo, solo necesitas aplicar una puerta X al qubit (según el orden de qubits de Qiskit), ya que .
En este caso, nuestro operador unitario es , lo que resulta en el estado de referencia .
# 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")
Estado de referencia cuántico
Supongamos que deseas comenzar con un estado más complejo que involucre superposición y/o entrelazamiento, como por ejemplo .
Para obtener este estado a partir de , se puede aplicar una puerta Hadamard al qubit (), una puerta CNOT (CX) con el qubit como qubit de control y el qubit como qubit objetivo (), y finalmente una puerta en el qubit ().
En este escenario, nuestro operador unitario es , y nuestro estado de referencia es .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
Construcción de estados de referencia usando circuitos plantilla
También podemos usar diferentes circuitos plantilla, como TwoLocal, que permite una representación sencilla de múltiples parámetros ajustables y entrelazamientos. Estos circuitos plantilla los cubriremos con más detalle en la siguiente lección, pero podemos usarlos para nuestros estados de referencia, siempre que vinculemos los parámetros:
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")
Estados de referencia específicos de la aplicación
Aprendizaje automático cuántico
En el contexto de un clasificador cuántico variacional (VQC), los datos de entrenamiento se codifican en un estado cuántico mediante un circuito parametrizado denominado feature map. Cada valor de parámetro representa un punto de datos del conjunto de datos de entrenamiento. La zz_feature_map es un tipo de circuito parametrizado que se puede utilizar para pasar nuestros puntos de datos () a este 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")
Resumen
En esta lección aprendiste cómo inicializar tu sistema utilizando los siguientes métodos:
- Estado de referencia predeterminado
- Estados de referencia clásicos
- Estados de referencia cuánticos
- Estados de referencia específicos de la aplicación
Nuestro flujo de trabajo variacional de alto nivel se ve así:
Mientras que los estados de referencia son puntos de partida fijos, podemos usar una forma variacional para definir un ansatz que represente una colección de estados parametrizados que nuestro algoritmo variacional puede explorar.