Cómo manejar datos clásicos en modelos cuánticos

En los últimos años, la computación cuántica ha atraído un interés creciente por parte de investigadores, empresas y el público. “Cuántico” se ha convertido en una palabra de moda que muchos utilizan para llamar la atención. A medida que este campo ha ganado popularidad, el aprendizaje automático cuántico (QML) ha surgido como un área donde la computación cuántica y el aprendizaje automático se encuentran.

Como alguien interesado en el aprendizaje automático y con un profundo amor por las matemáticas y la computación cuántica, el concepto de aprendizaje automático cuántico me pareció muy atractivo. Pero como investigador en el campo, también era algo escéptico sobre las aplicaciones a corto plazo de QML.

Hoy en día, el aprendizaje automático potencia herramientas como los sistemas de recomendación y los diagnósticos médicos al encontrar patrones en los datos y hacer predicciones. La computación cuántica, por el contrario, procesa la información de manera diferente aprovechando efectos como la superposición y el entrelazamiento.

El campo del aprendizaje automático cuántico explora esta posibilidad y busca responder a esta pregunta.

¿Pueden las computadoras cuánticas ayudarnos a aprender de los datos de manera más efectiva?

Sin embargo, como ocurre con todo lo relacionado con la computación cuántica, es importante establecer expectativas claras. Las computadoras cuánticas ahora están defectuosas y son incapaces de ejecutar programas a gran escala. Dicho esto, son capaces de proporcionar una prueba de concepto sobre la utilidad de QML en diversas aplicaciones.

Además, QML no pretende reemplazar el aprendizaje automático clásico. En cambio, busca partes del proceso de aprendizaje en las que los sistemas cuánticos podrían ofrecer una ventaja, como la representación de datos, la exploración de espacios de características complejos o la optimización.

Teniendo esto en cuenta, ¿cómo puede un científico de datos o un ingeniero de aprendizaje automático sumergirse en el grupo que es QML? Cualquier algoritmo de aprendizaje automático (cuántico o clásico) requiere datos. El primer paso es siempre la preparación y limpieza de datos. Entonces, ¿cómo podemos preparar los datos para usarlos en un algoritmo QML?

Este artículo trata sobre los flujos de trabajo QML y la codificación de datos.

Flujos de trabajo de aprendizaje automático cuántico

Antes de pasar a los datos, hagamos una breve pausa y definamos brevemente qué es el aprendizaje automático cuántico. En un nivel alto, el aprendizaje automático cuántico se refiere a algoritmos que utilizan sistemas cuánticos para realizar tareas de aprendizaje automático, que incluyen:
1. Clasificación
2. Regresión
3. Agrupación
4. Optimización

La mayoría de los enfoques actuales caen en lo que llamamos modelos híbridos cuánticos-clásicos, en los que las computadoras clásicas manejan la entrada y optimización de datos, mientras que los circuitos cuánticos son parte del modelo.
Una forma útil de pensar en esto es: el aprendizaje automático clásico se centra en el diseño de funciones, mientras que el aprendizaje automático cuántico a menudo se centra en codificar funciones en estados cuánticos.

Dado que los datos pueden adoptar muchas formas, los flujos de trabajo QML pueden verse diferentes según el tipo de entrada y algoritmo.

Imagen del autor

Si tenemos datos clásicos y un algoritmo clásico, ese es nuestro flujo de trabajo típico de aprendizaje automático. Las otras tres opciones son donde las cosas se ponen algo interesantes.

1. Datos cuánticos con un modelo cuántico (completamente cuántico)

El enfoque más sencillo es tener algunos datos cuánticos y utilizarlos con un modelo cuántico. En teoría, ¿cómo sería este flujo de trabajo?
1- Entrada de datos cuánticos: La entrada ya es un estado cuántico: ∣ψ⟩
2- Procesamiento Cuántico: Un circuito transforma el estado: U(θ)∣ψ⟩
3- Medición

Los datos con los que estamos trabajando pueden provenir de:
1. Un experimento cuántico (por ejemplo, un sistema físico que se está midiendo).
2. Un sensor cuántico.
3. Otro algoritmo o simulación cuántica.

Como los datos ya son cuánticos, no es necesario ningún paso de codificación. A nivel conceptual, esta es la forma “más pura” de aprendizaje automático cuántico, por lo que podríamos esperar la forma más fuerte de ventaja cuántica aquí.

