Path: blob/master/site/es-419/quantum/tutorials/noise.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Ruido
El ruido está presente en las computadoras cuánticas modernas de hoy en día. Los bits cuánticos son sensibles a las interferencias que produzca el entorno, la fabricación imperfecta, la TLS y, a veces, incluso los rayos gamma. Hasta que se logre la corrección de errores a gran escala, los algoritmos deberán poder seguir siendo funcionales aún con ruido. Es el motivo por el que las pruebas con algoritmos con ruido resultan muy importantes para validar que los modelos o algoritmos cuánticos funcionan con las computadoras cuánticas actuales.
En este tutorial exploraremos los conceptos básicos de la simulación de circuitos con ruido en TFQ con la API tfq.layers
de alto nivel.
Preparación
1. Comprensión del ruido cuántico
1.1 Ruido de circuito básico
El ruido de las computadoras cuánticas impacta en las muestras de strings de bits a partir de las que se pueden hacer las mediciones. Una forma intuitiva de empezar a pensarlo es entendiendo que una computadora cuántica ruidosa "insertará", "eliminará" o "reemplazará" las puertas en lugares aleatorios, como en el diagrama que se encuentra a continuación:
Si partimos de esta intuición, cuando trabajamos con el ruido, ya no usamos un de estado puro solo, sino un ensamble de todas las implementaciones ruidosas posibles del circuito deseado: . Donde arroja la probabilidad de que el sistema esté en .
Volviendo a la imagen anterior, si supiéramos de antemano que el 90% del tiempo nuestro sistema se ejecuta a la perfección o que produce errores el 10% del tiempo, solamente con este único modo de fallo, nuestro ensamble sería el siguiente:
Si hubiera más de una sola manera en que nuestro circuito produjera errores, entonces, el ensamble contendría más de dos términos solos (uno para cada una de las ocurrencias ruidosas nuevas que pudieran surgir). se conoce como la matriz de densidad que describe el sistema ruidoso.
1.2 Uso de los canales para modelar el ruido del circuito
Lamentablemente, en la práctica resulta casi imposible conocer todas las maneras en que el circuito puede producir errores ni cuáles son las probabilidades exactas de que esto suceda. Un supuesto simplista que se puede hacer es pensar que después de cada operación en el circuito hay algún tipo de canal que captura a grandes rasgos cómo se podría dar el error en esa operación. Podemos crear rápidamente un circuito con algo de ruido:
Podemos examinar la matriz de densidad sin ruido con:
Y la matriz de densidad con ruido con:
Si comparamos las dos podemos ver que el ruido ha impactado las amplitudes del estado (y por consiguiente en las probabilidades de muestreo). En los casos sin ruido siempre se puede esperar tomar muestras del estado . Pero en el estado con ruido ahora hay una probabilidad diferente de cero de muestrear , o también:
Si ningún ruido siempre obtendremos :
Si aumentamos el ruido un poco más será cada vez más difícil distinguir el comportamiento deseado (tomando una muestra ) del ruido:
Nota: Intente experimentar con canales diferentes del circuito para generar ruido. Los canales comunes compatibles con Cirq y TFQ se pueden encontrar aquí.
2. Ruido básico en TFQ
Ahora que ya sabemos qué impacto tiene el ruido en la ejecución del circuito, podemos explorar cómo funciona el ruido en TFQ. TensorFlow Quantum usa la simulación basada en trayectoria/monte-carlo como alternativa a la simulación de la matriz de densidad. El motivo es que la complejidad de la memoria de la simulación de la matriz de densidad limita las simulaciones grandes hasta <= 20 bits cuánticos con métodos de simulación de matriz de densidad completos tradicionales. Monte-carlo / trayectoria cambian este costo en la memoria por otro costo adicional en el tiempo. La opción backend='noisy'
está disponible para todas las tfq.layers.Sample
, tfq.layers.SampledExpectation
y tfq.layers.Expectation
(En caso de Expectation
sí agrega el parámetro de repetitions
requerido).
2.1 Muestreo ruidoso en TFQ
Para crear los gráficos anteriores con TFQ y la simulación de trayectoria, podemos usar tfq.layers.Sample
2.2 Muestra ruidosa basada en esperanzas
Para hacer una muestra ruidosa basada en un cálculo de esperanzas, podemos usar tfq.layers.SampleExpectation
:
Calculamos la estimación de la esperanza sin ruido con un muestreo del circuito:
Comparémoslas con versiones ruidosas:
Podemos observar que las ruidosas han impactado particularmente en la exactitud de , con my_really_noisy_circuit
que se concentra rápidamente hacia 0.
2.3 Cálculo de esperanza analítica ruidosa
El cálculo de la esperanza analítica ruidosa es prácticamente idéntico al anterior:
3. Modelos híbridos y ruido de datos cuánticos
Ahora que ya hemos implementado algunas simulaciones de circuitos ruidosos en TFQ, podemos experimentar con la manera en que impacta el ruido en los modelos cuánticos y en los híbridos. Con este fin, comparamos y contrastamos los desempeños con y sin ruido. Una buena forma de comprobar, en primera instancia, si un modelo o algoritmo es lo suficientemente robusto cuando hay ruido es haciendo pruebas con un modelo despolarizador del ancho de un circuito, que tendría el siguiente aspecto:
Donde cada intervalo de tiempo del circuito (a veces denominado momento) tiene un canal despolarizador anexo después de cada operación en la puerta, en ese intervalo de tiempo. El canal de despolarización aplicará de uno de los siguientes , con probabilidad o sin aplicar nada (se mantiene la operación original) con probabilidad .
3.1 Los datos
Para este ejemplo podemos usar algunos circuitos preparados en el módulo tfq.datasets
como datos de entrenamiento:
Escribir una función ayudante nos ayudará a generar los datos para los casos en los que se compara con y sin ruido:
3.2 Definición de un circuito modelo
Una vez que tenemos los datos cuánticos en forma de circuitos, necesitaremos otro circuito para modelar estos datos, como con aquellos datos con los que se puede escribir una función ayudante para generar este circuito que, opcionalmente, puede contener ruido:
3.3 Construcción y entrenamiento del modelo
Con los datos y el circuito del modelo creado, la función ayudante final que falta es la que pueda ensamblar un tf.keras.Model
cuántico híbrido con o sin ruido:
4. Comparación del desempeño
4.1 Línea de base sin ruido
Con el código para la construcción del modelo y la generación de datos, ahora podemos comparar y contrastar el desempeño del modelo en entornos con y sin ruido. Primero, podemos ejecutar un entrenamiento de referencia sin ruido:
Y explorar los resultados y la exactitud:
4.2 Comparación con ruido
Ahora podemos crear un modelo nuevo con una estructura ruidosa y compararlo con el que figura arriba. El código es casi idéntico:
Nota: En el diagrama del modelo ahora hay un tfq.layers.NoisyPQC
en vez de un tfq.layers.PQC
, dado que la probabilidad de despolarización ya no es cero. El entrenamiento será más prolongado, ya que la simulación ruidosa tiene un costo mucho mayor que la que no tiene ruido.
Excelente: el modelo ruidoso todavía puede entrenarse con algo de ruido de una despolarización leve. Intente experimentar con diferentes modelos con ruido para ver cómo y cuándo el entrenamiento podría fallar. También observe funcionalidades ruidosas para con tfq.layers
y tfq.noise
.