感知器权重更新规则的直觉

Posted

技术标签:

【中文标题】感知器权重更新规则的直觉【英文标题】:Intuition for perceptron weight update rule 【发布时间】:2016-04-01 09:02:06 【问题描述】:

我无法理解perceptrons 的权重更新规则:

w(t + 1) = w(t) + y(t)x(t).

假设我们有一个线性可分的数据集。

w 是一组权重 [w0, w1, w2, ...],其中 w0 是一个偏差。 x 是一组输入参数 [x0, x1, x2, ...],其中 x0 固定为 1 以适应偏差。

在迭代t,其中t = 0, 1, 2, ...,

w(t) 是迭代 t 时的权重集。 x(t) 是一个错误分类的训练示例。 y(t)x(t) 的目标输出(-1 或 1)。

为什么这个更新规则会向正确的方向移动边界?

【问题讨论】:

【参考方案1】:

感知器更新规则的更好推导记录在 here 和 here 中。推导是使用梯度下降。

梯度下降算法的基本前提是找到分类的误差,使你的参数最小化。

PS: 我非常努力地想知道为什么有人将 x 和 y 相乘以得出 w 的更新。因为 w 是单个维度的斜率 (y = wx+c) 并且斜率 w = (y/x) 而不是 y * x。

【讨论】:

【参考方案2】:

感知器的输出是实例和权重之间的点积的硬限制。让我们看看更新后这将如何变化。自从

w(t + 1) = w(t) + y(t)x(t),

然后

x(t) ⋅ w(t + 1) = x(t) ⋅ w(t) + x(t) ⋅ (y(t) x(t)) = x(t) ⋅ w (t) + y(t) [x(t) ⋅ x(t))].


注意:

根据算法规范,仅当 x(t) 分类错误时才应用更新。 根据点积的定义,x(t) ⋅ x(t) ≥ 0

这如何相对于x(t)移动边界?

如果 x(t) 被正确分类,则算法不会应用更新规则,因此不会发生任何变化。 如果 x(t) 被错误地归类为负数,则 y(t) = 1。因此,新的点积增加了 x(t) ⋅ x(t)(这是正数)。因此,就 x(t) 而言,边界向正确的方向移动。 相反,如果 x(t) 被错误地归类为阳性,则 y(t) = -1。因此,新的点积减少了 x(t) ⋅ x(t)(这是正数)。因此,就 x(t) 而言,边界向正确的方向移动。

【讨论】:

你能把最后一句话扩大一点吗?当 x(t) 被分类而 x(t) 被错误分类时会发生什么?

以上是关于感知器权重更新规则的直觉的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之感知器算法原理和Python实现

了解感知器训练算法

如何使用线性感知器中的权重向量绘制一条线? [关闭]

机器学习--感知器数据分类算法步骤(慕课网-实现简单的神经网络)

机器学习中感知器算法中的权重向量

多层感知器实现:权重变得疯狂