机器学习:单个感知机如何学习?权重更新是否用到损失函数?
单层感知机学习机制与损失函数作用说明
习题所用更新规则的本质
你在课程习题中使用的是经典的感知机收敛算法,对应的权重更新逻辑如下:
若激活函数输出 Act.Fct(f(x)) ≠ 样本真实标签 y: w_new = w_old + y * x 否则: 权重不做调整
注:Act.Fct 即 Activation Function(激活函数),感知机默认使用阶跃激活函数,输出对应样本的二分类标签(通常取+1/-1)。
这个更新流程不是没有用到损失函数,而是它对应的损失形式和更新逻辑已经做了极致化简,把显式计算误差、求梯度的步骤完全融合进了判断分支里,所以看不到单独的误差计算环节。
隐式使用的感知机损失函数
单层感知机的更新规则完全对应感知机损失(零一损失的代理损失,属于合页损失的特例),这个损失的设计逻辑非常直接:
- 所有被当前权重分类正确的样本,损失记为0,不会对权重更新产生任何贡献
- 所有被当前权重误分类的样本,损失值和样本到决策边界的距离成正比
对应的单个样本损失公式为:L(w) = max(0, -y · wᵀx)
我们把这个损失和梯度下降更新规则做个对应,就能完全匹配你用的更新逻辑:
- 当样本分类正确时,
y和感知机输出wᵀx符号一致,-y·wᵀx < 0,损失取0,对权重w的梯度也为0,因此权重不需要更新,正好对应伪代码里分类正确不操作的分支。 - 当样本分类错误时,
y和wᵀx符号相反,-y·wᵀx > 0,损失对w的梯度为-yx。按照梯度下降的核心逻辑,权重沿损失减小的方向更新:w_new = w_old - η · ∇L(w),当学习率η取1时,代入梯度结果就得到了w_new = w_old + yx的更新式,和你习题里的计算规则完全一致。你算出来的逐样本更新后的权重结果,本质上就是每一步沿梯度方向降低感知机损失的结果。
和多层神经网络反向传播的差异
你提到的多层神经网络靠损失函数做反向传播更新,和感知机的更新底层逻辑是完全同源的,都是基于梯度下降最小化损失的思路,二者的区别只在于计算复杂度:
- 多层神经网络存在隐藏层,损失对每层权重的梯度需要通过链式法则逐层反向传递计算,流程复杂,因此必须显式定义损失、计算预测值和真实标签的误差,再逐层回传梯度完成更新。
- 单层感知机没有隐藏层,损失对权重的梯度可以直接化简为极简的算术规则,不需要单独走“计算损失值→求解梯度”的显式流程,看起来就像是没有用到损失函数而已。
内容的提问来源于stack exchange,提问作者smithy08
相关产品推荐
相关产品推荐

