原副标题:物理电脑自学:初学者手册
翻译者 | 兰博基尼
概要
热烈欢迎走进物理电脑自学当今世界!本讲义将透过一个采用实例统计数据集的紧凑型工程项目,提供更多附上标识符的分阶段走辅导。本讲义完结时,您将对怎样采用物理排序机来继续执行电脑自学任务有几番基本上的认知,并协助构筑您的第二个物理数学模型。
但在深入细致自学本讲义以后,先介绍物理电脑自学是什么、它为何这般令人激动。
物理电脑自学是物理排序和电脑自学交汇点的应用领域。它采用物理排序机来继续执行电脑自学各项任务,比如说进行分类、重回和控制点。物理排序机是一类使用方便的电脑,采用物理BCC(物理位)而并非现代BCC来储存和处置重要信息。这使它继续执行这类各项任务的速率比现代排序机好得多,不光适宜牵涉大批统计数据的电脑自学各项任务。
那时直接已经开始讲义吧!
第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(fStep {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(fTest 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