1.3.2 感知机学习算法
PLA在一开始假设需要将数据X分成两个不同的组,即正组(+)和负组(-)。该算法将通过优化计算的训练方式找到一些关于参数w和b的取值来预测相应的正确标签y。PLA使用函数作为激活函数。感知机学习算法采取的步骤如下所示:
1)将w初始化为零向量,迭代次数记为t=0
2)当出现任何分类不正确的实例时:
·选择一个分类不正确的实例,将其记为,它的真实标签记为。
·将w更新为:。
·增加迭代计数(t++),并重复上述过程。
注意,要想让感知机学习算法按照我们的要求工作,必须做出一些调整。我们想要的效果是将表示为的形式。唯一可行的方法是设置和。此时,使用上述规则寻找w的过程其实也就蕴含寻找b的过程。
为了进一步阐释PLA,现考察线性可分数据集的情形,如图1.4所示。
线性可分数据集是指数据集中数据点之间的距离足够大,以至于至少存在一条可以用来将数据分成两组的假想直线。拥有线性可分数据集是所有ML科学家的梦想,但很少能够找到这样的自然数据集。在以后的章节中,我们将会看到神经网络将数据转换到新的特征空间,其中可能存在这样的假想直线。
图 1.4
这个二维数据集是使用Python工具随机生成的,我们将会在稍后讨论Python工具及其使用方法。就目前的情况而言,不言而喻的是你可以在这两类数据之间划清界限,将它们分开。
按照前面介绍的步骤,PLA可以找到一个解决方案,即在这个特定情况下,只需要进行三次更新就可以画出完全满足训练数据目标输出的分割线。图1.5~图1.7分别表示每次更新后的情况,对于每次更新,相应的假想直线都会有所变化。
在第0次迭代时,所有100个点都被错分了,但在随机选择一个错分点进行第一次更新后,新的假想直线只弄错了4个点,如图1.5所示。
图 1.5
在第二次更新之后,假想直线只弄错了一个点,如图1.6所示。
图 1.6
最后,在第三次更新之后,所有的数据点都被正确地分类了,如图1.7所示。这只是为了说明,一个简单的学习算法可以成功地从数据中学习。此外,感知机模型可以产生更复杂的模型,如神经网络模型。下面介绍浅层网络的概念及其复杂性。
图 1.7