Ayuda a proteger la Gran Barrera de Coral con TensorFlow en Kaggle Únete Challenge

Diseño de TensorFlow Quantum

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

Con TFQ, los investigadores pueden construir un gráfico de TensorFlow utilizando un conjunto de datos cuánticos, un modelo cuántico y parámetros de control clásicos. Todos estos se representan 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 las operaciones de TensorFlow. La capacitación se realiza con la norma Keras API. El tfq.datasets módulo permite a los investigadores a experimentar con nuevas 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, puertas, circuitos y medición, para crear, modificar e invocar circuitos cuánticos en una computadora cuántica o una computadora cuántica simulada. TensorFlow Quantum usa estas primitivas Cirq para extender TensorFlow para el cálculo por lotes, la construcción de modelos y el cálculo de gradientes. Para ser eficaz con TensorFlow Quantum, es una buena idea ser eficaz con Cirq.

Primitivas cuánticas de TensorFlow

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

  • Circuito Quantum: Esto representa Cirq -definido circuitos cuánticos ( cirq.Circuit ) dentro TensorFlow. Cree lotes de circuitos de diferentes tamaños, similares a lotes de diferentes puntos de datos de valor real.
  • Suma Pauli: Representar combinaciones lineales de productos tensores de los operadores de Pauli definidos en Cirq ( cirq.PauliSum ). Al igual que los circuitos, cree lotes de operadores de diferentes tamaños.

Operaciones fundamentales

El uso de las primitivas de circuito cuántico dentro de un tf.Tensor , TensorFlow Quantum implementos ops 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 dan salida al estado producido por los circuitos dados. Las operaciones de escritura que son flexibles y eficaces tienen algunos desafíos:

  1. Los circuitos no son del mismo tamaño. Para circuitos simulados, no es capaz de crear operaciones estáticas (como tf.matmul o tf.add ) y luego sustituir diferentes números de circuitos de diferentes tamaños. Estas operaciones deben permitir tamaños dinámicos que el gráfico de cálculo de 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 está representado por modificaciones en el circuito original. Como los nuevos puntos de datos se intercambian dentro y fuera en el tiempo de ejecución, el gráfico de cálculo de TensorFlow no se puede modificar después de que se compila, por lo que se requiere compatibilidad con estas estructuras variables.
  3. cirq.Circuits son similares para calcular los gráficos en que son una serie de operaciones-y algunas podrían contener símbolos / marcadores de posición. Es importante que esto sea lo más compatible posible con TensorFlow.

Por razones de rendimiento, Eigen (la biblioteca de C ++ que se usa en muchas operaciones de TensorFlow) no es adecuada para la simulación de circuitos cuánticos. En cambio, los simuladores de circuitos utilizados en el cuántico más allá-clásico experimento se utilizan como verificadores y se extendió como la base de ops TFQ (todos escritos 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 física y simulada es tan fácil como cambiar una sola línea de código. Estas operaciones se encuentran en el circuit_execution_ops.py .

Capas

Capas TensorFlow Quantum exponen muestreo, expectativa, y cálculo de estado a los desarrolladores utilizando el tf.keras.layers.Layer interfaz. 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 por lotes, el valor del parámetro de control del lote y realice operaciones de lectura por lotes. Ver tfq.layers.Sample para 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 tfq.differentiators módulo 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 basado en muestras, como en el mundo analítico exacto. Los métodos como la diferencia finita suelen ser los más rápidos (tiempo de reloj de pared) en un entorno analítico / exacto. Mientras más lento (tiempo de reloj de pared), los métodos más prácticos como cambio de parámetro o métodos estocásticos son a menudo más eficaz. A tfq.differentiators.Differentiator se instancia y se une a un artículo existente con generate_differentiable_op , o pasa al constructor de tfq.layers.Expectation o tfq.layers.SampledExpectation . Para implementar un diferenciador encargo, heredar del tfq.differentiators.Differentiator clase. Para definir una operación de gradiente para el muestreo o el cálculo de vector de estado, el uso tf.custom_gradient .

Conjuntos de datos

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

Se espera que con grandes contribuciones de la comunidad, la tfq.datasets módulo crecerá para permitir la investigación que sea más transparente y reproducible. Comisariada cuidadosamente los problemas en: control cuántico, la simulación fermiónica, transiciones de fase cerca de la clasificación, detección cuántica, etc, son todos los grandes candidatos para la adición a tfq.datasets . Para proponer un nuevo conjunto de datos abierto un tema GitHub .