TensorFlow Quantum (TFQ), NISQ dönemindeki kuantum makine öğreniminin sorunları için tasarlanmıştır. Kuantum devreleri oluşturmak gibi kuantum hesaplama ilkellerini TensorFlow ekosistemine getirir. TensorFlow ile oluşturulan modeller ve işlemler, güçlü kuantum-klasik hibrit sistemler oluşturmak için bu temel öğeleri kullanır.
Araştırmacılar, TFQ kullanarak bir kuantum veri seti, bir kuantum modeli ve klasik kontrol parametreleri kullanarak bir TensorFlow grafiği oluşturabilirler. Bunların hepsi tek bir hesaplama grafiğinde tensörler olarak temsil edilir. Klasik olasılık olaylarına yol açan kuantum ölçümlerinin sonucu, TensorFlow ops tarafından elde edilir. Eğitim, standart Keras API ile yapılır.
tfq.datasets modülü, araştırmacıların yeni ve ilginç kuantum veri kümeleriyle denemeler yapmasına olanak tanır.
sirk
Cirq , Google'dan bir kuantum programlama çerçevesidir. Bir kuantum bilgisayarda veya simüle edilmiş bir kuantum bilgisayarda kuantum devreleri oluşturmak, değiştirmek ve başlatmak için kübitler, kapılar, devreler ve ölçüm gibi tüm temel işlemleri sağlar. TensorFlow Quantum, toplu hesaplama, model oluşturma ve gradyan hesaplama için TensorFlow'u genişletmek için bu Cirq temel öğelerini kullanır. TensorFlow Quantum ile etkili olmak için Cirq ile etkili olmak iyi bir fikirdir.
TensorFlow Kuantum temel öğeleri
TensorFlow Quantum, TensorFlow'u kuantum bilgi işlem donanımıyla entegre etmek için gereken bileşenleri uygular. Bu amaçla, TFQ iki veri türü temel öğesi sunar:
- Kuantum devresi : Bu, TensorFlow içindeki Cirq tanımlı kuantum devrelerini (
cirq.Circuit) temsil eder. Farklı gerçek değerli veri noktalarından oluşan gruplara benzer şekilde, farklı boyutlarda devre grupları oluşturun.
- Pauli toplamı : Cirq (
cirq.PauliSum) içinde tanımlanan Pauli operatörlerinin tensör ürünlerinin doğrusal kombinasyonlarını temsil eder. Devreler gibi, farklı boyutlarda operatör grupları oluşturun.
Temel operasyonlar
Bir
tf.Tensor içindeki kuantum devre ilkellerini kullanan TensorFlow Quantum, bu devreleri işleyen ve anlamlı çıktılar üreten işlemleri uygular.
TensorFlow operasyonları optimize edilmiş C++ ile yazılmıştır. Bu işlemler devrelerden örnek alır, beklenen değerleri hesaplar ve verilen devreler tarafından üretilen durumu verir. Esnek ve performanslı operasyonlar yazmanın bazı zorlukları vardır:
- Devreler aynı boyutta değildir. Simüle edilmiş devreler için, statik işlemler (
tf.matmulveya
tf.addgibi) oluşturamaz ve ardından farklı boyutlardaki devreler için farklı sayılar kullanamazsınız. Bu işlemler, statik olarak boyutlandırılmış TensorFlow hesaplama grafiğinin izin vermediği dinamik boyutlara izin vermelidir.
- Kuantum verileri tamamen farklı bir devre yapısını indükleyebilir. Bu, TFQ operasyonlarında dinamik boyutları desteklemek için başka bir nedendir. Kuantum verileri, orijinal devrede yapılan değişikliklerle temsil edilen temel kuantum durumunda yapısal bir değişikliği temsil edebilir. Çalışma zamanında yeni veri noktaları değiş tokuş edildiğinden, TensorFlow hesaplama grafiği oluşturulduktan sonra değiştirilemez, bu nedenle bu değişen yapılar için destek gereklidir.
-
cirq.Circuits, bir dizi işlem olmaları ve bazılarının semboller/yer tutucular içermesi bakımından hesaplama grafiklerine benzer. Bunu mümkün olduğunca TensorFlow ile uyumlu hale getirmek önemlidir.
Performans nedenleriyle, Eigen (birçok TensorFlow işleminde kullanılan C++ kitaplığı), kuantum devre simülasyonu için pek uygun değildir. Bunun yerine, klasik ötesi kuantum deneyinde kullanılan devre simülatörleri, doğrulayıcılar olarak kullanılır ve TFQ operasyonlarının temeli olarak genişletilir (tümü AVX2 ve SSE talimatlarıyla yazılmıştır). Fiziksel bir kuantum bilgisayar kullanan aynı işlevsel imzalara sahip operasyonlar oluşturuldu. Simüle edilmiş ve fiziksel bir kuantum bilgisayar arasında geçiş yapmak, tek bir kod satırını değiştirmek kadar kolaydır. Bu işlemler
circuit_execution_ops.py içinde bulunur.
Katmanlar
TensorFlow Quantum katmanları,
tf.keras.layers.Layer arabirimini kullanarak örnekleme, beklenti ve durum hesaplamasını geliştiricilere sunar. Klasik kontrol parametreleri veya okuma işlemleri için bir devre katmanı oluşturmak uygundur. Ek olarak, toplu devreyi, toplu kontrol parametre değerini destekleyen yüksek derecede karmaşıklığa sahip bir katman oluşturabilir ve toplu okuma işlemleri gerçekleştirebilirsiniz. Örnek için
tfq.layers.Sample bakın.
farklılaştırıcılar
Birçok TensorFlow işleminden farklı olarak, kuantum devrelerindeki gözlemlenebilirlerin, hesaplanması nispeten kolay olan gradyanlar için formülleri yoktur. Bunun nedeni, klasik bir bilgisayarın yalnızca bir kuantum bilgisayarda çalıştırılan devrelerden örnekleri okuyabilmesidir.
Bu sorunu çözmek için,
tfq.differentiators . Differentiators modülü birkaç standart farklılaşma tekniği sağlar. Kullanıcılar ayrıca gradyanları hesaplamak için kendi yöntemlerini de tanımlayabilirler—hem örnek tabanlı beklenti hesaplamasının "gerçek dünya" ayarında hem de analitik kesin dünyada. Sonlu fark gibi yöntemler, analitik/kesin bir ortamda genellikle en hızlıdır (duvar saati süresi). Daha yavaş (duvar saati zamanı) olsa da, parametre kaydırma veya stokastik yöntemler gibi daha pratik yöntemler genellikle daha etkilidir. Bir
tfq.differentiators.Differentiator . Differentiators.Differentiator somutlaştırılır ve create_ Differentiable_op ile mevcut bir
tfq.layers.Expectation
generate_differentiable_op
tfq.layers.SampledExpectation . Özel bir farklılaştırıcı uygulamak için
tfq.differentiators.Differentiator . Differentiators.Differentiator sınıfından devralın. Örnekleme veya durum vektörü hesaplaması için bir degrade işlemi tanımlamak için
tf.custom_gradient kullanın.
veri kümeleri
Kuantum hesaplama alanı büyüdükçe, daha fazla kuantum verisi ve model kombinasyonu ortaya çıkacak ve bu da yapısal karşılaştırmayı zorlaştıracaktır.
tfq.datasets modülü, kuantum makine öğrenimi görevleri için veri kaynağı olarak kullanılır. Model ve performans için yapılandırılmış karşılaştırmalar sağlar.
Büyük topluluk katkılarıyla,
tfq.datasets modülünün daha şeffaf ve tekrarlanabilir araştırmaları mümkün kılmak için büyümesi umulmaktadır. Kuantum kontrolü, fermiyonik simülasyon, faz geçişlerine yakın sınıflandırma, kuantum algılama, vb. alanlardaki özenle seçilmiş problemlerin tümü,
tfq.datasets ekleme için harika adaylardır. Yeni bir veri kümesi önermek için bir GitHub sorunu açın.