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.
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.
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.
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))
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)
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())
İ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.
- Gürültü modeli — okuma ve kuantum hata API ayrımı.
- Termal gevşeme — süre tabanlı kuantum kanalı.
- Ölçüm mantığı — devre içi ölçüm.
- Ölçüm azaltma — sonradan düzeltme (ileride genişletilecek).