TensorFlow Quantum (TFQ) được thiết kế cho các vấn đề về học máy lượng tử thời NISQ. Nó mang những tính năng cơ bản của điện 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 những nguyên tắc cơ bản 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 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ả đều được biểu diễn dưới dạng tensor 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 các hoạt động của TensorFlow thu được. Việc đà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ị.
vòng tròn
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 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, bạn nên sử dụng Cirq một cách hiệu quả.
Nguyên hàm 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 mục đích đó, TFQ giới thiệu hai kiểu dữ liệu nguyên thủy:
- Mạch lượng tử : Điều này thể hiện các mạch lượng tử được xác định bằng 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 thị các tổ hợp tuyến tính của 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 ra các nhóm toán tử có kích thước khác nhau.
Hoạt động cơ bản
Bằng cách sử dụng các mạch lượng tử nguyên thủy 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 kết quả đầu ra có ý nghĩa.
Các hoạt động của 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 do các mạch nhất định tạo ra. Việc viết các hoạt động linh hoạt và hiệu quả có một số thách thức:
- Các mạch không có 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ặctf.add
) rồi 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. - Dữ liệu lượng tử có thể tạo ra một cấu trúc mạch hoàn toàn khác. Đâ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ể thể hiện 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 ban đầu. Vì các điểm dữ liệu mới được hoán đổi vào và ra trong thời gian chạy, nên không thể sửa đổi biểu đồ tính toán TensorFlow 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.
-
cirq.Circuits
tương tự như biểu đồ điện toán ở chỗ chúng là một chuỗi các thao tác—và một số có thể chứa các ký hiệu/phần giữ chỗ. Điều quan trọng là làm cho tính năng 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 của TensorFlow) không phù hợp lắm cho việc 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 công cụ xác minh và mở rộng làm nền tảng của các hoạt động TFQ (tất cả đều được viết bằng lệnh AVX2 và SSE). Các hoạt động có chữ ký chức năng giống hệt nhau đã được tạo ra bằng cách sử dụng máy tính lượng tử vật lý. Việc chuyển đổi giữa máy tính lượng tử mô phỏng và vật lý cũng dễ dàng như thay đổi một dòng mã. Các hoạt động này được đặt 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 thuận tiện 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ố kiểm soát lô và thực hiện các hoạt động đọc hàng loạt. Xem tfq.layers.Sample
để biết ví dụ.
Sự khác biệt
Không giống như nhiều hoạt động TensorFlow, các vật thể quan sát được trong mạch lượng tử không có công thức tính gradient 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 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 lấy vi phân tiêu chuẩn. Người dùng cũng có thể xác định phương pháp riêng của mình để tính toán độ dốc—trong cả cài đặt “thế giới thực” của tính toán kỳ vọng dựa trên mẫu và thế giới phân tích chính xác. Các phương pháp như sai phân hữu hạn thường nhanh nhất (thời gian đồ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 đồng hồ treo tường), như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 vào một op hiện có với generate_differentiable_op
hoặc được chuyển đến hàm tạo của tfq.layers.Expectation
hoặc tfq.layers.SampledExpectation
. Để triển khai 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 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, sẽ xuất hiện nhiều sự kết hợp mô hình và dữ liệu lượng tử hơ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 tác 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 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 và có thể tái sản xuất hơn. 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 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 vào tfq.datasets
. Để đề xuất một tập dữ liệu mới, hãy mở vấn đề GitHub .