Thiết kế TensorFlow Quantum

TensorFlow Quantum (TFQ) được thiết kế cho các vấn đề của máy học lượng tử thời NISQ. Nó mang các nguyên thủy của tính toán lượng tử — như xây dựng các mạch lượng tử — vào hệ sinh thái TensorFlow. Các mô hình và hoạt động được xây dựng bằng TensorFlow sử dụng các nguyên thủy này để tạo ra các hệ thống lai lượng tử-cổ điển mạnh mẽ.

Sử dụng TFQ, các nhà nghiên cứu có thể xây dựng đồ thị TensorFlow bằng cách sử dụng tập dữ liệu lượng tử, mô hình lượng tử và các tham số điều khiển cổ điển. Tất cả chúng đều được biểu diễn dưới dạng tenxơ trong một đồ thị tính toán duy nhất. Kết quả của các phép đo lượng tử - dẫn đến các sự kiện xác suất cổ điển - được thu được bởi các hoạt động của TensorFlow. Đào tạo được thực hiện với API Keras tiêu chuẩn. Mô-đun tfq.datasets cho phép các nhà nghiên cứu thử nghiệm với các tập dữ liệu lượng tử mới và thú vị.

Cirq

Cirq là một khung lập trình lượng tử của Google. Nó cung cấp tất cả các hoạt động cơ bản — chẳng hạn như qubit, cổng, mạch và phép đo — để tạo, sửa đổi và gọi các mạch lượng tử trên máy tính lượng tử hoặc máy tính lượng tử mô phỏng. TensorFlow Quantum sử dụng các nguyên thủy Cirq này để mở rộng TensorFlow cho tính toán hàng loạt, xây dựng mô hình và tính toán gradient. Để có hiệu quả với TensorFlow Quantum, bạn nên hiệu quả với Cirq.

Nguyên thủy lượng tử TensorFlow

TensorFlow Quantum triển khai các thành phần cần thiết để tích hợp TensorFlow với phần cứng điện toán lượng tử. Để đạt được điều đó, TFQ giới thiệu hai nguyên mẫu kiểu dữ liệu:

  • Mạch lượng tử : Điều này đại diện cho các mạch lượng tử được xác định bởi Cirq ( cirq.Circuit ) trong TensorFlow. Tạo các lô mạch có kích thước khác nhau, tương tự như các lô điểm dữ liệu có giá trị thực khác nhau.
  • Tổng Pauli : Biểu diễn các tổ hợp tuyến tính của các tích tensor của các toán tử Pauli được xác định trong Cirq ( cirq.PauliSum ). Giống như các mạch, tạo hàng loạt các toán tử có kích thước khác nhau.

Hoạt động cơ bản

Sử dụng các nguyên thủy của mạch lượng tử trong tf.Tensor , TensorFlow Quantum triển khai các hoạt động xử lý các mạch này và tạo ra các đầu ra có ý nghĩa.

Các hoạt động TensorFlow được viết bằng C ++ được tối ưu hóa. Các hoạt động này lấy mẫu từ các mạch, tính toán các giá trị kỳ vọng và đưa ra trạng thái được tạo ra bởi các mạch nhất định. Viết các hoạt động linh hoạt và hiệu quả có một số thách thức:

  1. Các mạch không cùng kích thước. Đối với các mạch mô phỏng, bạn không thể tạo các hoạt động tĩnh (như tf.matmul hoặc tf.add ) và sau đó thay thế các số khác nhau cho các mạch có kích thước khác nhau. Các hoạt động này phải cho phép các kích thước động mà biểu đồ tính toán TensorFlow có kích thước tĩnh không cho phép.
  2. Dữ liệu lượng tử có thể tạo ra một cấu trúc mạch khác hoàn toàn. Đây là một lý do khác để hỗ trợ kích thước động trong hoạt động TFQ. Dữ liệu lượng tử có thể đại diện cho sự thay đổi cấu trúc đối với trạng thái lượng tử cơ bản được biểu thị bằng các sửa đổi đối với mạch gốc. Vì các điểm dữ liệu mới được hoán đổi vào và ra trong thời gian chạy, đồ thị tính toán TensorFlow không thể được sửa đổi sau khi nó được xây dựng, vì vậy cần hỗ trợ cho các cấu trúc khác nhau này.
  3. cirq.Circuits tương tự như đồ thị tính toán ở chỗ chúng là một chuỗi các phép toán — và một số có thể chứa các ký hiệu / chỗ dành sẵn. Điều quan trọng là làm cho điều này tương thích với TensorFlow nhất có thể.

