手动构建感知器分类指定数据未收敛,请求错误排查
感知器不收敛问题排查
1. 样本线性可分性确认
给定训练样本与标签:
- 正类(标签1):
[0, 1] - 负类(标签-1):
[2, 0]、[1, 0]
这些样本完全线性可分,比如初始权重对应的直线 -1.5 + 0x₁ + 2x₂ = 0 就能完美区分所有样本,感知器理论上必然可以收敛。
2. 初始权重的分类验证
按照感知器输出公式 y_pred = sign(w₀ + w₁x₁ + w₂x₂) 验证:
- 样本
[0,1]:-1.5 + 0*0 + 2*1 = 0.5→sign(0.5)=1,与标签一致 - 样本
[2,0]:-1.5 + 0*2 + 2*0 = -1.5→sign(-1.5)=-1,与标签一致 - 样本
[1,0]:-1.5 + 0*1 + 2*0 = -1.5→sign(-1.5)=-1,与标签一致
初始权重已经满足所有样本分类正确,不需要进行任何迭代更新。
3. 手动计算的可能错误点
你提到多轮迭代未收敛,大概率是手动计算时出现了以下问题:
- 更新规则误用:搞反了更新符号,或者用预测标签替代了真实标签(正确更新公式为:
w_i = w_i + η*y*x_i,其中x₀=1对应偏置w₀) - 算术计算错误:计算
w₀ + w₁x₁ + w₂x₂时出错,误判样本分类结果 - 不必要的更新:对已经分类正确的样本进行了错误的权重更新,导致权重偏离最优值,进而进入无意义的循环
建议对照感知器更新规则,重新核对每一轮的分类判断与权重计算步骤,重点关注符号环节。
内容的提问来源于stack exchange,提问作者Sidra Khan
相关产品推荐
相关产品推荐

