Design TensorFlow Quantum

TensorFlow Quantum (TFQ) è progettato per i problemi dell'apprendimento automatico quantistico dell'era NISQ. Porta le primitive del calcolo quantistico, come la costruzione di circuiti quantistici, nell'ecosistema TensorFlow. I modelli e le operazioni costruiti con TensorFlow utilizzano queste primitive per creare potenti sistemi ibridi quantistici-classici.

Utilizzando TFQ, i ricercatori possono costruire un grafico TensorFlow utilizzando un set di dati quantistici, un modello quantistico e parametri di controllo classici. Questi sono tutti rappresentati come tensori in un unico grafico computazionale. Il risultato delle misurazioni quantistiche, che portano a eventi probabilistici classici, è ottenuto dalle operazioni TensorFlow. La formazione viene eseguita con l'API Keras standard. Il modulo tfq.datasets consente ai ricercatori di sperimentare nuovi e interessanti set di dati quantistici.

Circo

Cirq è un framework di programmazione quantistica di Google. Fornisce tutte le operazioni di base, come qubit, porte, circuiti e misurazioni, per creare, modificare e richiamare circuiti quantistici su un computer quantistico o su un computer quantistico simulato. TensorFlow Quantum utilizza queste primitive Cirq per estendere TensorFlow per il calcolo batch, la costruzione di modelli e il calcolo del gradiente. Per essere efficaci con TensorFlow Quantum, è una buona idea essere efficaci con Cirq.

Primitive quantistiche di TensorFlow

TensorFlow Quantum implementa i componenti necessari per integrare TensorFlow con l'hardware di calcolo quantistico. A tal fine, TFQ introduce due tipi di dati primitivi:

  • Circuito quantistico : rappresenta i circuiti quantistici definiti da Cirq ( cirq.Circuit ) all'interno di TensorFlow. Crea batch di circuiti di varie dimensioni, simili a batch di diversi punti dati con valori reali.
  • Somma di Pauli : Rappresenta combinazioni lineari di prodotti tensoriali di operatori di Pauli definiti in Cirq ( cirq.PauliSum ). Come i circuiti, crea batch di operatori di varie dimensioni.

Operazioni fondamentali

Utilizzando le primitive del circuito quantistico all'interno di un tf.Tensor , TensorFlow Quantum implementa operazioni che elaborano questi circuiti e producono output significativi.

Le operazioni di TensorFlow sono scritte in C++ ottimizzato. Queste operazioni campionano dai circuiti, calcolano i valori attesi e restituiscono lo stato prodotto dai circuiti dati. Scrivere operazioni flessibili e performanti presenta alcune sfide:

  1. I circuiti non hanno le stesse dimensioni. Per i circuiti simulati, non è possibile creare operazioni statiche (come tf.matmul o tf.add ) e quindi sostituire numeri diversi per circuiti di dimensioni diverse. Queste operazioni devono consentire dimensioni dinamiche che il grafico di calcolo TensorFlow con dimensioni statiche non consente.
  2. I dati quantistici possono indurre una struttura circuitale completamente diversa. Questo è un altro motivo per supportare le dimensioni dinamiche nelle operazioni TFQ. I dati quantistici possono rappresentare un cambiamento strutturale allo stato quantistico sottostante rappresentato da modifiche al circuito originale. Poiché i nuovi punti dati vengono scambiati dentro e fuori in fase di esecuzione, il grafico di calcolo di TensorFlow non può essere modificato dopo la sua creazione, quindi è necessario il supporto per queste strutture variabili.
  3. cirq.Circuits sono simili ai grafici di calcolo in quanto sono una serie di operazioni e alcuni potrebbero contenere simboli/segnaposto. È importante renderlo il più compatibile possibile con TensorFlow.

Per motivi di prestazioni, Eigen (la libreria C++ utilizzata in molte operazioni di TensorFlow) non è adatta per la simulazione di circuiti quantistici. Invece, i simulatori di circuiti utilizzati nell'esperimento quantistico oltre il classico vengono utilizzati come verificatori ed estesi come base delle operazioni TFQ (tutti scritti con istruzioni AVX2 e SSE). Sono state create operazioni con firme funzionali identiche che utilizzano un computer quantistico fisico. Passare da un computer quantistico simulato a uno fisico è facile come modificare una singola riga di codice. Queste operazioni si trovano in circuit_execution_ops.py .

Strati

I layer TensorFlow Quantum espongono il campionamento, le aspettative e il calcolo dello stato agli sviluppatori utilizzando l'interfaccia tf.keras.layers.Layer . È conveniente creare uno strato circuitale per i parametri di controllo classici o per operazioni di lettura. Inoltre, è possibile creare un layer con un elevato grado di complessità che supporti il ​​circuito batch, il valore dei parametri di controllo batch ed esegua operazioni di lettura batch. Vedi tfq.layers.Sample per un esempio.

Differenziatori

A differenza di molte operazioni di TensorFlow, le osservabili nei circuiti quantistici non hanno formule per i gradienti relativamente facili da calcolare. Questo perché un computer classico può leggere solo campioni dai circuiti eseguiti su un computer quantistico.

Per risolvere questo problema, il modulo tfq.differentiators fornisce diverse tecniche di differenziazione standard. Gli utenti possono anche definire il proprio metodo per calcolare i gradienti, sia nell'impostazione del "mondo reale" del calcolo delle aspettative basato sul campione, sia nel mondo esatto analitico. Metodi come le differenze finite sono spesso i più veloci (tempo dell'orologio a muro) in un ambiente analitico/esatto. Anche se più lenti (orario dell'orologio), metodi più pratici come lo spostamento dei parametri o i metodi stocastici sono spesso più efficaci. Un tfq.differentiators.Differentiator viene istanziato e collegato a un'operazione esistente con generate_differentiable_op o passato al costruttore di tfq.layers.Expectation o tfq.layers.SampledExpectation . Per implementare un differenziatore personalizzato, eredita dalla classe tfq.differentiators.Differentiator . Per definire un'operazione di gradiente per il campionamento o il calcolo del vettore di stato, utilizzare tf.custom_gradient .

Set di dati

Con la crescita del campo dell’informatica quantistica, emergeranno sempre più combinazioni di dati e modelli quantistici, rendendo più difficile il confronto strutturato. Il modulo tfq.datasets viene utilizzato come origine dati per le attività di machine learning quantistico. Garantisce confronti strutturati per il modello e le prestazioni.

Si spera che con i grandi contributi della comunità, il modulo tfq.datasets cresca per consentire una ricerca più trasparente e riproducibile. Problemi attentamente curati in: controllo quantistico, simulazione fermionica, classificazione vicino a transizioni di fase, rilevamento quantistico, ecc. Sono tutti ottimi candidati per l'aggiunta a tfq.datasets . Per proporre un nuovo set di dati aprire un problema su GitHub .