搜尋
首頁科技週邊人工智慧量子機器學習:新手指南

譯者| 布加迪

審校| 孫淑娟

量子機器學習:新手指南

#歡迎來到量子機器學習世界!本教學將透過使用範例資料集的入門級項目,提供附有程式碼的分步走指導。當本教程結束時,您將對如何使用量子電腦來執行機器學習任務有一番基本的理解,並幫助建立您的第一個量子模型。

但在深入學習本教學之前,先了解量子機器學習是什麼、為什麼它如此令人興奮。

量子機器學習是量子運算和機器學習交會的領域。它使用量子電腦來執行機器學習任務,例如分類、迴歸和聚類。量子電腦是一種功能強大的機器,使用量子位元(量子位元)而不是傳統位元來儲存和處理資訊。這使得它們執行某些任務的速度比傳統電腦快得多,特別適合涉及大量資料的機器學習任務。

現在直接開始教學吧!

第1步:安裝必要的函式庫和相依性。

我們將在本教程中使用PennyLane函式庫用於量子機器學習,使用NumPy用於數值計算,使用Matplotlib用於資料視覺化。您可以透過執行以下命令使用pip安裝這些庫:

!pip install pennylane
!pip install numpy
!pip install matplotlib

第2步:載入範例資料集。

我們在本教程中將使用Iris資料集,該資料集由鳶尾花的150個樣本組成,這些鳶尾花有四個特徵:萼片長度、萼片寬度、花瓣長度和花瓣寬度。這個資料集包含在sklearn庫中,所以我們可以使用以下程式碼來載入它:

from sklearn import datasets

# Load the iris dataset
iris = datasets.load_iris()
X = iris['data']
y = iris['target']

第3步:將資料集分割成訓練集和測試集。

我們將使用訓練集來訓練我們的量子模型,並使用測試集來評估其性能。我們可以使用來自sklearn.model_selection 模組的 train_test_split函數來分割資料集:

from sklearn.model_selection import train_test_split

# Split the dataset into training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

第4步:預處理資料。

在我們可以使用資料來訓練量子模型之前,我們需要預處理資料。一個常見的預處理步驟是規範化,即調整數據,以便它有零平均值和單位方差。我們可以使用sklearn.preprocessing模組的 StandardScaler類別來執行規範化:

from sklearn.preprocessing import StandardScaler

# Initialize the scaler
scaler = StandardScaler()

# Fit the scaler to the training data
scaler.fit(X_train)

# Scale the training and test data
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)

這段程式碼初始化StandardScaler對象,並使用fit方法將其擬合訓練資料。然後,它使用transform方法來調整訓練和測試資料。

規範化之所以是一個重要的預處理步驟,是由於它確保資料的所有特徵都在同一尺度上,這可以改善量子模型的性能。

第5步:定義量子模型。

現在我們準備好使用 PennyLane函式庫來定義量子模型。第一步是導入必要的函數,並創建量子設備:

import pennylane as qml

# Choose a device (e.g., 'default.qubit')
device = qml.device('default.qubit')

下一步,我們將定義一個量子函數,它攝取資料作為輸入,並返回預測。我們將使用一個簡單的量子神經網絡,只有一層量子神經元:

@qml.qnode(device)
def quantum_neural_net(weights, data):
# Initialize the qubits
qml.templates.AmplitudeEmbedding(weights, data)

# Apply a layer of quantum neurons
qml.templates.StronglyEntanglingLayers(weights, data)

# Measure the qubits
return qml.expval(qml.PauliZ(0))

該量子函數攝取兩個變數:weights(這是量子神經網路的參數)和data(這是輸入資料) 。

第一行使用來自 PennyLane的AmplitudeEmbedding模板初始化量子位元。此模板將資料映射到量子位元的振幅上,以便保留資料點之間的距離。

第二行使用StronglyEntanglingLayers模板來應用一層量子神經元。此模板將一系列糾纏操作應用到量子位元上,然後量子位元可用於實現通用量子計算。

最後,最後一行以Pauli-Z度量基礎測量量子位,並傳回預期值。

第6步:定義成本函數。

為了訓練量子模型,我們需要定義成本函數,以測量模型表現有多好。就本教學而言,我們將使用均方誤差(MSE)作為成本函數:

def cost(weights, data, labels):
# Make predictions using the quantum neural network
predictions = quantum_neural_net(weights, data)

# Calculate the mean squared error
mse = qml.mean_squared_error(labels, predictions)

return mse

此成本函數攝取三個變數:weights(這是量子模型的參數)、data(這是輸入數據)和labels(這是數據的真實標籤)。它使用量子神經網路基於輸入資料做預測,並計算預測和真實標籤之間的MSE。

MSE是機器學習中的常見成本函數,測量預測值和真實值之間的平均平方差。較小的MSE表示模型更擬合數據。

第7步:訓練量子模型。

現在,我們準備好使用梯度下降法來訓練量子模型。我們將使用PennyLane 的AdamOptimizer類別來執行最佳化:

# Initialize the optimizer
opt = qml.AdamOptimizer(stepsize=0.01)

# Set the number of training steps
steps = 100

# Set the initial weights
weights = np.random.normal(0, 1, (4, 2))

# Train the model
for i in range(steps):
# Calculate the gradients
gradients = qml.grad(cost, argnum=0)(weights, X_train_scaled, y_train)

# Update the weights
opt.step(gradients, weights)

# Print the cost
if (i + 1) % 10 == 0:
print(f'Step {i + 1}: cost = {cost(weights, X_train_scaled, y_train):.4f}')

這段程式碼初始化優化器,步長為0.01,並將訓練步數設為100。然後,它將模型的初始權重設定為從平均值為0、標準差為1的常態分佈中抽取的隨機值。

