# 量子機器學習 (Quantum Machine Learning, QML)
## 1. QML 簡介與量子優勢
量子機器學習結合**量子計算**和**機器學習**的思想,旨在利用量子電腦處理機器學習任務,以期望在某些情況下取得比經典方法更高的效率 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives)) ([BQP - Wikipedia](https://en.wikipedia.org/wiki/BQP#:~:text=In%20computational%20complexity%20theory%20%2C,complexity%20class%20%20%2060))。QML 的動機來自於量子計算提供的巨量資訊並行處理能力:量子位元可處於疊加態,一次操作即能涵蓋指數量級的狀態組合,有可能加速高維度線性代數計算和優化問題 ([[2310.10315] A Survey on Quantum Machine Learning: Current Trends, Challenges, Opportunities, and the Road Ahead](https://ar5iv.org/html/2310.10315v3#:~:text=concept%20that%20indicates%20that%20a,that%20a%20set%20of%20problems)) ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。例如,Shor 演算法(量子多項式時間)將整數分解問題(目前經典演算法未找到多項式解法)化為量子可快速求解;另一例是 Harrow–Hassidim–Lloyd(HHL)線性方程算法,對稀疏良條件矩陣 $A$ 求解 $A\mathbf{x}=\mathbf{b}$ 可在 ${\rm poly}(\log N,\kappa)$ 時間完成,相較經典 $O(N\sqrt{\kappa})$ 具有指數級加速 ([[0811.3171] Quantum algorithm for solving linear systems of equations](https://arxiv.org/abs/0811.3171#:~:text=expectation%20value%20of%20some%20operator,over%20the%20best%20classical%20algorithm))。此外,Google 在 2019 年的 Sycamore 實驗中,成功在數百秒內完成了經典超級電腦需耗費數萬年才完成的隨機電路採樣問題 ([[2310.10315] A Survey on Quantum Machine Learning: Current Trends, Challenges, Opportunities, and the Road Ahead](https://ar5iv.org/html/2310.10315v3#:~:text=concept%20that%20indicates%20that%20a,that%20a%20set%20of%20problems)),這些實驗都展示了量子優勢的潛力。需要注意的是,目前並非所有機器學習問題都有已證明的量子優勢,許多 QML 方案仍處在理論研究階段或受到雜訊限制,但潛在應用已涵蓋圖像辨識、語音識別、化學分子模擬等領域 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives)) ([[2310.10315] A Survey on Quantum Machine Learning: Current Trends, Challenges, Opportunities, and the Road Ahead](https://ar5iv.org/html/2310.10315v3#:~:text=concept%20that%20indicates%20that%20a,that%20a%20set%20of%20problems))。
- **複雜度類別**:在計算複雜度理論中,「有界錯誤量子多項式時間」(BQP)是量子電腦可在多項式時間內解決之判定問題類 ([BQP - Wikipedia](https://en.wikipedia.org/wiki/BQP#:~:text=In%20computational%20complexity%20theory%20%2C,complexity%20class%20%20%2060))。BQP 包含了經典多項式時間類 P 所有問題,甚至可解決許多已知對應經典演算法困難的問題(如質因數分解)。從定義上說,BQP 問題可由量子演算法在多項式時間內,並保證成功機率至少 $2/3$ ([BQP - Wikipedia](https://en.wikipedia.org/wiki/BQP#:~:text=In%20computational%20complexity%20theory%20%2C,complexity%20class%20%20%2060))。許多名為「量子優勢」或「量子霸權」的研究都在尋找屬於 BQP 但無已知 P 演算法可解的問題來展示量子電腦的實質效能優勢 ([[2310.10315] A Survey on Quantum Machine Learning: Current Trends, Challenges, Opportunities, and the Road Ahead](https://ar5iv.org/html/2310.10315v3#:~:text=concept%20that%20indicates%20that%20a,that%20a%20set%20of%20problems)) ([BQP - Wikipedia](https://en.wikipedia.org/wiki/BQP#:~:text=In%20computational%20complexity%20theory%20%2C,complexity%20class%20%20%2060))。
- **QML 模式**:QML 算法可依據資料和計算流程是經典或量子的組合分成不同類型,如「CC、CQ、QC、QQ」模型(即 Classical-Classical、Classical-Quantum、Quantum-Classical、Quantum-Quantum)等。以 CC 模式為例,資料輸入與處理均為經典方式;CQ 模式指經典資料輸入、量子處理、再轉為經典輸出;QC 模式較少見,指量子資料輸入但最後以經典方法處理;QQ 模式則指完全量子輸入與量子處理(輸入、輸出皆為量子態)。其中 CQ 是目前最常見的 QML 架構:先將經典資料編碼到量子態(特徵映射),再由可參數化量子電路處理,最後測量得到經典結果。這些混合模式允許我們在 NISQ 器件上發展半經典、半量子的方法。
## 2. QML 架構與應用分類
量子機器學習演算法可分為多種架構類型,主要視**資料來源**(經典或量子)與**計算單元**(經典或量子)而定:
- **CC 模型**(Classical Data → Classical Algo → Classical Output):純經典的機器學習流程,作為對照組。
- **CQ 模型**(Classical Data → Quantum Algo → Classical Output):將經典資料經量子特徵映射後交給可參數化量子電路處理,再透過測量得出分類/迴歸結果。多數在 NISQ 時代提出的 QML 方法屬於此類。
- **QC 模型**(Quantum Data → Classical Algo):資料本身來自量子實驗(如量子態),先以經典方式做前處理後,交由經典機器學習方法處理。這種模式常見於量子實驗數據分析。
- **QQ 模型**(Quantum Data → Quantum Algo → Quantum Output):全量子流程,對純量子態資料進行量子算法處理並保留量子輸出,常見於純粹理論探討或量子通信任務。
這些模式之間並非絕對分離,實際應用中常見混合(如量子電路層疊多層的 QNN 都可視為 CQ 或 QQ 模型的一種)。實際應用中,量子機器學習可用於**監督學習**(分類、迴歸)、**非監督學習**(聚類、降維)及**強化學習**等場景。典型例子包括使用量子支持向量機(QSVM)進行資料分類、量子優化方法做社群偵測等。總之,QML 架構因應不同資料型態與問題性質而異,核心都在**使用量子態(希爾伯空間)來表示和處理資料**,並依問題需求選擇合適的參數化量子電路或量子迴路。
## 3. 代表性 QML 方法
1. **量子核方法 (Quantum Kernel Methods)**:量子核方法基於「核技巧」的思想,將資料透過量子電路映射到高維量子態空間,再以量子態內積定義核函數。具體地,對兩個輸入資料 $\mathbf{x}_i,\mathbf{x}_j$,先分別構造編碼電路 $U(\mathbf{x})$,使初始態 $|0^N\rangle$ 經映射後得到量子態 $|\phi(\mathbf{x})\rangle$。則量子核函數可取為兩態內積的模平方:
$$
K(\mathbf{x}_i,\mathbf{x}_j) = |\langle\phi(\mathbf{x}_i)\,|\,\phi(\mathbf{x}_j)\rangle|^2
= \bigl|\langle 0^N|\,U^\dagger(\mathbf{x}_j)\,U(\mathbf{x}_i)\,|0^N\rangle\bigr|^2.
$$
透過多次執行量子電路並量測,全真態 $|0^N\rangle$ 出現的機率即為內積值的估計值 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is))。將此量子核代入支持向量機(SVM)等經典機器學習演算法中,可完成量子支持向量機(QSVM)的分類訓練。理論上,量子核若設計得足夠「複雜」,可能超越任何已知的經典核方法,對某些高維度資料分類展現量子優勢 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is))。
2. **參數化量子神經網路 (Quantum Neural Networks, QNN)**:QNN 是將可參數化量子電路用作類似神經網路的學習模型 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。通常結構包括兩部分:資料映射(feature map)電路 $U(\mathbf{x})$ 和參數化的變分電路 $U_{\rm var}(\boldsymbol{\theta})$(稱為 ansatz)。輸入資料 $\mathbf{x}$ 先被編碼到量子態 $|\phi(\mathbf{x})\rangle = U(\mathbf{x})|0^N\rangle$,再由 $U_{\rm var}(\boldsymbol{\theta})$ 處理,最後對某個觀察算符 $M$(例如量子比特的 $Z$ 测量)取期望值得出模型輸出。整個 QNN 模型的輸出可寫作:
$$
\langle M\rangle = \langle\psi|M|\psi\rangle
= \langle\phi(\mathbf{x})|\;U_{\rm var}^\dagger(\boldsymbol{\theta})\;M\;U_{\rm var}(\boldsymbol{\theta})\;|\phi(\mathbf{x})\rangle,
$$
其中 $|\psi\rangle = U_{\rm var}(\boldsymbol{\theta})\,|\phi(\mathbf{x})\rangle$ 為最終量子態。若將 $M$ 取為某投影算符 $|\sigma\rangle\langle\sigma|$,則模型輸出 $\langle M\rangle = |\langle\sigma'(\boldsymbol{\theta})|\phi(\mathbf{x})\rangle|^2$(其中 $|\sigma'(\boldsymbol{\theta})\rangle = U_{\rm var}^\dagger(\boldsymbol{\theta})|\sigma\rangle$),即 QNN 與資料映射態之間的內積 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811))。這說明 QNN 在本質上也等價於學習一組可調核函數,並透過參數化量子電路學習特徵空間的表徵 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811)) ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。實際上,QNN 的設計多借鑒古典神經網路概念(層、激活函數等),但實現上使用量子閘(例如 $R_X,R_Y,R_Z$ 旋轉閘)建立可參數電路,並用參數更新算法(例如 SPSA、Adam)進行訓練 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。
3. **量子奇異值轉換 (Quantum Singular Value Transformation, QSVT)**:QSVT 是一種通用框架,可用來設計量子算法以對矩陣的奇異值應用多項式變換 ([Quantum singular value transformation - Wikipedia](https://en.wikipedia.org/wiki/Quantum_singular_value_transformation#:~:text=The%20fundamental%20algorithm%20of%20QSVT,singular%20value%20transformation))。其核心思想是「區塊編碼」(block-encoding):將待處理的矩陣 $A$ 編碼進較大維度的酉矩陣 $U$(使 $A$ 出現在 $U$ 的某子區塊)。QSVT 允許只使用 $d$ 次這樣的區塊編碼電路,就將 $A$ 的奇異值轉換為多項式 $p(A,A^\dagger)$ 的奇異值 ([Quantum singular value transformation - Wikipedia](https://en.wikipedia.org/wiki/Quantum_singular_value_transformation#:~:text=The%20fundamental%20algorithm%20of%20QSVT,singular%20value%20transformation)),從而可高效實現如 Hamiltonian 模擬、量子線性方程求解(HHL)、量子傅立葉轉換等演算法 ([Quantum singular value transformation - Wikipedia](https://en.wikipedia.org/wiki/Quantum_singular_value_transformation#:~:text=The%20fundamental%20algorithm%20of%20QSVT,singular%20value%20transformation))。例如 HHL 演算法可視為 QSVT 的一種應用,它對矩陣 $\Lambda$ 的奇異值(本質上是本徵值)做倒數操作。QSVT 的威力在於理論上可達到與多項式階數線性增長的編碼複雜度,包含許多已知量子優化演算法在內,是量子代數計算的基石之一 ([Quantum singular value transformation - Wikipedia](https://en.wikipedia.org/wiki/Quantum_singular_value_transformation#:~:text=The%20fundamental%20algorithm%20of%20QSVT,singular%20value%20transformation))。
## 4. 關鍵數學公式與推導
- **量子位元(qubit)狀態表示**:一個量子位元的純態可表示為複振幅線性組合
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle, \quad \text{其中 }|\alpha|^2+|\beta|^2 = 1.
$$
這相當於希爾伯空間 $\mathbb{C}^2$ 中的單位向量。也可用布洛赫球(Bloch sphere)參數化:令 $\alpha=\cos(\theta/2),\;\beta=e^{i\varphi}\sin(\theta/2)$,其中 $\theta\in[0,\pi],\;\varphi\in[0,2\pi)$。布洛赫球是一個三維單位球體,每個球面上的點對應一個純態 ([Bloch sphere - Wikipedia](https://en.wikipedia.org/wiki/Bloch_sphere#:~:text=ImageBloch%20sphere)),北極通常對應 $|0\rangle$、南極對應 $|1\rangle$。這表示量子位元的任意純態都可視為在球面上由 $(\theta,\varphi)$ 唯一標定。
- **量子閘與參數化門**:量子閘對應于作用在量子態上的酉矩陣。例如 Pauli-**X** 閘(類似經典的 NOT)對 $|0\rangle,|1\rangle$ 交換:$X|0\rangle=|1\rangle,\;X|1\rangle=|0\rangle$。旋轉閘 $R_n(\phi)=\exp(-i\phi\,\sigma_n/2)$ 可將量子態繞 $n$ 軸旋轉。例如繞 $x$ 軸的旋轉:
$$
R_x(\theta) = e^{-i\theta X/2}
= \cos\frac\theta2\,I - i\sin\frac\theta2\,X.
$$
作用於基態 $|0\rangle$ 上可導出 $R_x(\theta)|0\rangle = \cos\frac\theta2\,|0\rangle - i\sin\frac\theta2\,|1\rangle$。類似地,$R_y(\theta)$ 和 $R_z(\theta)$ 分別繞 $y,z$ 軸旋轉:$R_y(\theta)|0\rangle = \cos(\theta/2)|0\rangle + \sin(\theta/2)|1\rangle$。這些旋轉門通常用於參數化電路中,訓練時調整角度 $\theta$。任何單量子位元酉矩陣皆可由這類旋轉與相位門組合而得。
- **量子神經網路輸出與測量**:如前所述,QNN 模型將經典資料編碼為量子態 $|\phi(\mathbf{x})\rangle$ 後,再經由參數化門 $U_{\rm var}(\boldsymbol{\theta})$ 得到輸出態 $|\psi\rangle=U_{\rm var}(\boldsymbol{\theta})|\phi(\mathbf{x})\rangle$,最後對某觀察量 $M$(例如多比特 $Z$-閘的張量積)取期望值。數學上:
$$
\langle M\rangle \;=\; \langle\psi|M|\psi\rangle
\;=\; \langle\phi(\mathbf{x})|\;U_{\rm var}^\dagger(\boldsymbol{\theta})\;M\;U_{\rm var}(\boldsymbol{\theta})\;|\phi(\mathbf{x})\rangle.
$$
若將 $M=|\sigma\rangle\langle\sigma|$ 寫為一投影算符,可進一步得到:
$$
\langle M\rangle = \langle \phi(\mathbf{x})|\sigma'(\boldsymbol{\theta})\rangle\langle\sigma'(\boldsymbol{\theta})|\phi(\mathbf{x})\rangle
= \bigl|\langle \sigma'(\boldsymbol{\theta})|\phi(\mathbf{x})\rangle\bigr|^2,
$$
其中 $|\sigma'(\boldsymbol{\theta})\rangle = U_{\rm var}^\dagger(\boldsymbol{\theta})\,|\sigma\rangle$ ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811))。這顯示 QNN 的測量值等同於資料向量與參數化狀態向量之間的內積,是一種可調核函數的實現 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811))。
- **量子核函數公式**:量子核方法中,將經典輸入 $\mathbf{x}$ 映射為量子態 $|\phi(\mathbf{x})\rangle = U(\mathbf{x})|0^N\rangle$,其核函數定義為兩量子態的內積:
$$
K(\mathbf{x}_i,\mathbf{x}_j) \;=\; \bigl|\langle\phi(\mathbf{x}_i)\,|\,\phi(\mathbf{x}_j)\rangle\bigr|^2
= \bigl|\langle 0^N|\,U^\dagger(\mathbf{x}_j)\,U(\mathbf{x}_i)\,|0^N\rangle\bigr|^2 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is)).
$$
由此可見,量子電路編碼不同輸入後,相互重疊的概率正是核值。我們可透過插入額外量子位元和重疊測量(或多次執行電路計算全部 0 結果的頻率)來估計這個核 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is))。這一公式是量子支持向量機(QSVM)的基礎。
- **量子體積 (Quantum Volume) 指標**:量子體積是一個衡量量子計算機整體表現的基準指標,考慮了量子比特數量、電路深度及雜訊水平等。IBM 將量子體積定義為 $V_Q=2^m$,其中 $m=\max_{n\le N}\min(n,d(n))$,$N$ 為物理量子位元數量,$d(n)$ 是可用 $n$ 個量子位元達到的最大電路深度。具體而言,對任意選取 $n$ 個位元,允許最大深度約 $d(n)\approx 1/(n\,\varepsilon_{\rm eff}(n))$($\varepsilon_{\rm eff}$ 為有效錯誤率) ([Quantum volume - Wikipedia](https://en.wikipedia.org/wiki/Quantum_volume#:~:text=In%202019%2C%20IBM%27s%20researchers%20modified,13)),量子體積取在所有 $n$ 下 $\min(n,d(n))$ 的最大值的指數。公式表示為:
$$
\log_2 V_Q \;=\; \max_{n\le N}\min\bigl(n,\;d(n)\bigr)\,,
\quad d(n)\simeq\frac{1}{n\,\varepsilon_{\rm eff}(n)} ([Quantum volume - Wikipedia](https://en.wikipedia.org/wiki/Quantum_volume#:~:text=In%202019%2C%20IBM%27s%20researchers%20modified,13)).
$$
大體上,量子體積越高,代表該平台能可靠執行更大、更複雜的量子電路 ([Quantum volume - Wikipedia](https://en.wikipedia.org/wiki/Quantum_volume#:~:text=Metric%20for%20a%20quantum%20computer%27s,capabilities)) ([Quantum volume - Wikipedia](https://en.wikipedia.org/wiki/Quantum_volume#:~:text=In%202019%2C%20IBM%27s%20researchers%20modified,13))。目前世界紀錄(2024 年)約為 $2^{21}$ ([Quantum volume - Wikipedia](https://en.wikipedia.org/wiki/Quantum_volume#:~:text=The%20world%20record%2C%20as%20of,of%20historically%20achieved%20quantum%20volumes)),這一指標常用於比較不同架構量子機器的整體性能。
## 5. 實作範例:Qiskit 與 PennyLane
在實作層面,可使用開源框架(如 Qiskit、PennyLane 等)構建簡單的 QML 模型並在模擬器或實機上執行。兩者皆支援定義參數化量子電路、整合經典優化器、並提供常見的 QML 模型接口。以下為實作要點概述:
- **Qiskit 框架**:Qiskit 的機器學習模組(qiskit-machine-learning)內建了多種 QNN 和核方法實現 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。例如使用 `NeuralNetworkClassifier` 或 `EstimatorQNN` 等類別,可將可參數量子電路與經典訓練流程結合。實作步驟包括:定義資料編碼電路(FeatureMap)與可訓練電路(Ansatz),使用 Aer 模擬器或 IBMQ 後端運行量子電路計算輸出,再套用 PyTorch/SciPy 等優化器訓練參數。對於量子核,可使用 `QuantumKernel` 類別,給定兩資料點的電路,Qiskit 會重複執行電路量測以估計核矩陣。模型訓練可搭配經典套件(如 scikit-learn 的 SVM、PyTorch 的神經網路),以量子電路產生的輸出或核值作為輸入特徵。Qiskit 範例官方手冊中已提供了 QSVM 和 QNN 的完整程式範例 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives))。
- **PennyLane 框架**:PennyLane 允許使用 Python 整合量子電路與機器學習庫(如 TensorFlow、PyTorch)。使用者可透過 `@qml.qnode(dev)` 裝飾器定義一個量子電路函數,內含可調節參數的量子閘(例如 `qml.RX(wires=i)` 等)。常見使用方式是以 `default.qubit` 模擬器進行訓練,也可切換到真實硬體後端(如透過 `qml.device('qiskit.ibmq', ...)`)。PennyLane 也內建了量子核與 QNN 模版,例如 `qml.templates.MottonenStatePreparation` 為資料編碼工具,`qml.templates.BasicEntanglerLayers` 可生成多層量子電路。使用者可將 PennyLane qnode 的輸出(期望值)直接接到 PyTorch 模型中進行參數優化。官方有許多演示範例(demos/tutorial)展示如何用 PennyLane 與 scikit-learn 實現 QSVM 或訓練小型變分分類器 ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is)) ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811))。
- **模擬器與真實硬體**:在實驗階段,常先使用模擬器(如 Qiskit Aer 的 statevector/simulators、PennyLane 的 default.qubit)驗證模型邏輯與效果。模擬器可快速計算理想無噪聲結果。將模型遷移到真實硬體時,需考慮噪聲、量測誤差與執行時間。以 Qiskit 為例,可使用 `IBMQ.load_account()` 串接 IBM 量子後端,並指定小型真機(如 5~10 qubit)執行。PennyLane 則可安裝 IBMQ 或其他硬體連接套件,將 qnode 送至雲端量子機。實機運算通常採用採樣測量(shots = 數千次),並可能結合誤差緩解方法。建議在教程手冊中提供實機登入步驟範例、錯誤緩解選項,以及如何設定重覆執行收斂。
- **練習題與資源**:可包含簡單的分類練習題,例如以環形 (make_circles) 或線性不可分點集為例,讓學生用 QSVM 分類並驗證正確率。或是用單比特 XOR 問題訓練一個兩層 QNN。另可練習使用 Iris 資料集做微小版本的量子分類器(經典將資料降維到 2D,再編碼到 1-2 qubits)。開源資源方面,可參考 Qiskit 官方教程(如 QNN、QSVM 範例)和 PennyLane 官方範例。此外,量子計算社群貢獻了許多教學筆記本(如 Qiskit Community、PennyLane Demos),可作為手冊附錄資料來源。
## 6. 常見挑戰與研究前沿
1. **NISQ vs FTQC 差異**:目前量子計算處於 NISQ(Noisy Intermediate-Scale Quantum)時代,晶片擁有數十到上百個量子位元,但受限於雜訊和相干時間,僅能執行相對淺層電路。NISQ 裝置無法實現完整量子糾錯,因此錯誤率高,執行深度有限 ([[2310.10315] A Survey on Quantum Machine Learning: Current Trends, Challenges, Opportunities, and the Road Ahead](https://ar5iv.org/html/2310.10315v3#:~:text=The%20NISQ%20era%20is%20characterized,On%20the%20other%20hand%2C%20QEM))。在這種環境下,QML 模型必須使用小型可參數量子電路,並輔以誤差緩解技巧。研究焦點在於如何最大化利用有限資源,例如設計更有效的編碼方法、雜訊有韌性的變分電路等。相對地,**FTQC(Fault-Tolerant Quantum Computing)** 是未來的目標:當具備大量量子位元與良好糾錯能力時,可執行深度更大的電路和複雜算法。目前 FTQC 離實現還有十年左右,因此 NISQ 時代的策略和 FTQC 時代的策略有很大差別,後者可考慮直接利用如 QSVT 之類可容錯算法而不受噪聲限制。
2. **演算法挑戰**:儘管 QML 方法多樣,但理論證明能產生明顯量子優勢的案例仍然較少。許多 QML 架構在可描述度(expressibility)和訓練可行性上存在二律背反:模型容量越大可能越強,但在優化過程中也更容易陷入「疲憊盆地」(barren plateau)導致梯度消失。除此之外,將大量經典資料載入量子態需要高昂的成本(例如需要 QRAM 等技術),且模型訓練後的解讀或可轉到經典系統的程度尚不清楚。總體而言,目前 QML 更多在探討潛力和近似優勢,缺乏普遍適用於大規模問題的現成算法。
3. **HHL 與線性方程**:HHL 算法是 QML 和量子數值計算中經典範例。它透過量子相位估計和受控旋轉技術,將稀疏、良條件的矩陣 $A$ 解 $A\mathbf{x}=\mathbf{b}$ 轉化為求解量子態 $|\mathbf{x}\rangle$ 的問題。理論上,HHL 在量子上以 ${\rm poly}(\log N,\kappa)$ 時間求解線性系統,是經典演算法 $O(N\sqrt{\kappa})$ 的指數級改善 ([[0811.3171] Quantum algorithm for solving linear systems of equations](https://arxiv.org/abs/0811.3171#:~:text=expectation%20value%20of%20some%20operator,over%20the%20best%20classical%20algorithm))。然而,HHL 的前提條件苛刻:$A$ 必須可被有效區塊編碼(例如稀疏且已知其值),而且輸入向量 $|\mathbf{b}\rangle$ 需要通過快速態制備載入量子態(一般需量子隨機存取記憶體)。即使成功運行,HHL 的輸出為量子態,需要透過期望值測量才能讀出答案。因此,HHL 雖在理論上展示了優勢,但在 NISQ 硬體上難以直接應用(需要誤差糾正才能有效提升規模)。其衍生研究如「混合 HHL」則嘗試在量子和經典計算之間進行分擔,試圖在現有硬體上部分實現。
4. **研究前沿**:目前量子機器學習的研究重點之一是探索哪些真實世界問題能從量子加速中獲益,以及如何設計抗噪聲的訓練架構。領域內熱門議題包括:量子優化算法(如 QAOA)在數據分析的應用、量子圖形神經網路、不同資料編碼策略對模型效能的影響,以及多體量子系統特徵提取等。此外,量子通用架構如 QSVT 正被研究用於更廣泛的 QML 任務,以期創造確鑿的理論優勢。
## 7. 量子機器學習教戰手冊導讀
為了幫助初學者上手,建議手冊包含以下內容:
- **安裝環境**:指導如何安裝 Python、Qiskit 和 PennyLane 等核心套件。可使用 `pip install qiskit qiskit-machine-learning pennylane scikit-learn matplotlib` 等命令。若要連接真實量子機,需要註冊量子平台(如 IBM Quantum Experience),取得 API 金鑰 (`IBMQ.save_account()`)。
- **模擬器操作**:示範如何在 Qiskit Aer 與 PennyLane default.qubit 上執行電路。範例如建立一個 2-qubit 電路,使用 Aer statevector 模擬電路輸出幅度及機率;或在 PennyLane 中設定 `qml.device('default.qubit', wires=2)` 並執行 qnode 來計算期待值。說明如何繪製簡單電路圖及讀取測量結果。
- **真實硬體登入與執行**:指示如何連接 IBMQ 後端(例如 `IBMQ.load_account()`,`provider = IBMQ.get_provider(hub, group, project)`),並列出可用量子機(如 ibmq_lima)。演示提交量子工作(job)的流程以及解讀回傳結果(譬如多次採樣的平均值)。提醒注意量子機上的錯誤緩解設定(如使用 等時間差錯率補償等)。
- **範例練習**:提供 1–2 個自訂練習題,如「使用 QSVM 分類 UCI Iris 資料集中前兩個物種(簡化為 2 類問題)」或「以 3 個量子比特實現一簡單 QNN 進行三類別分類」。附上示例程式碼與關鍵步驟說明,讓學員實際跑過並觀察訓練過程與結果。
- **開源資源整理**:收集有用連結,如 Qiskit 和 PennyLane 官方文檔、量子機器學習相關論文與筆記本。可推薦參考文獻和線上社群,如 Qiskit Community Tutorials、PennyLane Demos、arXiv 最新 QML 文章(例如「A Survey on Quantum Machine Learning (2023)」等)以供深入學習。
整體而言,此課程講義與手冊內容應循序漸進、由淺入深,並在每個主題中附上核心公式與直觀解釋,確保聽眾能理解理論基礎再動手實作。引用文獻可見 Qiskit 官方教材和最新調查報告 ([Quantum Neural Networks - Qiskit Machine Learning 0.8.2](https://qiskit-community.github.io/qiskit-machine-learning/tutorials/01_neural_networks.html#:~:text=The%20motivation%20behind%20quantum%20machine,be%20viewed%20from%20two%20perspectives)) ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=to%20the%20Hilbert%20space,the%20Hilbert%20space%2C%20which%20is)) ([QKernel_EN](https://www.quair.group/software/pq/tutorials/machine_learning/qkernel_en#:~:text=%E2%9F%A8M%E2%9F%A9%3D%E2%9F%A8%CF%88,%CF%95%28x%29%E2%9F%A9.%2811))均提供了豐富範例與原理說明,可作為教學與手冊撰寫參考。