1. Ana sayfa
  2. İçerik planı
  3. Varyasyonel algoritmalar · Qiskit
Qiskit · Kuantum algoritma araçları

Varyasyonel kuantum çizgisi — Kuantum ölçümü besleyen klasik optimizasyon döngüsü

Bu ünite, belirli bir uygulama yerine ortak iskeleti anlatır: parametreli bir kuantum devre üzerinde bir kayıp (çoğu kez bir gözlemlenebilirin beklenen değeri) tahmin edilir; klasik taraf bu tahmine göre parametreleri günceller ve döngü tekrarlanır. Böyle bir hat, VQE’den QAOA’ya, kuantum makine öğrenmesindeki eğitim döngülerine kadar uzanır. Burada amaç “hangi kapı”yı seçeceğinizi söylemek değil; döngünün nerede kırılabileceğini — ölçüm gürültüsü, kayıp tanımı, barren plateau rejimi, iz kaydı — yazılım disipliniyle görmektir. Somut Pauli maliyeti ve ansatz şablonu ayrı sayfalarda derinleştirilir.

  • Odak: döngü · kayıp · gürültü
  • Ayrım: tek bir algoritma kanıtı değil
  • Çıktı: deney karnesi şablonu

Döngünün anatomisi

Tipik hat üç bileşenden oluşur: (1) parametreleri bağlanmış kuantum devre, (2) kayıp için gerekli tahmin ( Estimator ile beklenen Pauli toplamı veya Sampler ile örneklenmiş bir istatistik), (3) klasik güncelleme kuralı (ör. L-BFGS-B, COBYLA, özel bir eğitim adımı). Bu sıra bir API sözleşmesi gibi düşünülmelidir: ilkel çağrısı ile optimizasyonun aynı θ anını paylaşmaması, sessiz hataların en yaygın kaynağıdır.

Hibrit kuantum iş akışı sayfası, bu üçlünün üretim boru hattı dilindeki karşılığını özetler.

Kısa teşhis listesi İlkel sonucu alamıyorsanız önce parametre sayısı ile vektör boyutunu, ardından bağlama ( assign_parameters) ve en sonda transpile sürümünü kontrol edin.

Kayıp yüzeyi ve ölçüm gürültüsü

Kayıp, kuantum tarafından tek bir skalara indirgenmiş geri bildirimdir: beklenen enerji, sınıflandırma marjı veya fidelity tabanlı bir ceza olabilir. Donanımda bu skala shot gürültüsüyle örneklenir; aynı θ için üst üste çağrıldığında küçük farklar normaldir ve klasik optimizasyonun “gradyan” hissini değiştirir.

Pauli tabanlı maliyetin nasıl yazıldığı Maliyet Hamiltonyenleri; ölçüm gruplaması ve ilkel seçimi Gözlemlenebilir oluşturma ve Estimator ilkeli sayfalarında kalır.

Shot planı

Erken iterasyonlarda düşük shot, geç iterasyonlarda artan shot gibi basamaklı politikalar yaygındur; politika değiştiğinde kayıp ölçeği değişebileceği için raporda açıkça yazılmalıdır.

Parametre uzayı ve klasik optimizasyon

Parametre uzayı, ansatzın serbestlik derecesidir; uzay büyüdükçe hem ifade gücü artar hem de arama zorlaşır. Ansatz devreleri başlığında bağlanma ve reps seçiminin derinliğe etkisi işlenir; burada yalnızca klasik optimizasyonun bu uzayda hangi bilgiyi kullandığı (yalnızca değer, yaklaşık gradyan, kısıt) özetlenir.

Çok başlangıçlı koşular, farklı rastgele tohumlarla aynı ansatz ailesinin farklı yerel vadilere düşmesini azaltmak için kullanılır; tohumlar deney karnesinin zorunlu alanıdır.

Kısıtlar

Bazı uygulamalarda açı parametreleri fiziksel aralığa kısıtlanır; kısıt ihlali durumunda ilkel çağrısından önce projeksiyon yapılıp yapılmadığı sonuçları değiştirir.

Barren plateau rejimi

Derin ve rastgele benzeri ansatz ailelerinde, kayıp fonksiyonunun gradyanının üstel kübit sayısıyla baskılanması riski literatürde barren plateau olarak tartışılır. Pratikte bu rejim, “parametre güncelleniyor ama kayıp düz” hissiyle kendini gösterir ve erken durdurma eşiklerine takılır.