Sin embargo, este flujo de trabajo todavía está limitado en la práctica debido a algunos desafíos, que incluyen:
1. Acceso a datos cuánticos: la mayoría de los conjuntos de datos del mundo real (imágenes, texto, datos tabulares) son clásicos. En verdad, los datos cuánticos son mucho más difíciles de obtener.
2. Preparación y control del estado: incluso con datos cuánticos, preparar y mantener el estado ∣ψ⟩ con alta fidelidad es un desafío debido al ruido y la decoherencia.
3. Restricciones de medición: si bien retrasamos la medición hasta el final, todavía enfrentamos limitaciones, como que solo extraemos información parcial del estado cuántico y necesitamos un diseño cuidadoso de los observables.

En este tipo de flujo de trabajo, el objetivo es aprender directamente de los sistemas cuánticos.

2. Datos cuánticos con algoritmos clásicos

Hasta ahora, nos hemos centrado en flujos de trabajo en los que se utilizan datos cuánticos en un sistema cuántico. Pero también deberíamos considerar el escenario en el que tenemos datos cuánticos y queremos usarlos con un algoritmo de aprendizaje automático clásico.

A primera vista, esto parece una extensión natural. Si los sistemas cuánticos pueden generar datos ricos y de alta dimensión, ¿por qué no utilizar modelos clásicos de aprendizaje automático para analizarlos?

En la práctica, este flujo de trabajo es factible, pero con una limitación importante.

Un sistema cuántico se describe mediante un estado como:
|ψ⟩=∑i=02n−1αi|i⟩|psirangle = sum_{i=0}^{2^n – 1} alpha_i |irangle
que contiene exponencialmente muchas amplitudes. Sin embargo, los algoritmos clásicos no pueden acceder directamente a este estado. En cambio, debemos medir el sistema para extraer información clásica, por ejemplo, a través de valores esperados:
xi=⟨ψ|Oi|ψ⟩x_i = langle psi | O_i | psi rangle

Estas cantidades medidas se pueden utilizar luego como características en un modelo clásico.

El desafío es que la medición limita fundamentalmente la cantidad de información que podemos extraer. Cada medición proporciona sólo información parcial sobre el estado, y recuperar el estado completo requeriría una cantidad poco práctica de experimentos repetidos.
Dicho esto, el aprendizaje automático clásico puede desempeñar un papel valioso en el análisis de datos de medición ruidosos, la identificación de patrones o la mejora del procesamiento de señales.

Por lo tanto, la mayoría de los enfoques de aprendizaje automático cuántico tienen como objetivo mantener los datos en el sistema cuántico durante el mayor tiempo posible, lo que nos lleva de nuevo al desafío central de este artículo:

¿Cómo codificamos datos clásicos en estados cuánticos en primer lugar?

Entonces, hablemos del flujo de trabajo final.

3. Datos clásicos con un modelo cuántico (QML híbrido)

Este es el flujo de trabajo más común que se utiliza en la actualidad. Básicamente, es un modelo en el que codificamos datos clásicos en estados cuánticos y luego aplicamos QML para obtener resultados. Los algoritmos QML híbridos como este tienen 5 pasos:
1- Entrada de datos clásica
Los datos comienzan en una forma familiar:
x=(x1,x2,…,xn)x=(x1,x2,…,xn)
2- Paso de codificación
Los datos se asignan a un estado cuántico:
x→|ψ(x)⟩x rightarrow |psi(x)rangle
3- Procesamiento Cuántico
Un circuito parametrizado procesa los datos:
U(θ)|ψ(x)⟩U(theta)|psi(x)rangle
4- Medición
Los resultados se extraen como valores esperados:
y=⟨ψ|O|ψ⟩y = langle psi | O | psi rangle
5- Bucle de optimización clásico
Los parámetros θ se actualizan utilizando optimizadores clásicos.

Este flujo de trabajo plantea un nuevo desafío que no se encuentra en el aprendizaje automático clásico:

¿Cómo codificamos eficientemente datos clásicos en un sistema cuántico?
¡Eso es lo que responderemos a continuación!

Imagen del autor

Codificación de datos clásica

