什么是 Perceptron 最简单的人工神经网络
2025年2月15日 21:24Perceptron 是最简单的人工神经网络架构之一,由 Frank Rosenblatt 于 1957 年提出。它主要用于二进制分类。
当时,统计机器学习和常规编程等传统方法通常用于预测。尽管 Perceptron 模型是最简单的人工神经网络形式之一,但事实证明,该模型在解决特定分类问题方面非常有效,为 AI 和机器学习的进步奠定了基础。
本文旨在提供感知器模型的基础知识、其架构、工作原理和应用,涵盖使用 PyTorch 的理论和实际实现。
目录
• 什么是感知器?
• Perceptron 的组件
• Perceptron 是如何工作的?
• 构建和训练单层感知器模型
• 将 Perceptron 与 PyTorch 结合使用进行二进制分类
• Perceptron 的限制
1 什么是感知器?
感知器是一种 执行二进制分类的神经网络,它将输入特征映射到输出决策,通常将数据分为两类之一,例如 0 或 1。
Perceptron 由单层输入节点组成,这些节点完全连接到一层输出节点。它特别擅长学习线性可分模式。它利用了一种称为阈值逻辑单元 (TLU) 的人工神经元变体,该神经元由 McCulloch 和 Walter Pitts 在 1940 年代首次引入。这个基础模型在开发更高级的神经网络和机器学习算法方面发挥了至关重要的作用。
2 感知器的类型
1. 单层感知器是一种仅限于学习线性可分离模式的感知器。它对于数据可以通过直线划分为不同类别的任务非常有效。虽然它的简单性很强大,但它难以解决更复杂的问题,其中输入和输出之间的关系是非线性的。
2. 多层感知器具有增强的处理能力,因为它们由两层或多层组成,擅长处理数据中更复杂的模式和关系。
3 Perceptron 的基本组件
Perceptron 由关键组件组成,这些组件协同工作以处理信息和进行预测。
• 输入特征:感知器采用多个输入特征,每个特征代表输入数据的一个特征。
• 权重:为每个输入特征分配一个权重,用于确定其对输出的影响。在训练期间调整这些权重以找到最佳值。
• 求和函数:感知器计算其输入的加权和,将它们与各自的权重相结合。
• 激活函数:加权和通过 Heaviside 阶跃函数传递,将其与阈值进行比较以产生二进制输出(0 或 1)。
• 输出:最终输出由激活函数决定,通常用于二元分类任务。
• 偏差:偏差项帮助感知器独立于输入进行调整,从而提高其学习的灵活性。
• 学习算法:感知器使用学习算法(如 Perceptron Learning Rule)调整其权重和偏差,以最大限度地减少预测误差。
这些组件使感知器能够从数据中学习并进行预测。虽然单个感知器可以处理简单的二进制分类,但复杂的任务需要将多个感知器组织成层,形成神经网络。
4 Perceptron 是如何工作的?
为感知器的每个输入节点分配一个权重,以指示该输入在确定输出中的重要性。Perceptron 的输出计算为输入的加权和,然后通过激活函数传递以决定 Perceptron 是否触发。
加权和的计算公式为:

Step 函数将此加权和与阈值进行比较。如果输入大于阈值,则输出为 1;否则为 0。这是感知器中最常用的激活函数,由 Heaviside 阶跃函数表示:

感知器由单层阈值逻辑单元 (TLU) 组成,每个 TLU 完全连接到所有输入节点。

阈值逻辑单位
在全连接层(也称为密集层)中,一层中的所有神经元都连接到前一层中的每个神经元。
全连接层的输出计算如下:

哪里X是输入W是每个输入神经元的权重,而b是偏差,而h是阶跃函数。
在训练期间,会调整 Perceptron 的权重,以最小化预测输出和实际输出之间的差异。这是使用监督式学习算法(如 delta 规则或 Perceptron 学习规则)实现的。
权重更新公式为:

哪里:
• wi,jwi,j是weight ith 输入和jth输出神经元 /
• xi是ith输入值
• yj是实际值,而y^j 是预测值,
• η是学习率,控制权重的调整量。
此过程使感知器能够从数据中学习,并随着时间的推移提高其预测准确性。
5 示例:作中的 Perceptron
让我们举一个简单的例子,根据两个输入对给定水果是否为苹果进行分类:它的重量(以克为单位)和它的颜色(在 0 到 1 的范围内,其中 1 表示红色)。感知器接收这些输入,将它们乘以它们的权重,添加偏差,并应用激活函数来确定水果是否为苹果。
• 输入 1(重量):150 克
• 输入 2(颜色):0.9(因为水果大部分是红色的)
• 权重(Weights):[0.5, 1.0]
• 偏差(Bias):1.5
感知器的加权和为:
(150∗0.5)+(0.9∗1.0)+1.5=76.4(150∗0.5)+(0.9∗1.0)+1.5=76.4
假设激活函数使用的阈值为 75。从 76.4 > 75 开始,感知器将水果分类为苹果(输出 = 1)。
6 构建和训练单层感知器模型
为了构建感知器模型,我们将实现以下步骤
第 1 步:初始化权重和学习率
我们考虑输入数量 + 1 的权重值(额外的 +1 考虑了偏差项)。这可确保在训练期间同时包括 inputs 和 bias。
class Perceptron: def __init__(self, num_inputs, learning_rate=0.01): # Initialize the weights (num_inputs + 1 for bias) self.weights = np.random.rand(num_inputs + 1) # Random initialization self.learning_rate = learning_rate # Learning rate |
第 2 步:定义线性层
第一步是计算输入的加权和。这是使用公式完成的:,其中 表示输入、 权重和 偏差。Z = XW + bXWb
第 3 步:定义激活函数
Heaviside Step 函数用作激活函数,它将加权和与阈值进行比较。如果总和大于或等于 0,则输出 1;否则,它输出 0。
def Heaviside_step_fn(self, z):
if z >= 0:
return 1 # Output 1 if the input is >= 0
else:
return 0 # Output 0 otherwise
第 4 步:定义预测
使用线性函数后跟激活函数,根据输入特征生成预测。
def predict(self, inputs):
Z = self.linear(inputs) # Pass inputs through the linear layer
try:
pred = []
for z in Z: # For batch inputs
pred.append(self.Heaviside_step_fn(z))
except:
return self.Heaviside_step_fn(Z) # For single input
return pred # Return prediction
第 5 步:定义损失函数
损失函数计算预测输出和实际输出之间的误差。在 Perceptron 中,损失是目标值与预测值之间的差值。
def loss(self, prediction, target):
loss = (prediction - target) # Error or loss calculation
return loss
步骤 6:定义训练
在此步骤中,根据 损失函数计算的误差更新权重和偏差。应用 Perceptron 学习规则来调整权重以最小化误差。
def train(self, inputs, target):
prediction = self.predict(inputs) # Get prediction
error = self.loss(prediction, target) # Calculate error (loss)
self.weights[1:] += self.learning_rate * error * inputs # Update weights
self.weights[0] += self.learning_rate * error # Update bias
第 7 步:拟合模型
拟合过程涉及通过多次迭代 (epoch) 训练模型以调整权重和偏差。这使 Perceptron 能够从数据中学习,并随着时间的推移提高其预测准确性。
def fit(self, X, y, num_epochs):
for epoch in range(num_epochs):
for inputs, target in zip(X, y): # Loop through dataset
self.train(inputs, target) # Train on each input-target pair
完整代码:
以下内容为付费内容,请购买后观看
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP




