Teorik ayrıntılar ders notlarında kalır; yazılım tarafında yapılacak iş, aynı modelde farklı reps ve bağlanma desenleriyle kıyaslama eğrileri üretmek ve bu eğrileri aynı shot politikasıyla almaktır.

Spektral yöntemler ( Faz tahmini araçları) bu riski farklı bir eksende taşır; burada yalnızca varyasyonel arama bağlamında anılır.

Özel çerçevelere köprüler

Aynı iskelet farklı “rol” dağılımlarıyla somutlaşır: genel özdeğer probleminde maliyet Hamiltonyeni ve serbest ansatz; VQE çerçevesi bu çizgiyi işler. QAOA’da ansatz katmanları maliyet ve karıştırıcıya kilitlenir; QAOA çerçevesi bu özel şablonu anlatır. Kuantum makine öğrenmesinde kayıp, veri yüklemeli bir devre ve istatistiksel bir çıktı üzerinden tanımlanır; yine aynı döngü, farklı bir kaynak dosyası ve ölçüm politikası ile çalışır.

Arama tabanlı Grover araçları bu aileden ayrışır; karıştırmamak için ayrı ünite olarak tutulmuştur.

Ne burada yok

Belirli bir QML mimarisinin eğitim tarifesi, veri yükleyici ve geri yayılım eşdeğeri; ilgili ders notlarında derinleştirilir.

İzlenebilir deney karnesi

Yeniden üretilebilirlik için aşağıdaki alanlar tek satırda bile olsa logda buluşmalıdır: Qiskit sürümü, ilkel sürümü, ansatz sınıfı ve argümanları (bağlanma, reps), maliyetin Pauli özeti veya hash’i, transpile özeti, rastgele tohum, shot politikası, klasik optimizasyon yöntemi ve toleransı.

Oturum sistemi ve İlkel iş akışları, bulutta çalışırken bu karnenin hangi parçalarının sunucu tarafından otomatik doldurulduğunu belirlemenize yardım eder.

Kod stüdyosu: en küçük döngü

Aşağıdaki örnek, tek kübitlik RealAmplitudes üzerinde ⟨Z⟩’yi düşürmeyi hedefler; amaç Hamiltonyen mühendisliği değil, döngünün kapanmasıdır. Genel Pauli maliyetleri için VQE çerçevesi sayfasına geçin.

variational_scalar_loop_min.py Python
import numpy as np
from scipy.optimize import minimize
from qiskit.circuit.library import RealAmplitudes
from qiskit.primitives import StatevectorEstimator
from qiskit.quantum_info import SparsePauliOp

ansatz = RealAmplitudes(num_qubits=1, reps=1)
obs = SparsePauliOp.from_list([("Z", 1.0)])
estimator = StatevectorEstimator()


def scalar_loss(theta):
    bound = ansatz.assign_parameters(theta)
    job = estimator.run([(bound, [obs])])
    return float(job.result()[0].data.evs[0])


theta0 = np.zeros(ansatz.num_parameters)
result = minimize(scalar_loss, theta0, method="COBYLA", options={"maxiter": 120})
print("min ⟨Z⟩ ≈", result.fun, "| success:", result.success)
print("ok")
qiskit SciPy · StatevectorEstimator UTF-8 · LF

IBM Runtime (yorum)

Aşağıdaki satırlar bilinçli olarak yorumdadır; oturum ve backend kimliği ortama göre doldurulur.

variational_runtime_estimator_sketch.py Python
# from qiskit_ibm_runtime import Estimator, Session
# with Session(backend=backend) as session:
#     est = Estimator(session=session)
#     bound = ansatz.assign_parameters(theta)
#     job = est.run([(bound, [obs])])
qiskit IBM Runtime · yorum UTF-8 · LF

Okuma listesi ve sınırlar

Bu ünite bir “algoritma kanıtı” veya “en iyi optimizasyon yöntemi” rehberi değildir; amaç, farklı uygulamalar arasında taşınabilen döngü dilini ortak kelimelerle sabitlemektir. Aşağıdaki sayfalar somutlaştırma adımlarıdır.

Bir cümlelik özet Tahmin et → kaybı hesapla → θ’yı güncelle; üç adımın her birinde hangi sürümün çalıştığını yaz.