Introducció a TensorFlow Quantum

TensorFlow Quantum (TFQ) és una biblioteca de codi obert desenvolupada per Google en col·laboració amb el grup de recerca de computació quàntica de la Universitat de Waterloo. TFQ està dissenyat per a la investigació i el desenvolupament d'algoritmes de machine learning quàntic. Combina la potència de TensorFlow amb simuladors de circuits quàntics i ordinadors quàntics reals.

Objectius d'aquest tema:

  1. Entendre què és TensorFlow Quantum i per què és important.
  2. Aprendre a configurar l'entorn per treballar amb TFQ.
  3. Familiaritzar-se amb els conceptes bàsics de la computació quàntica.
  4. Crear i executar circuits quàntics simples amb TFQ.
  5. Integrar circuits quàntics amb models de machine learning clàssics.

Què és TensorFlow Quantum?

TensorFlow Quantum és una extensió de TensorFlow que permet la creació, simulació i optimització de circuits quàntics. TFQ facilita la integració de la computació quàntica amb el machine learning clàssic, permetent als investigadors explorar nous algoritmes híbrids quàntic-clàssics.

Característiques clau:

  • Integració amb TensorFlow: Utilitza la mateixa API de TensorFlow, facilitant la integració amb models de machine learning existents.
  • Simulació de circuits quàntics: Permet simular circuits quàntics en ordinadors clàssics.
  • Execució en hardware quàntic: Suporta l'execució de circuits en ordinadors quàntics reals.

Configuració de l'entorn

Requisits previs:

  • Python 3.6 o superior
  • TensorFlow 2.1 o superior

Instal·lació de TensorFlow Quantum

pip install tensorflow==2.4.1
pip install tensorflow-quantum

Verificació de la instal·lació

import tensorflow as tf
import tensorflow_quantum as tfq

print("TensorFlow version:", tf.__version__)
print("TensorFlow Quantum version:", tfq.__version__)

Conceptes bàsics de la computació quàntica

Qubits

Un qubit és l'analogia quàntica del bit clàssic. Mentre que un bit clàssic pot estar en un estat de 0 o 1, un qubit pot estar en una superposició d'aquests estats.

Operacions quàntiques

Les operacions quàntiques són transformacions que es poden aplicar als qubits. Algunes de les operacions més comunes són:

  • Porta Hadamard (H): Crea una superposició.
  • Porta Pauli-X (X): Actua com un NOT quàntic.
  • Porta Pauli-Z (Z): Inverteix la fase del qubit.

Circuits quàntics

Un circuit quàntic és una seqüència d'operacions quàntiques aplicades a un conjunt de qubits. Els circuits quàntics es poden representar mitjançant diagrames de circuits.

Creació i execució de circuits quàntics amb TFQ

Creació d'un circuit quàntic simple

import cirq
import tensorflow_quantum as tfq

# Definim un qubit
qubit = cirq.GridQubit(0, 0)

# Creem un circuit quàntic
circuit = cirq.Circuit(
    cirq.H(qubit),  # Aplicar la porta Hadamard
    cirq.measure(qubit, key='result')  # Mesurar el qubit
)

print(circuit)

Simulació del circuit

# Creem un simulador
simulator = cirq.Simulator()

# Executem el circuit
result = simulator.run(circuit, repetitions=1000)

# Mostrem els resultats
print(result.histogram(key='result'))

Integració amb TensorFlow

# Convertim el circuit a un tensor de TensorFlow Quantum
circuit_tensor = tfq.convert_to_tensor([circuit])

# Definim un model simple de TensorFlow
model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string),
    tfq.layers.PQC(circuit, cirq.Z(qubit))
])

# Compilem el model
model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError())

# Mostrem el resum del model
model.summary()

Exercicis pràctics

Exercici 1: Crear un circuit quàntic amb dues portes Hadamard

Objectiu: Crear un circuit quàntic que aplica dues portes Hadamard a un qubit i mesura el resultat.

# Definim un qubit
qubit = cirq.GridQubit(0, 0)

# Creem un circuit quàntic amb dues portes Hadamard
circuit = cirq.Circuit(
    cirq.H(qubit),
    cirq.H(qubit),
    cirq.measure(qubit, key='result')
)

print(circuit)

# Simulem el circuit
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
print(result.histogram(key='result'))

Solució

# Definim un qubit
qubit = cirq.GridQubit(0, 0)

# Creem un circuit quàntic amb dues portes Hadamard
circuit = cirq.Circuit(
    cirq.H(qubit),
    cirq.H(qubit),
    cirq.measure(qubit, key='result')
)

print(circuit)

# Simulem el circuit
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
print(result.histogram(key='result'))

Exercici 2: Integrar un circuit quàntic amb un model de TensorFlow

Objectiu: Crear un model de TensorFlow que integri un circuit quàntic simple i entrenar-lo amb dades sintètiques.

# Definim un qubit
qubit = cirq.GridQubit(0, 0)

# Creem un circuit quàntic
circuit = cirq.Circuit(
    cirq.H(qubit),
    cirq.measure(qubit, key='result')
)

# Convertim el circuit a un tensor de TensorFlow Quantum
circuit_tensor = tfq.convert_to_tensor([circuit])

# Definim un model simple de TensorFlow
model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string),
    tfq.layers.PQC(circuit, cirq.Z(qubit))
])

# Compilem el model
model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError())

# Generem dades sintètiques
import numpy as np
x_train = circuit_tensor
y_train = np.array([1.0])

# Entrenem el model
model.fit(x_train, y_train, epochs=10)

Solució

# Definim un qubit
qubit = cirq.GridQubit(0, 0)

# Creem un circuit quàntic
circuit = cirq.Circuit(
    cirq.H(qubit),
    cirq.measure(qubit, key='result')
)

# Convertim el circuit a un tensor de TensorFlow Quantum
circuit_tensor = tfq.convert_to_tensor([circuit])

# Definim un model simple de TensorFlow
model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string),
    tfq.layers.PQC(circuit, cirq.Z(qubit))
])

# Compilem el model
model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.MeanSquaredError())

# Generem dades sintètiques
import numpy as np
x_train = circuit_tensor
y_train = np.array([1.0])

# Entrenem el model
model.fit(x_train, y_train, epochs=10)

Conclusió

En aquest tema, hem explorat TensorFlow Quantum, una poderosa eina per a la investigació en machine learning quàntic. Hem après a configurar l'entorn, crear circuits quàntics simples i integrar-los amb models de TensorFlow. A mesura que la tecnologia quàntica avança, TFQ ofereix una plataforma robusta per explorar nous algoritmes híbrids quàntic-clàssics.

© Copyright 2024. Tots els drets reservats