MCP神经元和Rosenblatt感知机模型背后的原理是使用还原论方法模拟大脑中单个神经元的工作方式:要么激发,要么不激发。因此,Rosenblatt的经典感知机规则相当简单。感知机算法可以总结为以下步骤:
1.初始化权重和偏置项为0或值很小的随机数。
图2.2 阈值函数和其产生的二元分类线性决策边界
2.遍历每个训练样本,如 x ( i ) :
a.计算感知机输出值 ;
b.更新权重和偏置项。
这里,输出值是之前定义的单位阶跃函数的输出,即预测的类别标签。权重和偏置的更新可以更正式地写为
w j := w j +Δ w j
b := b +Δ b
更新值(“增量”)的计算如下:
请注意,与偏置项不同,每个权重对应数据集中的一个特征,该特征涉及更新值的计算,见上述公式。此外, η 是学习率(通常是一个介于0.0和1.0之间的常数), y ( i ) 是第 i 个训练样本的真实标签, 是第 i 个训练样本的预测标签。需要注意的是,偏置项和所有权重同时更新意味着在偏置项和所有权重更新结束之前,不会重新计算预测标签。具体来讲,如果数据为二维数据集,则更新值可以写为
在使用Python实现感知机规则之前,先通过一个简单的思维实验来说明这个学习规则是多么简单。在感知机正确预测类别标签的情况下,偏置项和权重保持不变,因为更新值为0:
然而,在预测错误的情况下,偏置项和权重将依据类别进行更新:
为了更好地理解特征值作为乘法因子 的作用,再看下另外一个简单的例子:
假设 ,而且感知机错误地将这个样本分类为类别0。在这种情况下,对应的总权重将增加1.5,这样当下次再遇到这个样本时,净输入 值会增大,可能超过阈值,从而将此样本归类为类别1:
Δ w j =(1-0)×1.5=1.5,Δ b =(1-0)=1
权重更新值Δ w j 与对应的特征值 成正比。例如,假设在另一个例子中 ,但是感知机错误地将此样本分类成类别0,那么感知机将进一步扩大决策边界,以便下次正确分类此样本:
Δ w j =(1-0)×2=2,Δ b =(1-0)=1
需要注意的是,只有当训练数据线性可分时,才能保证感知机具有收敛性(感兴趣的读者可以在我的课堂讲义中找到收敛证明,网址为https://sebastianraschka.com/pdf/lecture-notes/stat453ss21/L03_perceptron_slides.pdf)。图2.3展示了线性可分和线性不可分的二元数据例子。
图2.3 线性可分和线性不可分的二元数据例子
如果二元数据不能用线性决策边界分开,那么在感知机训练阶段,可以设置遍历训练数据集的最大次数(epoch)和/或容许错误次数的阈值,否则感知机将永远不会停止更新权重。本章后面将介绍Adaline算法,该算法可以产生线性决策边界并收敛,即使数据并非完全线性可分。第3章将学习能够产生非线性决策边界的分类算法。
在开始下一节之前,可以用图2.4总结刚刚学习的感知机规则:
图2.4展示了感知机接收一个样本作为输入,并将其与权重和偏置项进行组合,从而计算出净输入值,然后将净输入传递给阈值函数,生成值为0或1的输出,即为样本的预测标签。在学习阶段,这个输出用于计算预测误差,从而可以更新权重和偏置项。
图2.4 使用误差函数更新模型的权重和偏置项