Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Diseño TensorFlow Quantum

TensorFlow Quantum (TFQ) está diseñado para los problemas del aprendizaje automático cuántico de la era NISQ. Aporta primitivas de computación cuántica, como construir circuitos cuánticos, al ecosistema TensorFlow. Los modelos y operaciones construidos con TensorFlow utilizan estas primitivas para crear potentes sistemas híbridos cuántico-clásicos.

Usando TFQ, los investigadores pueden construir un gráfico TensorFlow usando un conjunto de datos cuánticos, un modelo cuántico y parámetros de control clásicos. Todos estos están representados como tensores en un solo gráfico computacional. El resultado de las mediciones cuánticas, que conducen a eventos probabilísticos clásicos, se obtiene mediante operaciones de TensorFlow. La capacitación se realiza con la API estándar de Keras . El módulo tfq.datasets permite a los investigadores experimentar con nuevos e interesantes conjuntos de datos cuánticos.

Cirq

Cirq es un marco de programación cuántica de Google. Proporciona todas las operaciones básicas, como qubits, compuertas, circuitos y medidas, para crear, modificar e invocar circuitos cuánticos en una computadora cuántica o una computadora cuántica simulada. TensorFlow Quantum utiliza estas primitivas Cirq para extender TensorFlow para el cálculo por lotes, la construcción de modelos y el cálculo de gradiente. Para ser efectivo con TensorFlow Quantum, es una buena idea ser efectivo con Cirq.

Primitivas cuánticas TensorFlow

TensorFlow Quantum implementa los componentes necesarios para integrar TensorFlow con hardware de computación cuántica. Con ese fin, TFQ introduce dos primitivas de tipo de datos:

  • Circuito cuántico : representa los circuitos cuánticos definidos por Cirq (circuito cirq.Circuit ) Dentro de TensorFlow. Cree lotes de circuitos de diferentes tamaños, similares a lotes de diferentes puntos de datos con valores reales.
  • Suma de Pauli : representa combinaciones lineales de productos tensoriales de operadores de Pauli definidos en Cirq ( cirq.PauliSum ). Al igual que los circuitos, cree lotes de operadores de diferentes tamaños.

Operaciones fundamentales

Usando las primitivas del circuito cuántico dentro de un tf.Tensor , TensorFlow Quantum implementa operaciones que procesan estos circuitos y producen salidas significativas.

Las operaciones de TensorFlow están escritas en C ++ optimizado. Estas operaciones toman muestras de los circuitos, calculan los valores esperados y generan el estado producido por los circuitos dados. Escribir operaciones flexibles y de alto rendimiento tiene algunos desafíos:

  1. Los circuitos no son del mismo tamaño. Para los circuitos simulados, no puede crear operaciones estáticas (como tf.matmul o tf.add ) y luego sustituir números diferentes por circuitos de diferentes tamaños. Estas operaciones deben permitir tamaños dinámicos que el gráfico de cálculo TensorFlow de tamaño estático no permite.
  2. Los datos cuánticos pueden inducir una estructura de circuito completamente diferente. Esta es otra razón para admitir tamaños dinámicos en las operaciones TFQ. Los datos cuánticos pueden representar un cambio estructural en el estado cuántico subyacente que se representa mediante modificaciones en el circuito original. Como los nuevos puntos de datos se intercambian dentro y fuera en tiempo de ejecución, el gráfico de cálculo TensorFlow no se puede modificar después de su creación, por lo que se requiere soporte para estas estructuras variables.
  3. cirq.Circuits son similares a los gráficos de cómputo en el sentido de que son una serie de operaciones, y algunos pueden contener símbolos / marcadores de posición. Es importante que sea lo más compatible posible con TensorFlow.

Por razones de rendimiento, Eigen (la biblioteca C ++ utilizada en muchas operaciones de TensorFlow) no es adecuada para la simulación de circuitos cuánticos. En cambio, los simuladores de circuito utilizados en el experimento de supremacía cuántica se usan como verificadores y se extienden como la base de las operaciones TFQ (todo escrito con instrucciones AVX2 y SSE). Se crearon operaciones con firmas funcionales idénticas que utilizan una computadora cuántica física. Cambiar entre una computadora cuántica simulada y física es tan fácil como cambiar una sola línea de código. Estas operaciones se encuentran en circuit_execution_ops.py .

Capas

Las capas de TensorFlow Quantum exponen el muestreo, la expectativa y el cálculo del estado a los desarrolladores que utilizan la interfaz tf.keras.layers.Layer . Es conveniente crear una capa de circuito para parámetros de control clásicos o para operaciones de lectura. Además, puede crear una capa con un alto grado de complejidad que admita el circuito de lotes, el valor del parámetro de control de lotes y realizar operaciones de lectura de lotes. Consulte tfq.layers.Sample para ver un ejemplo.

Diferenciadores

A diferencia de muchas operaciones de TensorFlow, los observables en circuitos cuánticos no tienen fórmulas para gradientes que sean relativamente fáciles de calcular. Esto se debe a que una computadora clásica solo puede leer muestras de los circuitos que se ejecutan en una computadora cuántica.

Para resolver este problema, el módulo tfq.differentiators proporciona varias técnicas de diferenciación estándar. Los usuarios también pueden definir su propio método para calcular gradientes, tanto en la configuración del "mundo real" del cálculo de expectativas basadas en muestras como en el mundo analítico exacto. Los métodos como la diferencia finita son a menudo los más rápidos (tiempo de reloj de pared) en un entorno analítico / exacto. Si bien es más lento (tiempo del reloj de pared), los métodos más prácticos como el cambio de parámetros o los métodos estocásticos suelen ser más efectivos. Un tfq.differentiators.Differentiator se instancia y se adjunta a una tfq.differentiators.Differentiator existente con generate_differentiable_op , o se pasa al constructor de tfq.layers.Expectation o tfq.layers.SampledExpectation . Para implementar un diferenciador personalizado, herede de la clase tfq.differentiators.Differentiator . Para definir una operación de gradiente para el muestreo o el cálculo del vector de estado, use tf.custom_gradient .

Conjuntos de datos

A medida que crece el campo de la computación cuántica, surgirán más datos cuánticos y combinaciones de modelos, lo que dificultará la comparación estructurada. El módulo tfq.datasets se utiliza como fuente de datos para tareas de aprendizaje automático cuántico. Asegura comparaciones estructuradas para el modelo y el rendimiento.

Se espera que con grandes contribuciones de la comunidad, el módulo tfq.datasets crecerá para permitir una investigación más transparente y reproducible. Los problemas cuidadosamente seleccionados en: control cuántico, simulación fermiónica, clasificación de transiciones de fase cercana, detección cuántica, etc., son excelentes candidatos para la adición a los tfq.datasets de datos tfq.datasets . Para proponer un nuevo conjunto de datos, abra un problema de GitHub .