“分类”这种解决问题的思想在机器学习领域中有多重要

大多数与“智能”有点关系的问题,都可以归结为一个在多维空间进行模式分类的问题。而人工神经网络所擅长的正是模式分类。

我写这篇文章主要就是受到这句话的启发,我现在才体会到机器学习的两个基本问题“回归(预测)与“分类”这两个基本问题的价值。原来看似很复杂的问题最终都可以化解为这两个基本问题的组合。下面我就从简单的例子开始谈谈我对于“分类”这概念的理解。

1 一个特征的情况

其实我们在日常中就在自觉或者不自觉的使用分类的思考方式,分类的目的是分情况处理的前提。比如说,我们在设置告警阀值的时候,端口使用率超过75%的时候告警提醒,或者我们说某只股票跌过50的时候我们就抛售等等。其实我们就是把一个数量空间分成两部分,以告警为例子,使用率的空间就是[0,100],那么[0,74]不告警,[75,100]的时候告警。于是我们把这个数值空间分成了两个部分,每个部分都是一个集合,属于[0,74]这个空间的数值属于“不告警”的情况,属于[75,100]这个空间的数值属于“告警”的情况,如果把“不告警”这种情况用数字“0”来表示,告警用数字“1”来表示,那么我们建立了空间和单个数字的一个映射关系,我们用字母y来表示可能出现的状态,那么它有两个取值y0,1,用字母x来表示[0,100]之间的取值,即x[0,100],那么有这种关系

