- 首先将所有权值设为0, 这样, 输入值预设为对结果不产生任何影响。同时,偏移量也被预设为0。
- 我们使用参数MaxIter。这个参数是整个算法中唯一一个超参数(hyper-parameter)。这个超参数表示当我们一直无法找到准确答案时,我们要最多对权重和偏移量进行几次优化。
- 在算法PerceptronTrain第5行,我们用之前提到的加法公式计算出当前激发值a。由于这个简单的感知器算法只可以产生二维结果,我们 只检查激发值a的符号是否与实际值同号(第6行)。如果同号,这意味着算法为当前数据的输入值找到了合适的权重和偏移量,算法结束。
- 如果激发值与实际值异号,感知器算法就要进行自调节的过程(第7, 8行)。自调节过程分成两步:
新的激发值a 受影响于 新的权值w和新的偏置b
这个是比较直观的形式,更加一般的推导过程如下:
内积的数学概念:
感知分类的学习策略是, 假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面
先看看感知机的几何解释:
线性方程: 
定义一个经验损失函数,并将损失最小化。
损失函数可以选择误分点的总数,也可以选择误分点到超平面的距离。为了确保连续可导的,选择误分点到超平面的距离作为经验损失函数。
注意 y = 1 或者 -1
感知器学习算法的一般形式:
当 n 为1时,退化到上面的特殊学习形式
修正错误的几何意义:
- 看右上方y=+1的图,正确的是正的,却算出来负的,说明w 和 x的夹角太大,要把w转向x,因为此时y=+1所以w+yx是 w+x,相当于图中的中间那条向量;
- 再看y=-1的图,正确的是负的,但是算出来是正的,说明w和x的夹角太小了,要把w向远离x的方向转,此时w+yx=w-x,所以结果就转向远离x的方向了。