Parametrik devreler — semboller, bağlama ve paylaşım
Sabit açılı rotasyonlarla yazılmış devreler güzeldir; fakat VQE, QNN ve benzeri döngülerde açılar öğrenilir. Qiskit bu ihtiyacı, kapı içine gömülü semboller (Parameter) ve bunların kurduğu küçük bir cebir ağı ile çözer: sayı gelmeden önce devre “şekil” taşır, sayı gelince somut üniteye dönüşür. Bu sayfa, o dönüşümün API’sini anlatır; genel kapı teorisi kapılar ve ünite mantığı, birleştirme disiplini birleştirme ve ters devre sayfasında tutuldu. Taşıyıcı iskelet için QuantumCircuit yapısı yeterli ön bilgidir.
Varyasyonel Çerçeve: Neyi Burada Bıraktık?
Parametrik devre, bir optimizasyon döngüsünün içinde defalarca yeniden değerlendirilen şablondur. Dış dünyada öğrenme oranı, düzenleyici terim, toplu veri yükü gibi kavramlar vardır; Qiskit tarafında ise önce şablonun sembolik olarak doğru kurulması, sonra sayıların güvenle bağlanması gerekir. Bu sıra tersine çevrilirse, güzel görünen eğriler yanıltıcı olur.
Kısa cümleyle: burada “hangi optimizer?” sorusunu yanıtlamıyoruz; “parametre grafiği kırılmadan devre nasıl yaşar?” sorusunu yanıtlıyoruz.
İyi haber şu: sembolik katman bir kez oturduğunda, aynı devreyi farklı sayı setleriyle tekrar tekrar çalıştırmak ucuzlaşır. Kötü haber: sembolik katman oturmazsa, optimizasyon ne kadar havalı olursa olsun yanlış yöne koşar. Bu yüzden parametrik devre yazımı, kuantum kodunun “tip güvenliği” katmanına benzer — sıkıcı gelebilir, fakat sonradan ödediğiniz faizi azaltır.
Öğrenme döngüsünde üç katman
Birinci katman devre metni; ikinci katman bağlı sayılarla çalışan yürütme; üçüncü katman ise sonuçların kayda geçirilmesi ve dış modele geri beslenmesidir. Bu sayfa neredeyse tamamen birinci katmandadır. İkinci katmana yalnızca bağlama API’si ile değiyoruz; üçüncü katman bilinçli olarak dışarıda bırakıldı.
Üçüncü katmanı buraya taşımak, hem sayfayı şişirir hem de bir hafta sonra güncel kalmayan kütüphane detaylarına kilitler.
Parameter ve İsim Alanı
Parameter("θ") gibi bir nesne, tek başına bir sayı değildir; “ileride doldurulacak yer tutucu”dur. İsmi hem insan okuması hem de bazı araçların raporlaması için taşır. Aynı isimle iki farklı yer tutucu yaratmak mümkün olabilir; fakat aynı devre içinde karıştırılmaması gereken kimlikler vardır — burada sürüm belgelerinizi rehber alın.
İsim çakışması, eğitim örneklerinde masum görünür. Üretimde ise loglarda aynı etiketin iki farklı anlama gelmesine yol açar. Bu yüzden modül önekleri (vqe_theta gibi) küçük bir disiplin, büyük bir kazançtır.
Kimlik mi, etiket mi?
İki Parameter örneği aynı dizgeyi taşıyorsa bile farklı nesneler olabilir. Bağlama sözlüğünde hangi anahtarın hangi nesneye karşılık geldiğini karıştırmamak gerekir. Pratik kural: bağlama sözlüğünü her zaman nesne referansıyla kurun, dizeyle değil.
Kısa not: dize anahtarlı “kolay” API’ler cazip; fakat refaktör sırasında sessizce kırılırlar.
ParameterVector ve Düzenli Aileler
ParameterVector("w", length=L), L adet bağımsız sembolü tek pakette üretir. Katmanlı ansatz yazarken “her katmanda aynı sayıda açı” desenini taşır; indeksleme okunaklıdır ve for döngüleriyle iyi geçinir. Uzunluk ile gerçek kübit sayısı karıştırılmamalıdır: vektör uzunluğu sembol sayısıdır, devre genişliği ayrı bir karardır.
Vektörün sunduğu düzen, aynı zamanda optimizasyon vektörünüzle hizalamayı kolaylaştırır: dışarıdan gelen numpy dizisinin i’inci girdisiyle w[i]’yi eşlemek doğal bir eşlemedir. Eşleme doğal olunca, hata ayıklama günü daha sakin geçer.
Yinelenen desenler
Aynı blok üç kez tekrarlanacaksa, üç kez ayrı Parameter üretmek yerine vektör dilimleriyle düşünmek zihinsel yükü azaltır. Yinelenen blokların bilinçli olarak aynı açıyı mı yoksa ayrı açıları mı paylaşacağı, model kararıdır; API bunu sizin için seçmez.
Fiziksel yerleşim farklı olsa bile (örneğin uzaktan kuantum kapılar), sembol dizgisi düzenli kalabilir; bu ayrım kafa karıştırıcıdır fakat tasarım özgürlüğü sunar.
İndeks sözleşmesi
w[i] ile devredeki i’inci kübitin aynı olduğunu varsaymayın. Vektör indeksi ile kübit indeksi arasında bilinçli eşleme tablosu tutmak, büyük ansatzlarda hayat kurtarır.
Bağlama: Tam, Kısmi ve Kopya Disiplini
Bağlama işlemi, sembollerin sayıya dönüşümüdür. Çağrı çoğu zaman yeni bir devre döndürür; yerinde mutasyon seçenekleri sürüme göre değişebilir. Bu yüzden “bağladım, eldeki referans hâlâ sembolik mi?” sorusunu her seferinde cevaplayın — belirsizlik, döngü içinde birikerek patlar.
Kısmi bağlama, bir alt kümenin sayıya kilitlenip geri kalanın sembolik kalmasıdır. Bu, varyasyonel iç içe yapılarda (iç optimizasyon, dış optimizasyon) sık görülür. Tam bağlama ise artık klasik sayılardan oluşan somut bir devre üretir; transpile ve donanım aşamasına burada geçilir.
Eski notlarda bind_parameters adını görebilirsiniz; çağrı fikri aynıdır: sözlük veya sıralı yapı ile sayıları yerleştirmek. Güncel belgelerinizde hangi adın birinci sınıf olduğunu kontrol edin; burada kavramı “bağlama” diye birleştiriyoruz.
Kopya üzerinde çalışmak
Aynı şablonu farklı sayı setleriyle deneyecekseniz, bağlama öncesi copy() alışkanlığı ucuz bir sigortadır. Özellikle paralel iş veya çok iş parçacıklı havuzlarda paylaşılan devre referansı riski büyür.
İfadeler ve Küçük Cebir Ağı
İki parametrenin toplamı, farkı veya basit trigonometrik bileşimi, sembolik ifade olarak devrede yaşayabilir. Bu küçük cebir ağı, kapı açısını “tek sayı” olmaktan çıkarır; bağlama anına kadar sadeleştirme ertelenir. İfadeler büyüdükçe, transpile veya simülatör tarafında maliyet artabilir; bu yüzden gereksiz iç içe yazımı erken sadeleştirmek bazen iyidir — bazen ise türevlenebilirlik için gerekli olduğundan dokunulmaz.
Kısa hatırlatma: ifade ağını büyütmek “daha genel model” demek değildir; çoğu zaman daha zor bir optimizasyon demektir.
Sayısal stabilite
Sembolik sadeleştirme ile sayısal değerlendirme arasında küçük farklar görülebilir. Bu farklar, çok adımlı devrelerde birikir. Birim testlerde hem sembolik kenar durumları hem birkaç rastgele noktada sayısal kontrol kullanmak, sürprizleri erken keser.
Birleştirmede Parametre Taşıma
compose iki devreyi birleştirirken, semboller de birlikte taşınır; fakat aynı isimli iki sembolün birleşip birleşmeyeceği veya çakışma hatası vereceği, bağlam ve sürüme bağlıdır. Bu yüzden modül sınırlarında parametre adlarını isim alanıyla izole etmek, birleştirme gününü kurtarır.
Paylaşımlı Parameter nesnesi kasıtlı kullanıldığında güzel şeyler olur: aynı açı birden fazla kapıda birlikte döner. Kasıtsız paylaşımda ise bir modülde yapılan bağlama diğerini sessizce etkiler. Detaylı birleştirme zamanı ve hat eşlemesi birleştirme ve ters devre sayfasında anlatıldı; burada yalnızca sembol taşıma riskini vurguluyoruz.
Alt devre fabrikası
Fabrika fonksiyonunuz her çağrıda taze Parameter üretiyorsa, birleştirme öncesi kimlikler temiz kalır. Tek bir global sembol havuzu kullanıyorsanız, o havuzun yaşam döngüsünü belgeleyin.
Transpile ve Sembolik Köprü
Geçiş yöneticisi, hedef makinenin yerel diline indirgerken sembolleri koruyabilir, yeniden parametrize edebilir veya sayıya çevirebilir; bu üçlü aynı cümlede “otomatik” sanılmamalıdır. Bazı geçişler sürekli aileleri daha iyi tanır; bazıları yalnızca belirli kapı setlerinde sembol taşır. Bu yüzden “transpile ettim, parametre kayboldu” şikâyetinin kökü çoğu zaman politika ve hedef kümesidir, kişisel şanssızlık değil.
Kısa pratik: ağır geçişten önce küçük devrede sembol sayımını ve isim listesini yazdırın. Bir satır log, saatler kurtarır.
Ayrıştırma ve optimizasyon ekonomisi devre ayrıştırma ve devre optimizasyon mantığı sayfalarında derinleşir; burada yalnızca sembollerin bu ekonomiyle çarpışabileceğini not düşüyoruz.
Ters Çevirme ve Bağlama Sırası
Sembolik ters, kapıların tersinin sembolik olarak bilindiği durumlarda anlamlıdır. Sayı bağlandıktan sonra ters almak ile önce tersleyip sonra bağlamak genelde farklı sayı üretir; bu fark, varyasyonel türev zincirinde kritik olabilir. Hangi sıranın doğru olduğu modelinize bağlıdır; API “doğru olanı” seçmez.
Ölçüm ve dinamik talimatlar tersi zorlaştırır; bu başlık ölçümsüz çekirdek için yazıldı. Ölçümle birlikte düşünmek için ölçüm mantığı sayfasına dönün.
Bazı ekip üyeleri “önce sayı bağlayayım, sonra ters alayım” der; diğerleri tam tersini savunur. Hangi sıranın doğru olduğunu küçük iki kübitlik elle hesapla doğrulayın — tartışma böyle kısalır.
Global faz, sembolik tersin içinde yeniden düzenlenebilir; interferometrik desenlerde bu fazın takibi yine önemlidir. Yalnızca olasılık dağılımı hedefleniyorsa göz ardı edilebilir, fakat bu kararı bilinçli verin.
Gradyan ve Dış Zincir: Sınır Çizgisi
Otomatik türev, çerçeve seçimine göre Qiskit ekosisteminde veya dışında farklı yollarla gelir. Bu sayfa, “hangi autograd?” rehberi değildir. Burada durduğumuz nokta şudur: devre sembolleri tutarlı kaldığı sürece, dış optimizer ile haberleşme kolaylaşır; semboller kırıldığında ise gradyan maskelenmiş gibi görünür.
Kısaca: önce devreyi doğru sembolleştirin; sonra dış dünyaya açın.
Okunabilirlik ve Klasik Tuzaklar
Parametrik devrelerde klasik hatlar çoğu zaman sabit kalır; fakat ölçüm ve koşullu yazım eklendiğinde, bağlama sırası ile sonuç yorumu birbirine karışabilir. İsim seçiminde matematiksel Unicode güzeldir; fakat log dosyasında zorlanır. Pratiklik ile estetik arasında denge kurun.
circuit.parameters yineleyicisi, hangi sembollerin hâlâ “havada” olduğunu hızlıca gösterir; bağlama sonrası tekrar yazdırmak, kısmi bağlama hatalarını yakalamada etkilidir.
Kod Laboratuvarı
İlk blok tek parametre ve bağlama; ikinci blok vektör ve kısmi bağlama iskeleti gösterir. Sürümünüze göre küçük imza farkları olabilir; çekirdek fikir değişmez.
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
theta = Parameter("theta")
qc = QuantumCircuit(1)
qc.rx(theta, 0)
print("Semboller:", list(qc.parameters))
bound = qc.assign_parameters({theta: 0.25})
print("Bağlı devre:", bound)
print("Kalan sembol?", list(bound.parameters))
from qiskit import QuantumCircuit
from qiskit.circuit import ParameterVector
w = ParameterVector("w", 2)
qc = QuantumCircuit(2)
qc.ry(w[0], 0)
qc.ry(w[1], 1)
print(list(qc.parameters))
# Örnek: yalnızca ilk açıyı kilitle, ikinci sembol kalsın.
part = qc.assign_parameters({w[0]: 0.1})
print("Kısmi:", list(part.parameters))
İleri Okuma ve Özet
Parametrik devre, öğrenilebilir kuantum yazılımının “tip güvenliği” katmanıdır: semboller temiz, bağlama kontrollü, birleştirme ve transpile sınırında ise uyanık olun. Dış optimizer ve veri hattı bu sayfanın dışındadır; fakat temiz sembol grafiği olmadan o hatlar da zorlanır.
- Kapılar ve ünite mantığı — ünite ve tersin sembolik yüzü.
- Birleştirme ve ters devre — modül sınırında kimlik ve sıra.
- Dinamik devreler — ölçüm sonrası akış (parametre ile karıştırmayın).