Quantum Machine Learning
Học máy lượng tử (QML) huấn luyện các mạch lượng tử tham số hóa và kernel lượng tử bằng bộ tối ưu hóa cổ điển. Tìm hiểu cách hoạt động và tình hình hiện nay.
Học máy lượng tử (QML) áp dụng máy tính lượng tử vào các tác vụ học máy, thường bằng cách huấn luyện các mạch lượng tử có tham số, trong đó góc cổng đóng vai trò như trọng số model, hoặc dùng bộ xử lý lượng tử để tính độ tương đồng cho các phương pháp kernel. Một thanh ghi gồm n qubit được mô tả bằng 2^n biên độ phức, vì vậy ngay cả một mạch nhỏ cũng biến đổi một vector rất lớn; tuy nhiên, phép đo chỉ trả về một chuỗi bit ngẫu nhiên, và mọi đại lượng model cần đều phải được ước tính qua nhiều lần chạy lặp lại, gọi là shot. Lĩnh vực này cũng bao gồm việc áp dụng học máy cổ điển cho dữ liệu từ các thí nghiệm lượng tử; Jacob Biamonte, Seth Lloyd và cộng sự đã khảo sát cả hai hướng trong một bài tổng quan trên Nature năm 2017.
Mạch lượng tử biến phân#
Phần lớn QML trên phần cứng hiện nay là mô hình lai. Máy tính cổ điển mã hóa mỗi đầu vào thành các góc xoay; bộ xử lý lượng tử chạy mạch có tham số gồm các phép xoay và cổng rối lượng tử; các giá trị kỳ vọng đo được đưa vào hàm loss cổ điển để thuật toán tối ưu cổ điển tối thiểu hóa, thường bằng gradient descent thông thường. Các model này còn được gọi là mạng nơ-ron lượng tử, theo tên các lớp có thể huấn luyện của mạng nơ-ron cổ điển. Cùng vòng lặp này được dùng trong bộ giải riêng lượng tử biến phân (VQE), được giới thiệu năm 2014 để ước tính năng lượng trạng thái cơ bản của phân tử, và QAOA, một thuật toán biến phân dành cho các bài toán tổ hợp mà tối ưu hóa lượng tử hướng đến.
Lan truyền ngược không thể truy cập bên trong bộ xử lý lượng tử, vì vậy gradient được tính bằng quy tắc dịch tham số: với cổng xoay, đạo hàm chính xác của giá trị kỳ vọng bằng một nửa hiệu giữa các lần chạy có góc được dịch lần lượt +π/2 và -π/2. Mô phỏng bộ phân loại hai qubit bằng NumPy cho thấy toàn bộ vòng lặp:
import numpy as np
rng = np.random.default_rng(0)
x = rng.uniform(-np.pi, np.pi, size=(100, 2)) # 100 points with 2 features each
y = np.sign(np.cos(x[:, 0] - 1.0) * np.cos(x[:, 1] + 0.5)) # XOR-like labels
def circuit(features, theta):
"""Simulate RY encoding, trainable RY rotations, and a CNOT on 2 qubits, then return <Z> of qubit 2."""
half = (features + theta) / 2 # RY(theta) after RY(x) is one rotation by x + theta
state = np.kron([np.cos(half[0]), np.sin(half[0])], [np.cos(half[1]), np.sin(half[1])])
state = state[[0, 1, 3, 2]] # CNOT flips qubit 2 when qubit 1 is |1>
return state @ np.diag([1, -1, 1, -1]) @ state
theta = np.zeros(2)
for _ in range(100):
errors = np.array([circuit(xi, theta) for xi in x]) - y
for i in range(2): # parameter-shift rule: an exact gradient from two extra circuit runs
shift = np.eye(2)[i] * np.pi / 2
slopes = np.array([(circuit(xi, theta + shift) - circuit(xi, theta - shift)) / 2 for xi in x])
theta[i] -= 0.5 * np.mean(errors * slopes)
accuracy = np.mean([np.sign(circuit(xi, theta)) == yi for xi, yi in zip(x, y)])
print(f"theta = {theta.round(2)}, accuracy = {accuracy:.2f}")Đoạn mã in ra theta = [-0.99 0.4 ], accuracy = 0.97: mạch học được các độ lệch góc gần với -1.0 và 0.5 đã tạo ra nhãn, đồng thời phân loại đúng 97% điểm dữ liệu. CNOT khiến giá trị kỳ vọng của qubit thứ hai bằng tích của hai cosine đã mã hóa; nếu không có cổng này, qubit đó chỉ nhận biết đặc trưng thứ hai. Trên phần cứng, mỗi giá trị kỳ vọng sẽ là trung bình của hàng nghìn shot. PennyLane, Qiskit Machine Learning và TensorFlow Quantum cung cấp các thành phần tương tự cùng bộ mô phỏng và quyền truy cập vào bộ xử lý lượng tử thực.
Kernel lượng tử và model lai#
Kernel lượng tử ánh xạ hai đầu vào thành các trạng thái lượng tử bằng một mạch mã hóa cố định rồi ước tính độ chồng lấp của chúng; kết quả được dùng làm độ tương đồng trong máy vector hỗ trợ (SVM) cổ điển. Vojtěch Havlíček và cộng sự tại IBM trình diễn phương pháp này trên bộ xử lý siêu dẫn trong một bài báo đăng trên Nature năm 2019. Dữ liệu thực có nhiều đặc trưng hơn số qubit hiện có, vì vậy các pipeline trước tiên nén đầu vào bằng phân tích thành phần chính (PCA) hoặc mạng đã tiền huấn luyện. Năm 2020, Andrea Mari và cộng sự tại Xanadu sử dụng hình thức học chuyển giao này, đưa đặc trưng từ ResNet-18 đã tiền huấn luyện vào mạch biến phân 4 qubit để phân loại hình ảnh.
Tình hình về lợi thế lượng tử#
Lợi thế rõ ràng nhất nằm ở dữ liệu lượng tử. Năm 2022, Hsin-Yuan Huang và cộng sự tại Caltech và Google Quantum AI sử dụng tối đa 40 qubit siêu dẫn và 1.300 cổng lượng tử trên bộ xử lý Sycamore của Google để chứng minh rằng một mô hình học lưu trữ trạng thái lượng tử và xử lý chúng trên máy tính lượng tử có thể học các tính chất của hệ lượng tử với số thí nghiệm ít hơn theo cấp số nhân so với bất kỳ mô hình nào chỉ đo riêng từng bản sao.
Tốc độ tăng trên dữ liệu cổ điển ít được xác lập hơn. Các đề xuất ban đầu dựa trên thuật toán HHL năm 2009 cho hệ tuyến tính, vốn cần đầu vào thưa, có điều kiện tốt và đã được lưu trong bộ nhớ lượng tử; đến năm 2018, Ewin Tang tìm ra thuật toán cổ điển lấy cảm hứng từ lượng tử, loại bỏ mức tăng tốc theo cấp số nhân được tuyên bố cho hệ thống gợi ý lượng tử. Quá trình huấn luyện gặp hiện tượng plateau cằn cỗi, được Jarrod McClean và cộng sự xác định năm 2018: với nhiều mạch khởi tạo ngẫu nhiên, gradient giảm theo hàm mũ khi số qubit tăng, tương tự vấn đề gradient biến mất và cũng khiến số shot cần thiết tăng theo hàm mũ. Các bộ xử lý ngày nay là thiết bị lượng tử quy mô trung gian nhiễu (NISQ), theo cách gọi của John Preskill năm 2018; lỗi cổng của chúng giới hạn độ sâu mạch.
Tải dữ liệu là một nút thắt khác. Một ảnh RGB 640 x 640 duy nhất ở kích thước đầu vào mặc định của Ultralytics YOLO26 chứa 1.228.800 giá trị; mã hóa biên độ biểu diễn các giá trị này bằng 21 qubit, nhưng việc chuẩn bị một trạng thái 21 qubit bất kỳ cần số lượng cổng tăng theo 2²¹, tức xấp xỉ số thao tác mà một CPU cần để đọc các pixel.










