Fidelity hesaplama — durum örtüşmesinden süreç benzerliğine
Fidelity (sadakat), kuantum bilgide “iki nesne birbirine ne kadar yakın?” sorusunun sayısal cevabıdır; fakat aynı sözcük farklı bağlamlarda farklı tanımlar taşır. İki saf durum arasında en sık kullanılan ölçüt, üst üste bindirme genliğinin karesidir; iki kanal veya iki ünite arasında ise süreç düzeyinde benzerlik ölçütleri devreye girer. Bu sayfa Qiskit quantum_info çevresindeki hesaplama pratiğine odaklanır; tam CPTP teori ve elmas normu gibi ayrıntılar Kraus ve CPTP başlığında tutulur. Temsil nesneleri statevector simülasyonu ve yoğunluk matrisi sayfalarında anlatıldığı gibi düşünülmelidir; burada yalnızca bu nesneler arasından sadakat nasıl okunacağı genişletilir.
Kavram haritası ve sınırlar
Bir raporda “fidelity 0.97” yazıldığında, okuyucunun ilk sorusu “hangi tanım?” olmalıdır. Durum sadakati, iki durumun üst üste bindirme genliğini ölçer; süreç sadakati ise kanalların veya kapıların eylemini karşılaştırır. Ortalama kapı sadakati gibi donanım literatürüne yakın ölçütler, ek tanımlar ve örneklem varsayımları taşır. Bu yüzden tek bir sayıyı başlıktan koparmamak, hem bilimsel dürüstlük hem de hata ayıklama verimliliği için zorunludur.
Bu sayfanın sınırı
Elmas mesafesi, kanal kapasitesi ve tam tomografi reçeteleri burada işlenmez; o başlıklar bilgi kuramı ve kanal sayfalarında kalır. Burada amaç, Qiskit ile günlük hesaplama hattında karşılaşılan state_fidelity ve process_fidelity benzeri çağrıların neyi varsaydığını ve hangi tuzaklara düştüğünü çerçevelemektir.
Aer yürütmesi ile çevrimdışı quantum_info hesabı farklı yollar olabilir; ikisini aynı gün içinde karşılaştırmak, transpile ve yuvarlama farklarını ayırt etmek için iyi bir disiplindir.
Saf durum örtüşmesi
İki saf durum için en yaygın ölçüt, üst üste bindirme genliğinin mutlak değerinin karesidir; bu değer bir ile sıfır arasında yer alır ve bir, durumların aynı fiziksel rayı temsil ettiğinde (küresel faz farkı hariç) elde edilir. Bu ölçüt, ölçüm olasılıklarını karşılaştırmak için yeterli bir özet sunar: örtüşme yüksekse, aynı bazda okunan dağılımlar birbirine yakındır. Fakat faz bilgisini tamamen yok saydığınız senaryolarda yanıltıcı olabileceğini unutmayın — interferometrik algoritmalarda faz, sadakat sayısının ötesinde ayrı bir değişkendir.
Statevector nesnesi
Qiskit’te çoğu zaman hesap, Statevector.from_instruction ile üretilen nesneler üzerinden yürür. Bu yolun detayı statevector simülasyonu sayfasında tutulur; burada yalnızca “fidelity girdisi olarak vektör hazırlama” adımının aynı transpile ve baz sözleşmesine tabi olduğu vurgulanır.
İki devreyi kıyaslarken biri transpile edilmiş diğeri ham bırakılmışsa, örtüşme düşük çıkabilir; bu “fiziksel kötülük” değil, çoğu zaman temsil uyumsuzluğudur.
Karışık durum ve arıtma fikri
Karışık durumlarda “örtüşme” tek bir genlik ifadesine indirgenmez; yoğunluk matrisleri üzerinden tanımlanan sadakat, arıtma (purification) düşüncesiyle saf durumlar dünyasına geri taşınabilir. Pratikte Qiskit fonksiyonları bu cebri sizin yerinize paketler; fakat girdi yoğunluklarının Hermitik, pozitif ve izleri bir olması gerekir — aksi halde “sadakat” çıktısı anlamsızlaşır. Yoğunluk temsilinin kendisi yoğunluk matrisi simülasyonu sayfasında genişletilir; burada yalnızca sadakat hesabının o temsilin üzerinde çalıştığı hatırlatılır.
Arınlık ve saf paket
Karışık durumları saf durumlarla karıştırmamak gerekir: aynı Born olasılıklarını üreten farklı yoğunluklar farklı sadakat profilleri verebilir. Bu yüzden olasılık tabloları tek başına “durum eşitliği” anlamına gelmez.
Uhlmann çizgisi: kısa not
Armin Uhlmann’ın teoremi, karışık durum sadakatini arıtma uzayındaki saf örtüşmelerle ilişkilendiren çizginin matematiksel temelini sağlar. Bu paragraf ispat okuması değildir; yalnızca “neden karışık durum sadakati saf örtüşmeden daha zengin bir nesne?” sorusuna kültürel bir yanıttır — teknik ayrıntı yine kanal ve yoğunluk sayfalarında kalır.
Süreç ve kapı fidelity’si
Süreç sadakati, iki kuantum kanalının (veya iki ünite süperoperatörünün) aynı girdi yoğunluklarında ne kadar benzer çıktılar ürettiğini özetlemeye çalışır. Kapı düzeyinde raporlanan ortalama sadakat gibi ölçütler ise deney tasarımına, rastgele girdi dağılımına ve hata modeline bağlıdır. Bu yüzden makale A’daki “0.999” ile makale B’deki “0.999” doğrudan kıyaslanamaz; örneklem ve tanım cümleleri aynı değildir.
Kanallar ve Kraus
Kanal cebiri için Kraus ve CPTP sayfasına dönün; burada yalnızca “süreç sadakati sorusunu kanal dilinde sormak” cümlesiyle yetiniyoruz.
Gürültü simülasyonu ile birlikte düşünüldüğünde, hedef ünite ile gürültülü gerçekleşme arasındaki benzerlik pratikte sık raporlanan bir kıyaslama örneğidir.
Qiskit quantum_info arayüzü
Qiskit’te yaygın kullanılan yardımcılar arasında state_fidelity ve process_fidelity bulunur; isim benzerliği yanıltıcıdır çünkü girdiler farklı cebirsel nesnelerdir. Hangi fonksiyonun hangi normalizasyon ve varsayılanlarla çalıştığını her sürüm notunda doğrulamak gerekir. Ayrıca bazı ölçütler birbirine monoton ilişki taşımaz; “daha büyük her zaman daha iyi” sezgisi her bağlamda geçerli değildir.
Elmas mesafesi ile ilişki
Elmas mesafesi ve sadakat ailesi aynı sorunun farklı yüzleridir; burada elmas normunun hesaplanmasına girilmez. İhtiyaç duyduğunuzda bilgi kuramı odaklı kaynaklara geçin.
Sayısal tolerans ve normalizasyon
Kayan nokta aritmetiği, özellikle büyük boyutlarda iç çarpımları ve izleri hafifçe kaydırır. Regresyon testlerinde mutlak eşitlik yerine toleranslı eşitsizlik kullanmak standarttır. Ayrıca girdi vektörlerinin normalize edilip edilmediği, çıkan sadakatın ölçeğini etkiler; iki farklı kütüphaneden gelen vektörleri birleştirirken normalize adımını açıkça yazmak, “0.999 ile 1.0 arasındaki fark gerçek mi?” sorusunu yanıtlar.
Karmaşık faz birikimi
Uzun devrelerde faz hataları üst üste biner; sadakat yüksek görünse bile ara durumlarda düşük çıkabilir. Bu yüzden yalnızca uç durumları değil, ara snapshot’ları da snapshot sistemleri disipliniyle izlemek faydalıdır.
Parametre yüzeyi ve transpile
Parametrik devrelerde sadakat, parametre vektörünün bir fonksiyonu olarak düşünülür; bu yüzeyi örneklemek optimizasyon ve hata analizi için kullanılır. Transpile seçenekleri değiştiğinde aynı matematiksel devre farklı kapı dizilerine dönüşebilir; bu da hedef durumla örtüşmeyi değiştirir. Dolayısıyla “parametreleri optimize ettim” cümlesi, “transpile sabit kaldı” varsayımına bağlıdır — raporda her iki tarafı da yazmak gerekir.
Baz ve geçiş haritası
Farklı donanım bazlarına transpile edilmiş iki yol aynı ideal üniteyi hedeflese bile, sadakat düşük görünebilir. Bu uyarı Aer simülatörü ve save_probabilities sayfalarındaki baz ve sıra uyarılarıyla aynı ailedendir.
Gürültü ve hedef durum karşılaştırması
Gürültülü yürütmede hedef saf durum ile elde edilen karışık durum arasındaki sadakat, “ne kadar bozulduk?” sorusunun tek sayılı özetidir; fakat bu özet kanalın tamamını görmezden gelebilir. Örneğin aynı sadakat değeri, farklı hata kanallarıyla üretilmiş iki senaryoda farklı düzeltme stratejileri gerektirebilir. Bu yüzden sadakat raporunu, kanal modelinin kısa özetiyle birlikte sunmak okuyucuya saygıdır.
Shot ile birlikte
Deneysel olarak tahmin edilen durum, sonlu shot gürültüsü taşır; sadakat hesabına girmeden önce tomografi veya hata azaltma adımlarının belirsizliğini hesaba katmak gerekir. Shot mantığı sayfasındaki istatistik düşüncesi burada da arka planda durur.
Kod laboratuvarı
İlk blok, iki saf durum arasında state_fidelity çağırır. İkinci blok, aynı devrelerden türetilen yoğunluklar üzerinde aynı yardımcıyı dener; çıktıların örtüşmesi beklenir (yuvarlama toleransı ile). Sürümünüze göre import yolları değişebilir.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector, state_fidelity
qc_a = QuantumCircuit(2)
qc_a.h(0)
qc_a.cx(0, 1)
qc_b = QuantumCircuit(2)
qc_b.x(0)
qc_b.h(0)
qc_b.cx(0, 1)
psi = Statevector.from_instruction(qc_a)
phi = Statevector.from_instruction(qc_b)
print(state_fidelity(psi, phi))
from qiskit import QuantumCircuit
from qiskit.quantum_info import DensityMatrix, state_fidelity
qc_a = QuantumCircuit(2)
qc_a.h(0)
qc_a.cx(0, 1)
qc_b = QuantumCircuit(2)
qc_b.x(0)
qc_b.h(0)
qc_b.cx(0, 1)
rho = DensityMatrix.from_instruction(qc_a)
sigma = DensityMatrix.from_instruction(qc_b)
print(state_fidelity(rho, sigma))
İleri okuma ve özet
Fidelity, doğru tanımlandığında tek sayıyla güçlü bir özet sunar; yanlış tanımlandığında ise yanıltıcı bir skor üretir. Durum ve süreç ayrımı, normalizasyon, transpile ve gürültü modeli birlikte okunmadan sonuç raporlanmamalıdır.
- Statevector simülasyonu — saf temsil ve nesneler.
- Yoğunluk matrisi simülasyonu — karışık temsil.
- Gürültü simülasyonu — hedefe uzaklığın bağlamı.