Quantum Machine Learning
量子機械学習(QML)は、古典的な最適化器を使ってパラメーター化された量子回路と量子カーネルを学習します。仕組みと現状を解説します。
量子機械学習(QML)は、機械学習のタスクに量子コンピューターを応用します。多くの場合、ゲート角度がモデルの重みの役割を果たすパラメーター化量子回路を学習するか、量子プロセッサーでカーネル法の類似度を計算します。n量子ビットのレジスターは2^n個の複素振幅で表されるため、小さな回路でも非常に大きなベクトルを変換します。しかし、測定で得られるのはランダムなビット列1つだけです。モデルに必要なすべての量は、ショットと呼ばれる多数回の反復実行から推定する必要があります。この分野には、量子実験のデータに古典的な学習を適用する研究も含まれます。Jacob Biamonte、Seth Lloydらは、2017年のNatureのレビューで両方の方向性を概説しました。
変分量子回路#
現在のハードウェアで行われるQMLの大部分はハイブリッド方式です。古典コンピューターが各入力を回転角としてエンコードし、量子プロセッサーが回転ゲートとエンタングルメントゲートを含むパラメーター化回路を実行します。測定された期待値は古典的な損失関数に入力され、通常の勾配降下法などの古典的な最適化アルゴリズムで最小化されます。これらのモデルは、古典的なニューラルネットワークの学習可能な層になぞらえて、量子ニューラルネットワークとも呼ばれます。同じループは、分子の基底状態エネルギーを推定するため2014年に導入された変分量子固有値ソルバー(VQE)や、量子最適化が対象とする組合せ問題向けの変分アルゴリズムQAOAでも使われます。
誤差逆伝播では量子プロセッサー内部を参照できないため、勾配はパラメーターシフト則から求めます。回転ゲートでは、期待値の厳密な微分は、角度を+π/2と-π/2だけシフトした実行結果の差の半分に等しくなります。NumPyで2量子ビット分類器をシミュレートすると、処理全体を確認できます。
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}")theta = [-0.99 0.4 ], accuracy = 0.97が出力されます。回路はラベル生成に使われた-1.0と0.5に近い角度オフセットを学習し、点の97%を正しく分類します。CNOTによって、2番目の量子ビットの期待値はエンコードされた2つの余弦の積になります。CNOTがなければ、その量子ビットが参照するのは2番目の特徴量だけです。実機では、各期待値はそれ自体が数千ショットの平均になります。PennyLane、Qiskit Machine Learning、TensorFlow Quantumは、シミュレーターと実際の量子プロセッサーへのアクセス機能を備え、同じ構成要素を提供します。
量子カーネルとハイブリッドモデル#
量子カーネルは、固定されたエンコーディング回路を使って2つの入力を量子状態に写像し、その内積を推定します。内積は古典的なサポートベクターマシン(SVM)における類似度として機能します。IBMのVojtěch Havlíčekらは、2019年のNature論文で超伝導プロセッサーを使ってこの手法を実証しました。実データの特徴量は利用可能な量子ビットよりもはるかに多いため、パイプラインではまず主成分分析(PCA)または事前学習済みネットワークで入力を圧縮します。XanaduのAndrea Mariらは2020年にこの形式の転移学習を使い、事前学習済みのResNet-18から得た特徴量を4量子ビットの変分回路に渡して画像分類を行いました。
量子優位性の現状#
最も明確な優位性は量子データに関するものです。2022年、CaltechとGoogle Quantum AIのHsin-Yuan Huangらは、GoogleのSycamoreプロセッサーで最大40個の超伝導量子ビットと1,300個の量子ゲートを使用しました。量子状態を保存して量子コンピューター上で処理する学習器は、各コピーを個別に測定するだけのどの学習器よりも、指数関数的に少ない実験で量子システムの性質を学習できることを示しました。
古典データに対する高速化については、結論が出ていません。初期の提案は、線形システム向けの2009年のHHLアルゴリズムを基盤としていました。このアルゴリズムには、量子メモリーにすでに格納されている疎で条件の良い入力が必要です。2018年にはEwin Tangが量子着想型の古典アルゴリズムを発見し、量子レコメンデーションシステムで主張されていた指数関数的な高速化を取り除きました。学習では、Jarrod McCleanらが2018年に特定した「荒涼とした台地」問題に直面します。ランダムに初期化した多くの回路では、量子ビット数に対して勾配が指数関数的に小さくなります。これは勾配消失問題に相当する量子版であり、必要なショット数も指数関数的に増加します。現在のプロセッサーは、John Preskillが2018年に名付けたノイズの多い中規模量子(NISQ)デバイスであり、ゲートのエラーが回路の深さを制限します。
データの読み込みもさらなるボトルネックです。Ultralytics YOLO26のデフォルト入力サイズである640 x 640のRGB画像1枚には1,228,800個の値が含まれ、振幅エンコーディングでは21量子ビットに収められます。しかし、任意の21量子ビット状態を準備するには2²¹に比例してゲート数が増加し、CPUがピクセルを読み込むのとほぼ同じ数の演算が必要になります。










