Codificación de datos
Introducción y notación
Para usar un algoritmo cuántico, los datos clásicos deben introducirse de alguna forma en un circuito cuántico. Esto se conoce habitualmente como codificación de datos, aunque también se llama carga de datos. Recuerda de lecciones anteriores el concepto de mapeo de características: una transformación de las características de los datos de un espacio a otro. Transferir datos clásicos a un ordenador cuántico es en sí mismo un tipo de mapeo y podría denominarse mapeo de características. En la práctica, los mapeos de características integrados en Qiskit (como z_Feature Map y ZZ Feature Map) suelen incluir capas de rotación y capas de entrelazamiento que extienden el estado a muchas dimensiones en el espacio de Hilbert. Este proceso de codificación es una parte fundamental de los algoritmos de aprendizaje automático cuántico y afecta directamente a sus capacidades computacionales.
Algunas de las técnicas de codificación que se presentan a continuación pueden simularse eficientemente de forma clásica; esto es especialmente evidente en métodos de codificación que producen estados producto (es decir, que no entrelazan qubits). Y recuerda que la utilidad cuántica es más probable allá donde la complejidad cuántica del conjunto de datos encaje bien con el método de codificación. Por eso es muy probable que acabes escribiendo tus propios circuitos de codificación. Aquí mostramos una amplia variedad de estrategias de codificación posibles simplemente para que puedas compararlas y ver qué es factible. Hay algunas afirmaciones muy generales que pueden hacerse sobre la utilidad de las técnicas de codificación. Por ejemplo, efficient_su2 (ver más abajo) con un esquema de entrelazamiento completo es mucho más probable que capture características cuánticas de los datos que los métodos que producen estados producto (como z_feature_map). Pero esto no significa que efficient_su2 sea suficiente, ni que esté lo bastante bien ajustado a tu conjunto de datos, para producir una aceleración cuántica. Eso requiere una consideración cuidadosa de la estructura de los datos que se modelan o clasifican. También hay un equilibrio con la profundidad del circuito, ya que muchos mapeos de características que entrelazan completamente los qubits en un circuito producen circuitos muy profundos, demasiado profundos para obtener resultados útiles en los ordenadores cuánticos actuales.
Notación
Un conjunto de datos es un conjunto de vectores de datos: , donde cada vector tiene dimensiones, es decir, . Esto podría extenderse a características de datos complejas. En esta lección usaremos en ocasiones estas notaciones para el conjunto completo y para sus elementos específicos como . Sin embargo, la mayor parte del tiempo nos referiremos a la carga de un único vector de nuestro conjunto de datos a la vez, y con frecuencia haremos referencia simplemente a un único vector de características como .
Además, es habitual usar el símbolo para referirse al mapeo de características del vector de datos . En computación cuántica en concreto, es común referirse a los mapeos mediante , una notación que refuerza la naturaleza unitaria de estas operaciones. Se podría usar el mismo símbolo para ambos; los dos son mapeos de características. A lo largo de este curso tendemos a usar:
- cuando hablamos de mapeos de características en aprendizaje automático en general, y
- cuando hablamos de implementaciones en circuito de los mapeos de características.
Normalización y pérdida de información
En el aprendizaje automático clásico, las características de los datos de entrenamiento se "normalizan" o reescalan con frecuencia, lo que suele mejorar el rendimiento del modelo. Una forma habitual de hacerlo es la normalización mín-máx o la estandarización. En la normalización mín-máx, las columnas de características de la matriz de datos (digamos, la característica ) se normalizan:
donde min y max se refieren al mínimo y máximo de la característica sobre los vectores de datos del conjunto . Todos los valores de las características caen entonces en el intervalo unitario: para todo , .
La normalización es también un concepto fundamental en mecánica cuántica y computación cuántica, aunque es ligeramente diferente a la normalización mín-máx. La normalización en mecánica cuántica exige que la longitud (en el contexto de la computación cuántica, la norma-2) de un vector de estado sea igual a la unidad: , lo que garantiza que las probabilidades de medición sumen 1. El estado se normaliza dividiéndolo por la norma-2; es decir, reescalando
En computación cuántica y mecánica cuántica, esta no es una normalización que la gente imponga sobre los datos, sino una propiedad fundamental de los estados cuánticos. Dependiendo de tu esquema de codificación, esta restricción puede afectar a cómo se reescalan los datos. Por ejemplo, en la codificación por amplitud (ver más abajo), el vector de datos se normaliza como exige la mecánica cuántica, y esto afecta al escalado de los datos que se codifican. En la codificación por fase, se recomienda reescalar los valores de las características como para evitar pérdida de información debida al efecto módulo-