Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Desain TensorFlow Quantum

TensorFlow Quantum (TFQ) dirancang untuk masalah pembelajaran mesin kuantum era NISQ. Ini membawa primitif komputasi kuantum — seperti membangun sirkuit kuantum — ke ekosistem TensorFlow. Model dan operasi yang dibangun dengan TensorFlow menggunakan primitif ini untuk membuat sistem hybrid kuantum-klasik yang kuat.

Menggunakan TFQ, peneliti dapat membuat grafik TensorFlow menggunakan dataset kuantum, model kuantum, dan parameter kontrol klasik. Ini semua direpresentasikan sebagai tensor dalam grafik komputasi tunggal. Hasil pengukuran kuantum — yang mengarah pada peristiwa probabilistik klasik — diperoleh oleh TensorFlow ops. Pelatihan dilakukan dengan API Keras standar. Modul tfq.datasets memungkinkan peneliti untuk bereksperimen dengan dataset kuantum baru dan menarik.

Cirq

Cirq adalah kerangka pemrograman kuantum dari Google. Ini menyediakan semua operasi dasar — ​​seperti qubit, gerbang, sirkuit, dan pengukuran — untuk membuat, memodifikasi, dan mengaktifkan sirkuit kuantum pada komputer kuantum, atau komputer kuantum yang disimulasikan. TensorFlow Quantum menggunakan primitif Cirq ini untuk memperluas TensorFlow untuk komputasi batch, pembangunan model, dan komputasi gradien. Agar efektif dengan TensorFlow Quantum, itu ide yang baik untuk menjadi efektif dengan Cirq.

Primitif TensorFlow Quantum

TensorFlow Quantum mengimplementasikan komponen yang diperlukan untuk mengintegrasikan TensorFlow dengan perangkat keras komputasi kuantum. Untuk itu, TFQ memperkenalkan dua tipe data primitif:

  • Sirkuit kuantum : Ini mewakili sirkuit kuantum yang ditentukan Cirq ( cirq.Circuit ) dalam TensorFlow. Buat kumpulan sirkuit dengan ukuran berbeda-beda, mirip dengan kumpulan titik data nyata yang berbeda.
  • Pauli sum : Merupakan kombinasi linear dari produk tensor dari operator Pauli yang didefinisikan dalam Cirq ( cirq.PauliSum ). Seperti sirkuit, buat kumpulan operator dengan ukuran berbeda-beda.

Operasi mendasar

Menggunakan primitif sirkuit kuantum dalam tf.Tensor , TensorFlow Quantum mengimplementasikan ops yang memproses sirkuit ini dan menghasilkan output yang bermakna.

Operasi TensorFlow ditulis dalam C ++ yang dioptimalkan. Sampel ops ini dari sirkuit, menghitung nilai ekspektasi, dan menampilkan keadaan yang dihasilkan oleh sirkuit yang diberikan. Menulis ops yang fleksibel dan pemain memiliki beberapa tantangan:

  1. Sirkuit tidak memiliki ukuran yang sama. Untuk sirkuit yang disimulasikan, Anda tidak dapat membuat operasi statis (seperti tf.matmul atau tf.add ) dan kemudian mengganti angka yang berbeda untuk sirkuit dengan ukuran yang berbeda. Ops ini harus memungkinkan untuk ukuran dinamis yang grafik penghitungan TensorFlow berukuran statis tidak memungkinkan.
  2. Data kuantum dapat menginduksi struktur sirkuit yang berbeda sama sekali. Ini adalah alasan lain untuk mendukung ukuran dinamis dalam operasi TFQ. Data kuantum dapat mewakili perubahan struktural ke keadaan kuantum yang mendasarinya yang diwakili oleh modifikasi ke sirkuit asli. Karena titik-titik data baru ditukar masuk dan keluar pada saat runtime, grafik penghitungan TensorFlow tidak dapat dimodifikasi setelah dibangun, sehingga dukungan untuk berbagai struktur ini diperlukan.
  3. cirq.Circuits mirip dengan menghitung grafik karena mereka adalah serangkaian operasi — dan beberapa mungkin mengandung simbol / placeholder. Penting untuk menjadikan ini sebagai kompatibel dengan TensorFlow mungkin.

Untuk alasan kinerja, Eigen (pustaka C ++ yang digunakan di banyak operasi TensorFlow) tidak cocok untuk simulasi rangkaian kuantum. Alih-alih, simulator rangkaian yang digunakan dalam eksperimen supremasi kuantum digunakan sebagai pengukur dan diperluas sebagai dasar operasi TFQ (semua ditulis dengan instruksi AVX2 dan SSE). Ops dengan tanda tangan fungsional identik dibuat yang menggunakan komputer kuantum fisik. Beralih antara komputer kuantum yang disimulasikan dan fisik semudah mengubah satu baris kode. Operasi ini terletak di circuit_execution_ops.py .

Layers

Lapisan Quantum TensorFlow mengekspos pengambilan sampel, harapan, dan perhitungan negara untuk pengembang menggunakan antarmuka tf.keras.layers.Layer . Lebih mudah untuk membuat lapisan sirkuit untuk parameter kontrol klasik atau untuk operasi pembacaan. Selain itu, Anda dapat membuat lapisan dengan tingkat kerumitan tinggi yang mendukung rangkaian batch, nilai parameter kontrol batch, dan melakukan operasi pembacaan batch. Lihat tfq.layers.Sample . Contoh untuk contoh.

Diferensiator

Tidak seperti banyak operasi TensorFlow, yang dapat diamati dalam sirkuit kuantum tidak memiliki rumus untuk gradien yang relatif mudah untuk dihitung. Ini karena komputer klasik hanya dapat membaca sampel dari sirkuit yang dijalankan pada komputer kuantum.

Untuk mengatasi masalah ini, modul tfq.differentiators menyediakan beberapa teknik diferensiasi standar. Pengguna juga dapat menentukan metode mereka sendiri untuk menghitung gradien — dalam pengaturan “dunia nyata” perhitungan ekspektasi berbasis sampel, dan dunia eksak analitik. Metode seperti beda hingga seringkali paling cepat (waktu jam dinding) dalam lingkungan analitik / tepat. Walaupun lebih lambat (waktu jam dinding), metode yang lebih praktis seperti perubahan parameter atau metode stokastik seringkali lebih efektif. tfq.differentiators.Differentiator adalah instantiated dan dilampirkan ke op yang ada dengan generate_differentiable_op , atau diteruskan ke konstruktor tfq.layers.Expectation atau tfq.layers.SampledExpectation . Untuk menerapkan pembeda kustom, mewarisi dari kelas tfq.differentiators.Differentiator . Untuk menentukan operasi gradien untuk pengambilan sampel atau perhitungan vektor keadaan, gunakan tf.custom_gradient .

Kumpulan data

Ketika bidang komputasi kuantum tumbuh, lebih banyak data kuantum dan kombinasi model akan muncul, membuat perbandingan terstruktur lebih sulit. Modul tfq.datasets digunakan sebagai sumber data untuk tugas pembelajaran mesin kuantum. Ini memastikan perbandingan terstruktur untuk model dan kinerja.

Diharapkan bahwa dengan kontribusi masyarakat yang besar, modul tfq.datasets akan tumbuh untuk memungkinkan penelitian yang lebih transparan dan dapat direproduksi. Masalah yang dikuratori dengan hati-hati dalam: kontrol kuantum, simulasi fermionik, klasifikasi dekat transisi fase, penginderaan kuantum, dll. Semuanya adalah kandidat yang bagus untuk penambahan tfq.datasets . Untuk mengajukan dataset baru, buka masalah GitHub .