量子機(jī)器學(xué)習(xí):新手指南
譯文?譯者 | 布加迪
審校 | 孫淑娟
簡介
歡迎來到量子機(jī)器學(xué)習(xí)世界!本教程將通過一個使用示例數(shù)據(jù)集的入門級項(xiàng)目,提供附有代碼的分步走指導(dǎo)。本教程結(jié)束時,您將對如何使用量子計(jì)算機(jī)來執(zhí)行機(jī)器學(xué)習(xí)任務(wù)有一番基本的理解,并幫助構(gòu)建您的第一個量子模型。
但在深入學(xué)習(xí)本教程之前,先了解量子機(jī)器學(xué)習(xí)是什么、它為什么如此令人興奮。
量子機(jī)器學(xué)習(xí)是量子計(jì)算和機(jī)器學(xué)習(xí)交匯的領(lǐng)域。它使用量子計(jì)算機(jī)來執(zhí)行機(jī)器學(xué)習(xí)任務(wù),比如分類、回歸和聚類。量子計(jì)算機(jī)是一種功能強(qiáng)大的機(jī)器,使用量子比特(量子位)而不是傳統(tǒng)比特來存儲和處理信息。這使得它們執(zhí)行某些任務(wù)的速度比傳統(tǒng)計(jì)算機(jī)快得多,特別適合涉及大量數(shù)據(jù)的機(jī)器學(xué)習(xí)任務(wù)。
現(xiàn)在直接開始教程吧!
第1步:安裝必要的庫和依賴項(xiàng)。
我們在本教程中將使用PennyLane庫用于量子機(jī)器學(xué)習(xí),使用NumPy用于數(shù)值計(jì)算,使用Matplotlib用于數(shù)據(jù)可視化。您可以通過運(yùn)行以下命令使用pip安裝這些庫:
第2步:加載示例數(shù)據(jù)集。
我們在本教程中將使用Iris數(shù)據(jù)集,該數(shù)據(jù)集由鳶尾花的150個樣本組成,這些鳶尾花有四個特征:萼片長度、萼片寬度、花瓣長度和花瓣寬度。該數(shù)據(jù)集包含在sklearn庫中,所以我們可以使用以下代碼來加載它:
第3步:將數(shù)據(jù)集分割成訓(xùn)練集和測試集。
我們將使用訓(xùn)練集來訓(xùn)練我們的量子模型,使用測試集來評估其性能。我們可以使用來自sklearn.model_selection 模塊的 train_test_split函數(shù)來分割數(shù)據(jù)集:
第4步:預(yù)處理數(shù)據(jù)。
在我們可以使用數(shù)據(jù)來訓(xùn)練量子模型之前,我們需要預(yù)處理數(shù)據(jù)。一個常見的預(yù)處理步驟是規(guī)范化,即調(diào)整數(shù)據(jù),以便它有零平均值和單位方差。我們可以使用來自sklearn.preprocessing模塊的 StandardScaler類來執(zhí)行規(guī)范化:
這段代碼初始化StandardScaler對象,并使用fit方法將其擬合訓(xùn)練數(shù)據(jù)。然后,它使用transform方法來調(diào)整訓(xùn)練和測試數(shù)據(jù)。
規(guī)范化之所以是一個重要的預(yù)處理步驟,是由于它確保數(shù)據(jù)的所有特征都在同一尺度上,這可以改善量子模型的性能。
第5步:定義量子模型。
現(xiàn)在我們準(zhǔn)備使用 PennyLane庫來定義量子模型。第一步是導(dǎo)入必要的函數(shù),并創(chuàng)建量子設(shè)備:
下一步,我們將定義一個量子函數(shù),它攝入數(shù)據(jù)作為輸入,返回預(yù)測。我們將使用一個簡單的量子神經(jīng)網(wǎng)絡(luò),只有一層量子神經(jīng)元:
該量子函數(shù)攝取兩個變量:weights(這是量子神經(jīng)網(wǎng)絡(luò)的參數(shù))和data(這是輸入數(shù)據(jù))。
第一行使用來自 PennyLane的AmplitudeEmbedding模板初始化量子位。該模板將數(shù)據(jù)映射到量子位的振幅上,以便保留數(shù)據(jù)點(diǎn)之間的距離。
第二行使用StronglyEntanglingLayers模板來應(yīng)用一層量子神經(jīng)元。該模板將一系列糾纏操作應(yīng)用到量子位上,然后量子位可用于實(shí)現(xiàn)通用量子計(jì)算。
最后,最后一行以Pauli-Z度量基礎(chǔ)測量量子位,并返回預(yù)期值。
第6步:定義成本函數(shù)。
為了訓(xùn)練量子模型,我們需要定義成本函數(shù),以測量模型性能有多好。就本教程而言,我們將使用均方誤差(MSE)作為成本函數(shù):
該成本函數(shù)攝取三個變量:weights(這是量子模型的參數(shù))、data(這是輸入數(shù)據(jù))和labels(這是數(shù)據(jù)的真實(shí)標(biāo)簽)。它使用量子神經(jīng)網(wǎng)絡(luò)基于輸入數(shù)據(jù)做預(yù)測,并計(jì)算預(yù)測和真實(shí)標(biāo)簽之間的MSE。
MSE是機(jī)器學(xué)習(xí)中的常見成本函數(shù),測量預(yù)測值和真實(shí)值之間的平均平方差。較小的MSE表明模型更擬合數(shù)據(jù)。
第7步:訓(xùn)練量子模型。
現(xiàn)在,我們準(zhǔn)備使用梯度下降法來訓(xùn)練量子模型。我們將使用來自PennyLane 的AdamOptimizer類來執(zhí)行優(yōu)化:
這段代碼初始化優(yōu)化器,步長為0.01,并將訓(xùn)練步數(shù)設(shè)置為100。然后,它將模型的初始權(quán)重設(shè)置為從均值為0、標(biāo)準(zhǔn)差為1的正態(tài)分布中抽取的隨機(jī)值。
在每個訓(xùn)練步驟中,代碼使用 qml.grad 函數(shù)計(jì)算相對于權(quán)重的成本函數(shù)梯度。然后,它使用opt.step方法更新權(quán)重,并每10步輸出成本。
梯度下降法是機(jī)器學(xué)習(xí)中常見的優(yōu)化算法,它迭代更新模型參數(shù)以最小化成本函數(shù)。AdamOptimizer是梯度下降的一種變體,它使用自適應(yīng)學(xué)習(xí)率,這可以幫助優(yōu)化更快地收斂。
第8步:評估量子模型。
我們已經(jīng)訓(xùn)練了量子模型,可以評估它在測試集上的性能。我們可以使用以下代碼來測試:
這段代碼使用量子神經(jīng)網(wǎng)絡(luò)基于測試集做預(yù)測,并使用qml.accuracy 函數(shù)計(jì)算預(yù)測準(zhǔn)確性。然后,它輸出測試準(zhǔn)確性。
第9步:直觀顯示結(jié)果。
最后,我們可以使用Matplotlib直觀顯示量子模型的結(jié)果。比如說,我們可以對照真實(shí)標(biāo)簽繪制出測試集的預(yù)測結(jié)果:
這段代碼將對照真實(shí)標(biāo)簽創(chuàng)建預(yù)測的散點(diǎn)圖,增添對角線以表示完美預(yù)測。然后它為散點(diǎn)圖添加軸線標(biāo)簽和標(biāo)題,并使用plt.show函數(shù)來顯示。
現(xiàn)在,我們已成功地構(gòu)建了一個量子機(jī)器學(xué)習(xí)模型,并在示例數(shù)據(jù)集上評估了性能。
結(jié)果
為了測試量子模型的性能,我們運(yùn)行了教程中提供的代碼,獲得了以下結(jié)果:
這些結(jié)果表明,量子模型能夠從訓(xùn)練數(shù)據(jù)中學(xué)習(xí),并基于測試集做出準(zhǔn)確的預(yù)測。在整個訓(xùn)練過程中,成本穩(wěn)步下降,這表明模型在學(xué)習(xí)過程中不斷改進(jìn)。最終的測試準(zhǔn)確率為0.87,表現(xiàn)相當(dāng)好,這表明該模型能夠正確地分類大部分測試樣例。
結(jié)論
量子機(jī)器學(xué)習(xí)是一個令人興奮的領(lǐng)域,有許多潛在的應(yīng)用,從優(yōu)化供應(yīng)鏈到預(yù)測股價(jià),不一而足。我們希望本教程能讓您了解量子計(jì)算機(jī)和機(jī)器學(xué)習(xí)的可能性,并激勵您深入了解這個誘人的話題。
原文標(biāo)題:??Quantum Machine Learning: A Beginner’s Guide??,作者:SPX?