Vì lý do hiệu suất, Eigen (thư viện C ++ được sử dụng trong nhiều hoạt động TensorFlow) không phù hợp cho mô phỏng mạch lượng tử. Thay vào đó, các trình mô phỏng mạch được sử dụng trong thí nghiệm lượng tử ngoài cổ điển được sử dụng làm bộ xác minh và được mở rộng làm nền tảng của hoạt động TFQ (tất cả đều được viết bằng lệnh AVX2 và SSE). Các Ops với các chữ ký chức năng giống hệt nhau đã được tạo ra bằng cách sử dụng một máy tính lượng tử vật lý. Chuyển đổi giữa máy tính lượng tử mô phỏng và vật lý dễ dàng như thay đổi một dòng mã. Các hoạt động này nằm trong circuit_execution_ops.py .

Lớp

Các lớp Lượng tử TensorFlow hiển thị việc lấy mẫu, kỳ vọng và tính toán trạng thái cho các nhà phát triển bằng giao diện tf.keras.layers.Layer . Thật tiện lợi khi tạo một lớp mạch cho các tham số điều khiển cổ điển hoặc cho các hoạt động đọc. Ngoài ra, bạn có thể tạo một lớp có mức độ phức tạp cao hỗ trợ mạch lô, giá trị tham số điều khiển hàng loạt và thực hiện các hoạt động đọc hàng loạt. Xem tfq.layers.Sample để làm ví dụ.

Người khác biệt

Không giống như nhiều phép toán TensorFlow, các vật quan sát trong mạch lượng tử không có công thức cho độ dốc tương đối dễ tính toán. Điều này là do máy tính cổ điển chỉ có thể đọc các mẫu từ các mạch được chạy trên máy tính lượng tử.

Để giải quyết vấn đề này, mô-đun tfq.differentiators cung cấp một số kỹ thuật phân biệt tiêu chuẩn. Người dùng cũng có thể xác định phương pháp của riêng họ để tính toán độ dốc — trong cả cài đặt “thế giới thực” của phép tính kỳ vọng dựa trên mẫu và thế giới chính xác phân tích. Các phương pháp như chênh lệch hữu hạn thường nhanh nhất (thời gian trên đồng hồ treo tường) trong môi trường phân tích / chính xác. Mặc dù chậm hơn (thời gian trên đồng hồ treo tường), các phương pháp thực tế hơn như thay đổi tham số hoặc phương pháp ngẫu nhiên thường hiệu quả hơn. Một tfq.differentiators.Differentiator được khởi tạo và gắn vào một op hiện có với generate_differentiable_op hoặc được chuyển tới phương thức khởi tạo của tfq.layers.Expectation hoặc tfq.layers.SampledExpectation . Để triển khai một bộ phân biệt tùy chỉnh, hãy kế thừa từ lớp tfq.differentiators.Differentiator . Để xác định một hoạt động gradient để lấy mẫu hoặc tính toán vectơ trạng thái, hãy sử dụng tf.custom_gradient .

Bộ dữ liệu

Khi lĩnh vực điện toán lượng tử phát triển, nhiều dữ liệu lượng tử và sự kết hợp mô hình sẽ phát sinh, khiến cho việc so sánh có cấu trúc trở nên khó khăn hơn. Mô-đun tfq.datasets được sử dụng làm nguồn dữ liệu cho các tác vụ học máy lượng tử. Nó đảm bảo các so sánh có cấu trúc cho mô hình và hiệu suất.

Người ta hy vọng rằng với sự đóng góp lớn của cộng đồng, mô-đun tfq.datasets sẽ phát triển để cho phép nghiên cứu minh bạch hơn và có thể tái tạo. Các vấn đề được quản lý cẩn thận trong: điều khiển lượng tử, mô phỏng fermionic, phân loại chuyển pha gần, cảm biến lượng tử, v.v. đều là những ứng cử viên tuyệt vời để bổ sung vào tfq.datasets . Để đề xuất một tập dữ liệu mới, hãy mở một vấn đề GitHub .