自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

量子機(jī)器學(xué)習(xí):新手指南

譯文
人工智能 機(jī)器學(xué)習(xí)
歡迎來到量子機(jī)器學(xué)習(xí)世界!本教程將通過一個使用示例數(shù)據(jù)集的入門級項(xiàng)目,提供附有代碼的分步走指導(dǎo)。本教程結(jié)束時,您將對如何使用量子計(jì)算機(jī)來執(zhí)行機(jī)器學(xué)習(xí)任務(wù)有一番基本的理解,并幫助構(gòu)建您的第一個量子模型。

?譯者 | 布加迪

審校 | 孫淑娟

簡介

歡迎來到量子機(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安裝這些庫:

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

第2步:加載示例數(shù)據(jù)集。

我們在本教程中將使用Iris數(shù)據(jù)集,該數(shù)據(jù)集由鳶尾花的150個樣本組成,這些鳶尾花有四個特征:萼片長度、萼片寬度、花瓣長度和花瓣寬度。該數(shù)據(jù)集包含在sklearn庫中,所以我們可以使用以下代碼來加載它:

from sklearn import datasets

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

第3步:將數(shù)據(jù)集分割成訓(xùn)練集和測試集。

我們將使用訓(xùn)練集來訓(xùn)練我們的量子模型,使用測試集來評估其性能。我們可以使用來自sklearn.model_selection 模塊的 train_test_split函數(shù)來分割數(shù)據(jù)集:

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步:預(yù)處理數(shù)據(jù)。

在我們可以使用數(shù)據(jù)來訓(xùn)練量子模型之前,我們需要預(yù)處理數(shù)據(jù)。一個常見的預(yù)處理步驟是規(guī)范化,即調(diào)整數(shù)據(jù),以便它有零平均值和單位方差。我們可以使用來自sklearn.preprocessing模塊的 StandardScaler類來執(zhí)行規(guī)范化:

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方法將其擬合訓(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è)備:

import pennylane as qml

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

下一步,我們將定義一個量子函數(shù),它攝入數(shù)據(jù)作為輸入,返回預(yù)測。我們將使用一個簡單的量子神經(jīng)網(wǎng)絡(luò),只有一層量子神經(jīng)元:

@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))

該量子函數(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ù):

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

該成本函數(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)化:

# 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}')

這段代碼初始化優(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)練了量子模型,可以評估它在測試集上的性能。我們可以使用以下代碼來測試:

# 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}')

這段代碼使用量子神經(jīng)網(wǎng)絡(luò)基于測試集做預(yù)測,并使用qml.accuracy 函數(shù)計(jì)算預(yù)測準(zhǔn)確性。然后,它輸出測試準(zhǔn)確性。

第9步:直觀顯示結(jié)果。

最后,我們可以使用Matplotlib直觀顯示量子模型的結(jié)果。比如說,我們可以對照真實(shí)標(biāo)簽繪制出測試集的預(yù)測結(jié)果:

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()

這段代碼將對照真實(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é)果:

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

這些結(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?


責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2022-05-16 15:37:32

開源軟件

2022-04-08 12:56:52

Linux終端命令

2010-06-07 16:10:53

HadoopOnDem

2025-01-13 07:15:00

Monorepo代碼倉庫中項(xiàng)目代碼管理

2010-06-21 12:39:56

OSPF路由協(xié)議

2009-11-16 08:58:43

PHP語言

2010-05-27 10:42:38

SVN配置文檔

2023-06-12 17:17:52

機(jī)器學(xué)習(xí)量子計(jì)算

2023-03-15 09:46:07

R Markdown代碼語法

2011-08-23 10:11:10

LinuxTop命令

2010-08-04 09:06:21

Flex安裝

2021-12-30 10:26:37

Bash Shell腳本文件命令

2022-01-20 16:43:38

Bash 腳本ShellLinux

2022-02-28 11:02:53

函數(shù)Bash Shell語句

2010-09-01 16:56:11

無線局域網(wǎng)

2011-03-30 14:07:56

Ubuntu的安裝

2010-07-01 12:35:46

UML用例圖

2010-08-02 09:36:22

Flex

2021-08-28 17:30:51

LinuxSSH

2010-05-24 16:36:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號