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