1. Ana sayfa
  2. İçerik planı
  3. Okuma hatası · Qiskit
Qiskit · gürültü ve hata azaltma

Okuma hatası — Aer’de ölçüm sonrası klasik sonuç atamasını modelleyen ReadoutError matrisi

ReadoutError, her gerçek ölçüm sonucu için kayıtlı bit dizgisinin koşullu dağılımını taşır; NoiseModel üzerinde add_readout_error veya add_all_qubit_readout_error ile bağlanır. Bu sayfa matris biçimini, tek ve çok kübit durumlarını ve kuantum kapı gürültüsünden ayrımı işler. Termal gevşeme ve Pauli kanalları ölçüm öncesi kuantum durumu için; okuma matrisi ise ölçüm sonrası klasik etiket içindir. Ölçüm azaltma algoritmaları ölçüm azaltma başlığında tutulur.

  • Paket: qiskit_aer.noise
  • Sınıf: ReadoutError
  • Sınır: klasik atama · stokastik satır

Kavram haritası ve sayfa sınırı

Okuma hatası, ölçüm anında klasik sonuç etiketinin yanlış atanmasıdır: kuantum durumu önce ölçümle projelenir, ardından Aer bu projeksiyon sonucunu verilen stokastik matrisle yeniden örnekler. Bu, kapı öncesi/sonrası CPTP kanalı olan termal gevşeme veya Pauli hatalarından köken olarak ayrılır; yoğunluk matrisine doğrudan uygulanmaz.

Ölçüm mantığı

Devrede ölçüm talimatının anlamı ve klasik bit eşlemesi ölçüm mantığı başlığında tutulur; burada yalnızca sonuç etiketine eklenen gürültü modeli işlenir. Ölçümün kuantum postulatı tarafı ölçüm teorisi ile hizalanır.

Mitigasyon ayrımı

Deney sonrası matrisi kestirerek sonuçları düzeltmek (örneğin en küçük kareler ile ters çevirme) farklı bir yazılım katmanıdır ve ölçüm azaltma dosyasında toplanacaktır; bu sayfa Aer’ye ileri modele enjekte edilen okuma modeline odaklanır.

Mimari özet ReadoutError = satırları gerçek sonuç, sütunları kayıtlı sonuç; her satır olasılık vektörü olarak normalize.

Atama matrisi ve olasılık kuralları

ReadoutError yapıcısı, boyutu 2N × 2N olan bir matris ister; satır indeksi gerçek ölçüm sonucunun tamsayı kodu, satır vektörü ise kayıtlı sonuçların koşullu dağılımıdır. Her satırın toplamı 1 olmalı ve tüm girdiler [0, 1] aralığında kalmalıdır; aksi halde Aer doğrulama aşamasında hata verir.

Endian ve bit dizgisi

Qiskit histogram anahtarları bit dizgisi olarak döner; çok kübitte indeksleme ile dize sırası karıştırılabilir. Matrisi elle doldururken hangi uçtan hangi kübitin indekslendiğini küçük bir tabloyla sabitleyin ve aynı konvansiyonu tüm deneyde koruyun.

Simetrik ve asimetrik

Gerçek cihazlarda “0 okunurken 1 hazırlanmış” ile “1 okunurken 0 hazırlanmış” hataları genelde farklıdır; simetrik varsayım hızlı prototip içindir, kalibre edilmiş model asimetriktir.

Kanallarla karıştırmama

Gürültü modeli hem kuantum hataları hem okuma nesnelerini taşır fakat farklı API yollarıyla eklenirler; aynı olasılığı iki kez yazmak histogramı çifte ölçekler.

Tek kübit modeli

Tek kübit için matris 2 × 2 biçimindedir. Yaygın parametrizasyon: p1|0 gerçek 0 iken kayıtlı 1 olasılığı; p0|1 gerçek 1 iken kayıtlı 0 olasılığı. Birinci satır [1 − p1|0, p1|0]; ikinci satır [p0|1, 1 − p0|1] olarak yazılır. Bu isimlendirme kalibrasyon raporlarındaki “assignment error” bloklarıyla örtüşür; üretici dokümantasyonunda terimlerin tam karşılığını doğrulayın.

Düşük hata limiti

Çok küçük olasılıklarda histogram farkı gürültülü shot sayısı içinde kaybolabilir; etkiyi görmek için ya olasılığı eğitim amaçlı büyütün ya da shot sayısını artırın.

İdeal taban çizgisi

Bir satır tamamen [1, 0] veya [0, 1] ise o sonuç için okuma kusursuzdur; bu, modeli kademeli olarak açmak için iyi bir başlangıç noktasıdır.

Çok kübit ve tensör okuma

İki kübitlik ortak ölçüm için tam 4 × 4 matris gerekir; bu, kübitler arası korelasyonlu okuma (örneğin multiplexer hatları) için esneklik sağlar. Bağımsız kübitlerde ise çoğu zaman tek kübit matrislerinin tensor çarpımı yeterlidir; bu, parametre sayısını düşürür ve kalibrasyonu basitleştirir.

