感知机是一种二分类方法,找出一条能将数据分割开的直线,如下图。
基本思路:通过寻找法线来得到直线。设权重向量 w (英文单词weight的首字母),并且使权重向量成为法线。权重向量就是我们想要知道的未知参数。将每组训练数据看作向量 x。那么直线可表示为w与x的内积形式:
$$ \mathbf{w} \cdot \mathbf{x} = |\mathbf{w}| \cdot |\mathbf{x}| \cdot \cos\theta = 0 $$实向量空间的内积是各相应元素乘积之和,所以上面的表达式也可以写成这样:
$$ \mathbf{w} \cdot \mathbf{x} = \displaystyle\sum_{i=1}^{n}w_ix_i = 0 $$内积是衡量向量之间相似程度的指标。结果为正,说明二者相似;为0则二者垂直;为负则说明二者不相似。
总结:通过训练找到权重向量,然后得到与这个向量垂直的直线,最后根据这条直线就可以对数据进行分类了。
感知机是接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型。如下图所示。
从上图可以看出感知机的原理就是向量内积。
感知机是非常简单的模型,基本不会应用在实际的问题中。但它是神经网络和深度学习的基础模型。
感知机的判别函数
$$ f_w(x)= \left\{ \begin{aligned} 1 \quad (\mathbf{w} \cdot \mathbf{x} \ge 0)\\ -1 \quad (\mathbf{w} \cdot \mathbf{x} < 0) \end{aligned} \right. $$权重向量的更新表达式。
$$ \mathbf{w}:= \left\{ \begin{aligned} \mathbf{w} + y^{(i)}\mathbf{x}^{(i)} \quad (f_w(x^{(i)}) \neq y^{(i)})\\ \mathbf{w} \quad (f_w(x^{(i)}) = y^{(i)}) \end{aligned} \right. $$i 指训练数据的索引。$y^{(i)}$ 指实际值,$f_w(x^{(i)})$ 指预测值。用这个表达式重复处理所有训练数据,更新权重向量。