Zgomot și erori
Această lecție va introduce zgomotul și erorile cuantice, incluzând multe dintre sursele lor, și va face analogii cu erorile clasice. Înțelegerea tipurilor de erori care pot apărea, precum și capacitatea de a modela zgomotul folosind canale cuantice, vor fi esențiale pentru înțelegerea lecțiilor viitoare. Într-adevăr, majoritatea metodelor de gestionare a erorilor necesită să știm ceva despre tipul de zgomot sau erori pe care căutăm să le reducem sau să le corectăm.
Acest videoclip oferă o prezentare generală a zgomotului și erorilor și evidențiază câteva rezultate computaționale. Textul de mai jos adaugă mai multe detalii și explorează câteva tipuri de erori folosind Qiskit.
Cauze
Zgomot și erori clasice
Pentru a înțelege erorile și zgomotul cuantic, să începem cu analogul clasic. Erorile apar în computerele clasice din diverse motive, inclusiv mai multe mecanisme de acumulare parazitară a sarcinii, evenimente unice (single-event upsets) și degradarea lentă a materialelor. Unele dintre aceste mecanisme (nu toate) au analogi în calculul cuantic și vor fi esențiale pentru înțelegerea erorilor și zgomotului cuantic. Trecem pe scurt în revistă câteva dintre ele și apoi trecem la analogii cuantici.
Zgomot termic:
Pe măsură ce componentele unui computer se încălzesc, mișcarea termică a atomilor și a purtătorilor de sarcină schimbă rezistivitatea materialului (de obicei crescând-o). Aceasta înseamnă că rezistența din circuit poate varia. Deși rar, acest lucru poate duce la o tranziție logică parazitară într-un tranzistor. Deși variațiile minore sunt inevitabile, răcirea corespunzătoare a componentelor este esențială pentru evitarea acestor efecte.
Deteriorarea și degradarea termică:
Încălzirea și răcirea repetată a materialelor pot provoca o migrare foarte lentă a elementelor conductoare (metale). În cel mai bun caz, aceasta schimbă rezistența sau capacitatea (sau ambele) elementelor circuitului și duce la o cronometrare imprecisă a funcționării circuitului. În cel mai rău caz, are ca rezultat un scurtcircuit sau o defecțiune permanentă. Din nou, controlul corespunzător al temperaturii este esențial pentru prevenirea acestui tip de degradare.
Efecte induse de radiație (evenimente unice, SEU-uri):
Uneori, particulele de energie înaltă pot ioniza atomii din interiorul unui procesor și pot duce la o sarcină parazitară. Dacă se întâmplă în locul și momentul nepotrivit, acest lucru poate duce la erori logice. Sursa acestor particule de energie înaltă (inclusiv radiația electromagnetică și neutronii) este de obicei formată din interacțiuni de energie înaltă din atmosfera superioară. Aceste evenimente sunt astfel mai frecvente în medii de altitudine mare, inclusiv în spațiu. Acestea sunt abordate folosind coduri de corectare a erorilor și proiectare rezistentă la radiații.
Interferență electromagnetică:
Erorile pot fi cauzate și de câmpuri electromagnetice (EM) externe provenite de la linii electrice comutate, transmițătoare radio sau alte componente ale sistemului. Acest lucru este diferit de radiația de energie înaltă din fenomenul anterior. Aici, câmpuri EM parazite, dependente de timp, induc curent și tensiune în componentele de calcul (spre deosebire de ionizarea unui anumit atom într-un singur eveniment). Deoarece dependența de timp a câmpurilor este un factor determinant în tensiunile induse, acest tip de interferență este deosebit de important în sistemele de înaltă frecvență. Aceste erori pot fi combătute prin ecranare și împământare, printre altele.
Crosstalk între interconexiuni:
Cuplajul capacitiv sau inductiv între conductori adiacenți, în special în circuitele integrate la scară nanometrică, poate duce la semnale parazitare. Acest lucru este legat de interferența electromagnetică, dar este diferit deoarece sursa câmpului perturbator este o altă componentă din interiorul circuitului computerului. Gândește-te la două fire foarte apropiate unul de celălalt. Dacă firul A suferă o tranziție bruscă (schimbare de tensiune), poate induce curenți în firul adiacent B. Direcția și magnitudinea exactă depind de dispunerea circuitului; poate fi un flux net coerent de sarcină sau ceva mai apropiat de curenți turbionari de sarcină. Dar, în unele cazuri, acest lucru poate duce la tranziții logice nedorite. Aceste efecte de crosstalk pot fi atenuate prin spațiere optimă a dispunerii, ecranare și timpi de creștere controlați ai semnalului.
Aceasta nu este o listă completă, dar este suficientă pentru a începe să vedem paralele cu calculul cuantic. Observă că, în toate tipurile de interacțiuni nedorite de mai sus, manifestarea zgomotului ca eroare logică poate lua doar forma unui 0 care devine 1 sau a unui 1 care devine 0. Aceasta este tot ce este permis în spațiul stărilor biților clasici.
Zgomot și erori cuantice
În calculul cuantic, zgomotul și erorile sunt adesea discutate împreună, dar este important să recunoaștem diferența. Zgomotul cuantic se referă la perturbarea fizică de bază care afectează qubiții și sistemele cuantice. Include toate formele de interacțiuni sau fluctuații nedorite provenite din mediu, controale imperfecte sau defecte hardware care fac ca starea cuantică să se abată de la ideal. Erorile cuantice sunt abaterile sau defectele specifice din informația cuantică, rezultate din zgomotul cuantic. Erorile cuantice sunt manifestările măsurabile sau operaționale ale zgomotului, iar erorile includ bit-flip-uri, phase-flip-uri, amortizarea amplitudinii și altele. Atât zgomotul, cât și erorile pot apărea într-un mod continuu. De exemplu, câmpul folosit într-o poartă cuantică ar putea fi deviat cu 0,1%, 0,15% sau orice altă fracțiune. Acest lucru ar putea duce la o fază incorectă pe un qubit, de asemenea cu orice cantitate continuă. Dar vei observa că, în practică, și mai ales în corectarea erorilor, este obișnuit ca erorile să fie tratate ca și cum ar fi discrete: gruparea efectelor acumulate într-un bit-flip discret sau o singură rotație de fază. Acest lucru este util pentru corectarea erorilor și caracterizarea lor, dar nu înseamnă că efectul zgomotului asupra unui qubit este doar un set discret de erori.
Există multe tipuri de zgomot care afectează computerele cuantice. Unele pot duce la mai multe tipuri de erori, în timp ce altele sunt asociate cu manifestări specifice de erori. O listă completă depășește scopul acestei lecții; iată o listă parțială relevantă pentru restul acestui curs, unele cu paralele la zgomotul din calculul clasic.
Thermal:
Cele două stări de bază computațională și ale unui qubit sunt separate de o cantitate foarte mică de energie. Valoarea exactă depinde, desigur, de hardware-ul cuantic. Pentru qubiții în stare solidă (transmon cu frecvență fixă), precum cei folosiți de IBM Quantum®, diferența de energie dintre aceste stări este de ordinul J, sau câțiva microelectronvolți. Această scală de energie poate fi legată de frecvență prin sau de o temperatură caracteristică. Deoarece temperatura este legată de energia cinetică medie a particulelor dintr-un eșantion, putem folosi constanta Boltzmann pentru a obține o estimare a temperaturii la care particulele medii ar avea suficientă energie pentru a provoca o tranziție:
Pentru a reduce șansa ca interacțiunile termice să provoace tranziții de la o stare de bază computațională a qubitului la alta, temperatura qubiților trebuie menținută substanțial sub 100 mK, ideal mai aproape de 15-25 mK. Orice creștere semnificativă a temperaturii peste aceste praguri ar duce la o ocupare complet aleatorie a stărilor și la pierderea totală a informației cuantice.
Acest lucru este analog cu erorile termice care pot apărea în computerele clasice, prin faptul că ambele au origine termică — dar scala de temperatură este evident diferită, la fel ca și mecanismul de pierdere a informației.
Crosstalk și interferență:
Crosstalk-ul în calculul cuantic se referă la orice cuplaj sau interferență nedorită între qubiți sau linii de control, astfel încât o operație sau un semnal destinat unui qubit afectează în mod neintenționat alți qubiți. Se manifestă ca erori sau corelații între qubiți care ar trebui, în mod ideal, să fie independenți.
În arhitecturile de qubiți supraconductori precum cele folosite de IBM®, crosstalk-ul poate apărea din scurgerea semnalelor de control cu microunde către qubiții vecini, cuplajul neintenționat între rezonatorii de citire sau crosstalk-ul de flux între buclele qubiților.
Multe dintre abordările de minimizare a crosstalk-ului sunt încorporate în proiectarea unui computer cuantic, precum spațierea qubiților și asigurarea faptului că qubiții adiacenți au frecvențe operaționale diferite. Există, de asemenea, abordări software pentru atenuarea erorilor de crosstalk, care vor fi discutate în lecțiile ulterioare.
Operații de poartă imperfecte:
Operațiile asupra qubiților sunt efectuate folosind hardware cu precizie finită și care poate fi supus zgomotului sau altor surse de imprecizie. În special, pulsuri de microunde de durate specifice și cu orientări specifice sunt folosite pentru a implementa porțile de rotație. Să presupunem, de exemplu, că un puls de microunde trebuie să rotească 0,30 radiani în jurul axei . Există o precizie finită în orientare, ceea ce duce la o anumită imprecizie a axei de rotație. Mai mult, există întotdeauna un compromis fundamental între frecvența unui puls și durata sa. Un puls foarte lung poate avea în esență un comportament sinusoidal, cu practic o singură frecvență. Pentru a forma un pachet scurt, este nevoie de o suprapunere a multor frecvențe. Acesta este același compromis aflat la baza relației de incertitudine energie-timp, deși precizia porților nu împinge încă spre aceste limite fundamentale; există loc de îmbunătățire.
Zgomot inerent cuantic:
Acest ultim tip de zgomot este destul de diferit de celelalte; nu se datorează erorilor, ci naturii mecanicii cuantice. Să presupunem că un qubit aflat în starea cuantică este măsurat și colapsează într-o stare proprie ( sau ). Într-un sistem transmon cu frecvență fixă, qubitul este cuplat dispersiv la un rezonator cu microunde a cărui frecvență de rezonanță depinde ușor de starea qubitului. Un puls de sondare cu microunde este trimis prin rezonator, iar semnalul de ieșire dobândește o schimbare de fază și de amplitudine dependentă de stare. Acest semnal este apoi amplificat și măsurat folosind electronică clasică.
La nivel cuantic, semnalul de măsurare este transportat de un câmp coerent de microunde cu un număr mediu finit de fotoni. Datorită naturii cuantice a câmpurilor electromagnetice, cuadraturile câmpului prezintă fluctuații intrinseci. Aceste fluctuații sunt independente de imperfecțiunile tehnice și apar chiar și pentru o stare coerentă ideală. Creșterea numărului mediu de fotoni crește semnalul de măsurare, dar nivelul fundamental de zgomot rămâne finit, astfel încât distincția dintre rezultate se îmbunătățește doar ca .
Astfel, chiar dacă qubitul este pregătit perfect, iar lanțul de măsurare este ideal, semnalul de citire corespunzător unei anumite stări a qubitului nu este o singură valoare fixă, ci o distribuție care limitează cât de bine pot fi distinse rezultatele. Această suprapunere reprezintă o sursă fundamentală de incertitudine chiar în procesul de măsurare. În practică, deși zgomotul tehnic provenit de la amplificatoare și alte componente domină adesea, acest zgomot cuantic intrinsec stabilește o limită inferioară pentru fidelitatea citirii.
Incertitudinea nu este eroare:
Toate aceste surse de zgomot sunt diferite de incertitudinea fundamentală asociată măsurătorilor stărilor cuantice. Prin contrast, să presupunem că avem un qubit într-o stare cuantică:
Această stare are o șansă de 64% de a fi măsurată în starea și o șansă de 36% de a fi măsurată în starea . Dar o singură măsurătoare va da doar sau — astfel încât o singură măsurătoare ne va spune rareori mult despre starea dinainte de măsurare. Sunt necesare multe măsurători pentru a obține informații detaliate despre stare. Din zece măsurători, ne-am putea aștepta ca șase sau șapte să dea . Dar nu ar fi șocant dacă primele zece măsurători ar da toate (la fel ca aruncarea unei monede corecte și obținerea de „cap” de zece ori la rând: neobișnuit, dar complet plauzibil). Dacă am repeta măsurătoarea de 1000 de ori și am obține mereu , asta ar fi, într-adevăr, șocant.
Există, prin urmare, incertitudine în cunoașterea noastră asupra stării cuantice, bazată pe orice număr finit de măsurători. Pe măsură ce repetăm măsurătorile, cunoașterea noastră asupra stării cuantice dinainte de măsurare se îmbunătățește, dar nu este niciodată perfectă. Cineva ar putea spune colocvial că există întotdeauna o „eroare” de bază în orice rezultat al unei măsurători cuantice. Dar aceasta este o utilizare diferită a termenului „eroare”, iar acest fenomen este descris mai bine ca incertitudine statistică. Procesul de creștere a cunoașterii unei stări cuantice prin numeroase măsurători se numește tomografie a stării cuantice. Totuși, tomografia stării cuantice nu se limitează la măsurători de-a lungul axei Z; ea se referă, în general, la măsurători de-a lungul axelor ortogonale (precum X, Y și Z) pentru determinarea amplitudinilor și a fazei relative. Pentru mai multe informații despre acest proces, vezi această secțiune din cursul lui John Watrous despre Formularea generală a informației cuantice, sau pentru o implementare practică, vezi această lecție despre teleportare din cursul despre Calculul cuantic la scară utilă.
Observarea erorilor și acumularea lor
În această secțiune, vom folosi computere cuantice reale pentru a observa erorile cuantice și acumularea lor în diferite condiții. În practică, multe surse de erori cuantice sunt de obicei prezente simultan. Pentru a observa diferite tipuri de erori într-un mod oarecum izolat, va trebui să folosim circuite concepute pentru această izolare. Circuitele folosite în aplicațiile calculului cuantic vor arăta mult mai complicate.
Să începem cu erorile de relaxare energetică.
Erori de relaxare energetică ()
Amintește-ți din discuția noastră despre zgomotul termic că, la orice temperatură diferită de zero, există o anumită probabilitate ca un sistem cuantic să sufere o tranziție între stările proprii de energie. Relaxarea () domină deoarece este determinată de emisia spontană (independentă de temperatură), în timp ce temperatura scăzută suprimă procesul concurent de excitare. Cu cât un qubit stă mai mult inactiv, cu atât are mai mult timp să sufere o astfel de tranziție. Probabilitatea ca un qubit pregătit în starea să rămână în după un timp este dată de
Aici, timpul este un timp caracteristic determinat experimental, diferit pentru fiecare qubit, și care poate chiar varia ușor în timp. Computerele cuantice IBM® sunt evaluate periodic (benchmarked), astfel încât timpii listați pentru qubiții computerelor cuantice IBM ar trebui să fie exacți și actualizați. O valoare mare a lui înseamnă că qubitul rămâne mai mult timp (în medie) în starea în care a fost pregătit. Valorile tipice ale lui diferă în funcție de arhitectură; qubiții din computerele cuantice IBM au adesea timpi de ordinul a 200-300 , iar cele mai recente valori pot fi verificate pe pagina Resurse de calcul.
Timpul caracteristic măsoară altceva: pierderea informației de fază. Ne vom întoarce la acest subiect mai târziu.
Pentru a observa erorile de relaxare energetică, vom pregăti qubiții în starea și apoi îi vom lăsa în mod intenționat inactivi pentru perioade lungi de timp. Aceasta este partea artificială. În fluxurile de lucru cuantice reale, poți avea câțiva qubiți care stau inactivi pentru perioade lungi în timp ce procesele sunt efectuate pe alți qubiți; prin urmare, câteva instanțe ale unor astfel de perioade inactive nu sunt artificiale.
Să începem prin a importa câteva pachete și a selecta cel mai puțin ocupat backend.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"cycler": "cycler", "matplotlib": "matplotlib", "numpy": "numpy", "qiskit": "qiskit", "qiskit_aer": "qiskit-aer", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
import numpy as np
import matplotlib.pyplot as plt
# If your credentials are already saved locally
service = QiskitRuntimeService()
# To load an unsaved instance, uncomment the line below
# service = QiskitRuntimeService(channel = "ibm_quantum_platform", instance = "your crn here")
# To select the least-busy backend:
# backend = service.least_busy(simulator=False, operational=True)
# To specify the backend by name:
backend = service.backend("ibm_boston")
props = backend.properties()
print(backend)
<IBMBackend('ibm_boston')>
Acum vom selecta un qubit pe care să lucrăm, în acest caz, qubitul zero. Putem importa direct proprietățile acestui qubit, inclusiv și .
qubit_idx = 0
qubit_props = props.qubit_property(qubit_idx)
t1 = qubit_props["T1"][0] # * 1e6 # Convert seconds to µs
t2 = qubit_props["T2"][0] # * 1e6 # Convert seconds to µs
# print(f"Qubit {qubit_idx}: T1={t1} µs, T2={t2} µs")
print(f"Qubit {qubit_idx}: T1={t1} s, T2={t2} s")
Qubit 0: T1=0.0002737016180018049 s, T2=0.00042784777605680494 s
Cunoașterea lui în unități de microsecunde este importantă, dar s-ar putea să nu ai o percepție intuitivă asupra a ceea ce înseamnă asta. La urma urmei, operațiile de poartă pe computerele cuantice sunt foarte rapide. Întrebarea reală este: cât de mult putem face pe un computer cuantic în acea perioadă de timp. În acest scop, este util să legăm de alte scale de timp folosite în calculul cuantic — în mod specific, de următoarele:
-
timpul de eșantionare - cel mai mic tact de ceas peste care pot fi implementate procese de control pe computerul cuantic.
-
timpii porților pe un singur qubit - timpul necesar pentru a implementa o operație de poartă pe un singur qubit. Aceasta nu va fi o singură valoare, ci un interval de numere posibile, în funcție de tipul porții.
-
timpii porților pe doi qubiți - timpul necesar pentru a implementa o operație de poartă pe doi qubiți adiacenți. Acesta poate lua, de asemenea, o gamă de valori, dar este de obicei cu aproximativ un ordin de mărime mai lung decât pentru o poartă pe un singur qubit.
Să verificăm pentru backend-ul nostru și să afișăm câteva intervale plauzibile pentru timpii porților.
print(f"Using backend: {backend.name}")
# Access the backend target
target = backend.target
def get_gate_times(target, gate_name):
results = []
if gate_name not in target:
return results # gate not supported
# target[gate_name] is a dict: {(qubits): InstructionProperties}
for qubits, props in target[gate_name].items():
if props.duration is not None:
results.append({"qubits": qubits, "duration_ns": props.duration * 1e9})
return results
# Query some gates
for gate in ["cz", "x"]:
times = get_gate_times(target, gate)
print(f"\nGate: {gate}")
if times:
for entry in times[:5]:
print(f" Qubits {entry['qubits']}: {entry['duration_ns']:.2f} ns")
else:
print(" Not available on this backend")
Using backend: ibm_boston
Gate: cz
Qubits (0, 1): 68.00 ns
Qubits (1, 0): 68.00 ns
Qubits (1, 2): 68.00 ns
Qubits (2, 1): 68.00 ns
Qubits (2, 3): 88.00 ns
Gate: x
Qubits (0,): 32.00 ns
Qubits (1,): 32.00 ns
Qubits (2,): 32.00 ns
Qubits (3,): 32.00 ns
Qubits (4,): 32.00 ns
Acești timpi ai porților vor varia de la un backend la altul. Vom codifica direct (hard-code) un timp al porții pe doi qubiți preluat de la ibm_boston de 68 ns.
dt = backend.configuration().dt
two_q_gate_time = 68e-9
print("The sampling time is : ", dt)
print("dts per T_1 : ", t1 / dt)
print("2-qubit characteristic time : ", two_q_gate_time)
print("The sampling time intervals per two-qubit gate : ", two_q_gate_time / dt)
print("2-qubit gates per T_1 : ", t1 / two_q_gate_time)
The sampling time is : 4e-09
dts per T_1 : 68425.40450045122
2-qubit characteristic time : 6.8e-08
The sampling time intervals per two-qubit gate : 17.0
2-qubit gates per T_1 : 4025.0237941441897
Ține cont de faptul că aici nu au fost luate în considerare nicio altă sursă de erori, nici suprimarea sau atenuarea acestora. Erorile nu sunt singurele erori active într-un sistem cuantic, așa că nu te îngrijora prea mult în privința acestor numere. Acest lucru înseamnă pur și simplu că, în absența oricărei suprimări, am putea plauzibil implementa de ordinul miilor de porți pe doi qubiți înainte ca erorile să înceapă să domine. Alte erori vor domina de obicei la adâncimi mult mai mici și, invers, erorile ar putea încă merita suprimate la timpi mult mai scurți decât cei necesari pentru a elimina complet semnalul.
Vom începe folosind un simulator cu un model de zgomot, iar apoi vom compara rezultatele cu hardware-ul real.
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, thermal_relaxation_error
from qiskit import QuantumCircuit
from qiskit.quantum_info import Pauli
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_aer.primitives import EstimatorV2
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
Să definim un pas de timp pentru măsurătorile noastre corespunzător estimării maxime pentru timpul unei porți pe doi qubiți. Apoi vom construi 50 de circuite în incrementuri ale acestui pas de timp. În acest fel, vom vedea ce se întâmplă pe o scală de timp similară cu implementarea a 80 de porți pe doi qubiți. Precizia nu este critică aici, așa că vom folosi doar un număr mic de shot-uri.
n_points = 50 # We will show 50 steps
delay_unit = 80 # The delay in units of two-qubit-time from above
shots = 100
Construim un model de zgomot pentru simulatorul nostru care include explicit erori de relaxare termică.
# Create noise model with thermal relaxation for delays
noise_model = NoiseModel()
error = thermal_relaxation_error(
t1, t2, two_q_gate_time * delay_unit
) # error model characterized by times in ns
noise_model.add_all_qubit_quantum_error(error, ["delay"])
sim = AerSimulator(noise_model=noise_model)
Acum construim circuitele și observabilele noastre. Acestea sunt excepțional de simple. Circuitele vor consta pur și simplu în pregătirea qubitului în și implementarea unor întârzieri pentru perioade de timp din ce în ce mai lungi, folosind timpii caracteristici ai porților și definiți mai sus. Observabilele vor fi pur și simplu , deoarece ceea ce vrem să știm este dacă qubitul a rămas în sau a decăzut la . Deși transpilarea nu este întotdeauna necesară pentru simulatoare, transpilăm totuși circuitele noastre aici pentru utilizarea ulterioară pe un backend real.
observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times_sim = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
for j in range(i):
qc.delay(delay_unit * two_q_gate_time, 0, "s")
j = j + 1
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times_sim.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)
Rulăm job-ul nostru folosind un simulator.
pubs = list(zip(circuits, obs))
# Create AerSimulator with noise model as backend
simulator = AerSimulator(noise_model=noise_model)
# Create SamplerV2 from the AerSimulator backend
estimator = EstimatorV2.from_backend(simulator)
# Run the sampler on the circuit, specify shots
job = estimator.run(pubs)
result = job.result()
În final, reprezentăm grafic rezultatele.
# Optional: color palette similar to 'mpl', style = 'clifford'
from cycler import cycler
plt.rcParams["axes.prop_cycle"] = cycler(
color=[
"#4C78A8", # muted blue
"#72B7B2", # teal
"#54A24B", # green
"#9C89CC", # purple
"#B279A2", # mauve
]
)
# Everything else stays at Matplotlib defaults
# Example data: assume result is a list of objects with structure result[i].data.evs.item()
# and delay_times is already defined as a list of floats.
# Extract y-values
y_sim_values = [(1 - r.data.evs.item()) / 2 for r in result]
# Use delay_times as x-values
x_sim_values = delay_times_sim
# Create the plot
plt.figure(figsize=(8, 5))
plt.plot(x_sim_values, y_sim_values, marker="o", linestyle="-", label="EV Data")
plt.xlabel("Idle Time (s)")
plt.ylabel("Probability of measuring |1>")
plt.title("T1 Decay")
plt.grid(True)
plt.show()

