Kuantum sinir ağı — kodlama · öğrenilebilir katman · gözlem çıktısı
Kuantum sinir ağı (QNN) ifadesi burada, klasik bir sinir ağının katmanlarına bire bir karşılık gelen tek bir yapıdan çok; parametreli kuantum devresi ile tanımlanan bir fonksiyon ailesi f(x; θ) düşüncesini kapsar: önce giriş vektörü x kuantum durumuna kodlanır, ardından eğitilebilir ünite U(θ) uygulanır ve seçilen bir Pauli gözleminin beklenen değeri klasik bir skaler çıktı üretir. PennyLane’de bu düzen AngleEmbedding, StronglyEntanglingLayers ve expval ile doğrudan kurulur; bu sayfada tek ileri geçiş · iki kübit · tek SEL katmanı, sabit örnek parametreler ve qml.draw + SVG doğrulaması ile tamamlanır — tam eğitim döngüsü yoktur.
Kuantum sinir ağı (QNN) nedir?
Klasik derin öğrenmede bir “sinir ağı”, çoğu zaman doğrusal dönüşümler ve düğüm başına doğrusal olmayan aktivasyonların ardışık bileşimiyle yazılır; parametreler θ, bir kayıp fonksiyonunun L(y, ŷ) gradyanına göre güncellenir. Kuantum sinir ağı terimi literatürde hem çok katmanlı parametreli devreleri hem de tek bloklu varyasyonel modelleri kapsayabilir; ortak çekirdek şu fikirdir: bir giriş örneği x önce bir kuantum durumuna haritalanır ρ(x), ardından ünite U(θ) ile evrilir ve seçilen gözlemlenebilir O için beklenen değer ⟨O⟩ = Tr(ρ′ O) klasik bir çıktı verir; burada ρ′, kodlama ve parametreli devrenin ardından oluşan durumdur. Böylece f(x; θ) = ⟨O⟩ biçiminde, klasik tarafta türevlenebilir bir skaler model elde edilir — PennyLane bu zinciri otomatik türev ile kaplar.
Bu soyutlama kuantum çekirdek veya çekirdek matrisi ile öğrenilen modellerden (ör. çiftler üzerinden çekirdek tanımı) farklıdır: burada odak, kapılarla açıkça yazılmış parametreli devre ve gözlem beklenenidir. İstenirse aynı çıktı başka kayıplarla çok sınıflı problemlere genişler; çekirdek–SVM tarafı için sitedeki QSVM · Qiskit sayfasına bakın — burada kuantum çekirdek matrisi yerine doğrudan QNN devresi işlenir.
VQC · PennyLane dosyası genel parametreli Ansatz ve tek maliyet gözlemine odaklanır; QAOA · PennyLane ise İsing maliyeti–karıştırıcı yapısına kilitlenir. Bu sayfadaki örnek, veri bağımlı kodlama + öğrenilebilir dolaşımlı katman ile QNN tipik bileşenlerini ayırır.
Minimal mimari: kodlama ve öğrenilebilir katman
Bu minimal örnek tek bir “katlı harita” gibi okunabilir: önce dünya verisi Hilbert uzayına sızmış olur, sonra parametreler bu uzay içinde durumu yeniden şekillendirir, en sonda ise tek bir klasik sayıya inilir. Üç blok birbirinin yerine geçmez — sıra kasıtlıdır: kodlama, klasik özellik vektörünü kübitlere taşıyan kapılardır; burada AngleEmbedding varsayılan eksende her bileşeni bir kübit üzerinde rotasyon açısına çevirir — yani öznitelikler “doğrudan ağırlık çarpımı” değil, ünite dönüşümünün kontrol parametresi olarak girer. Varyasyonel katman olarak seçilen StronglyEntanglingLayers, her katmanda yerel üçgenlik rotasyonlar ve halka düzeninde iki kübit kapıları ile hem yerel hem de dolaşımlı karışımı artırır; burası modelin “öğrenilebilir” kısmının kalbidir ve weights tensörüyle adreslenir. Son blok okumadur: tek bir Pauli gözleminin beklenen değeri — örnekte ⟨Z₀⟩ — her zaman [−1, 1] aralığında, ölçüm dağılımının özütü olarak düşünülebilir. İkili sınıflandırmada bu skaler çoğu zaman bir sigmoid / eşik ile karar yüzeyine bağlanır; biz burada kasıtlı olarak ham beklenen değerde duruyoruz ki zincirin hangi halkasında takıldığınızı görebilin.
Bu düzen, VQC · PennyLane dosyasındaki genel Ansatz anlatımından farklı bir vurgu taşır: orada parametreli blokların problem bağımsız bir “şekil” olarak seçildiği öne çıkıyorsa, burada ilk blok özellikle girişe bağlıdır — QNN tartışması çoğu zaman bu veri bağımlı kodlama ile başlar; QAOA tarafındaki İsing–karıştırıcı hikâyesine ise girmeyiz.
Derinlik ve kübit sayısı arttıkça devre sınıfı genişler; fakat “daha çok katman her zaman daha iyi eğitilir” önermesi QML’de şüpheyle karşılanır: parametre sayısı büyüdükçe maliyet yüzeyinin düzleşmesi veya gradyanların küçülmesi gibi etkiler pratikte görülür. Bu sayfa bir optimizasyon reçetesi vermez; yine de aklınızda bulunsun: QNode şık görünse de, arkasında seçtiğiniz şablon bir fonksiyon ailesi taahhüdüdür.
PennyLane boru hattı
QNN boru hattıni diğer PennyLane sayfalarından ayıran şey, aynı QNode’un yalnızca “sürekli açılar” değil, aynı zamanda etiketli veriyle paylaşılan bir giriş kanalını da taşımasıdır: burada imza fiilen f(x; θ) = ⟨O⟩ biçiminde okunur; x öznitelik vektörü, weights ise öğrenilebilir şablon içindeki tüm serbest parametrelerin toplu adıdır. Klasik tarafta eğitim hayal edildiğinde tipik akış bir mini-yığın üzerinde tekrarlanır: ileri geçişte skaler kayıp, geri yönde ise çoğu senaryoda öncelikle ∂L/∂weights (veri o an “sabit örnek” sayılır) üretilir; bu sayfada o döngünün kendisi yoktur, fakat QNode’un çift bağımsız değişkenli bir modül gibi tasarlandığı fikri tüm anlatıyı taşır.
Cihaz ve @qml.qnode satırlarını satır satır tekrarlamıyoruz — bunlar VQC · PennyLane dosyasındaki gibi aynı soyutlamadır. Orada vurgu “parametreli devre + tek maliyet okuması” çizgisinde genişler; QAOA · PennyLane ise Hamiltonyen–karıştırıcı parametreleri ve Pauli okumasını merkeze alır. Burada ek katman, kodlama ile gelen x’in de tensör grafiğine girmesi ve kuantum blok ile birlikte “karar fonksiyonu” üretmesidir.
PennyLane, bu blok için otomatik türev zinciri kurduğunda beklenen değer üzerinden geriye yayılım tanımlanır; pratikte parametre sayısı küçükken parametre-kaydırımı, modern yığında ise bazen doğrudan geri yayılım daha uygun olabilir — seçim cihaz modeline ve ölçüm politikasınıza bağlıdır. Tam kuantum katmanı tensör köprüsü (ör. PyTorch) ile sarıldığında, “kuantum katmanı” klasik ağın ara bir katmanı gibi görünür; çekirdek NumPy yolu ise küçük prototip ve şema doğrulaması için yeterlidir.
qml.draw, QNN şablonlarında sırf estetik değil hata ayıklama aracıdır: AngleEmbedding ve StronglyEntanglingLayers makroları açılınca hangi kabloda hangi rotasyon ve dolanım turunun geldiği görünür; makro etiketleri (M0, M1) ise çizim çıktısında tensör özetlerini taşır — yanlış yerleştirilmiş kodlama veya eksik kablolama gibi hataları yakalamak, özellikle ilk prototipte bu yüzden kolaylaşır.
Analitik beklenen değer ile sonlu shots arasındaki fark burada da geçerlidir: öğretimde shots gürültüsü bazen düzenlendirme veya daha akıllı gradyan tahmini gerektirir; çıkarımda ise daha çok deterministik benzeri ortamlar tercih edilir. Bu dosya tek deterministik ileri geçiş gösterir — gürültü tartışmasını tekrar etmek yerine, boru hattının QNN’de tekrarlanan ileri–geri düşünceyle çiftleneceğini not düşmek yeterli.
PennyLane kod örneği
İki kübit, tek SEL katmanı; örnek giriş x = [0.4, 1.1], ağırlıklar üretilebilirlik için sabit bir tensör olarak verilmiştir (rastgele çağrı yok).
import pennylane as qml
from pennylane import numpy as pnp
n_qubits = 2
dev = qml.device("default.qubit", wires=n_qubits)
@qml.qnode(dev)
def qnn(weights, x):
qml.AngleEmbedding(x, wires=range(n_qubits))
qml.StronglyEntanglingLayers(weights, wires=range(n_qubits))
return qml.expval(qml.PauliZ(0))
weights_shape = qml.StronglyEntanglingLayers.shape(n_layers=1, n_wires=n_qubits)
weights = pnp.array(
[[[1.15255478, 4.89894304, 3.75012014],
[2.8012498, 0.62816092, 2.88554589]]]
)
x = pnp.array([0.4, 1.1])
print(qml.draw(qnn)(weights, x))
print("⟨Z₀⟩ ≈", float(qnn(weights, x)))
Kod Analizi
İskeletin rolü
Bu blok, gözetimli öğrenmede kullanılacak bir f(x; θ) örneğidir; şema ve sayılar 6 · Aynı devre (iki temsil) ve 7 · Demo ve doğrulama ile birlikte okunmalıdır.
qml.device("default.qubit", wires=n_qubits)
İki kübitlik tam durum simülasyonu; öğretim öncesi deneyler için uygundur. Donanıma geçişte transpile ve bağlantı kısıtları eklenir — bu örnek ideal ortamda kalır.
@qml.qnode(dev)
Kuantum fonksiyonu bir QNode’a dönüşür; weights ve x tensörleri diferansiyellenebilir ise otomatik türev ile uyumludur (tam optimizer gösterilmedi).
AngleEmbedding(x, wires=…)
Özellik vektörünü kübitlere dağıtır; varsayılan "X" rotasyon ekseni ile her bileşen bir tek kübit üzerinde faz/eksen rotasyonuna karşılık gelir. Özellik sayısı kübit sayısıyla uyumlu olmalıdır — burada ikisi de iki.
StronglyEntanglingLayers(weights, wires=…)
Şablon, katman başına yerel üç parametreli rotasyonlar ve CNOT halkası içerir. weights_shape = (1, 2, 3): bir katman, iki kübit, üç Euler benzeri açı; toplam parametre sayısı katman ve kübit ile ölçeklenir.
return qml.expval(qml.PauliZ(0))
Tek Pauli gözlemi; çıktı skaler ve fiilen bir “logit öncesi” okumadır. Çoklu çıktı için birden çok expval veya vektör dönüşleri kullanılabilir.
Sabit weights tensörü
Öğrenme döngüsü yerine tekrarlanabilir demo için sabit değerler kullanıldı; üretimde bu tensör optimizatör tarafından güncellenir. Rastgele başlatma veya veri sızıntısı riski taşıyan dış kaynak çağrısı yoktur.
qml.draw(qnn)(weights, x)
Şablonları soyut makrolar olarak gösterir; M0, M1 etiketleri girilen tensörleri özetler. Alt satırlarda matrisler gerçek sayıları listeler — PennyLane sürümüne göre biçim küçük farklar gösterebilir.
Aynı devre (iki temsil)
Solda qml.draw çıktısı; sağda aynı mantıksal sıranın şeması: kodlama → güçlü dolaşımlı katman → beklenen Z₀.
qml.draw · AngleEmbedding · SEL
0: ─╭AngleEmbedding(M0)─╭StronglyEntanglingLayers(M1)─┤ <Z>
1: ─╰AngleEmbedding(M0)─╰StronglyEntanglingLayers(M1)─┤
M0 =
[0.4 1.1]
M1 =
[[[1.15255478 4.89894304 3.75012014]
[2.8012498 0.62816092 2.88554589]]]
M0 · giriş özeti M1 · ağırlık özeti <Z> · okuma
QNN minimal — kompakt şema
indigo · kodlama turuncu · SEL yeşil · okuma
Demo ve doğrulama
Aşağıdaki çerçeve, 6 · Aynı devre (iki temsil) sağ paneliyle aynı mantıksal sıradır; gradient kimliği qnn-wide-g ile çakışma önlenir.
Aşağıdaki reçete bu sayfadaki QNN minimal örneğine özeldir; QAOA veya genel VQC şemalarıyla karıştırılmamalıdır.
Şemayı adım adım oku
-
Sol indigo blok AngleEmbedding: klasik vektör x’in her bileşeni ilgili kübit üzerinde bir rotasyon ile kodlanır; çizimde çift kabloyu birlikte saran makro görünür.
-
Ortadaki turuncu blok StronglyEntanglingLayers: öğrenilebilir yerel rotasyonlar ve iki kübit kapıları içerir; dikey çizgi iki hattın aynı şablondan geçtiğini gösterir.
-
Sağdaki kesik çerçeve ⟨Z₀⟩ / expval soyutlamasıdır; örnek sayısal değer yaklaşık 0.192 (default.qubit analitik beklenen değer).
Hedef: soldan sağa kodlama → SEL → ⟨Z₀⟩ akışının QNN minimal mimarisi olarak okunması.
- örnek: 2 kübit · 1 SEL katmanı · sabit weights
- çıktı: ⟨Z₀⟩ ≈ 0.192
- not: expval kapı değildir
Devre — ayrıntılı analiz
Kodlama katmanı, klasik öznitelikleri kuantum durumuna haritalayan ilk ünitedir; burada seçilen AngleEmbedding, öznitelikleri tek kübitlik rotasyon açıları olarak yazar. Bu, giriş uzayını Hilbert uzayına gömen ilk lineer– üniter etkileşimdir; sonrasında oluşan durum genelde ürün durumundan çıkar ve sonraki blokta dolaşım ile karışır. Öznitelik ölçekleri ve ön işleme (ör. normalizasyon), beklenen okumanın hassasiyetini doğrudan etkiler — bu yüzden üretim boru hatlarında veri şeması ile kapı ailesi birlikte seçilir.
StronglyEntanglingLayers, öğrenilebilir parametreleri içeren standart bir şablondur; her katmanda yerel üçgenlik rotasyonlar ve belirli bir CNOT halka düzeni yer alır. Bu blok, modele hem doğrusal olmayan (kuantum dinamiği anlamında) hem de dolaşım tabanlı ifade kazandırır; parametre sayısı katman ve kübit ile birlikte büyür. Derinlik arttıkça üretkenlik artabilir; fakat maliyet yüzeyinin düzleşmesi veya gradyanların küçülmesi gibi QML’ye özgü zorluklar rapor edilmiştir — bu sayfa numerik olarak derinlik analizi sunmaz, yalnızca tek katmanlı şeffaf bir örnekle yapıyı gösterir.
Ölçüm ve çıktı: tek Pauli Z₀ beklenen değeri, ikili sınıflandırma bağlamında sıklıkla bir karar sınırının öncesinde kullanılan skalerdir. Gerçek bir eğitimde etiket y ile karşılaştırılıp kayıp L(y, f(x;θ)) hesaplanır; zincir kuralı ile θ güncellenir. PennyLane + otomatik türev bu zinciri kapalı biçimde kurar; burada yalnızca tek nokta (x, θ) üzerindeki ileri geçiş gösterilmiştir.
Geniş SVG’nin bölüm 6 ile tutarlı yerleşimi; kodlama–SEL–expval ayrımının hem soyut hem görsel olarak netleşmesi.
- veri: x iki boyut · θ tensörü sabit demo
- kimlikler: qnn-wide-g / qnn-dual-g
- not: şema makro blok düzeyindedir
Pratik notlar ve sonraki adımlar
Üretim QNN boru hatlarında parti boyutu, öğrenme oranı, düzenlendirme ve erken durdurma gibi klasik hiperparametreler yanında ölçüm sayısı (shots), başlangıç ağırlıkları ve kodlama seçimi kritik rol oynar. Donanımda gürültü ve bağlantı kısıtları gradyan tabanlı eğitimi zorlaştırabilir; simülatörden donanıma geçişte şema ve transpile adımları zorunludur.
PennyLane’i PyTorch veya TensorFlow ile köprülemek büyük veri ve karmaşık kayıplar için yaygındır; çekirdek NumPy yolu küçük prototipler ve şema doğrulaması için uygundur.