最近想对机器学习有一个系统的学习,所以观看了台湾大学林轩田教授的机器学习基石课程,该课程讲解的比较容易理解,对于不想学习大量的数学公式的初学者比较合适。
该课程第二讲是简单的感知器学习算法(PLA,即perceptron learning algorithm),主要处理线性可分的二分类问题。
二分类问题可描述为:现有N个训练样本 ,每个样本的输出
,可用简单的符号函数来描述该过程,即
,而简单的线性函数
即分解线(面)。感知器学习的过程就是在已知训练样本的基础上不断纠错找到合适的w,使得该函数在所有的样本上都不出错。
PLA的流程是:
①初始化:任取一个样本输入,则通过分界线函数 求出w1;
②找出分错的样本,即用上一步得到的w对所有样本进行验证,找到该分界线分错的样本:
③修正w:
直到最终没有分错的样本了,此时的 即为所求。
当然,非线性可分问题可通过一定的特征空间变换转化为线性可分的,这在后面的课程会讲到。
PLA适用于线性可分问题,且最终一定会收敛。当然在非理想状态下,即样本有噪声且不知是否线性可分时,可以通过稍微的调整变形来进行,即最终的终止条件不再是所有的训练样本都不出错,而是在所有的训练样本上出错最少的或者设为错误率小于一个阈值: