---
# System prepended metadata

title: 08 QML
tags: [量子演算法（下下）]

---

# 量子機器學習簡介
現在，我們再把視角拉高一個層次，透過 ansatz 產生量子態，根據問題設計 cost (or loss) function，將量子態代入 cost function 後產生一個數字，透過 optimizer 找到數字最小的參數，接著透過這組參數去解決類似問題，這整個過程聽起來是不是像這時代最當紅的「機器學習」：

提出一種模型架構（ansatz），根據問題設計 loss function（比方說分類問題），在訓練過程中模型產出的數值代入 loss function 得出一個數字，接著透過 optimizer 找到可以讓 loss function 得出最小值的參數，訓練完就能利用這組產生去應用在類似的問題（比方說預測圖片裡有沒有貓咪）。

這種過程有牽涉量子電腦又類似機器學習的演算法，統稱為「量子機器學習」（Quantum Machine Learning, QML），是目前這時代學界最火熱的研究議題，聽起來很興奮，但這也代表它還沒像機器學習已經有這麼成熟的理論與方法，有許多是人類未開發之地，也很多地方講不出一個道理，每天都會有人提出新架構新方法，哪個方法會成為未來主流只能等時間去印證。

在這節我們會介紹 QML 的分類，在下一節我們會介紹比較常見的一種 QML：量子神經網路（QNN）。

## QML 定義與分類
QML 的定義如下，使用可以在**量子電腦**上執行學習的演算法去執行**特定任務**，且**有潛力**勝過經典電腦。

QML 根據資料類型以及演算法類型可以分成以下四類：

<div style="text-align: center;margin-top: 20px;">
    <img src="https://hackmd.io/_uploads/S1EQzBmYxl.png" alt="Ising model" width="100%"/>
    <br>QML 的四大分類
    <p>Picture comes from doi: 10.1007/s42484-024-00191-y
    </p>
</div>

### CC
CC 區塊稱作 "quantum-inspired" 方法，在經典電腦上使用 quantum-inspire 演算法處理經典資料，"quantum-inspired" 指的是這演算法雖然是古典，但某些概念是取自量子計算，比方說 tensor networks 和數位退火（digital annealing, DA），其中數位退火跟我們前面介紹的量子退火類似，不過是把演化過程寫成方程式，透過特別為此設計的機器解方程式，這最著名的公司就是鼎鼎大名的富士通 。

### QC
使用經典電腦處理來自量子系統的量子資料，比方說夠過經典神經網路分類量子態，分析量子電腦的 noise 等等。

### CQ
使用量子電腦處理經典資料，這部分最多人在研究，你平常聽到或熟知的 QML 大多都指這類，著名的演算法包括 quantum kernels、quantum SVM (QSVM)、QNN、quantum GANs（QGANs）、QCNN、QLSTM 等等，基本上你聽過的經典機器學習，某個地方換成 quantum computer，就會產生 Q-something。

### QQ
使用量子電腦處理量子資訊。這部分可以再細分成兩類：
- 針對機器學習問題的量子演算法，比方說解線性方程的 HHL 演算
- "真"量子機器學習，從頭到尾沒有經典電腦涉入其中，不像 QC 要先將古典資料夠過量子電路轉成量子資料，QQ 是直接使用量子資料，比方說有個量子感應器，它偵測環境中的磁場，然後即時把量子態傳進量子電腦做處理

相比其他三類，QQ 目前最不成熟，還在理論階段或是很初期，而且這部分很仰賴完美量子電腦（[FTQC](https://www.entangletech.tw/lesson/popular-08)）和 quantum RAM（量子記憶體）的發展。

## NISQ 時代的 QML

即 QML 定義中的 CQ，因為現在的量子電腦都不完美，容易受到 noise 影響，這類量子電腦統稱為 "[NISQ](https://www.entangletech.tw/lesson/popular-08)"，如何使用這種量子電腦用在具有商業或研究意義的用途上，就是這時代最熱們的研究議題，開發可以在這種量子電腦上運行的演算法：NISQ 演算法。NISQ 演算法有幾個特性，首先電路深度都不會太深，畢竟太深錯誤率會變很高，第二是會與經典電腦做配合，因此也稱作 hybrid classical-quantum algorithm，像你在前面學過的 QAOA 和 VQE 均會使用兩種電腦。

可以在 NISQ 上運行的 QML，其中最著名的就是 variational quantum algorithm（VQA），看這名字也能感受到，他其實就跟 VQE 差不多。如下圖，VQA 可以拆分成幾個部件：objection function（即 loss function）、parameterized quantum circuit（PQC）、測量與古典 optimizer（優化器）：

<div style="text-align: center;margin-top: 20px;">
    <img src="https://hackmd.io/_uploads/ryP_SvBYee.png" alt="VQA model" width="100%"/>
    <br>VQA 的流程圖
    <p>Picture comes from doi: 10.1088/1361-6633/ad7f69
    </p>
</div>

### objection function
即 $\hat{H}$，代表你希望期望值越來越小的東西，對應到機器學習就是你的 loss function。如果今天的問題是物理系統（凝態物理或是化學分子），那 $\hat{H}$ 就是這系統的總能量，如果問題並不是物理系統，而是像前面幾節提到的 graph，那你可以自己建構一個 $\hat{H}$，就像我們前面在做的一樣。

最常見的 $\hat{H}$ 型式會是由一連串的 Pauli 矩陣組合而成，像我們在 VQE 和 QAOA 提到的一堆 $Z, X, I, Y$ 這類，當然沒有說 objection function 只能這樣做，也有其他方式，但比較少見，有興趣的讀者可以參看延伸閱讀。

### Parameterized quantum circuits (PQC）
PQC 如同前面我們提到的 "ansatz"，由很多 rotation gate 組成的量子電路，而這些 gate 的角度會由經典電腦優化出的參數所決定，因此稱作 "PQC"，PQC 在 QML 裡有兩種角色：負責將古典資訊編碼成量子資訊，以及製備 $|\psi(\theta)\rangle$，即 "ansatz"。

#### 編碼（encoding）
在前面 VQE 與 QAOA 的部分沒有這一段，在 QML 中我們常常需要使用數據庫裡的古典資料（classical data），然後這種資料量子電腦看不懂，因此需要用一個量子電路把古典資料轉成量子資料，怎麼轉也是今天學術界熱門的研究議題，如何發揮量子力學的潛力（像是疊加態）使用幾個 qubits 就能表示大量的資訊，每天都有人提出新方法，常見的方法如下圖：

<div style="text-align: center;margin-top: 20px;">
    <img src="https://hackmd.io/_uploads/BJcdYwBtxx.png" alt="VQA model" width="100%"/>
    <br>Encoding 的常見方法
    <p>Picture comes from doi: 10.48550/arXiv.2310.10315
    </p>
</div>

因為已經有這行的專家撰寫編碼這節，有興趣的讀者可以點看[這篇文章](https://www.entangletech.tw/lesson/qml-01)，這裡就不多做介紹。

### Ansatz
PQC 在這裡的目的是要製備各種可能的 $|\psi\rangle$，以找到最低能量對應的量子態，依照 ansatz 的類型可以分成兩種，一種是針對問題問題去設計的 problem-inspired ansatz，另一種是就不是針對特定問題但要盡可能地節省硬體資源的 hardware efficient ansatz：

Problem-inspired ansatz 就如同 QAOA 特別為 maxcut 問題做設計，或是像 VQE 特別為某個物理或化學系統的 $H$ 做設計，常見的有像是針對化學的 unitary coupled cluster（UCC），不過這種 ansatz 通常所需的電路深度和 qubits 數會很多，應用在更複雜的問題上會難以用在 NISQ 上。

另外一種就是不是針對特定問題設計的，這種 ansatz 會盡可能地遍歷 qubits 上所有的量子態，並盡可能地使用比較少的 quantum gates，這種 ansatz 會由 single qubit and two-qubits gate 組成一個 "block"，然後這個 block 會重複好幾個，這重複幾個我們會用 "layer"（層數）來形容，如同 QAOA 裡的 layers，$H_C$ 與 $H_M$ 組合成一個 block，然後重複好幾個 block。

### 測量
如同在 VQE 所提，在期望值中遇到什麼 Pauli 矩陣就用個 gate 轉到 Z basis。這邊目前遇到的困難是，如果要得到更精準的期望值，就要同個電路測量幾千幾萬遍，得到比較完整的統計數據來推估 qubits 的量子態，然而測量次數越多，就會拉長運算時間。

### 優化
其實這步驟跟經典機器或深度學習差不多，透過 loss function 的梯度找到達到最低點的路徑，並根據此提供新的參數：

\begin{align}
\theta_i(t+1)=\theta_i(t)-\mu \frac{\partial L}{\partial\theta_i}|_{\theta_i=\theta_i(t)}
\end{align}

其中 $\mu$ 就是 learning rate（學習率），常見的方法有 SGD, ADAM 等等，幾乎跟經典機器學習用的一樣。

當然也有不須透過梯度做參數更新，比方說透過 evolutionary 演算法以及 sequential minimal optimization（SMO），這邊就不詳述。

## QML 的問題與挑戰
如同前面提及，QML 目前是學界熱門研究議題，有很多人類未開發之地，因此對於 VQA 這類演算法究竟普遍表現如何，以及在什麼情況下會失敗仍是未解之謎。在這裡，我們提及一些比較常見會導致 VQA 表現欠佳的原因。 

### Barren plateaus
當今天 VQA 需要用到的 qubits 數越來越多，問題的景觀（landscape）會變得越來越平坦，最後找不到梯度（因為太平了，找不到滾到最低點的路徑），這種現象就稱作 "barren plateaus"，而要突破這問題又需要更多的資源，像是測量次數變得更多。

當然競爭的學界也提出五花八門的方法來克服這問題，不過也是需要時間來驗證誰的方法會變成未來的主流。

### Noise 的影響
現在 NISQ 的計算結果都容易受到 noise 影響，因此研究 noise 會對 VQA 造成什麼影響也是學界熱門研究議題之一，不過這目前還有待更多實驗團隊給出實驗結果，然後透過這些實驗結果歸納出一個理論。

很有趣的是，有些文獻發現 noise 反而可以讓 VQA 的表現更好，或許是因為有 noise，可以避免優化到局部低點，因為 noise 的震盪可以讓優化跳出局部低點。 

## 延伸閱讀
- [專家撰寫 QML 概述](https://www.entangletech.tw/lesson/qml-00)
- [QML 的未來與發展](https://www.entangletech.tw/lesson/qml-09)