y={0,1,if x74if 75x100

x = 75 叫做决策边界,这个就是把日常中我们对于事物的分类方法用数学的语言描述的结果
“分类”这种解决问题的思想在机器学习领域中有多重要
从这个简单的例子我们可以看到分类问题首先要有个空间,其次要有一些分界线(决策边界)把空间进行划分,把空间划分出几个结果就有几个分类(或者说几种情况)。
现实中我们经常是知道有几种情况,以及空间的总量,然后找那些分界线(这里就用到机器学习了),把空间划分成不同的区域,这样再来一个新的样本的时候如果它落到哪个空间就属于哪个类别了。
比如说我们划分客户的类型,用资产或者用消费来评估(日常中基本上一个纬度的特征就够用了)
在给空间进行划分的时候,其实就是各种可能性的划分,把概率的东西引入进来,就很自然的和贝叶斯相关的知识联系起来了。

2 两个特征的情况

举些稍微复杂一点的例子,还是线性的,但是有两个纬度的。首先是两个工作生活比较常见的例子

2.1 线性二维例子1:考试科目

比如想就读某一个学校的学生需要通过两门科目入学考试(我们小升初的时候就考两门语文、数学),那么对没有通过入学考试的学生和通过入学考试的学生进行分类,对于这个问题中的每个样本来说,它有两个特征,它们构成的特征空间是一个平面(其实类似这个还有很多了,比如职称考试是否能通过等等)。这样划分边界就是二维空间的一条直线。
“分类”这种解决问题的思想在机器学习领域中有多重要

2.2 线性二维例子2:零件误差

再来一个例子,比如我们检测一个零件(比如螺丝)是否合格,这个零件可能有两个指标(比如一个是长度,一个是头部的直径的尺寸)这两个尺寸的误差都不能超过某一个值,比如长度误差不能超过正负0.8mm,螺丝头直径误差不能超过正负0.5mm。这种情况下,决策边界就是一个曲线(圆形)
“分类”这种解决问题的思想在机器学习领域中有多重要

2.3 线性二维例子3:逻辑运算

我们再看一个例子,利用感知机来实现逻辑运算的例子,通过这个例子你会发现原来用分类器还能实现逻辑运算(竟然还有这种操作?)。

2.3.1 逻辑与

x1 x2 y
0 0 0
0 1 0
1 0 0
1 1 1

从分类的角度来看,研究对象有两个纬度,x1x2,它们的取值都是在0,1里面,对于整个样本空间来说其实就四种情况。如果我们用y(也就是x1x2的运算结果)来作为分类依据的话。正好有两类,我们将运算结果为1的情况视为positive类,把运算结果为0的情况视为negative的类。在二维的坐标中将样本和分类进行标注,如下
“分类”这种解决问题的思想在机器学习领域中有多重要
那么在二维平面中将样本区分开就是找一条直线(或者曲线)把样本分开,在这张图上可以看到,其实这样的直线非常好找,如下图。只要找一条直线,这条直线满足同时过“(0,1)和(1,1)组成的直线”以及“(1,1)和(1,0)组成的直线”即可,可以看到这样的直线其实不止一条,但是我们可以选择一条比较简单的,我们另这条直线斜率为1,截距为1.5。于是决策边界为x1+x21.5=0
“分类”这种解决问题的思想在机器学习领域中有多重要
之后再在这个决策边界上套上一个阶跃函数变成

y={1,0,if x1+x21.50if x1+x21.50

这个就是分类问题的一个基本思想在实际运算中我们经常用sigmoid函数来代替阶跃函数,而sigmoid函数要自变量在离原点比较远的地方才近似为1或者0,所以我们要适当的对决策边界计算结果进行放松,我们l在x1+x21.5上乘以一个20变成20(x1+x21.5)或者20x1+20x230,之后外面再套上sigmoid函数变成sigmoid(20x1+20x230)。这个就可以在程序里面自动的处理了。

2.3.2 逻辑或

我们按照类似上面的思路,将样本标注在图形上

x1 x2 y
0 0 0
0 1 1
1 0 1
1 1 1

“分类”这种解决问题的思想在机器学习领域中有多重要
这次的决策边界为x1+x20.5=0
我们还是利用sigmoid函数,并且对决策边界进行放缩20(x1+x20.5=0),结果sigmoid(20x1+20x210)

2.3.3 逻辑异或

x1 x2 y
0 0 0
0 1 1
1 0 1
1 1 0

“分类”这种解决问题的思想在机器学习领域中有多重要
从这张图你可以看到(0,0)和(1,1)是negative类,而(0,1)和(1,0)是positive类,我们是否能找到一条直线能把这两类分开呢?很遗憾,你拿一条直线无论怎么切分,都不可能把这两类分开,那怎么办呢?用两条线。
“分类”这种解决问题的思想在机器学习领域中有多重要
红线和绿线之间的区域就是positive区域,而红线左下方以及绿线右上方的部分就是negative区域。那么这两条直线构成的分类器如何用数学公式表达出来呢,由上面“逻辑与”以及“逻辑或”的例子我们知道下面红色那条线代表的分类器公式是sigmoid(20x1+20x210),上面绿色那条线代表的分类器公式是sigmoid(20x1+20x230),我们把两个线性分类器的组合在一起其实是要把两个分类器分类的结果再进行一次分类,比如我们令sigmoid(20x1+20x210)的结果为a(2)1sigmoid(20x1+20x230)的结果为a(2)2,我们把x1x2a(2)1a(2)2放在一起,再观察a(2)1a(2)2与运算结果y的关系。如下表:

x1 x2 a(2)1 a(2)2 y
0 0 0 0 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 0

我们看后三列的关系,还按照之前线性分类的方法,a(2)1作为横坐标,a(2)2作为纵坐标,那么第二次分类的时候,整个分类空间所具有的元素只有三个元素(0,0),(1,0),(1,1),其中(0,0)和(1,1)属于negative类,(1,0)属于positive类,如下图
“分类”这种解决问题的思想在机器学习领域中有多重要
那么现在的目标是找到一条直线把这两类分开,这非常简单,比如a(2)2=a(2)10.5这条直线
“分类”这种解决问题的思想在机器学习领域中有多重要
那么决策边界是a(2)1a(2)20.5=0对它进行放大并复合sigmoid函数,最后的结果是sigmoid(20a(2)120a(2)210),用x1x2来表示就是sigmoid(20sigmoid(20x1+20x210)20sigmoid(20x1+20x230)10)

像这种用一条直线无法完成分类任务,需要借助一条以上的直线或者曲线的都叫非线性分类,比如零件的例子或者异或的例子。

3 复杂的例子

涉及到多种分类以及多个特征纬度

3.1 数字手写体的识别

这个例子太多了,不赘述了

3.2 语音识别的例子

在实际的语音识别系统中,声学模型一般是以“原音、辅音”(在实际的语音识别系统中,需要考虑每个元、辅音和它们的前后音的联系,这里为了简单起见,我们就假定每个元、辅音的模型是独立的)为单位建立,每个原音或者辅音对应一组数据,这些数据可以看成多维空间中的坐标,这样就将每一个原因活复印多赢到多维空间中的一个点或者一个一个区域。而识别这些语音,实际上就是在这个多维空间中划分一些区域,让每个音分属于不同的区域。
“分类”这种解决问题的思想在机器学习领域中有多重要
在图中我们随机挑选了5个元辅音a、o、e、t、zh的位置,模式分类(语音识别)的任务就是在空间中切几刀,将这些音所在的区域划分开。

4 线性分类器和非线性分类器

上面的例子中既包含简单的分类问题(只利用一个特征值的二元分类)也包含复杂的分类问题(涉及多个特征值的多元分类,比如语音识别和手写识别),不管多复杂,都需要将整个样本空间进行划分的边界(决策边界),这个边界可能是一条直线,也可能是一个平面(对于三个特征值构成的样本空间是我们能理解的三维空间,那么切分空间的边界就是一个平面),也可能是超平面(特征值超过3个,这个时候特征向量决定的样本空间就是超维的,那么划分这个空间的边界也不再是三维空间的平面,但是我们依然保留“平面”字眼,称之为“超平面”)。
那么什么叫做线性分类器呢?
我是这么理解的如果能够找到一个连续(不要求可导)的函数,这个连续的函数能把空间一分为二(想想二维平面的一个圆形,能把空间分成两部分,或者三维空间中的一个椭球体也能把空间一分为二(在高维空间里这种连续函数的图形应该是“单连通”的,比如圆环)),这个函数叫做线性分类器,这种分类任务就叫线性分类。
在网上查资料的结果是这样的仅当决策边界是一条直线的时候这个分类器称之为线性分类器,其它的情况,包括决策边界是曲线或者多条直线的组合也是非线性的。
到底哪个正确呢,应该是网上的,参考3的文章解释了什么是非线性回归,对于指数超过1的就是非线性,我理解的那种想法虽然看起来像模像样的,但是其实不是线性分类的定义,到像是二元分类的定义。

5. 实现“识别”任务的途径之一是利用“分类”的方法

“智能问题”是一个比较通俗的说法,严谨上来说应该是“模式识别问题”或者是“机器学习问题”。机器学习研究的两大基本问题“分类”和“回归”用大白话来描述就是研究“是什么”以及“是多少”的问题。
而计算机解决“是什么”这类问题的途径之一是用分类的方法。为什么说是之一呢,因为我认为其实更自然的识别一个东西属于某一种实体,更多的是利用这个东西本身的特征,比如小白兔,有两只长长的耳朵,鸡有羽毛但不会飞等等,这是人脑识别物体的方法,计算机是利用数字特征,比如为了识别两个网页是不是同一个网页,Google采用了一种叫做“信息指纹”的技术来计算网页的数字特征。
其实仔细想想,甭管最终问题的解决方案有多么的复杂,人类思考所有问题的出发点都可以归结为“是什么”以及“是多少”这两个问题,而“是什么”的问题要比“是多少”的问题更为基础,因为我们只有识别出一个实体才能继续对这个对象的数量进行研究,比如我们要识别出一个画面上哪些是汽车,哪些是行人,之后才能对汽车有多少辆,行人有多少个进行计数,进而在这些计数的基础上进行各种统计研究。

参考文献

  1. 《数学之美》第二版,第30章,Google大脑和人工神经网络 我写这篇文章的主要启发就来自与这一章节
  2. 浅谈机器学习用来做什么,它是如何工作的 文章第五点的思路来自于此,很简单的话就把机器学习研究目标说清楚了
  3. Machine Learning 2 - 非线性回归算法分析 文章第四点的思路来自于此,也是言简意赅的对非线性回归的种类以及研究方法进行了描述