Tensör deseni

ReadoutError nesneleri üzerindeki tensör işlemi Aer sınıfında tanımlıdır; laboratuvar kutusunda iki farklı tek kübit matrisinden 4 × 4 üretim gösterilir.

Yerel ekleme

Farklı kübitlere farklı matrisler add_readout_error ile kübit demetlerine bağlanır; bu, yarı asenkron okuma hatlarını kabaca modellemek için kullanışlıdır.

NoiseModel okuma API

add_all_qubit_readout_error aynı tek kübit ReadoutError nesnesini tüm ölçümlere yayar; add_readout_error ise belirli kübit kümesine özel matris iliştirir. Varsayılan tüm-kübit okuma ile yerel okuma bir arada tanımlanırsa Aer uyarı üretebilir veya öncelik kuralları devreye girebilir; üretim kodunda tek strateji seçin.

from_backend

Cihaz özelliklerinden okuma matrislerinin çekilmesi gürültü modeli · from_backend çizgisinde özetlenir; elle matris yazdığınızda aynı normalizasyon disiplinini koruyun.

Transpile etkisi

Okuma hatası ölçüm talimatına bağlıdır; ölçüm öncesi devrenin transpile edilmiş biçimi farklı ölçüm kümesi üretebilir. Uçtan uça test için transpile hedefini sabitleyin.

Kalibrasyon ve yorum

Atama matrisi genelde hazırlık–ölçüm deneylerinden kestirilir: her bilinen Pauli hazırlığı sonrası çok sayıda shot ile kayıtlı bit histogramı toplanır ve satır koşullu dağılımları çıkarılır. Bu süreç hata çubuğu ve korelasyon düzeltmesi gerektirir; burada yalnızca matrisin Aer’ye nasıl besleneceği özetlenir.

Zaman içi kayma

Okuma hata oranları sıcaklık ve elektronik taban çizgisi ile gün içinde değişebilir; uzun işlerde tek matris yerine zaman damgalı modeller veya periyodik yeniden kalibrasyon düşünülmelidir.

Backend özellikleri

Ham kalibrasyon alanları backend özellikleri ve kalibrasyon verileri başlıklarında yorumlanır; Aer modeline aktarım bu sayfanın konusudur.

Genel azaltma çerçevesi

Okuma hatasını yalnızca simüle etmek yerine azaltmak için üst seviye stratejiler hata azaltma başlığında bir araya getirilecektir; bu dosya enjekte edilen stokastik modelle sınırlıdır.

Kod laboratuvarı

Örnekler qiskit ve qiskit-aer kurulumunu gerektirir; bulut çağrısı yoktur.

readout_asymmetric_1q.py Python
from qiskit import QuantumCircuit
from qiskit.compiler import transpile
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, ReadoutError

p0_given1, p1_given0 = 0.11, 0.06
mat = [[1 - p1_given0, p1_given0], [p0_given1, 1 - p0_given1]]

nm = NoiseModel()
nm.add_all_qubit_readout_error(ReadoutError(mat))

sim = AerSimulator(noise_model=nm)

def counts(prepare_x=False):
    qc = QuantumCircuit(1, 1)
    if prepare_x:
        qc.x(0)
    qc.measure(0, 0)
    tqc = transpile(qc, sim)
    return sim.run(tqc, shots=8000).result().get_counts()

print("prep 0:", counts(False))
print("prep 1:", counts(True))
qiskit-aer ReadoutError · tek kübit UTF-8 · LF
readout_tensor_2q.py Python
from qiskit_aer.noise import ReadoutError

r0 = ReadoutError([[0.94, 0.06], [0.05, 0.95]])
r1 = ReadoutError([[0.92, 0.08], [0.07, 0.93]])
r01 = r0.tensor(r1)
print("Şekil:", r01.probabilities.shape)
qiskit-aer tensor · 4×4 UTF-8 · LF
readout_local_bell.py Python
from qiskit import QuantumCircuit
from qiskit.compiler import transpile
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel, ReadoutError

nm = NoiseModel()
nm.add_readout_error(ReadoutError([[0.93, 0.07], [0.06, 0.94]]), [0])
nm.add_readout_error(ReadoutError([[0.9, 0.1], [0.09, 0.91]]), [1])

qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure([0, 1], [0, 1])

sim = AerSimulator(noise_model=nm)
tqc = transpile(qc, sim)
print(sim.run(tqc, shots=7000).result().get_counts())
qiskit-aer add_readout_error · Bell UTF-8 · LF

İleri okuma ve özet

Okuma hatası klasik atama matrisidir; kuantum kapı hatalarından ayrı düşünülür ve normalize satırlarla Aer’ye beslenir.

Özet ReadoutError = satır gerçek, sütun kayıtlı; tensör bağımsız kübitler için; mitigasyon ayrı katman.