2.1.2 感知器基础解读 - BeiTown/AI-History GitHub Wiki
感知器(Perceptron)是由弗兰克·罗森布拉特(Frank Rosenblatt)在1958年提出的一种最早的人工神经网络模型。它是一个二元分类器,旨在将输入信号(或特征)映射到一个输出(通常为0或1)。感知器模拟了神经元的基本功能,能够通过一定的学习规则从输入中学习分类模式。
感知器的基本结构包括:
-
•
输入层(Input Layer):输入信号的向量,代表了问题的特征。
-
•
加权和(Weighted Sum):每个输入信号会被赋予一个权重值,代表其对最终输出的重要程度。感知器会对输入信号进行加权求和。
-
•
激活函数(Activation Function):通过加权和计算得出的结果会通过一个激活函数(通常是一个阶跃函数)来确定最终的输出。阶跃函数的输出为0或1,取决于加权和是否超过某个阈值。
感知器模型的核心思想是:当输入信号经过加权求和后,通过激活函数决定最终的分类结果。如果加权和超过了一个阈值,输出为1;如果加权和低于阈值,输出为0。
感知器的数学表示可以通过以下公式来描述:
y=f(w1x1+w2x2+⋯+wnxn+b)y = f(w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b)y=f(w1x1+w2x2+⋯+wnxn+b)
其中:
-
•
x1,x2,…,xnx_1, x_2, \dots, x_nx1,x2,…,xn 是输入信号。
-
•
w1,w2,…,wnw_1, w_2, \dots, w_nw1,w2,…,wn 是输入信号的权重。
-
•
bbb 是偏置项,用来调整分类的决策边界。
-
•
fff 是激活函数,通常为阶跃函数(step function):
f(z)={1,if z≥00,if z<0f(z) = \begin{cases} 1, & \text{if } z \geq 0 \\ 0, & \text{if } z < 0 \end{cases}f(z)={1,0,if z≥0if z<0
这个模型的目标是调整权重 www 和偏置 bbb,使得感知器能够正确地对输入数据进行分类。
感知器的学习过程通过调整权重和偏置来实现。学习的核心目标是使得感知器对训练数据的分类更加准确。感知器的学习过程可以通过以下步骤进行:
-
1.
初始化权重:开始时,所有的权重和偏置都被随机初始化为一个小的值。
-
2.
计算输出:根据当前的权重和偏置,计算感知器的输出。
-
3.
比较输出与期望结果:将感知器的输出与实际期望的结果进行比较,计算误差。
-
4.
更新权重和偏置:根据误差调整权重和偏置,减少误差。
感知器的权重更新规则如下:
wi←wi+Δwiw_i \leftarrow w_i + \Delta w_iwi←wi+Δwi Δwi=η⋅(yactual−ypredicted)⋅xi\Delta w_i = \eta \cdot (y_{\text{actual}} - y_{\text{predicted}}) \cdot x_iΔwi=η⋅(yactual−ypredicted)⋅xi
其中:
-
•
η\etaη 是学习率,控制每次权重更新的步长。
-
•
yactualy_{\text{actual}}yactual 是实际的标签值。
-
•
ypredictedy_{\text{predicted}}ypredicted 是模型的预测值。
通过不断重复上述步骤,感知器逐步调整权重,直到分类错误最小化。
尽管感知器在理论上是一个强大的工具,但它在实际应用中存在一定的局限性。最著名的局限性是感知器只能处理线性可分问题。也就是说,如果数据的两个类别不能通过一条直线(或超平面)分开,感知器就无法正确分类。
例如,**异或问题(XOR Problem)**就是一个典型的非线性可分问题。异或问题的输入输出如下所示:
输入 (x1, x2) | 输出 (y) -- | -- (0, 0) | 0 (0, 1) | 1 (1, 0) | 1 (1, 1) | 0对于这个问题,感知器无法通过一条直线将输出为1的点与输出为0的点分开。因此,感知器无法解决异或问题。
线性不可分问题是感知器的一个重大挑战。在这种情况下,感知器不能通过调整权重和偏置来找到一个合适的决策边界。
然而,感知器的局限性并不意味着感知器模型本身无用,而是它在解决更复杂问题时的限制。后来的研究(如多层感知器和反向传播算法)则通过引入多层网络结构和非线性激活函数,克服了这一问题。
为了解决单层感知器的局限性,后来研究者提出了多层感知器(Multilayer Perceptron,MLP)。MLP在结构上增加了多个隐藏层,使得神经网络能够处理更加复杂的非线性问题。
多层感知器通过引入隐藏层使得网络能够学习输入和输出之间复杂的映射关系。MLP中的每一层都可以视为对输入数据的一次转换,最终输出层则给出模型的预测结果。
通过反向传播算法,多层感知器能够通过梯度下降优化整个网络的权重。反向传播算法通过计算每一层对误差的贡献,逐层调整网络中的权重,以最小化预测误差。
在感知器中,激活函数通常是一个阶跃函数,输出值为0或1。然而,这种函数的梯度不可微分,不适用于多层神经网络的训练。为了解决这一问题,研究者引入了非线性激活函数(如Sigmoid、ReLU等),这些激活函数能够使得网络的梯度信息能够传播到每一层,从而有效地进行优化。
常见的非线性激活函数包括:
-
•
Sigmoid函数: σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+e−x1
-
•
ReLU函数(修正线性单元): ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
这些非线性激活函数的引入极大地增强了感知器在复杂任务中的能力,使其能够处理非线性可分问题。
尽管感知器本身并未完全实现人类智能的模拟,但它对人工神经网络的发展产生了深远影响。通过感知器的提出,神经网络模型的思想被引入到了人工智能领域,为后来的研究奠定了基础。
在《感知器》一书发布后,感知器模型经历了短暂的兴起,但由于其处理不了非线性问题,研究者对神经网络的兴趣开始减退。然而,20世纪80年代,随着反向传播算法和多层感知器的提出,神经网络重新焕发了活力。
如今,感知器的概念已经深入到各类机器学习算法中,尤其是神经网络和深度学习。尽管感知器作为一个单层模型已经被更为复杂的多层神经网络所取代,但它的基础原理——加权求和和激活函数——仍然是现代神经网络的核心。