Il variational quantum eigensolver (VQE)
Questa lezione presenta il variational quantum eigensolver, ne illustra l'importanza come algoritmo fondamentale nel quantum computing e ne esplora punti di forza e debolezze. Il VQE da solo, senza metodi di potenziamento, difficilmente sarà sufficiente per computazioni quantistiche alla scala dell'utilità moderna. Rimane tuttavia importante come metodo ibrido classico-quantistico archetipico, ed è una base fondamentale su cui sono costruiti molti algoritmi più avanzati.
Questo video offre una panoramica del VQE e dei fattori che ne influenzano l'efficienza. Il testo seguente aggiunge ulteriori dettagli e implementa il VQE usando Qiskit.
1. Cos'è il VQE?
Il variational quantum eigensolver è un algoritmo che utilizza il calcolo classico e quello quantistico in combinazione per portare a termine un compito. Un calcolo VQE è composto da quattro componenti principali:
- Un operatore: spesso un Hamiltoniano, che chiameremo , che descrive una proprietà del sistema che si desidera ottimizzare. In altri termini, si cerca l'autovettore di questo operatore corrispondente all'autovalore minimo. Quell'autovettore viene spesso chiamato "stato fondamentale".
- Un "ansatz" (parola tedesca che significa "approccio"): è un circuito quantistico che prepara uno stato quantistico che approssima l'autovettore cercato. In realtà l'ansatz è una famiglia di circuiti quantistici, perché alcuni dei gate dell'ansatz sono parametrizzati, cioè ricevono in ingresso un parametro che può essere variato. Questa famiglia di circuiti quantistici può preparare una famiglia di stati quantistici che approssimano lo stato fondamentale.
- Un Estimator: un mezzo per stimare il valore di aspettazione dell'operatore nello stato quantistico variazionale corrente. A volte ciò che interessa è semplicemente questo valore di aspettazione, che chiamiamo funzione di costo. A volte ci interessa una funzione più complessa che può comunque essere espressa a partire da uno o più valori di aspettazione.
- Un ottimizzatore classico: un algoritmo che varia i parametri per cercare di minimizzare la funzione di costo.
Esaminiamo ciascuno di questi componenti più in dettaglio.
1.1 L'operatore (Hamiltoniano)
Al centro di un problema VQE vi è un operatore che descrive un sistema di interesse. Si assume qui che l'autovalore minimo e il corrispondente autovettore di questo operatore siano utili per qualche scopo scientifico o applicativo. Esempi possono includere un Hamiltoniano chimico che descrive una molecola, in cui l'autovalore minimo dell'operatore corrisponde all'energia dello stato fondamentale della molecola e il corrispondente autostato ne descrive la geometria o la configurazione elettronica. Oppure l'operatore potrebbe descrivere il costo di un determinato processo da ottimizzare, e gli autostati potrebbero corrispondere a percorsi o procedure. In alcuni campi, come la fisica, un "Hamiltoniano" si riferisce quasi sempre a un operatore che descrive l'energia di un sistema fisico. Nel quantum computing, invece, è comune vedere operatori quantistici che descrivono un problema di business o logistico essere anch'essi denominati "Hamiltoniano". Adotteremo questa convenzione anche qui.
La mappatura di un problema fisico o di ottimizzazione sui qubit è tipicamente un compito non banale, ma questi dettagli non sono al centro di questo corso. Una discussione generale della mappatura di un problema su un operatore quantistico si trova in Quantum computing in practice. Un'analisi più approfondita della mappatura dei problemi di chimica su operatori quantistici si trova in Quantum Chemistry with VQE.
Ai fini di questo corso, assumeremo che la forma dell'Hamiltoniano sia nota. Ad esempio, un Hamiltoniano per una semplice molecola di idrogeno (sotto certe assunzioni sullo spazio attivo, e utilizzando il mapper Jordan-Wigner) è:
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(
[
"IIII",
"IIIZ",
"IZII",
"IIZI",
"ZIII",
"IZIZ",
"IIZZ",
"ZIIZ",
"IZZI",
"ZZII",
"ZIZI",
"YYYY",
"XXYY",
"YYXX",
"XXXX",
],
coeffs=[
-0.09820182 + 0.0j,
-0.1740751 + 0.0j,
-0.1740751 + 0.0j,
0.2242933 + 0.0j,
0.2242933 + 0.0j,
0.16891402 + 0.0j,
0.1210099 + 0.0j,
0.16631441 + 0.0j,
0.16631441 + 0.0j,
0.1210099 + 0.0j,
0.17504456 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
],
)
Nota che nell'Hamiltoniano sopra ci sono termini come ZZII e YYYY che non commutano tra loro. Cioè, per valutare ZZII, occorrerebbe misurare l'operatore di Pauli Z sul qubit 3 (tra le altre misurazioni). Ma per valutare YYYY, è necessario misurare l'operatore di Pauli Y su quello stesso qubit, il qubit 3. Tra gli operatori Y e Z sullo stesso qubit esiste una relazione di indeterminazione; non è possibile misurare entrambi gli operatori contemporaneamente. Torneremo su questo punto più avanti, e in effetti durante tutto il corso.
L'Hamiltoniano sopra è un operatore matriciale . Diagonalizzare l'operatore per trovare il suo autovalore energetico minimo non è difficile.
import numpy as np
A = np.array(hamiltonian)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print("The ground state energy is ", min(eigenvalues), "hartrees")
The ground state energy is -1.1459778447627311 hartrees
I risolutori classici con forza bruta non riescono a scalare per descrivere le energie o le geometrie di sistemi molto grandi di atomi, come farmaci o proteine. Il VQE è uno dei primi tentativi di sfruttare il quantum computing in questo ambito.
In questa lezione incontreremo Hamiltoniani molto più grandi di quello precedente. Ma sarebbe prematuro spingere i limiti di ciò che il VQE può fare, prima di introdurre alcuni degli strumenti più avanzati che possono potenziarlo o sostituirlo, più avanti in questo corso.
1.2 Ansatz
La parola "ansatz" è tedesca e significa "approccio". Il plurale corretto in tedesco è "ansätze", benché si vedano spesso anche "ansatzes" o "ansatze". Nel contesto del VQE, un ansatz è il circuito quantistico che si usa per creare una funzione d'onda a più qubit che approssimi il più possibile lo stato fondamentale del sistema studiato, producendo così il valore di aspettazione minimo dell'operatore. Questo circuito quantistico conterrà parametri variazionali (spesso raccolti nel vettore di variabili ).
Viene scelto un insieme iniziale di valori dei parametri variazionali. Chiameremo l'operazione unitaria dell'ansatz sul circuito. Per impostazione predefinita, tutti i qubit nei computer quantistici IBM® vengono inizializzati allo stato . Quando il circuito viene eseguito, lo stato dei qubit sarà
Se ci bastasse ottenere l'energia minima (usando il linguaggio dei sistemi fisici), potremmo stimarla semplicemente misurando l'energia molte volte e prendendo il valore minimo. Tuttavia, in genere vogliamo anche la configurazione che produce quell'energia minima o autovalore. Il passo successivo è quindi la stima del valore di aspettazione dell'Hamiltoniano, che si ottiene tramite misurazioni quantistiche. Ci sono molti aspetti da considerare. Ma possiamo comprendere questo processo qualitativamente notando che la probabilità di misurare un'energia (usando ancora il linguaggio dei sistemi fisici) è correlata al valore di aspettazione da:
La probabilità è anche correlata alla sovrapposizione tra l'autostato e lo stato corrente del sistema :
Effettuando molte misurazioni degli operatori di Pauli che compongono il nostro Hamiltoniano, possiamo quindi stimare il valore di aspettazione dell'Hamiltoniano nello stato corrente del sistema . Il passo successivo è variare i parametri per avvicinarci il più possibile allo stato fondamentale (a energia minima) del sistema. Per via dei parametri variazionali nell'ansatz, a volte quest'ultimo viene chiamato forma variazionale.
Prima di passare al processo variazionale, è utile notare che conviene spesso iniziare da uno stato "di buona approssimazione iniziale". Se si sa abbastanza del proprio sistema, si può fare una supposizione iniziale migliore di . Per esempio, nelle applicazioni chimiche è comune inizializzare i qubit nello stato di Hartree-Fock. Questa ipotesi di partenza, che non contiene parametri variazionali, è chiamata stato di riferimento. Chiamiamo il circuito quantistico usato per creare lo stato di riferimento. Ogni volta che diventa importante distinguere lo stato di riferimento dal resto dell'ansatz, si usa: In modo equivalente