上一章节我们介绍了机器学习的第一个学习算法PLA,以此向大家介绍具体的H是什么样的。这一节我们将向大家介绍神奇的PLA如何自动确定w和threshhold(如何自动在平面中选择划分线)。
首先我们想:平面上有那么多条直线,那么我们要挑选出来的g要有哪些特点才算好呢?
之前章节告诉我们:好的g接近于上帝视角的f。可是我们不是先知,没有办法知道理想f长什么样。
但我们可以逆向思考:虽然我们不知道f长什么样,但给我们训练模型的数据有着f的踪迹,即我们学习出来的g不仅能在测试数据中表现良好,在之前训练数据中也应该不差。于是这也给了我们一个启发即:理想下g(xn)=f(xn)=yn。
上一节我们讲过,为了简化式子而把threshhold化为w0,于是算法的关键都在w向量上。
那么有了这条逆向思考的前提下,我们想到一个办法便是先随机初始化一个w向量(我们用下标n表示第n次修改,初始化视为w0),通过不断修改w的表现来使得g在之前训练数据上表现良好,从而不断接近f。这便是PLA算法的思想。
那么什么时候才要修改w的表现呢?当然是用w来算的阈值与对于训练数据结果yn不同时,参见上图①式(我们也称为犯错)。而难点是我们知道w错了,可是要怎么修改它呢?
上图②式和右边的画面给出了解释,而很多小伙伴表示看不懂,其实是因为他们忽略了一个点:两个向量内积的大小与夹角有关:
A·B = |A| × |B| × cosθ 。
当正式结果yn=1而我们预测出-1时,很明显我们算得的值偏小,这说明内积小,也说明w与x夹角偏大(因为算的是x与w的内积,180度内,角度越大cos越小),为了修正它我们需要将内积调大,于是我们想到将w于x夹角调小,于是根据向量加法有②式(秒在yn是+1)。当yn=-1时情况类似。
于是我们来看看具体PLA的实现,它的核心思想是不断修改错误,直到一整圈(全部数据点在同一个w测试下都不犯错)都不再有错后停止。
还不太了解的小伙伴也不用担心,后头会在算法实践中给出代码(按捺不住的也可以自己搜代码,撸一遍就懂了)。
接下来我们用图来看看PLA的工作情况。
上图中红蓝交界线与w是垂直的,因为这条交界线的判断依准是w与x内积为0,而内积为0代表两个向量垂直。
接下来我们可能又有疑问了:不断修改w且要保证一圈w都不犯错,这...你怎么知道PLA一定会停下来呢?
但是在看过后节内容后,你便可以知道当PLA满足一定的条件时它是一定可以停下来的,而且有严格的数学证明。
下一节我们将讲述PLA停止的数学证明,小伙伴信得过数学的话,了解保证它停的条件就可以了,当然多看看证明也不是坏事哈。
作者:西瓜大榴莲 | 图片来源于网络
关注我们 | 获取更多系统性好文章 | 从零开始