Decăderea exponențială este clar vizibilă, iar în acest timp, aceasta scade la puțin sub 40% șansă de a fi în . Observă că acest lucru este exact în concordanță cu modelul: unde am ales maxim să fie de același ordin de mărime cu ; amintește-ți că am spus că ar putea corespunde la 60 de porți (sau acel ordin de mărime), iar aici corespunde la 60 de porți. Astfel
Acum să rulăm aceleași circuite pe un computer cuantic real. Pentru a acoperi aceeași durată de întârziere cu mai puține job-uri, vom crește unitatea de întârziere și vom scădea numărul de puncte.
# This took 27 s on ibm_boston
from qiskit_ibm_runtime import EstimatorV2
# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
# Use the same time parameters and shots
n_points = 10
delay_unit = 400
shots = 100
# Measure Pauli Z's as your observables
observables = [Pauli("Z")] * n_points
circuits = []
obs = []
delay_times = []
for i in range(n_points):
qc = QuantumCircuit(1, 1)
qc.x(0)
if i > 0:
qc.delay(delay_unit * two_q_gate_time * i, 0, "s")
qc_opt = pass_manager.run(qc)
circuits.append(qc_opt)
delay_times.append(delay_unit * two_q_gate_time * i)
observables_isa = observables[i].apply_layout(layout=qc_opt.layout)
obs.append(observables_isa)
pubs = list(zip(circuits, obs))
estimator = EstimatorV2(mode=backend)
job = estimator.run(pubs=pubs)
result = job.result()
# To print the job id for later retrieval of data
# job_id = job.job_id()
# print(f"Job ID: {job_id}")
Acum reprezentăm grafic rezultatele.
fig, ax = plt.subplots()
# Convert from the expectation value of Z to the probability of a transition
y_real_values = [(1 - r.data.evs.item()) / 2 for r in result]
# Use delay_times as x-values
x_real_values = delay_times
# Exponential decay to match theoretical model
t_smooth = np.linspace(0, x_sim_values[19], 100) # Smooth x-range covering your data
y_decay = np.exp(-t_smooth / (t1)) # y = exp(-t/t1)
ax.plot(t_smooth, y_decay, "k--", linewidth=1, label=f"Perfect Decay (t1={t1:3f} s)")
# Add simulator values
ax.scatter(x_sim_values, y_sim_values, label="Simulator", alpha=0.7)
# Add real QC values
ax.scatter(x_real_values, y_real_values, label="Real", alpha=0.7)
# Add labels and plot
ax.set_xlabel("Idle Time (s)")
ax.set_ylabel("Probability of measuring |1>")
ax.legend()
ax.set_title("T1 Decay")
ax.grid(True)
plt.show()