在每個訓練步驟中,程式碼使用 qml.grad 函數計算相對於權重的成本函數梯度。然後,它使用opt.step方法更新權重,並每10步輸出成本。

梯度下降法是机器学习中常见的优化算法,它迭代更新模型参数以最小化成本函数。AdamOptimizer是梯度下降的一种变体,它使用自适应学习率,这可以帮助优化更快地收敛。

第8步:评估量子模型。

我们已经训练了量子模型,可以评估它在测试集上的性能。我们可以使用以下代码来测试:

# Make predictions on the test set
predictions = quantum_neural_net(weights, X_test_scaled)

# Calculate the accuracy
accuracy = qml.accuracy(predictions, y_test)

print(f'Test accuracy: {accuracy:.2f}')

这段代码使用量子神经网络基于测试集做预测,并使用qml.accuracy 函数计算预测准确性。然后,它输出测试准确性。

第9步:直观显示结果。

最后,我们可以使用Matplotlib直观显示量子模型的结果。比如说,我们可以对照真实标签绘制出测试集的预测结果:

import matplotlib.pyplot as plt

# Plot the predictions
plt.scatter(y_test, predictions)

# Add a diagonal line
x = np.linspace(0, 3, 4)
plt.plot(x, x, '--r')

# Add axis labels and a title
plt.xlabel('True labels')
plt.ylabel('Predictions')
plt.title('Quantum Neural Network')

# Show the plot
plt.show()

这段代码将对照真实标签创建预测的散点图,增添对角线以表示完美预测。然后它为散点图添加轴线标签和标题,并使用plt.show函数来显示。

现在,我们已成功地构建了一个量子机器学习模型,并在示例数据集上评估了性能。

结果

为了测试量子模型的性能,我们运行了教程中提供的代码,获得了以下结果:

Step 10: cost = 0.5020
Step 20: cost = 0.3677
Step 30: cost = 0.3236
Step 40: cost = 0.3141
Step 50: cost = 0.3111
Step 60: cost = 0.3102
Step 70: cost = 0.3098
Step 80: cost = 0.3095
Step 90: cost = 0.3093
Step 100: cost = 0.3092
Test accuracy: 0.87

这些结果表明,量子模型能够从训练数据中学习,并基于测试集做出准确的预测。在整个训练过程中,成本稳步下降,这表明模型在学习过程中不断改进。最终的测试准确率为0.87,表现相当好,这表明该模型能够正确地分类大部分测试样例。

结论

量子机器学习是一个令人兴奋的领域,有许多潜在的应用,从优化供应链到预测股价,不一而足。我们希望本教程能让您了解量子计算机和机器学习的可能性,并激励您深入了解这个诱人的话题。

原文标题:Quantum Machine Learning: A Beginner’s Guide,作者:SPX​


以上是量子機器學習:新手指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
跑道AI的Gen-4:AI蒙太奇如何超越荒謬跑道AI的Gen-4:AI蒙太奇如何超越荒謬Apr 16, 2025 am 11:45 AM

從數字營銷到社交媒體的所有創意領域,電影業都站在技術十字路口。隨著人工智能開始重塑視覺講故事的各個方面並改變娛樂的景觀

如何註冊5天ISRO AI免費課程? - 分析Vidhya如何註冊5天ISRO AI免費課程? - 分析VidhyaApr 16, 2025 am 11:43 AM

ISRO的免費AI/ML在線課程:通向地理空間技術創新的門戶 印度太空研究組織(ISRO)通過其印度遙感研究所(IIR)為學生和專業人士提供了絕佳的機會

AI中的本地搜索算法AI中的本地搜索算法Apr 16, 2025 am 11:40 AM

本地搜索算法:綜合指南 規劃大規模活動需要有效的工作量分佈。 當傳統方法失敗時,本地搜索算法提供了強大的解決方案。 本文探討了爬山和模擬

OpenAI以GPT-4.1的重點轉移,將編碼和成本效率優先考慮OpenAI以GPT-4.1的重點轉移,將編碼和成本效率優先考慮Apr 16, 2025 am 11:37 AM

該版本包括三種不同的型號,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,標誌著向大語言模型景觀內的特定任務優化邁進。這些模型並未立即替換諸如

提示:chatgpt生成假護照提示:chatgpt生成假護照Apr 16, 2025 am 11:35 AM

Chip Giant Nvidia週一表示,它將開始製造AI超級計算機(可以處理大量數據並運行複雜算法的機器),完全是在美國首次在美國境內。這一消息是在特朗普總統SI之後發布的

NTT Data的AI負責人說,Enterprise AI正朝著自治NTT Data的AI負責人說,Enterprise AI正朝著自治Apr 16, 2025 am 11:34 AM

在最近接受NTT Data首席AI官Wendy Collins的採訪中,NTT Data(全球企業集團NTT集團的一部分,IT和商業服務的創新者)的一部分 - 她指出,這是一種趨勢,我們將開始在整個Enterpr中看到越來越多的趨勢

AI動作人物趨勢,解釋 - 以及如何製作自己的AI動作人物趨勢,解釋 - 以及如何製作自己的Apr 16, 2025 am 11:22 AM

Openai推出了由GPT-40提供動力的新圖像生成器後,這種病毒熱潮立即吸引了渴望實驗的用戶。創建自己或其他任何人的玩具版本(包括寵物,是的),類似地工作:uplo

6個CHATGPT提示獲得增強品牌的播客邀請函6個CHATGPT提示獲得增強品牌的播客邀請函Apr 16, 2025 am 11:16 AM

許多企業主圍坐在等待永遠不會到達的邀請,因為獲得播客面試需要策略和一致的行動。今天採取行動。 這些提示將使您成為完美的客人,並降落這些職業

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。