Trang này được dịch bởi Cloud Translation API.
Switch to English

Thiết kế lượng tử TensorFlow

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 lại tính nguyên thủy cho máy tính lượng tử, giống như xây dựng các mạch lượng tử cho hệ sinh thái TensorFlow. Các mô hình và hoạt động được xây dựng với 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 biểu đồ TensorFlow bằng cách sử dụng bộ 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ả đều được biểu diễn dưới dạng tenxơ trong một biểu đồ 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 lấy bởi các công cụ 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 các bộ dữ liệu lượng tử mới và thú vị.

Cirq

Cirq là một khung lập trình lượng tử từ Google. Nó cung cấp tất cả các hoạt động cơ bản, như các qubit, cổng, mạch và đo lường để 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 hàm 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 độ dốc. Để có hiệu quả với TensorFlow Quantum, đó là một ý tưởng tốt để có hiệu quả với Cirq.

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

TensorFlow Quantum thực hiện các thành phần cần thiết để tích hợp TensorFlow với phần cứng máy tính lượng tử. Cuối cùng, TFQ giới thiệu hai nguyên hàm kiểu dữ liệu:

  • Mạch lượng tử : Điều này thể hiện 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ô dữ liệu có giá trị thực khác nhau.
  • Pauli sum : Biểu diễn các tổ hợp tuyến tính của các sản phẩm tenxơ của các toán tử Pauli được định nghĩa trong Cirq ( cirq.PauliSum ). Giống như các mạch, tạo các lô toán tử có kích thước khác nhau.

Cơ bản ops

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

Các opor TensorFlow được viết bằng C ++ được tối ưu hóa. Các mẫu ops này 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 đã cho. Viết ops linh hoạt và biểu diễn có một số thách thức:

  1. Mạch không cùng kích 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 op này phải cho phép các kích thước động mà đồ thị 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 nhau hoàn toàn. Đây là một lý do khác để hỗ trợ kích thước động trong ops TFQ. Dữ liệu lượng tử có thể biểu thị một sự thay đổi cấu trúc đối với trạng thái lượng tử cơ bản được thể hiện bằng các sửa đổi đối với mạch ban đầu. Vì các điểm dữ liệu mới được hoán đổi trong và ngoài khi chạy, biểu đồ tính toán TensorFlow không thể được sửa đổi sau khi được xây dựng, do đó cần phải 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 hoạt động mà một số có thể chứa các biểu tượng / giữ chỗ. Điều quan trọng là làm cho điều này tương thích với TensorFlow càng tốt.

Vì lý do hiệu suất, Eigen (thư viện C ++ được sử dụng trong nhiều hoạt động của 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 tối cao lượng tử được sử dụng làm công cụ xác minh và mở rộng làm nền tảng của ops TFQ (tất cả được viết bằng hướng dẫn AVX2 và SSE). Ops với chữ ký chức năng giống hệt nhau đã được tạo ra sử dụng máy tính lượng tử vật lý. Chuyển đổi giữa một máy tính lượng tử mô phỏng và vật lý cũng dễ như thay đổi một dòng mã. Các op này được đặt trong circuit_execution_ops.py .

Lớp

Các lớp lượng tử TensorFlow trưng bày 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ó độ phức tạp cao hỗ trợ mạch lô, giá trị tham số điều khiển lô và thực hiện các thao tác đọc hàng loạt. Xem tfq.layers.Sample để biết ví dụ.

Khác biệt

Không giống như nhiều hoạt động của TensorFlow, các đài quan sát trong các 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ột máy tính cổ điển chỉ có thể đọc các mẫu từ các mạch 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 mình để tính toán độ dốc trong cả cài đặt kỳ vọng thế giới thực của cộng đồng về tính toán 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ư sự khác biệt hữu hạn thường là nhanh nhất (thời gian đồng hồ treo tường) trong một môi trường phân tích / chính xác. Trong khi chậm hơn (thời gian đồng hồ treo tường), các phương pháp thực tế hơn như dịch chuyển 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 liền với một op hiện với generate_differentiable_op , hoặc truyền cho constructor 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 thao tác chuyển màu để 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à kết hợp mô hình sẽ xuất hiện, khiến 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 nhiệm vụ học máy lượng tử. Nó đảm bảo so sánh có cấu trúc cho mô hình và hiệu suất.

Hy vọng rằng với sự đóng góp của cộng đồng lớn, 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: kiểm soát lượng tử, mô phỏng fermionic, phân loại gần chuyển pha, cảm biến lượng tử, v.v ... đều là những ứng cử viên tuyệt vời để bổ sung cho tfq.datasets . Để đề xuất một bộ dữ liệu mới, hãy mở một vấn đề GitHub .