După cum putem observa, decăderea stării în timp corespunde teoriei (și definiției lui ). Mai mult, simulatorul se potrivește destul de bine cu comportamentul computerului cuantic real în acest caz. Iată câteva lucruri de reținut despre decăderea acestei stări:
- Am întârziat în mod artificial măsurarea pentru o perioadă de timp nerealistă. Aceste întârzieri corespund scalei de timp a unor circuite extrem de adânci, care ar putea consta din mii de porți pe doi qubiți. Acest lucru a fost făcut doar pentru a arăta că efectele zgomotului termic există. În circuitele reale aplicate problemelor din lumea reală, operațiile ar fi efectuate pe alți qubiți, în timp ce câțiva ar putea sta inactivi suficient de mult timp încât erorile de relaxare energetică să conteze — dar alte erori ar domina înainte de a se ajunge la un complet.
- Nu au fost folosite tehnici de atenuare sau suprimare a erorilor. Putem modifica această curbă de decădere folosind tehnici pe care le vom învăța în acest curs.
- Am folosit aici doar 100 de shot-uri, ceea ce este neobișnuit de puțin, deoarece am urmărit doar să demonstrăm că efectul există. În aplicații, vei folosi probabil mai mult de 1.000 de shot-uri.
Această primă vizualizare a erorii nu a necesitat aproape nicio poartă, în afară de întârzieri (și singura poartă X folosită pentru a pregăti ). Să ne uităm acum la un alt exemplu care se concentrează pe eroarea de poartă.
Erori de poartă și acumulare
Când aplicăm o poartă cuantică, să spunem o poartă , teoretic acea poartă rotește o stare cuantică cu unghiul radiani în jurul axei de pe sfera Bloch, mapând în prin
Totuși, o poartă reală este imperfectă. Ar putea fi orientată imperfect (cauzând rotații care nu sunt perfect în jurul axei X) sau ar putea cauza o rotație ușor mai mare sau mai mică decât cea intenționată. Să modelăm o eroare de poartă ca fiind pur o supra/sub-rotație cu un unghi mic .
Dacă o poartă imperfectă este aplicată de multe ori, erorile mici se pot acumula. Uneori aceste erori multiple fac chiar ca starea să se deplaseze în aceeași direcție de fiecare dată (un fenomen numit "acumulare coerentă", la care vom reveni mai jos). Să vedem ce se întâmplă când aplicăm o poartă X reală unui qubit de multe ori.
# This took 78 s on penguino1
from qiskit_ibm_runtime import EstimatorV2
# Explicitly use a pass manager with optimization level 0 so that we don't remove the delays
pass_manager = generate_preset_pass_manager(backend=backend, optimization_level=0)
# Use the same bit flips
max_depth = 60
circuits = []
observables = []
for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))
pubs = list(zip(circuits, observables))
estimator = EstimatorV2(mode=backend)
results = estimator.run(pubs=pubs).result()
real_expectations = [pub_res.data.evs for pub_res in results]
# from qiskit_ibm_runtime import QiskitRuntimeService
# service = QiskitRuntimeService() # uses stored IBM Quantum account
# job_id = "d5immof67pic7386l8eg"
# job = service.job(job_id) # retrieve the job
# results = job.result() # this is your .result() object
# Convert from the expectation value of Z to the probability of a transition
# y_real_values = [(1-r.data.evs.item())/2 for r in results]
# Create the plot
plt.figure(figsize=(8, 5))
# plt.plot(range(max_depth + 1), y_real_values, 'o-')
# plt.plot(x_real_values, y_real_values, marker='o', linestyle='-', color='blue', label='EV Data')
plt.plot(
range(max_depth + 1),
real_expectations,
marker="o",
linestyle="-",
color="blue",
label="EV Data",
)
plt.xlabel("Number of Flip-Back Cycles")
plt.ylabel("Expectation ⟨Z⟩")
plt.title("Accumulated Gate Noise Effects on Flips")
plt.grid(True)
plt.show()

Valoarea așteptată (valoarea medie) începe în jurul valorii de 1,0, așa cum era de așteptat, și scade, dar nu scade pur și simplu la zero! Devine negativă. Dacă acesta ar fi zgomot termic sau interacțiuni aleatorii, nu ar face ca să fie mai probabil să fie măsurat decât . Această eroare este clar diferită. Și are sens în contextul discuției noastre despre supra/sub-rotație. Dacă fiecare pereche de rotații care ar trebui să se anuleze ajunge de fapt să rotească cu un unghi mic, atunci multe astfel de repetiții ar permite treptat stării să se rotească de la către .
Este puțin probabil ca acumularea de erori prezentată aici să decurgă la fel de curat într-un flux de lucru real. În primul rând, am dezactivat în mod explicit atenuarea erorilor și am efectuat aceeași secvență repetitivă de porți pentru a permite erorilor să se acumuleze coerent. Acest lucru este făcut exclusiv pentru a demonstra că aceste erori există. Când folosim tehnici de gestionare a zgomotului (de exemplu, Pauli twirling), putem influența modul în care se acumulează eroarea, obținând adesea o eroare globală mai mică.
Putem verifica exact cât de bine se potrivește modelul nostru al acestei erori cu datele experimentale construind explicit un model de zgomot și folosind un simulator. În modelul de mai jos, construim explicit o eroare corespunzătoare la 0,025 radiani. Acesta nu este un număr magic; se poate pur și simplu regla eroarea până când descrie în mod rezonabil experimentul.
from qiskit_aer.noise import NoiseModel, coherent_unitary_error
from qiskit_aer import AerSimulator
import numpy as np
# For your SINGLE-QUBIT test on qubit 0, just override X error specifically
noise_model = NoiseModel.from_backend(backend, gate_error=True, thermal_relaxation=True)
theta_error = 0.025 # model over-rotation error around 0.01-0.03 radians
U_over = np.array(
[
[np.cos(theta_error / 2), -1j * np.sin(theta_error / 2)],
[-1j * np.sin(theta_error / 2), np.cos(theta_error / 2)],
]
)
unitary_error = coherent_unitary_error(U_over)
# Target ONLY qubit 0 (your circuit) - no warning!
noise_model.add_quantum_error(unitary_error, ["x"], [0])
simulator = AerSimulator(noise_model=noise_model)
WARNING: quantum error already exists for instruction "x" on qubits (0,) , appending additional error.
max_depth = 60
circuits = []
observables = []
for depth in range(max_depth + 1):
qc = QuantumCircuit(1)
# Repeat flipping back and forth depth times
for _ in range(depth):
# qc.x(0)
qc.x(0)
qc.barrier()
qc.x(0)
qc.barrier()
circuits.append(qc)
observables.append(Pauli("Z"))
pubs = list(zip(circuits, observables))
estimator = EstimatorV2.from_backend(simulator)
results = estimator.run(pubs).result()
expectations = [pub_res.data.evs for pub_res in results] # no [0], use value directly
Acum putem trasa împreună curbele reale și cele simulate.
fig, ax = plt.subplots()
# Add simulator values
ax.scatter(range(max_depth + 1), expectations, c="blue", label="Simulator", alpha=0.7)
# Add real QC values
ax.scatter(range(max_depth + 1), real_expectations, c="red", label="Real", alpha=0.7)
# Add labels and plot
ax.set_xlabel("Number of Flip-Back Cycles")
ax.set_ylabel("Expectation ⟨Z⟩")
ax.set_title("Accumulated Gate Noise Effects on Flips")
ax.legend()
ax.grid(True)
plt.show()

Eroarea din circuitul real a fost descrisă destul de bine de modelul de eroare prin supra/sub-rotație. În mod clar, diferite tipuri de zgomot și erori se vor acumula diferit și vor avea efecte drastic diferite asupra fidelității circuitelor noastre cuantice. Prin urmare, devine foarte important să clasificăm și să caracterizăm erorile care pot apărea într-un mod mai formal decât am făcut-o până acum.
Caracterizarea erorilor cuantice
Am descris deja unele dintre sursele zgomotului cuantic și am putea clasifica erorile în funcție de categoriile de zgomot care le provoacă. Dar ar putea exista categorii diferite de erori cuantice care sunt utile în corectarea și atenuarea erorilor. De exemplu, trebuie să știm în ce moment apar erorile și cum se acumulează erorile dacă vrem să le corectăm sau să le atenuăm. Când specificăm unde (în ce procese) apar erorile, o categorie importantă și comună este cea a erorilor de pregătire a stării și de măsurare (sau erori SPAM, pe scurt). Aici, termenul „pregătirea stării” nu înseamnă tot ce se face asupra unei stări pentru a o pregăti pentru măsurare. Mai degrabă, se referă la inițializarea cubiților, „pregătirea” cubiților pentru execuția unui algoritm, și astfel această categorie SPAM exclude lucruri precum erorile de poartă din timpul execuției algoritmului.
O altă distincție importantă este dacă erorile sunt coerente sau incoerente. Pe scurt (le discutăm mai detaliat mai jos), erorile coerente sunt de obicei modelate prin operații unitare și păstrează puritatea stării. Erorile incoerente sunt modelate prin canale cuantice neunitare și, în general, reduc puritatea stării. Este ușor să ne imaginăm erorile incoerente ca interacțiuni termice care provoacă pierderea informației cuantice, dar în realitate ele ar putea fi cauzate de orice cuplare aleatorie cu mediul. Ca exemplu de eroare coerentă, să presupunem că există o imperfecțiune în orientarea impulsului la implementarea unei porți RY, astfel încât o poartă provoacă de fapt . O astfel de imperfecțiune ar provoca întotdeauna o rotație eronată în jurul axei X în aceeași direcție. Aceasta ar fi o eroare coerentă.
Reține că erorile SPAM includ un amestec de erori coerente, cum ar fi defecțiunile sistematice de control, și erori incoerente, cum ar fi pierderea de fotoni și efectele termice. Deoarece acest lucru implică mai multe etape și surse de eroare, erorile SPAM sunt cel mai bine descrise ca o combinație atât de erori coerente, cât și incoerente.
Erori SPAM
După cum sugerează numele, erorile SPAM apar în două etape distincte ale unui experiment cuantic: pregătirea inițială și citirea/măsurarea. Erorile de pregătire a stării apar atunci când hardware-ul nu reușește să inițializeze în mod fiabil qubiții în starea de pornire dorită ( pentru computerele cuantice IBM). Cauzele includ:
- excitația termică (qubiții reali nu sunt răciți perfect și pot începe ocazional în în loc de )
- fotoni reziduali sau zgomot în rezonatorii qubiților supraconductori
- deriva calibrării care afectează precizia cu care sunt resetați qubiții
Erorile de măsurare apar în timpul procesului de citire, atunci când aparatul de măsurare identifică greșit starea cubitului. Sursele includ:
-
zgomotul amplificatorului de citire care provoacă confuzie între și
-
relaxarea qubitului în timpul citirii (de exemplu, un qubit aflat în decade în chiar înainte sau în timpul măsurării)
-
diafonie (crosstalk) între liniile de citire: citirea unui qubit influențează ușor citirile qubiților vecini
-
Praguri de discriminare imperfecte în sistemele de măsurare bazate pe rezonatoare IBM
Erorile SPAM sunt în principal incoerente. Erorile de pregătire acționează ca amestecuri aleatorii de stări excitate și fundamentale. Erorile de măsurare se comportă ca o confuzie clasică: cu probabilitatea , este raportat ca sau invers. Acestea sunt diferite de erorile unitare coerente (cum ar fi porțile decalibrate care provoacă schimbări de fază sistematice). În schimb, erorile SPAM seamănă cu zgomotul clasic aleatoriu, deși pot exista rare abateri coerente în citire.
Erorile SPAM pot fi problematice pentru testarea de referință randomizată (randomized benchmarking) sau pentru circuitele cu adâncime redusă, unde pregătirea stării și măsurarea reprezintă o mare parte din eroarea totală. Sunt mai puțin problematice pentru circuitele foarte adânci, în special cele cu multe porți cu doi cubiți.
Din punct de vedere matematic, erorile SPAM pot fi descrise ca producând o distribuție zgomotoasă care este legată de distribuția ideală printr-o matrice :
Aici este probabilitatea de a măsura șirul de biți , iar este probabilitatea de a obține starea atunci când starea ar fi trebuit să fie pregătită în starea . Imaginează-ți contextul șirurilor de biți eșantionate de la Sampler. Distribuția ta măsurată a stărilor va consta din multe măsurători precise, dar și din unele măsurători în care instrucțiunile de pregătire a stării nu corespund stării observate. Aceasta înseamnă că probabilitățile vor fi ușor deviate.

În figura de mai sus, partea (a) arată distribuția ideală a unei stări GHZ în turcoaz, iar măsurătorile reale în violet. În partea (b) vedem un exemplu de matrice . Observă că matricea nu este perfect simetrică față de diagonală, deoarece nu este obligatoriu ca fiecare qubit să returneze eronat un 0 la fel de probabil ca un 1. În practică, este adesea greu să separi erorile de pregătire și de citire, astfel încât acestea sunt adesea combinate într-un singur tratament (de aici utilizarea comună a termenului SPAM).
O modalitate de a corecta aceste erori SPAM este utilizarea unor circuite simple cu rezultate de măsurare ideale cunoscute și compararea acestora cu rezultatele măsurate în prezența erorilor SPAM. Acest lucru poate fi folosit pentru a deduce prin inginerie inversă rezultatele ideale ale unor circuite mai complexe. Pentru stări generale cu entropie ridicată, acest lucru ar putea necesita construirea unei matrice cu probabilități, dar în cazuri mai puțin extreme aceste erori pot fi atenuate.
Erori coerente versus erori incoerente
Erorile coerente sunt rotații greșite sistematice, deterministe și unitare ale stării cuantice. Ele apar din operații cuantice imperfecte care deviază într-un mod previzibil. Exemplele includ mici erori de rotație aplicate de porțile de rotație cu un singur qubit, inclusiv cele cauzate de deriva calibrării, care ar duce în mod constant la supra- sau sub-rotație. Din punct de vedere matematic, am putea scrie că o poartă de rotație reală, să spunem , este dată de poarta de rotație ideală plus o eroare suplimentară:
pentru o mică sub- sau supra-rotație . Alte exemple includ o poartă cu doi cubiți care adaugă o mică schimbare de fază nedorită și impulsuri de control care deviază sistematic de la forma ideală.
O caracteristică esențială a erorilor coerente este că sunt deterministe și pot fi modelate chiar prin porți unitare. În consecință, ele păstrează puritatea stării cuantice: informația cuantică nu se pierde, ci a fost pur și simplu procesată imperfect. Un alt punct important de remarcat este că erorile coerente repetate interferează constructiv și, uneori, cresc pătratic în funcție de numărul de porți.
Aceste erori sunt uneori previzibile și, prin urmare, pot fi într-o oarecare măsură eliminate prin calibrare. Dar erorile coerente care rămân se pot acumula rapid, provocând abateri deranjante de la stările ideale. Aceasta înseamnă că uneori este avantajos să „randomizăm” intenționat erorile coerente. Această procedură și utilitatea ei vor fi tratate în lecția despre atenuarea erorilor.
De ce sunt deranjante
Erorile coerente se pot „aduna” în moduri periculoase, producând abateri mari de la starea corectă dacă nu sunt randomizate sau corectate.
Erorile incoerente sunt stocastice, aleatorii și, de multe ori, neunitare. Ele apar din interacțiunile cu mediul sau din surse de zgomot necontrolate. Am văzut deja câteva exemple: relaxarea energetică / dezintegrarea este incoerentă. La fel sunt zgomotul stocastic al porților, zgomotul termic și eroarea de măsurare.
Caracteristica esențială a erorilor incoerente este că nu sunt aceleași de fiecare dată când este efectuată o operație. Sunt neunitare, deci nu pot fi modelate printr-o simplă poartă cuantică unitară, așa cum ar putea fi erorile coerente. Deoarece sunt incoerente, ele se acumulează de obicei liniar, ca un zgomot aleatoriu, nu ca o supra-rotație constantă.
Erorile incoerente fac ca qubiții să piardă informație în mod ireversibil (pierderea purității și a informației de fază).
Deci, care este mai rea? Ca în majoritatea lucrurilor din calculul cuantic, depinde. Concluzia este că erorile coerente se acumulează mai rapid și neliniar (ceea ce este rău). Dar ele pot fi parțial eliminate prin calibrare, iar informația de fază este încă prezentă în sistemul tău, dacă reușești să îți dai seama cum să o extragi corect. Erorile incoerente se acumulează liniar, ceea ce este bine din două motive: este mai lent decât acumularea coerentă și este destul de ușor să vezi cum se scalează efectele erorilor incoerente pentru procese precum extrapolarea la zgomot zero (ZNE), care va fi tratată în lecția despre atenuarea erorilor. Totuși, atunci când apar erori incoerente, informația cuantică este cu adevărat pierdută, nu doar ascunsă.
Matrici de densitate și canale cuantice
În secțiunile următoare, vom aprofunda câteva tipuri de erori coerente și incoerente și vom vedea cum pot fi modelate matematic folosind canale cuantice. Mai întâi, este necesară o scurtă recapitulare a matricilor de densitate și a canalelor cuantice. Pentru un tratament complet și riguros al acestora, consultă cursul lui John Watrous General formulation of quantum information de pe IBM Quantum Learning. Tratamentul de aici va fi bazat pe exemple și mai puțin formal.
Canalele cuantice reprezintă cel mai general mod de a descrie modul în care un sistem cuantic evoluează, interacționează și suferă zgomot. Dacă ești obișnuit cu stările pure și evoluția unitară, canalele cuantice sunt următorul pas natural.
În mecanica cuantică standard, o stare „pură” se scrie ca . Aici „pură” se referă la puritatea informației sau la cunoașterea modului de pregătire a stării; nu înseamnă o stare proprie a unui anumit sistem. Pentru un exemplu de qubit, este o stare pură deoarece avem cunoștințe perfecte despre amplitudinile relative și faza. Evoluția în timp a unei astfel de stări pure este guvernată de un operator unitar :
conform ecuației lui Schr"odinger, în care , unde este Hamiltonianul sistemului, iar este constanta redusă a lui Planck, adesea „considerată egală cu unu” sau, mai riguros, absorbită în Hamiltonian astfel încât toate energiile sunt exprimate în unități de .
Evoluția unitară este reversibilă, deterministă și izolată. Dar acest lucru este inadecvat pentru a descrie sistemele cuantice reale. În sistemele cuantice reale:
- Efectuăm măsurători, ceea ce colapsează starea cuantică într-o stare proprie a sistemului. Acest lucru este în mod explicit neunitar.
- Sistemul interacționează cu un mediu. Aceasta înseamnă că sistemul nu este cu adevărat izolat, iar deoarece mediul nu poate fi urmărit la infinit, aceasta corespunde unei pierderi de informație.
- Practic vorbind: zgomotul corupe starea. Și altele.
Evoluția unitară singură nu poate descrie aceste procese; prin urmare, avem nevoie de o reprezentare mai generală a stărilor și proceselor cuantice. O stare mixtă descrie o distribuție clasică de stări cuantice. Adică, suntem deja familiarizați cu faptul că starea cuantică: are o șansă de 50% de a fi măsurată (colapsată în informație clasică) în starea și o șansă de 50% de a fi măsurată în . Dar afirmația este că starea cuantică inițială este exact cu o probabilitate de 100%. Acum vrem să adăugăm, peste probabilitatea mecanic-cuantică, o probabilitate clasică, de exemplu:
Starea cuantică inițială este pregătită în cu o probabilitate clasică de 25% și este pregătită în cu o probabilitate clasică de 75% (observă fazele relative diferite).
Uneori acest lucru se poate datora unor probabilități clasice explicite în pregătire; alteori se poate datora întrețeserii (entanglement) cu părți ale mediului pe care le ignorăm. Oricum ar fi, nevoia de un instrument care să descrie această distribuție clasică de stări mecanic-cuantice este clară. Stările pure singure nu pot reprezenta aceste posibilități. Prin urmare, introducem matricea de densitate.
O stare mixtă este descrisă printr-un operator de densitate:
Aici, este o stare cuantică (nu neapărat o stare proprie a vreunui operator anume), iar este probabilitatea clasică ca sistemul să fie pregătit în starea . Aceasta este o rețetă bună pentru a construi o matrice de densitate dintr-o distribuție clasică cunoscută de stări cuantice. Pe de altă parte, am putea dori să știm, având atât o distribuție clasică de stări cuantice, cât și o probabilitate mecanic-cuantică a diferitelor rezultate ale măsurării, care este probabilitatea ca o măsurare să producă o stare anume (precum , sau , sau alte stări atunci când sunt implicați mai mulți cubiți). Aici este locul unde matricea de densitate este deosebit de utilă. O putem scrie și într-o bază astfel:
Aici elementele diagonale sunt probabilități:
-
= probabilitatea ca cubitul să fie în
-
= probabilitatea ca cubitul să fie în
Sunt reale, nenegative și au sumă egală cu 1.
Elementele nediagonale sunt coerențe: relații de fază sau capacitate de interferență și, în general, corespund cantității de informație mecanic-cuantică prezentă în stare. Aceasta este o afirmație informală, dar să vedem ce înseamnă în practică.
Exemplu
Consideră starea pură . (a) Ce știi despre probabilitățile de măsurare și informația de fază fără să faci vreun calcul? (b) Construiește matricea de densitate și verifică-ți intuiția.
Solution:
(a) Deoarece este o stare pură, există o singură fază posibilă între și : +1. Aceasta este informație de fază perfectă, așa că ne așteptăm ca elementele nediagonale din matricea noastră de densitate să fie mari. Poate ai o intuiție mai amplă decât atât despre elementele nediagonale, dar deocamdată este suficient. Mai departe, amplitudinile celor două stări de bază sunt egale, deci ne așteptăm la o probabilitate de 50% de a măsura fie , fie . Așadar ne așteptăm ca intrările diagonale să fie 1/2. (b) Folosind definiția de mai sus:
doar pentru starea . Așadar putem scrie
Intrările diagonale sunt fiecare , așa cum era de așteptat, iar elementele nediagonale sunt mari (însumează unu).
Acum să vedem ce se întâmplă atunci când nu avem informație de fază bună.
Exemplu
Consideră un caz similar, dar acum cu o probabilitate clasică de 50% de a fi în starea și o probabilitate clasică de 50% de a fi în starea . Aceleași două întrebări: (a) Ce știi despre probabilitățile de măsurare și informația de fază fără să faci vreun calcul? (b) Construiește matricea de densitate și verifică-ți intuiția.
Solution:
(a) Ca și înainte, amplitudinile celor două stări de bază sunt egale, deci ne așteptăm la o probabilitate de 50% de a măsura fie , fie . Așadar ne așteptăm ca intrările diagonale să fie 1/2. Dar de data aceasta există două posibilități opuse pentru faza dintre și : +1 și -1, fiecare fiind la fel de probabilă. S-ar putea aștepta ca, având două faze opuse la fel de probabile, să existe puțină sau deloc informație de fază. S-ar putea aștepta ca intrările nediagonale să fie mici. (b) Folosind din nou definiția de mai sus
doar pentru cele două stări și . Așadar putem scrie
Intrările nediagonale sunt mici, de fapt zero, așa cum era de așteptat. Elementele diagonale sunt în continuare 50% fiecare, ceea ce are sens deoarece fiecare dintre stările din amestec avea și ponderate egal.
Această construcție devine mai interesantă pe măsură ce numărul de cubiți crește. Explorează acest lucru în întrebările de mai jos.
Verifică-ți înțelegerea
Scrie matricea de densitate pentru starea Bell pură .
Răspuns
doar pentru starea . Așadar putem scrie
Scrie matricea de densitate pentru o probabilitate clasică de 25% de și o probabilitate clasică de 75% de .
Răspuns
doar pentru cele două stări și . Așadar putem scrie
Modifică munca ta de la întrebarea anterioară pentru a scrie matricea de densitate pentru o probabilitate clasică de 50% de și o probabilitate clasică de 50% de . Prezice ce informație de fază ar trebui să persiste.
Răspuns
doar pentru cele două stări și . Așadar putem scrie
Termenii diagonali însumează 1, așa cum trebuie. Termenii nediagonali nu se anulează aici, așa cum s-a întâmplat în exemplul anterior, cu un singur qubit. Poți vedea de ce, în calcule, dar o explicație prescurtată este că acum avem mai multe stări în spațiul nostru Hilbert. Deși prima stare Bell avea o fază relativă pozitivă, iar a doua una negativă, aceste faze erau între stări de bază diferite. Prima stare Bell avea o fază între și , în timp ce a doua avea o fază relativă între și .
Canale cuantice
Un canal cuantic este cea mai generală transformare permisă fizic a unei stări cuantice. Acesta duce o matrice de densitate inițială către o altă matrice de densitate:
Aici înseamnă un canal cuantic acționând asupra unei matrice de densitate , a nu se confunda cu stările Bell sau .
Canalele cuantice sunt extrem de generale. Ele pot include:
-
Evoluție unitară
-
Amestecuri probabilistice de operatori unitari
-
Measurements
-
Decoherence
-
Amortizarea amplitudinii (pierdere de energie)
-
Defazare (pierderea informației de fază)
-
Interacțiunea cu un mediu Și multe alte lucruri.
Un mod de a gândi despre canalele cuantice este acela că ele sunt pentru matricile de densitate ceea ce sunt operatorii unitari pentru stările pure. Dar generalitatea matricilor de densitate permite ca respectivele canale cuantice să fie mult mai generale și, prin urmare, mai puternice.
Singurele constrângeri asupra unui canal cuantic sunt că trebuie să fie:
- Liniar Amestecurile de stări trebuie să evolueze în mod consistent:
- Complet pozitiv Nu ar trebui să producă probabilități negative, chiar dacă sistemul tău este încâlcit (entangled) cu altceva.
- Care păstrează urma (trace-preserving) Probabilitățile trebuie să însumeze 1. Acestea sunt uneori reunite sub acronimul CPTP: Completely Positive Trace-Preserving maps (aplicații complet pozitive care păstrează urma).
Există diferite reprezentări ale canalelor cuantice, inclusiv reprezentările Stinespring, Kraus și Choi. Acestea sunt tratate în detaliu în această lecție despre canale cuantice din General formulation of quantum information și sunt arătate acolo a fi echivalente. Nu vom intra aici în aceste diferite reprezentări. Este suficient să spunem că sunt analoage descrierii vectorilor folosind trei sisteme de coordonate diferite. Fiecare ar putea sublinia aspecte diferite și construi intuiția într-un mod diferit; dar toate îți dau răspunsul corect. Reprezentările Kraus sunt convenabile pentru scopurile noastre. Ele oferă un mod formulaic convenabil de a exprima acțiunea unui canal prin înmulțire și adunare de matrici. În particular, o reprezentare Kraus este o specificare a unui canal, , în următoarea formă.
Aici, sunt matrici care au toate aceleași dimensiuni: coloanele lor corespund stărilor clasice ale sistemului de intrare, , iar rândurile lor corespund stărilor clasice ale sistemului de ieșire, fie că este sau un alt sistem . Pentru ca să fie un canal valid, aceste matrici trebuie să satisfacă următoarea condiție.
Aceste matrici se numesc matrici Kraus. Această formulare este aplicabilă nu doar canalelor de zgomot, ci și proceselor și canalelor cuantice generale, inclusiv măsurării. Să vedem un exemplu despre cum acestea pot fi folosite pentru a construi canale în contextul zgomotului și erorilor.
Canal complet defazant
Consideră un canal care distruge toată informația de fază și numește-l canalul complet defazant. Aceasta înseamnă că acest canal ar trebui să transforme orice matrice de densitate de forma
și să o mapeze la
Dacă presupunem că matricea de densitate a fost deja scrisă în baza computațională, putem exprima ca . Acest lucru sugerează un set de matrici Kraus care pot realiza această acțiune a canalului: . Să aplicăm această strategie unui exemplu cu un singur qubit și să vedem dacă funcționează așa cum ne dorim:
Setează și .
Deoarece este un număr, putem pur și simplu muta vectorul dincolo de el. Acest lucru se aplică și celui de-al doilea termen. Avem:
Reține că aceste matrice satisfac condiția cerută:
Este demn de remarcat că această alegere a matricelor Kraus nu este unică.
Caracterizarea zgomotului ca și canale
În această secțiune vom folosi modelul sferei Bloch și matematica canalelor cuantice pentru a înțelege mai bine diferite tipuri de zgomot și erori.
Erori incoerente
Să revenim la erorile incoerente și să explorăm în mod specific erorile de relaxare energetică. Amintește-ți că starea este starea fundamentală a unui qubit, iar starea are o energie ușor mai mare. Uneori, stările cuantice decad pur și simplu spontan de la un nivel de energie mai înalt la unul mai jos. Procesul de emisie spontană este un subiect bogat și nu poate fi cu adevărat înțeles fără un tratament din teoria cuantică a câmpurilor. Dar intuiția ne este foarte familiară tuturor: perturbațiile aleatorii pot face ca o piatră să se rostogolească la vale pe un deal; ele nu vor face o piatră să se rostogolească la deal. Cât timp rămâne un qubit în starea de energie mai înaltă este caracterizat de un timp . Mai precis, probabilitatea ca un qubit pregătit în starea să rămână în acea stare după timpul este . Sau, echivalent, probabilitatea a unei erori de relaxare energetică după timpul este
Pentru a descrie acest lucru cu un canal cuantic în reprezentarea Kraus, avem nevoie de matrice Kraus care corespund la
- păstrarea neschimbată a stărilor
- schimbarea stărilor în cu o anumită probabilitate p.
Să definim
Mai întâi, să verificăm că acest lucru are efectele dorite asupra unei matrice de densitate. Să considerăm un sistem aflat într-o stare pură . Am văzut într-un exemplu de mai sus că matricea de densitate pentru acest caz este
Aplicând canalul de relaxare energetică folosind matricele Kraus, obținem noua matrice de densitate mapată:
Să examinăm acest lucru și să-l comparăm cu intuiția noastră:
Mai întâi, să verificăm limita când se apropie de zero. Recuperăm matricea noastră de densitate inițială, așa cum ar trebui:
Pe măsură ce timpul trece, ne-am aștepta ca probabilitatea de a măsura starea să crească, iar probabilitatea de a măsura să scadă. Acest lucru este, din nou, exact ceea ce observăm, deoarece
De asemenea, putem observa cu ușurință că probabilitățile de a măsura și însumează 1, așa cum trebuie.
Scalarea precisă a termenilor de coerență (extra-diagonali) depășește scopul acestui tratament. Dar ceea ce este clar este că, inițial, avem informație de fază perfectă, iar după un timp foarte îndelungat nu mai poate exista nicio informație de fază, deoarece sistemul este complet relaxat în starea . Prin urmare, termenii de coerență trebuie să scadă la zero după un timp foarte îndelungat. Într-adevăr,
Multe dintre constrângerile asupra matricelor noastre Kraus sunt verificate implicit prin aceste considerații intuitive. Ar trebui să verifici riguros că constrângerile asupra canalelor (și în special asupra matricelor Kraus) sunt satisfăcute, dar lăsăm acest lucru ca exercițiu pentru cititor.
Grafic, acest tip de canal poate fi reprezentat folosind o sferă Bloch. O stare pură se află pe suprafața unei sfere Bloch. Stările mixte se deplasează spre interiorul sferei și se extind dinspre un singur punct. Includerea probabilităților clasice se observă prin reducerea distanței absolute de la origine la oricare dintre stările din amestec, iar extinderea de la un singur punct la o regiune indică amestecul mai multor stări posibile. În cazul special al unui canal de relaxare energetică, starea mixtă (matricea de densitate) după un timp neneglijabil ar arăta ca în imaginea de mai jos: o regiune în interiorul sferei Bloch, deplasată în sus către polul , și micșorată atât de-a lungul axei , cât și de-a lungul planului , deși într-o măsură mai mică decât de-a lungul lui .
Reține că regiunea nu este o „calotă” a sferei Bloch, așa cum apare uneori într-o randare în perspectivă. Așa cum se poate observa clar în videoclip, este un sferoid turtit, micșorat și deplasat către starea . Canalele de zgomot (și canalele în general) sunt, desigur, aplicabile sistemelor de orice dimensiune. Dar reprezentarea lor vizuală (ca în cazul unei sfere Bloch) devine dificilă pe măsură ce crește numărul de stări reciproc ortogonale din spațiul Hilbert.
Verifică-ți înțelegerea
Verifică faptul că matricele Kraus folosite mai sus în canalul de relaxare energetică satisfac condiția de identitate:
Răspuns
Vom prezenta încă două tipuri de canale de zgomot incoerent, dar vom lăsa cea mai mare parte a interpretării și verificării ca exerciții. Următorul este canalul de defazare, care descrie o pierdere a informației de fază, dar cu păstrarea amplitudinilor. Deși pot fi implicate atât probabilități clasice, cât și cuantice în probabilitatea globală de măsurare, pierderea informației de fază este adesea descrisă ca o pierdere de informație cuantică, sau ca o devenire mai clasică a sistemului.
Într-un mod foarte asemănător celui în care relaxarea energetică a fost descrisă printr-un timp caracteristic , erorile de defazare sunt descrise printr-un al doilea parametru de timp . Probabilitatea unei erori de defazare după timpul este dată de
Un set de matrice Kraus pentru canalul de defazare pe un singur qubit, în funcție de această probabilitate, este următorul:
Rezultatul acestui canal de defazare este vizualizat folosind o sferă Bloch în figura de mai jos.
Reține că amplitudinile nu se modifică, deci orice stare aflată exact pe un pol ( sau ) nu este afectată și este în continuare mapată pe suprafața sferei, în regiunea umbrită. Dar informația de fază se pierde, ceea ce corespunde unei micșorări a regiunii umbrite de-a lungul planului . O modalitate de a înțelege acest lucru este: orice stare cuantică posibilă poate avea încă o fază bine definită, dar întrucât există o probabilitate clasică de a găsi mai multe stări cu faze bine definite diferite, probabilitatea globală a oricărei faze bine definite este redusă.
Verifică-ți înțelegerea
Verifică faptul că matricele Kraus definite mai sus pentru canalul de defazare satisfac condiția de identitate:
Răspuns
Pornește de la o stare pură a unui singur qubit, la alegerea ta, cu o fază bine definită între și . Scrie-o ca o matrice de densitate. Aplică canalul de defazare folosind operatorii Kraus sugerați mai sus. Interpretează matricea de densitate mapată rezultată.
Răspuns
Să alegem starea . Matricea de densitate corespunzătoare este
Acum aplicăm canalul de defazare acestei matrice de densitate folosind operatorii Kraus.
În primul rând, observăm că suma diagonalei este într-adevăr egală cu unu, așa cum trebuie să fie. În al doilea rând, observă că elementele extra-diagonale erau inițial mari, cu o sumă de 24/25, indicând o coerență puternică. Reține că, pe măsură ce probabilitatea unei erori de defazare crește, aceste elemente extra-diagonale scad. Acest lucru corespunde de asemenea așteptărilor noastre. O subtilitate: observă ce se întâmplă când . Coerența devine din nou puternică! Acest lucru pare contraintuitiv la prima vedere, deoarece o probabilitate mare a unei erori de defazare ar trebui să ne strice faza, nu-i așa? Șmecheria este că, dacă suntem 100% siguri că are loc o eroare de fază, atunci avem din nou informație puternică despre fază; faza pur și simplu s-a inversat. Cu această perspectivă, ne-am putea aștepta ca cea mai proastă informație de fază să corespundă unei șanse de 50-50 ca o eroare de fază să aibă loc, și exact asta găsim.
Ultimul nostru exemplu de canal de zgomot care descrie erori incoerente este canalul de zgomot Pauli. Acest canal descrie apariția a trei tipuri de erori cu probabilități independente:
- Eroare de tip bit-flip (eroare X) cu probabilitatea
- Eroare de tip phase-flip (eroare Z) cu probabilitatea
- Combinația X și Z (eroare Y) cu probabilitatea Aici, pentru orice . Un corolar este că probabilitatea ca nicio eroare să nu aibă loc este .
Operatorii Kraus pentru acest canal sunt:
În cazul canalului de zgomot Pauli, este instructiv să scriem chiar canalul:
Din această formă vedem că canalul de zgomot Pauli implementează una sau mai multe erori corespunzătoare acțiunii matricelor Pauli , fiecare cu probabilitatea .
Diferite combinații ale probabilităților de flip vor produce vizualizări diferite. Aici vizualizăm cazul special în care , numit și canalul de depolarizare.
Modelarea erorilor coerente
Canalele cuantice pot reprezenta atât erori coerente, cât și incoerente, dar în practică sunt folosite în principal pentru erori incoerente, deoarece erorile coerente sunt modelate mai bine ca decalibrări unitare sau sunt convertite în canale stocastice pentru o analiză mai ușoară. În această secțiune vom introduce abordări mai potrivite pentru erorile coerente.
Erorile coerente pot fi modelate prin porți unitare nedorite. Câteva exemple simple includ rotații dezaliniate sau sub-/supra-rotații. În imaginea de mai jos, arătăm o rotație dezaliniată ca o rotație suplimentară cu o cantitate mică , pe lângă rotația dorită în jurul axei . O supra-rotație este descrisă de rotația dorită, plus o rotație suplimentară în jurul aceleiași axe .

Erorile pentru doi qubiți și conurile de lumină umbrite
O poartă cu un singur qubit rotește un qubit izolat. O poartă cu doi qubiți implementează o logică ce depinde de doi qubiți, dar nu poate face o măsurătoare directă a niciunuia dintre ei; prin urmare, trebuie să activeze o interacțiune între qubiți. Această interacțiune este motivul pentru care putem construi întrețesere (entanglement), și tot de aici provine o mare parte din zgomot, diafonie (crosstalk) și dificultatea de calibrare. Această interacțiune dintre qubiți permite de asemenea propagarea erorilor. Dacă un qubit are o eroare, iar el servește drept qubit de control pentru un alt qubit țintă, eroarea poate fi transmisă către țintă. În această lecție vom analiza ce înseamnă porțile cu doi qubiți pentru ratele de eroare și propagarea lor în cadrul unui circuit.
Porți de rezonanță încrucișată cu ecou (ECR)
Diferite arhitecturi hardware și familii de porți inginerizează această interacțiune în moduri diferite. Computerele cuantice IBM implementează porți abstracte cu doi qubiți, precum porțile CZ sau CX, folosind porți native hardware de rezonanță încrucișată cu ecou (ECR). Porțile ECR generează o interacțiune efectivă folosind o excitație cu microunde. Porțile înrudite, precum CNOT, sunt construite din prin adăugarea de rotații cu un singur qubit.
Diferiți qubiți au frecvențe de rezonanță diferite (frecvențe la care reacționează puternic). O operație standard ar putea folosi acea frecvență de rezonanță pentru a induce o tranziție într-un qubit. Dar ce se întâmplă dacă excităm qubitul C la frecvența de rezonanță a unui qubit adiacent T? Qubiții adiacenți sunt legați printr-o interacțiune fixă, capacitivă sau mediată de un rezonator. Din cauza acestui cuplaj, o excitație asupra qubitului C „se scurge” în hamiltonianul qubitului T. Intensitatea și direcția acestei excitații efective depind de starea qubitului C ( sau ). Aici, qubitul C este controlul, iar qubitul T este ținta.
Rezultatul este o rotație efectivă a qubitului țintă, condiționată de starea qubitului de control. Din punct de vedere matematic:
Această interacțiune ZX este exact ceea ce ai nevoie pentru a construi un CNOT. Dar ceilalți termeni pot include câteva erori și aproape sigur includ un cuplaj capacitiv între qubiții C și T, care corespunde unui termen ZZ.
Putem gândi despre acești termeni suplimentari în felul următor:
-
IX = ținta este excitată neintenționat
-
ZI = qubitul de control capătă o rotație Z nedorită
-
IZ = qubitul țintă capătă o rotație Z nedorită
-
ZZ = decalaj de fază static, dependent de stare
-
altele = interacțiuni XY, XX de ordin superior, de mică amploare
O poartă ECR este pur și simplu o rotație controlată plus un puls de ecou ales cu grijă pe qubitul de control. Ecoul inversează semnul multor termeni nedoriți, păstrând în același timp interacțiunea ZX. Acest proces anulează destul de bine erorile IX și ZI, și uneori și unii termeni de ordin superior. Dar ecoul nu poate anula cuplajul static ZZ, deoarece acesta comută cu pulsul de ecou. Există alte interacțiuni care nu se anulează prin acest proces: unele neliniarități reziduale și efecte ale qubiților spectatori, scurgeri (leakage) și contaminare de la excitații pe distanțe lungi, plus câteva altele — dar termenul ZZ este deosebit de important.
Acest proces necesită adesea timpi de excitație cu un ordin de mărime mai lungi decât cei ai porților cu un singur qubit. Combinația dintre timpi de excitație mai lungi, termeni ZZ persistenți în hamiltonian și imperfecțiuni ale cuplajului face din porțile cu doi qubiți sursa dominantă a erorilor de poartă. Reține de asemenea că, dacă ai nevoie de interacțiuni într-un circuit între qubiți care nu sunt adiacenți, porțile SWAP necesare sunt, evident, tot porți cu doi qubiți. Iată de ce metrica standard legată de adâncime este: adâncimea transpilată pentru doi qubiți. Ne interesează în principal porțile cu doi qubiți deoarece acestea domină eroarea de poartă, și trebuie să analizăm circuitele transpilate deoarece transpilarea introduce adesea multe porți suplimentare cu doi qubiți sub forma porților SWAP.
Verifică-ți înțelegerea
Explică de ce ne interesează în principal adâncimea transpilată pentru doi qubiți. Asigură-te că iei în considerare constrângerile hardware, precum și faptul că adâncimea porților cu un singur qubit poate fi mult mai mare.
Răspuns
Porțile cu doi qubiți au rate de eroare mult mai mari decât porțile cu un singur qubit. Porțile cu un singur qubit nu sunt perfecte, deci pot exista cazuri în care este util să se ia în considerare și adâncimea porților cu un singur qubit. Dar adâncimea porților cu doi qubiți tinde să domine comportamentul de eroare al unui circuit. Trebuie să luăm în considerare circuitul transpilat. Computerele cuantice moderne nu au conectivitate totală (all-to-all) între qubiți. Computerele cuantice IBM folosesc fie o rețea pătrată, fie o rețea „heavy hex”, ceea ce înseamnă că qubiții au 2, 3 sau 4 vecini cei mai apropiați, cu care pot fi cuplați direct printr-o singură poartă cu doi qubiți. Orice întrețesere cu alți qubiți, neadiacenți, necesită mutarea informației prin computerul cuantic folosind porți SWAP cu doi qubiți. Astfel, transpilarea tinde să crească adâncimea porților cu doi qubiți. Pentru circuite puternic întrețesute, această creștere poate fi foarte mare.
Conuri de lumină umbrite
Presupune că un singur qubit este bine izolat de toți ceilalți. O eroare pe acel qubit nu va cauza nicio eroare pe alți qubiți. Dar atunci când un qubit interacționează cu altul, erorile se pot propaga. Modul în care se propagă erorile depinde de modul în care interacționează qubiții. Ia în considerare circuitul de mai jos. Presupune că orice qubiți adiacenți în diagrama circuitului sunt de asemenea adiacenți pe chip-ul cuantic (adică nu va fi nevoie ca informația să fie mutată către alți qubiți pentru a facilita interacțiunile descrise).

Deși poate nu te-ai gândit la asta în acest fel, aceasta este un fel de diagramă spațiu-timp. Axa verticală într-un circuit cuantic reprezintă diferiți qubiți aranjați în spațiu. Axa orizontală reprezintă timpul de-a lungul căruia este aplicată o secvență de porți. Împrumutând limbajul din relativitate, un con de lumină reprezintă regiunea spațiu-timpului care poate fi atinsă dintr-un punct prin interacțiuni cauzale.
În figura de mai sus, tipul de eroare nu a fost specificat. Se dovedește că tipul de eroare afectează conul de lumină, deoarece unele erori afectează logica unei porți cu doi qubiți, iar altele nu. Ne vom întoarce la acest aspect în curând. Deocamdată, consideră liniile galbene ca fiind căi de propagare potențială a unui anumit tip de eroare. Observă, de exemplu în partea (a) a figurii, că o eroare cu un singur qubit pe poarta RZ a qubitului 4 se poate propaga doar înainte în timp, pe acel qubit. Nu se poate răspândi la alți qubiți deoarece qubitul 4 nu este întrețesut cu niciun alt qubit. Acesta este un moment bun pentru a observa că qubitul 4 este destul de inutil în acest circuit, și, într-adevăr, întregul circuit este construit doar în scopuri pedagogice.
O eroare pe poarta Z a qubitului 0 (nu neapărat o eroare Z, doar o eroare oarecare în acea locație) ar putea totuși să se propage către un alt qubit: qubitul 1, prin intermediul CNOT-ului final care folosește qubitul 0 ca și control și qubitul 1 ca țintă. Acest lucru este arătat în partea (b). Așa cum te-ai putea aștepta, o eroare mai timpurie în circuit va avea adesea șansa de a se propaga peste mai mulți qubiți. Partea (c) arată că o eroare în pregătirea stării inițiale a qubitului 0 se poate răspândi la toți qubiții, cu excepția qubitului 4, care este izolat.
Această configurație arată cum o eroare se poate propaga înainte în timp pentru a afecta măsurătorile. Dar poți examina și întrebarea inversă: pentru o măsurătoare specifică cu un singur qubit, ce părți ale circuitului meu ar fi putut contribui cu o eroare la aceasta? În acest caz, ai porni pur și simplu de la măsurătoare sau de la alt punct de interes și ai lucra înapoi (în timp) prin circuit, urmărind orice circuite de întrețesere, așa cum se arată în partea (d). Sunt arătate de asemenea câteva puncte alese aleatoriu pentru apariția erorilor.
În figura de mai sus, erorile se răspândesc între qubiți prin porți ECR, dar o discuție similară s-ar putea aplica altor porți cu doi qubiți. Aceste porți au un control și o țintă. Este clar că o eroare pe control poate afecta logica porții și poate astfel duce la o eroare pe țintă. Dar ce se întâmplă în cealaltă direcție? Poate o eroare pe țintă să se propage către qubitul de control? Amintește-ți că cuplajul dintre control și țintă pentru porțile ECR nu este pur de tipul ZX ideal; el are de asemenea un cuplaj ZZ nedorit.
Dacă o eroare pe țintă comută cu cuplajul ZZ, atunci ea nu se poate propaga către qubitul de control. Putem observa acest lucru prin mecanismele fizice implicate. O modalitate rapidă de a-l vedea este că, dacă o eroare comută cu , atunci ordinea lor poate fi schimbată fără a afecta rezultatul. Totuși, dacă apărând chiar înainte de cuplajul este identic cu acțiunea sa după cuplajul , atunci nu poate afecta controlul, deoarece în acest ultim caz eroarea ar trebui să se deplaseze înapoi în timp. Dacă o eroare nu comută cu cuplajul ZZ, atunci ar putea, într-adevăr, să se propage de la țintă înapoi la control. Astfel, în cazul unei porți ECR, erorile Z nu se pot propaga de la țintă la control, dar erorile X sau Y da.
Verifică-ți înțelegerea
În partea (d) a figurii de mai sus, uită-te la liniile verticale dintre qubiții 0 și 1. Este corect că unele erori s-ar putea răspândi de-a lungul acelor linii? Din nou, acest lucru poate depinde de tipul de eroare, iar noi nu am discutat încă acest aspect. Întrebarea este dacă există vreo eroare care s-ar putea propaga așa cum este arătat de acele linii verticale. Explică.
Răspuns
Da, este corect. Atunci când schițezi conul de lumină înapoi de la măsurătoare, s-ar putea să pară că afirmi că ceva se mișcă de la țintă spre control. Totuși, semnificația diagramei este de fapt aceea că o eroare s-ar fi putut deplasa de la control (qubitul 0) la țintă (qubitul 1) pentru a cauza o eroare la punctul de interes. Dacă intuiția ta este că depinde de tipul de eroare, ai perfectă dreptate. Acest lucru este abordat parțial în secțiunea următoare.
Pornind de la o versiune fără erori a circuitelor din diagrama de mai sus, urmărește propagarea potențială a unei erori la prima poartă Hadamard care acționează pe qubitul 2. Listează toți qubiții care ar putea fi afectați până la sfârșitul circuitului dacă eroarea este (a) un phase flip și (b) un bit flip. Indiciu: gândește-te la modul în care este folosită informația de pe fiecare qubit.
Răspuns
(a) Qubitul 3 ar putea fi afectat, ca și, evident, qubitul 2 însuși. Niciun altul! Dacă ai listat qubiții 0 și 1, reține că qubitul 2 este ținta ECR-ului care îl întrețese cu qubitul 1. Nicio schimbare nu este făcută asupra qubitului 1 în acea poartă. (b) Qubiții 0-3 ar putea fi afectați. Eroarea de tip bit flip sau de tip X nu comută cu cuplajul ZZ din poarta ECR și, prin urmare, se poate propaga de la țintă la control.
Propagarea erorilor
În secțiunea anterioară am discutat despre propagarea erorilor fără a-i da o definiție formală. De acum înainte:
Pentru o eroare care are loc înainte de o parte a conținutului logic al unui circuit , propagarea erorii înseamnă găsirea operatorului echivalent care reproduce același rezultat eronat atunci când este aplicat după în loc de înainte.
Imaginea propagării erorilor din secțiunea anterioară a sugerat că erorile s-ar putea răspândi de la un qubit de control la un qubit țintă peste o poartă CNOT. O modalitate de a verifica atunci când acest lucru este adevărat este să consideri o eroare pe control sau pe țintă înainte de întrețesere și să verifici dacă acel operator comută cu poarta CNOT. Dacă cei doi operatori comută, atunci nu există nicio diferență dacă îi aplici în ordine inversă, ceea ce înseamnă că eroarea ar putea fi pur și simplu „mutată dincolo de” CNOT fără a avea niciun efect asupra altor qubiți. Aceasta este cea mai comună modalitate în care oamenii abordează propagarea erorilor, și aceasta produce următoarele reguli:
Fie qubitul de control qubitul 0 și țintă qubitul 1. Ia în considerare erorile X și Z pe qubiții de control și țintă (, , și, respectiv, ). Mutarea acestor erori dincolo de un face ca erorile să devină:
Afirmăm cele de mai sus fără demonstrație. Dar dacă ești ca autorul acestei lecții și preferi imaginea Schr"odinger, poți de asemenea să scrii stări arbitrare de control și țintă, să aplici eroarea, apoi CNOT-ul, și să examinezi starea finală. Dacă compari acea stare finală cu un caz fără erori, poți vedea ce combinație de erori aplicată după CNOT ar produce starea eronată și, în special, poți vedea dacă operația de eroare s-a răspândit de la un qubit la celălalt.
| Control inițial | Target inițial | Eroare | Final | Echivalent eroare post-CNOT |
|---|---|---|---|---|
| Fără eroare | Nu se aplică | |||
| X pe control | ||||
| Z pe control | ||||
| X pe țintă | ||||
| Z pe țintă |
Poate surprinzător, o eroare Z pe țintă chiar cauzează propagarea unei erori înapoi la control!
Așa cum îți poți imagina, urmărirea unei astfel de propagări a operatorilor de eroare înainte prin circuite (sau, echivalent, propagarea înapoi a operatorilor care urmează a fi măsurați) este complicată. Qiskit are instrumente care facilitează acest lucru, despre care vom învăța în lecția 6 despre fluxurile de lucru moderne.
Există un addon Qiskit numit Shaded Lightcones. Addonul shaded lightcones (SLC) analizează propagarea erorilor în circuitele cuantice folosind propagarea Pauli pentru a identifica ce părți ale unui circuit pot influența efectiv un observabil țintă. Este conceput în principal pentru a face atenuarea erorilor mai eficientă, în special pentru fluxurile de lucru de anulare probabilistică a erorilor (PEC). Aici vom explora acest instrument doar pe scurt și îl vom folosi mai pe larg în contextul tehnicilor de atenuare a erorilor în lecțiile viitoare. Acesta folosește propagarea operatorilor Pauli pentru a cartografia propagarea erorilor de diferite tipuri, producând un con de lumină pentru erorile de tip X, Y și Z.
Shaded lightcones (SLC) merg mai departe, folosind simulări clasice pentru a delimita mai strict sensibilitatea la erori pe parcursul circuitului. Aceasta schimbă o parte din timpul de QPU cu timp de CPU și reduce overhead-ul de eșantionare necesar pentru renormalizarea bias-ului. În loc de un prag dur, fiecare eroare potențială din circuit primește o „nuanță” gradată care limitează superior susceptibilitatea observabilei la acea eroare. Această caracterizare rafinată permite aplicații mai eficiente și țintite ale PEC cu varianță redusă, oferind în același timp utilizatorului posibilitatea de a regla controlat bias-ul în estimarea observabilei. Consultă Lightcone shading for classically accelerated quantum error mitigation pentru mai multe detalii.
Nu vom prezenta aici un flux de lucru complet. Arătăm pur și simplu, în mod diagramatic, cum acest flux de lucru preia un circuit:
Fluxul de lucru separă circuitul în "casete" utile pentru învățarea comportamentului zgomotului:
În final, folosește propagarea operatorilor și învățarea zgomotului pentru a produce o hartă umbrită a susceptibilității la erori pe parcursul circuitului:

