机器学习算法之监督学习和无监督学习比较
无监督学习和监督学习是机器学习最基本的两种类型,其他的类似于它们的综合。最常用的无监督学习是从样本数据分布中,按它们的聚集来分类。例如,用一堆新旧不同的人民币硬币的尺寸和重量作为样本的数据,分布聚集在2维空间的几个不同地方。
人们看到了就知道它们是分成几类,依此知识,可以判断送来的硬币类别。机器也可以这样做它通过数据点之间相互距离的计算(K-means),将相近的数据点的聚集按距离自动划分成若干组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别。例如,学生潜力、绘画风格和生物分类等应用对象,只要用足够多的特征属性来描述,就可以把它们区分开。但对于许多特征属性,人类只能抽取能理解其含义的少量特征,很难利用非常多的特征属性来分类,而机器却很容易做到。在人们现在的工作中,也可能应用现成的N维自动分类程序,在已经拥有的数据中发现潜藏的分类。
无监督学习就像无师自通,靠自己领悟,因此效率较差,有些情况则难以做到。有老师教学就会容易得多。监督学习是最广泛成功应用的机器学习,即用我们的知识来标记样本的正确答案,去教机器学会应用。
支持向量机(SVM)就是一种典型的监督学习算法,它是在单层神经网络基础上,采用非线性变换φ将输入的数据向量x映射到特征属性空间,让φ(x)在特征属性空间是线性可分的。它使得线性分类器可以用在非线性分类问题上,不需要明确给出这个非线性变换,它的实现是通过直接构造与特征属性空间中内积相等的“核函数(kernel function)”来简化计算。支持向量机用分段线性函数代替神经元里的Sigmoid作用函数,这样调整间隔分类超平面的参数,就只跟较少的支持点有关了,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。实际应用中,涉及到巨大稀疏矩阵的计算。1998年,微软研究院约翰·帕拉特(John C. Platt)提出的SMO算法,可以高效地处理巨量的变量和样本数据,这使得支持向量机获得广泛的应用。
支持向量机包含单层感知器作为特例,它有清晰的数学理论的支持,能有效地控制训练结果,现在已有许多计算机语言实现的软件包可用。相对于多层神经网络,它所要求的机器资源较少,是非常实用的学习算法。但它要求有应用领域知识的人进行合作,来选取合适的核函数。它已成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等。
神经网络是多层感知器的网络,对每一层输入都用线性来分类,由于Sigmoid作用函数,每层的输入和输出是个非线性变换,不需要人为设计属性变换,便能通用地实现各种数据的分类。文章开头介绍的就是3层神经网络的一个例子。理论上,3层神经网络可以实现任何分类问题。但随着复杂程度的增加,要求中间隐藏层的神经元数会急剧地增加。每层神经网络实现一个线性分类函数,多层神经网络则实现了多重的复合函数,能大大提高学习功能,用较少的神经元解决复杂的问题。但对于多于3层的神经网络,采用反向传播误差的梯度法来统一训练,较难控制学习的结果,所以兴起深度学习的研究。