Si damos un paso atrás y comparamos estos flujos de trabajo, una cosa queda clara: la principal diferencia estructural es el paso de codificación.
Dado que la mayoría de las aplicaciones del mundo real utilizan conjuntos de datos clásicos, este paso suele ser necesario. Entonces, ¿cómo representamos datos clásicos en un sistema cuántico?

En la informática clásica, los datos se almacenan como números en la memoria.
En computación cuántica, los datos deben representarse como un estado cuántico:

|ψ⟩=α0|0⟩+α1|1⟩|psirangle = alpha_0 |0rangle + alpha_1 |1rangle
Para múltiples qubits:
|ψ⟩=∑i=02n−1αi|i⟩|psirangle = sum_{i=0}^{2^n – 1} alpha_i |irangle

Donde: αialpha_i son amplitudes complejas (∑|αi|2=1)( sum |alpha_i|^2 = 1 ). Entonces, en términos simples, codificar significa: tomar datos clásicos y mapearlos en amplitudes, fases o rotaciones de un estado cuántico.

Ahora, echemos un vistazo más profundo a los diferentes tipos de codificación de datos.

1. Codificación básica (mapeo binario)

Este es el enfoque más simple para codificar datos clásicos. Básicamente, representamos datos binarios clásicos directamente como estados de qubit.
x=(1,0,1)→|101⟩x = (1,0,1) rightarrow |101rangle

Ejemplo de Qiskit

de qiskit importar QuantumCircuit qc = QuantumCircuit(3) qc.x(0) # 1 qc.x(2) # 1 qc.draw('mpl')

Aquí, cada bit se asigna directamente a un qubit y no se utiliza ninguna superposición. Este enfoque sólo funciona si el conjunto de datos que utilizamos es simple. y generalmente se usa en demostraciones y enseñanza en lugar de en la implementación real de QML.

En este tipo de codificación de datos, necesitaría un qubit por función, lo que no se adapta bien a problemas más grandes y realistas.

2. Codificación de ángulos

Para tener una codificación más rica, en lugar de convertir los valores en 0 o 1, usamos rotaciones para codificar nuestros datos clásicos. Los datos cuánticos se pueden rotar en tres direcciones, X, Y y Z.

En la codificación de ángulos, tomamos una característica clásica x y la asignamos a un estado cuántico usando una rotación:
∣ψ(x)⟩=Rα(x) ∣0⟩∣ψ(x)⟩=Rα(x) ∣0⟩, donde α∈{x, y, z}.

Entonces, en principio, puedes usar Rx​(x), Ry​(x) o Rz​(x).
Pero no todos codifican los datos de la misma forma. En la mayoría de los casos, se utiliza Rx o Ry para la codificación de datos.

Ry​(x)∣0⟩=cos(2x​)∣0⟩+sin(2x​)∣1⟩Ry​(x)∣0⟩=cos(2x​)∣0⟩+sin(2x​)∣1⟩
Rx​(x)∣0⟩=cos(2x​)∣0⟩−isin(2x​)∣1⟩Rx​(x)∣0⟩=cos(2x​)∣0⟩−i sin(2x​)∣1⟩

Ejemplo de Qiskit

de qiskit importar QuantumCircuit importar numpy como np x = [0.5, 1.2] qc = QuantumCircuit(2) qc.ry(x[0], 0) qc.ry(x[1], 1) qc.draw('mpl')

La codificación de ángulos puede, en principio, implementarse utilizando rotaciones alrededor de cualquier eje (p. ej., Rx​, Ry​, Rz​). Sin embargo, las rotaciones alrededor de los ejes Y y X afectan directamente las probabilidades de medición, mientras que las rotaciones Z codifican información en fase y requieren operaciones adicionales para volverse observables.

Cuando utilizamos la rotación para codificar datos, los datos continuos se manejan de forma natural, lo que da como resultado una representación compacta que es fácil de implementar. Por sí solo, este método es mayoritariamente lineal a menos que agreguemos entrelazamiento.

3. Codificación de amplitud

Aquí es donde las cosas empiezan a parecer "cuánticas". En la codificación de amplitud, los datos se codifican en las amplitudes de un estado cuántico.
x=(x0,x1,x2,x3)x = (x_0, x_1, x_2, x_3)

|ψ⟩=x0|00⟩+x1|01⟩+x2|10⟩+x3|11⟩|psirangle = x_0|00rangle + x_1|01rangle + x_2|10rangle + x_3|11rangle

Con n qubits, podemos codificar 2n2^n valores, lo que significa que obtenemos una compresión exponencial.

Ejemplo de Qiskit

de qiskit importar QuantumCircuit de qiskit.quantum_info importar Statevector importar numpy como np x = np.array([1, 1, 0, 0]) x = x / np.linalg.norm(x) qc = QuantumCircuit(2) qc.initialize(x, [0,1]) qc.draw('mpl')

El desafío de este enfoque es que la preparación del estado es costosa (en cuanto a circuitos), lo que puede hacer que los circuitos sean profundos y ruidosos. Entonces, aunque la codificación de amplitud parece poderosa en teoría, no siempre es práctica con el hardware actual.

4. Mapas de funciones (codificación de orden superior)

Hasta ahora, hemos cargado principalmente datos clásicos en estados cuánticos. Los mapas de características van un paso más allá al introducir la no linealidad, capturar interacciones de características y aprovechar el entrelazamiento.
La estructura de esta codificación sería la siguiente:

Uϕ(x)=exp⁡(i∑j,kϕjk(x)ZjZk)U_phi(x) = expleft(i sum_{j,k} phi_{jk}(x) Z_j Z_k right)

Eso significa que las funciones no sólo actúan de forma independiente; interactúan entre sí.

Ejemplo de Qiskit

desde qiskit importar QuantumCircuit x1, x2 = 0.5, 1.0 qc = QuantumCircuit(2) qc.ry(x1, 0) qc.ry(x2, 1) qc.cx(0, 1) qc.rz(x1 * x2, 1) qc.draw('mpl')

Este tipo de codificación es el equivalente cuántico de las características polinómicas o transformaciones del núcleo. Esto permite que el modelo encuentre relaciones complejas en los datos.

Puede pensar en los mapas de características como algo que transforma datos en un nuevo espacio, de forma muy parecida a como lo hacen los núcleos en el aprendizaje automático clásico. En lugar de mapear datos en un espacio clásico de dimensiones superiores, QML los mapea en un espacio cuántico de Hilbert.

Imagen del autor

Pensamientos finales

Aunque las computadoras cuánticas aún no están completamente disponibles, en términos de hardware, hoy en día hay mucho que podemos hacer con ellas. Una de las aplicaciones más prometedoras de las computadoras cuánticas es el aprendizaje automático cuántico. Si hay una idea que vale la pena conservar de este artículo, es esta:
En el aprendizaje automático cuántico, la forma en que se codifican los datos a menudo importa tanto como el modelo que se utiliza.

Esto puede parecer sorprendente al principio, pero en realidad es similar al aprendizaje automático clásico. La diferencia es que en QML, la codificación no es sólo preprocesamiento; es parte del modelo en sí.

Y, al igual que el campo más amplio de la computación cuántica, esta área aún está en desarrollo. Todavía no conocemos las "mejores" estrategias de codificación. Las limitaciones del hardware dan forma a lo que es práctico hoy en día y todavía se están explorando nuevos enfoques.

Entonces, si está buscando ingresar a la computación cuántica, el aprendizaje automático cuántico es uno de los lugares más impactantes para comenzar. No saltando directamente a algoritmos complejos, sino comenzando con una pregunta mucho más simple: ¿Cómo pueden mis datos interactuar con un sistema cuántico?

Responder a esa pregunta nos permite utilizar plenamente el poder de las computadoras cuánticas que tenemos hoy.

Referencias y lecturas adicionales

Schuld, M. y Petruccione, F. (2018). Aprendizaje supervisado con computadoras cuánticas (Vol. 17, p. 3). Berlín: Springer. Havlíček, V., Córcoles, AD, Temme, K., Harrow, AW, Kandala, A., Chow, JM y Gambetta, JM (2019). Aprendizaje supervisado con espacios de funciones mejorados cuánticamente. Naturaleza, 567(7747), 209-212. Documentación de Qiskit: https://qiskit.org/documentation/ Schuld, M. y Killoran, N. (2019). Aprendizaje automático cuántico en espacios característicos de Hilbert. Cartas de revisión física, 122(4), 040504.