Fiecare casetă colorată din rezultat corespunde unui qubit specific la un moment specific. Casetele cele mai închise la culoare (mov) indică un qubit și un strat la care o eroare nu se poate propaga la măsurătoarea (măsurătorile) de interes. Casetele cele mai deschise la culoare (galben) corespund unui qubit și unui strat la care o eroare poate avea o influență puternică asupra măsurătorii (măsurătorilor) de interes.
Observă regiunile mov din partea dreaptă a fiecărei hărți. O eroare la același strat cu măsurătoarea, dar pe un alt qubit, nu poate afecta măsurătoarea prin conectivitatea circuitului prezentată. În mod similar, o eroare cu un strat mai devreme în timp (un strat mai la stânga) se poate propaga doar la qubitul adiacent în pasul următor, din cauza structurii stratului de întrețesere, și așa mai departe. Astfel, forma de con din dreapta este generală ori de câte ori sunt implicați relativ puțini qubiți în măsurătoarea de interes.
Verifică-ți înțelegerea
Crezi că este mai bine să realizezi o hartă shaded lightcone înainte sau după transpilare? De ce?
Răspuns
Trebuie făcut după transpilare. Pentru ca aceste hărți diferite să fie utile, trebuie să ne asigurăm că qubiții adiacenți din circuitul nostru corespund qubiților adiacenți de pe cipul cuantic. În caz contrar, porțile de întrețesere prezentate ca acționând pe qubiți adiacenți în diagrama circuitului ar ajunge să necesite porți SWAP și o structură de circuit mai complicată.